Skip to content

feat(check-fork): 同步须保留的本地决定改由正向守卫检查 - #14

Merged
mtmtian merged 4 commits into
mainfrom
claude/fork-required-guards
Oct 17, 2026
Merged

mtmtian merged 4 commits into
mainfrom
claude/fork-required-guards

Conversation

@mtmtian

@mtmtian mtmtian commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Why

ADAPTATION 里"同步时必须保留"的本地决定原本只靠人去读。check-fork 只拦 Cursor 黑名单,所以上游整文件覆盖会悄悄抹掉 replay、显式授权、fast mode、--once 这类本地措辞,任何检查都不会失败。另外,宿主 e2e 的验收细则(约 700 词)在 ADAPTATION、脚本和测试里各写一遍,每次 fix(e2e) 都要改两处。

What changed

  • scripts/check-fork.mjs 新增 REQUIRED 表,和 DENYLIST 并列,共 20 条。每条规则写明文件、可选的锚点句和对应的 ADAPTATION 小节。文件或锚点缺失时报错;规则引用的小节不存在也报错。validateT3Contract 的 4 个锚点并入了这张表。
  • e2e 验收细则移到 scripts/pstack-host-e2e.py 的模块 docstring,ADAPTATION 只保留何时运行、判定原则和超时约定。--help 只显示首行摘要。
  • 新增 9 行的 AGENTS.md,写明门禁、上游同步规则、缓存不可编辑,以及安装刷新命令在哪里。
  • docs/ci.md 的 GitHub checks 小节写明:main 的分支保护已开启(对管理员也生效);三个必需检查名由 job name 和 matrix 值拼成,改版本或 job 名时须同时更新保护规则。另附 PUT 更新、回读和 DELETE 撤销命令。

Scope

  • 只守任务列出的候选,外加 T3 overlay 里"不加 speed/service tier"这一句(ADAPTATION 把它记为同一个 fast-mode 决定)。下面这些没有加,留给你判断:
    • babysit.md 里"T3 会话传 --once"这一句:上游文件里的本地改动,和 watch-pr-once 是同一个决定。
    • watch-pr merge gates(merge-gates.test.ts 及 READY 规则)、orch lock 修复(orch/lock.ts、lock.test.ts)、github-remote.ts:目前只有 Bun 测试守着,整目录覆盖时测试文件会跟着一起消失。
    • bin/xagent 和 bin/xagent-pi-guard.ts:ADAPTATION 里和 allowlist 写在同一句。
    • forensics playbook 中上游的 "fast or standard speed" 措辞:更适合加进 DENYLIST,而不是 REQUIRED。
  • 本机安装没有刷新。

Tradeoffs

  • 锚点只认整句或关键短语,改写这些句子时必须同步改规则,这是有意的设计。每条规则都带有 ADAPTATION 小节链接,测试也要求每条规则都有一个植入用例。
  • 植入测试的数据表单独写一遍文件路径和原文,没有从 REQUIRED 反推,这样能独立核对规则指向的是不是正确的文件。

Blast Radius

只影响 check.sh runtime 的静态检查和文档,不改任何 skill、playbook 或运行时行为。以后的上游同步如果删改了受守卫的句子,这项检查会失败。

Verification

项目 结果
bash scripts/check.sh runtime(macOS,PATH 加入 coreutils gnubin),HEAD 09f2ac3 PASS:fork guards 20 条 required;node 67 项;Python 18+8+9+22+26 项
两个中间提交各自跑 check-fork.mjs 和 check-fork.test.mjs PASS
植入测试:每条规则删掉锚点(有上游原文时换成上游措辞)或删除文件 每次只报对应的一条规则
反向验证:把 replay-runs-first 的锚点放宽成 /replay/;关闭小节校验 两种情况下各有对应测试失败,恢复后全部通过
模拟整文件覆盖:用上游 99743e9 的 7 个文件覆盖副本,并删除 skills/xagent CLI 退出码 1,报出 11 条本地决定;上游本来就有的 babysit "不授权合并"一句没有误报
文档中的分支保护 PUT body 与 gh api .../branches/main/protection 的回读对比(只读) 检查名、app_id、strict、enforce_admins、强推和删除设置一致
bash scripts/check.sh build NOT RUN:没有改 TS 和构建输入

🤖 Generated with Claude Code

mtmtian and others added 3 commits October 18, 2026 03:27
ADAPTATION 记录的本地决定此前只靠阅读守护:守卫只拦 Cursor 黑名单,
上游整文件覆盖会静默抹掉 replay、显式授权、fast mode、--once 等本地措辞。

新增与 DENYLIST 平行的 REQUIRED 表:每条规则给出文件、可选锚点句和
ADAPTATION 小节,缺文件或锚点即报错,引用的小节不存在也报错。
validateT3Contract 的四个锚点并入该表。植入测试逐条删掉锚点
(有上游原文时换成上游措辞),确认只有对应规则报告;表中新增规则
而无植入用例时测试失败。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
ADAPTATION 中约 700 词的验收细则与脚本及其测试重复,每次 fix(e2e)
都要双写。细则移到脚本 docstring,与执行它的代码同处;ADAPTATION
只保留运行时机、判定原则与超时约定。--help 只显示首行摘要,并在
epilog 指向 docstring。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T19:34:29.639333Z a22413f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

分支保护已对 main 生效(含管理员),三个必需检查只认 GitHub Actions。
检查名由 job name 和 matrix 的 os/node/python 拼成,改版本或 job 名的
PR 须同时更新保护规则,否则一直等待旧检查名。补充 PUT 更新(整体替换,
须带全部设置)、回读与 DELETE 撤销命令。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@mtmtian
mtmtian merged commit 34b9fac into main Oct 17, 2026
3 checks passed
@mtmtian
mtmtian deleted the claude/fork-required-guards branch October 17, 2026 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant