4.5 KiB
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]events以term: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 Map与Danger 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_REPOsearch命中从Module Map导入的 sectionlist至少包含module:repo-memory:module-map与danger: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:AITask与chain: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 仓库- 已存在一个
confirmedentry,硬依赖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 entrieslist中相应 entry 状态变为needs_review或staleevents中新增downgraded或marked_stale事件
断言结论
verify会根据 repo 当前状态重新评估 durable knowledge- 状态变化不仅更新当前 entry,也会追加历史事件供后续审计