Files
ai-workflow-skill/docs/tests/repo-memory/workflows/README.md
T

4.5 KiB

Repo Memory Workflow Test Plan

Scope

This document tracks cross-command scenarios where the main value is the interaction between multiple repo-memory subcommands.

All examples assume:

  • isolated temp DB and repo fixtures
  • assertions follow the shared rules in ../_shared/README.md
  • commands use the concrete fixture paths created for the case

case: add-search-events-roundtrip

用例意义

验证 add -> search -> events 的主干链路可用,确保新写入的 durable knowledge 能被立即检索并带有可追溯历史。

前置条件

  • TMPDIR/repo 是一个已提交初始 commit 的 Git 仓库
  • 证据文件 TMPDIR/repo/app/app/src/main/java/foo/AITask.java 已存在
  • 空数据库已完成 init

输入

repo-memory add --db TMPDIR/repo-memory.db --repo TMPDIR/repo --kind term --key AITask --summary "Plan 内嵌任务结构,不是独立表" --status confirmed --source-path TMPDIR/repo/app/app/src/main/java/foo/AITask.java --source-line 42 --alias "AI Task" --dep file:TMPDIR/repo/app/app/src/main/java/foo/AITask.java:hard
repo-memory search --db TMPDIR/repo-memory.db --repo repo --query "AI Task"
repo-memory events --db TMPDIR/repo-memory.db --id 1

预期输出

  • add 输出 upserted entry 1 (term:AITask)
  • search 返回 term:AITask [confirmed]
  • eventsterm:AITask [confirmed] #1 开头,并包含 created

断言结论

  • 新增 entry 后无需额外同步即可被搜索到
  • alias 可参与搜索命中
  • 事件历史足以追溯 durable knowledge 的创建来源

case: ingest-search-list-across-sections

用例意义

验证 ingest -> search -> list 可以把 docs/ai Markdown 中的多个 section 转成可搜索、可枚举的知识条目。

前置条件

  • TMPDIR/repo 是一个已提交初始 commit 的 Git 仓库
  • TMPDIR/repo/docs/ai/repo-memory.md 包含 Module MapDanger Zones 等 section
  • 目标数据库路径尚未初始化也可,因为该用例验证 ingest 的自动 schema bootstrap

输入

repo-memory ingest --db TMPDIR/repo-memory.db --repo TMPDIR/repo
repo-memory search --db TMPDIR/repo-memory.db --repo repo --query "gateway"
repo-memory list --db TMPDIR/repo-memory.db --repo repo

预期输出

  • ingest 输出 ingested 1 docs from ABS_REPO
  • search 命中从 Module Map 导入的 section
  • list 至少包含 module:repo-memory:module-mapdanger:repo-memory:danger-zones

断言结论

  • 一个 Markdown 文件可以导出多个 durable knowledge entry
  • 导入 entry 默认状态为 confirmed
  • ingest 既完成导入,也完成 repo 注册与 schema 初始化

case: add-link-and-resolve-related-entry

用例意义

验证两个 entry 可以通过 link 建立关系,同时各自的历史记录仍可独立读取。

前置条件

  • 空数据库已完成 init
  • 同一 repo 下已存在 term:AITaskchain:ai-insight.get 两条 entry

输入

repo-memory link --db TMPDIR/repo-memory.db --from-id 1 --to-id 2 --relation related_to
sqlite3 TMPDIR/repo-memory.db "SELECT relation FROM knowledge_links WHERE from_entry_id = 1 AND to_entry_id = 2;"
repo-memory events --db TMPDIR/repo-memory.db --id 1
repo-memory events --db TMPDIR/repo-memory.db --id 2

预期输出

  • link 输出 linked #1 -[related_to]-> #2
  • SQL 查询返回一行 related_to
  • 两个 events 调用仍能分别读取各自历史

断言结论

  • link 的副作用被持久化,而不是只回显成功文本
  • entry 关系与 entry 历史是两个独立维度

case: verify-downgrades-after-repo-change

用例意义

验证 add -> verify -> list -> events 在 repo 内容变更后会把已确认知识降级到需要复核或过期状态。

前置条件

  • TMPDIR/repo 是一个已提交初始 commit 的 Git 仓库
  • 已存在一个 confirmed entry,硬依赖 TMPDIR/repo/foo.txt
  • verify 前,foo.txt 已被修改或删除

输入

repo-memory verify --db TMPDIR/repo-memory.db --repo TMPDIR/repo
repo-memory list --db TMPDIR/repo-memory.db --repo repo
repo-memory events --db TMPDIR/repo-memory.db --id 1

预期输出

  • verify 输出包含 verified 1 entries
  • list 中相应 entry 状态变为 needs_reviewstale
  • events 中新增 downgradedmarked_stale 事件

断言结论

  • verify 会根据 repo 当前状态重新评估 durable knowledge
  • 状态变化不仅更新当前 entry,也会追加历史事件供后续审计