Skip to content

arch: 刷新职责归属——loomgraph 编排重建,codeindex 收敛为 stateless 生成器(KISS 推论) #167

Description

@dreamlx

背景(从 #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 侧)

  1. 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 警告一版,再删)
  2. 不预设增量: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 未决,先不加码)
  3. audit: init wizard / 默认 config 对 JS/TS 项目缺测试文件 exclude —— graph-export 边污染的上游根因 #165(init wizard 测试 exclude)不受影响:那是生成时的 config 默认值,不是 timing 策略,留在 codeindex

与 loomgraph 侧的关系

Checklist

  • 确认决议(尤其 post-commit hook 弃用节奏:直接删 vs deprecate 一版)
  • 若弃用:删 _generate_post_commit_script、tree-aware seam、loop guard、hooks rerun post-commit + 测试;文档更新
  • CLAUDE.md「Git Hooks」章节同步

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions