背景(从 #166 拆出,跨仓架构归属)
#166 定了 README_AI 路径的刷新时机(release-time + 手动),但"刷新职责归谁"是更下层的问题,单独定。
事实基线
两条产物出口的消费者不同,职责归属已经事实上分岔:
出口
消费者
现状触发方式
graph-export NDJSON
loomgraph(stateful 图存储)
loomgraph index 每次全量编排 re-export → embed → inject
README_AI.md
人 / repo 内 agent / GitHub 浏览
#166 :release-time + 手动 scan-all
graph 路径上 loomgraph 已经是编排者 ——"何时重建"在该路径不存在策略问题,编排者天然拥有。本 issue 把这个事实升格为原则。
决议提案
刷新时机策略归编排者/消费者,codeindex 不拥有任何 timing 策略。
codeindex 的完整职责 = stateless 生成器(ADR-007 不变):
按需执行:scan-all / graph-export,幂等、可随时调
自我描述:provenance 带工具版本号,让别人 能检测 staleness
不做:自动刷新、staleness 追踪、timing 策略、对下游的任何假设
KISS 推论(codeindex 侧)
post-commit hook 产品级弃用 (docs: README_AI 刷新时机 post-commit per-commit → release-time;post-commit hook 退役 #166 产品侧待决 → 本 issue 给出答案方向):hook 机器(cli_hooks.py ~888 行 + 7 份 test_hooks*.py)是 codeindex 拥有 timing 策略的唯一残留。dogfood 消费者归零(docs: README_AI 刷新时机 post-commit per-commit → release-time;post-commit hook 退役 #166 本仓退役)后它维护最贵——改动牵连 = 0 本仓使用者 × 未知外部存量。
pre-commit(lint)/ pre-push(tests)与 timing 无关,保留
弃用节奏需看外部用户反馈(no-ship-without-baseline:先 deprecated 警告一版,再删)
不预设增量 :schema v1 的 content_hash 锚(staleness 可检测)已就位,但 symbol-level 增量导出仍门控在"loomgraph 真需要"之后——loomgraph 全量 re-export 目前够用(LoomGraph graph-export: add unresolved breakdown + warn on high unresolved ratio (test noise) #148 repositioning 未决,先不加码)
audit: init wizard / 默认 config 对 JS/TS 项目缺测试文件 exclude —— graph-export 边污染的上游根因 #165 (init wizard 测试 exclude)不受影响 :那是生成时的 config 默认值,不是 timing 策略,留在 codeindex
与 loomgraph 侧的关系
Checklist
背景(从 #166 拆出,跨仓架构归属)
#166 定了 README_AI 路径的刷新时机(release-time + 手动),但"刷新职责归谁"是更下层的问题,单独定。
事实基线
两条产物出口的消费者不同,职责归属已经事实上分岔:
graph-exportNDJSONloomgraph index每次全量编排 re-export → embed → injectREADME_AI.mdscan-allgraph 路径上 loomgraph 已经是编排者——"何时重建"在该路径不存在策略问题,编排者天然拥有。本 issue 把这个事实升格为原则。
决议提案
刷新时机策略归编排者/消费者,codeindex 不拥有任何 timing 策略。
codeindex 的完整职责 = stateless 生成器(ADR-007 不变):
scan-all/graph-export,幂等、可随时调KISS 推论(codeindex 侧)
cli_hooks.py~888 行 + 7 份test_hooks*.py)是 codeindex 拥有 timing 策略的唯一残留。dogfood 消费者归零(docs: README_AI 刷新时机 post-commit per-commit → release-time;post-commit hook 退役 #166 本仓退役)后它维护最贵——改动牵连 = 0 本仓使用者 × 未知外部存量。与 loomgraph 侧的关系
Checklist
_generate_post_commit_script、tree-aware seam、loop guard、hooks rerun post-commit+ 测试;文档更新