SuperAPI AI 工具集

decodie-flag-stale

编程与开发

查看项目

更新于 10-16 10:49

技能介绍

Decodie — Flag Stale 模式

用途

Flag Stale 是 verify 模式的快速、CI 友好替代方案。对于每一个带有 verified_sha 的条目,它检查该条目的源文件自该 SHA 以来是否发生过变更,并将发生变更的条目翻转为 stale: true。它不读取源文件,也不重新计算锚点哈希——仅将文件名与 git 历史进行 diff 比对。

该模式只修改 .decodie/index.json。

激活方式

不接受参数,始终作用于完整索引。

前置检查

确认 .decodie/ 目录存在。若不存在,输出“No .decodie/ directory found — nothing to check.”并停止。

确认处于 git 仓库中,执行:

git rev-parse --git-dir

若不是 git 仓库,输出“Not a git repository — flag-stale requires git history. Run verify mode instead.”并停止。

读取 .decodie/index.json。若为空,输出“No entries to check.”并停止。

检测流程

对每个条目依次处理:

跳过没有 verified_sha 的条目,报告为未验证。

跳过没有 sources(且没有 references[].file 回退)的条目,报告为 no-sources。

计算变更文件:

git diff --name-only <verified_sha>..HEAD

如果该 SHA 对 git 而言未知(历史被重写),则视为过期。

将变更文件与该条目的源文件比对。若有任何匹配,该条目即为过期。

更新规则:

新变为过期 → 设置 stale: true,保持 verified_sha 不变。

已经是过期 → 不更改(仍计入统计)。

diff 中不包含源文件 → 保持 stale 原样。不要把 stale 翻转回新鲜——只有 verify 模式才能做这件事。

将更新写回 index.json。

报告输出

Decodie flag-stale Newly stale: N entries Already stale: M entries Fresh: F entries Unverified: U entries (no verified_sha -- run verify mode) No sources: K entries

若有新变为过期的条目,将其列出:

Newly stale:

  • entry-1711540000-a1b2 -- src/lib/foo.ts
  • entry-1711540123-c3d4 -- src/lib/bar.ts, src/lib/baz.ts

重要说明

单向标记。只会把 stale 翻转为 true。清除过期状态需要运行 verify 模式。

不读取源文件,完全基于 git diff --name-only。这正是它快到足以用于 CI 的原因。

没有退出码策略。过期条目是否阻断 PR 由每个仓库自行决定。

不重写 git 历史。只使用只读 git 命令。