Skip to content

feat(grok): 把 #826 的 strict repo-read 共存档位落到 main - #1006

Merged
vansin merged 3 commits into
mainfrom
feat/826-grok-repo-read-landed
Aug 18, 2026
Merged

feat(grok): 把 #826 的 strict repo-read 共存档位落到 main#1006
vansin merged 3 commits into
mainfrom
feat/826-grok-repo-read-landed

Conversation

@vansin

@vansin vansin commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

grok 栈 #825 → #826 → #830 → {#836, #867}第二层#825 已由 #1004 落地
(main 89a6164e#825 已关并在上面写了去向),所以这一层现在可以直接对 main 落。

没有 force-push #826 那条共享 draft 分支 —— 本 PR 从我自己的分支发。

rebase 方式:只取它自己那两个提交

直接 git rebase origin/main 会冲突,冲在 436b4bdb fix: fail closed on broken Grok CommHub MCP —— 那是 #825 自己的提交,已经以 squash 形式在 main 上了,而 #826
历史里还带着它。

正确做法是把它自己那部分接到 main 上:

git rebase --onto origin/main <#825-head> <#826-head>     # rc=0

它自己的两个提交:

44968358 feat(grok): add strict repo-read copresence profile
11496762 docs(tests): record restacked Grok repo-read evidence

结果:12 files changed, 284 insertions(+), 36 deletions(-)

今天这套门抓到一处

doc-symbol-pinsdocs/message-lifecycle.mdshouldSkipMessage 钉在 cli.ts#L4662
而本层又往 cli.ts 加了行,真值变成 4669。文本和 URL 两处都改。

🔴 这是同一条 pin 今晚第二次漂 —— #1004 刚把它从 4639 改到 4662,现在又要改到
4669。往 cli.ts 这种热点文件钉行号,几乎每个碰它的 PR 都会把它顶漂。
改成只钉符号、不钉行号才是根治,但那是另一条改动,不在这里顺手做。

其余门

test-suite-registration   rc=0   suites=198 registered=34 orphans=164 baseline=164 new=0
doc-source-pins           rc=0
no-escaped-comments       rc=0
no-memory-slugs           rc=0
home-path-baseline        rc=0
public-script-safety      rc=0
l1-paths-sync             rc=0
copresence-profile-pin    rc=0

合并之后

栈还剩 #830 → {#836, #867}。会照同样方式逐层往上落:
本地 rebase --onto 取它自己那部分 → 跑今天这套门 → 从我自己的分支发 PR → 不动原分支

vansin and others added 3 commits August 18, 2026 22:45
grok 栈 `#825#826#830 → {#836,#867}` 的第二层。#825 已由 #1004 落地
(main `89a6164e`),所以这一层现在可以直接对 main 落。

**没有 force-push #826 那条共享 draft 分支**,本 PR 从我自己的分支发。

## rebase 方式:只取它自己那两个提交

直接 `git rebase origin/main` **会冲突** —— 冲在 `436b4bdb fix: fail closed on broken
Grok CommHub MCP`,那是 **#825 自己的提交**,已经以 squash 形式在 main 上了,而 #826
的历史里还带着它。

正确做法是把它自己那部分接到 main 上:

    git rebase --onto origin/main <#825-head> <#826-head>     rc=0

它自己的两个提交:

    4496835 feat(grok): add strict repo-read copresence profile
    1149676 docs(tests): record restacked Grok repo-read evidence

结果 12 files changed, 284 insertions(+), 36 deletions(-)。

## 今天这套门抓到一处

`doc-symbol-pins`:`docs/message-lifecycle.md` 把 `shouldSkipMessage` 钉在
`cli.ts#L4662`,而本层又往 `cli.ts` 加了行,真值变成 **4669**。文本和 URL 两处都改。

🔴 **这是同一条 pin 今晚第二次漂**(#1004 刚把它从 4639 改到 4662)。
往 `cli.ts` 这种热点文件钉**行号**,几乎每个碰它的 PR 都会把它顶漂 ——
改成只钉符号、不钉行号才是根治,但那是另一条改动,不在这里顺手做。

其余全绿:test-suite-registration(suites=198 registered=34 orphans=164 new=0)/
doc-source-pins / no-escaped-comments / no-memory-slugs / home-path-baseline /
public-script-safety / l1-paths-sync / copresence-profile-pin。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@vansin

vansin commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

🔴 更正我在本 PR 正文里写的那句「根治」

正文里我写:

改成只钉符号、不钉行号才是根治,但那是另一条改动,不在这里顺手做。

这句是错的,撤回。 我在动手前先量了一下,结果否定了它。

那道门的 PIN 正则(scripts/check-doc-symbol-pins.py:37)原文:

PIN = re.compile(
    r"\[([^\]\n]{1,120})\]\("
    r"https://github\.com/sleep2agi/agent-network/blob/"
    r"([0-9a-zA-Z._-]+)/([^\s)#\"']+)#L(\d+)\)"
)

它要求 #L<数字> 去掉行号的链接根本不会被这条正则匹配到 —— 不是「换一种判法」,
整条 pin 从这道门里消失

实测(把 docs/message-lifecycle.md 那条 pin 的 #L4662 去掉,再跑同一道门):

改之前     扫到 15 个 pin,判定 5 个     rc=1(漂移 1 个)
去掉 #L    扫到 14 个 pin,判定 4 个     rc=0
还原后     扫到 15 个 pin,判定 5 个

它会「变绿」,但不是因为修好了,是因为不再被检查。 而且这道门真正判定的只有
5 条(另外 10 条是 skipped),删掉一条等于砍掉判定集的 20%

那正确的做法是什么

目前就是现在这样:保留行号,让它漂、让门抓、在同一个 PR 里改掉。
这两次(#1004 的 4639→4662、本 PR 的 4662→4669)都是门正常工作的表现,
不是需要被消除的噪音 —— 代价是碰 cli.ts 附近的 PR 要顺手改一行。

真要减少这种 churn,得改门(让它也认「文件链接 + 锚文本点名符号」这种无行号形态,
并把它计入判定集而不是 skipped),而不是改文档。那是一条独立的、需要自己见红/见绿
证据的改动,我不在这条 PR 里做,也不再把「改文档去掉行号」当成方案。

教训:我差点提交一个「让门变绿」的改动,而它变绿的机制是把被检对象移出取集
这和今晚反复出现的那个形状是同一个 —— 分母悄悄变小,输出和真绿逐字相同。

@vansin
vansin merged commit c85dca9 into main Aug 18, 2026
26 checks passed
@vansin
vansin deleted the feat/826-grok-repo-read-landed branch August 18, 2026 14:56
vansin added a commit that referenced this pull request Aug 18, 2026
## 事实

    4639 → 4662 → 4669 → 4691 → 4695 → 4713 → 4725 → 4728

八个值,对应 #987 / #1004 / #1006 / #1010 / #1017 / #1007 / #1023 / #1039。
规律:**任何往 `agent-node/src/cli.ts` 第 4600 行以上插代码的 PR 都会让它漂**,
那个 PR 就要多跑一轮 CI。这是每次都付的成本,不是偶发。

## 为什么现在才能这么修

`#1024` 里我提过「改成不可变 SHA」,但**当时实测证明它不成立** ——
`check-doc-symbol-pins.py` 的正则捕获了 ref 却从没用过那个捕获组,
SHA 和 `main` 一视同仁,一律拿工作树解析。单变量 A/B 两边逐字相同。

`#1025` 让脚本认了 ref(SHA pin 用 `git show <ref>:<path>` 取那个版本判)。
**这条路是那之后才通的。** 所以本 PR 是 #1025 的下游,不是 #1024 那个被推翻的提案的重提。

## 改动

    - ✅ v1.4.0;当前在 [cli.ts:4725 `shouldSkipMessage`](.../blob/main/agent-node/src/cli.ts#L4725)
    + ✅ v1.4.0;截至 [`04f37800` 的 cli.ts:4725 `shouldSkipMessage`](.../blob/04f37800/agent-node/src/cli.ts#L4725)

**「当前在」也一起改成「截至 `<sha>`」** —— 这不是措辞洁癖:
钉到某个 commit 之后,「当前」这个词就不再被那个链接支持了。
只改链接不改这句话,等于用一个更稳的 pin 去支撑一句更弱的真话。

## 验证:两个方向都见证过,而且**判定数始终是 5**

    未漂时                                rc=0  扫到 15  判定 5  跳过 10  漂移 0
    往 cli.ts 插 3 行(过去 8 次红的场景)  rc=0  扫到 15  判定 5  跳过 10  漂移 0   ← 不再红
    把 pin 的行号改成 100(错的)          rc=1  扫到 15  判定 5  跳过 10  漂移 1   ← 门仍然咬得动
    还原                                  rc=0

**第三行是本 PR 最该看的**:如果这个改法让门不再对错误 pin 判红,那就是把对象移出了取集 ——
「让门变绿」而不是「把问题修好」。它没有:判定数一次都没掉,错的 pin 照样红。

`docs-site` 取集同时核过:扫到 28 / 判定 8 / 跳过 20 / 漂移 0(#1025 之后它才在取集里)。

## 一个操作上的插曲,记一下

我第一次建 worktree 时目录已存在,`git worktree add` 失败 —— **但后面的 `cd` 成功进了那个陈旧目录**,
于是我在一份完全不相干的树上跑了检查,得到 `cli.ts:836` 和 `rc=2`。
**命令失败了,后续步骤照跑。** 后来加了 `cd ... || exit` 并先打印 HEAD 核对才发现。

Co-authored-by: t <internlmorg@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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