docs(pm-skill): the ledger's merge-tree reading is the registered-driver hazard, probed from a driver-less clone - #16499
Merged
Conversation
…ver hazard, probed from a driver-less clone `git merge-tree --write-tree` runs `git merge`'s own merge-ort, so a clone that has the `merge=os-regen` driver registered HONOURS it and a clone that does not falls back to git's default text merge. Both observations are true; the old line's inference — "it only answers the default text merge, therefore it systematically under-reports" — is not, and it is the half that had been ruling the reading. Rewritten in the register the file uses, one fact per line: what decides whether the driver applies (registration, which is per clone), what the driver's exit 0 means (the content judgement was deferred — it says nothing about content), the sound probe with the control rule it carries (a control reproduces the CONDITION under test, not merely the command, so the probe runs from a driver-less bare clone), and the ban on the `-c merge.os-regen.driver=` override, which does not disable the driver but leaves git failing to run it and reporting a conflict for every routed path. The later restatement of the same mechanism under 读数陷阱 is the fold that paid for the two extra lines: one site instead of two, the file unchanged at 388 lines, the ratchet ceiling untouched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
This was referenced Sep 7, 2026
os-zhuang
approved these changes
Sep 7, 2026
os-zhuang
marked this pull request as ready for review
September 7, 2026 07:21
os-zhuang
enabled auto-merge
September 7, 2026 07:22
os-zhuang
deleted the
claude/issue-16457-merge-tree-reading-reconciled
branch
September 7, 2026 07:53
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #16457
Fixes #15647
One file, one site, line-neutral:
.claude/skills/pm-dispatch/references/platform-readings.mdstays at 388 lines (ceiling 388, headroom 0). No other line, no ceiling change, no ratchet edit.
The contradiction, in the two texts themselves
Old lines 26–28 (the older, ruled reading):
Old lines 352–353 (the measured reading that landed with PR #16379, git 2.43.0):
Both observations are true and they are about different clones:
merge-tree --write-treeruns
git merge's own merge-ort, so a clone that has the driver registered honours it and onethat does not falls back to git's default text merge. The inference on the old line 27 is
what does not survive — "it never applies the driver, therefore it systematically UNDER-reports"
— and the real hazard runs the other way on a registered clone: a driver that took the path
exits 0 because it deferred the content judgement, so a clean report says nothing about
content at all.
The new lines (26–30)
They sit where the probe is actually used — directly under the two lines that spell the
git merge-tree --write-tree origin/main REFcommand (24–25), which is where a seat reading"is this head dirty" arrives.
The fold that paid for the two extra lines
3 lines out, 5 lines in at the kept site; old 352–353 deleted, because after the rewrite they
were the same mechanism stated a second time in 读数陷阱. 5 insertions / 5 deletions,
388 → 388. The one clause old 353 carried that the new text does not is its
-crecipe, andthat recipe is the thing this PR bans.
The probe rule is the corollary's, not the earlier two-leg habit
PR #15885's AGENTS.md corollary is not on
mainyet, so it was read from that PR's head(
claude/issue-15871-agents-merge-tree-corollary,ca2088e3d8), verbatim:The new lines say the same thing in the ledger's register, and the in-repo authority
(
scripts/pm/os-regen-merge.sh, its measured 2×3 table) already agrees with both.#15647 §2 item 2, folded as a clause and not as a fourth line
The ruled principle — a control reproduces the CONDITION under test, not merely the command;
same repo, same configuration; when comparing with the server's view the custom driver has to
be genuinely absent — is the first clause of the probe line above
(
对照复现的是被测条件不只是命令). It rides the fact it governs, which is the file's housestyle, and it costs no line of its own.
Reported, not edited: the two-leg
-cformThe dispatch expected
.claude/skills/pm-dispatch/SKILL.mdto spell the two-leg-cformtoday. It does not, on
origin/main(4500bc5) or in the open PR that holds that file(PR #16486): the only site in the whole tree that spelled it was this ledger's own line 353,
which this PR deletes.
So no SKILL.md follow-up card is needed; the seat may still want the finding recorded.
Gates — every exit captured before any pipe, all on the final commit
1e489533f1node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 16runnable families from the change set (which it derived itself, from the merge base — 1 path);
all 16 were run and reconciled:
Named verdict lines:
Governed-surface predicate, quoted:
Whole-repo lint, not narrowed —
pnpm lint(eslint . --no-inline-config) through the sharedverify lock, slot
issue-16457:One family needed a prerequisite before it could measure anything:
check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET —
@objectstack/formulaand@objectstack/lintunbuilt,nothing measured). After building both under the same lock it exits 0. Both readings are recorded
rather than the second one alone.
Serial
No open PR touches this ledger — checked over all 31 open PRs by file list; PR #16486 holds
SKILL.md,core-rules.md,seat-post-protocol.mdand the ratchet script, and this PR touchesnone of those. The sixth readings increment (the 8-card family) is not yet dispatched, so the
seat should sequence it after this lands rather than in parallel.
维护者速读(草稿)
事情:台账里关于
git merge-tree的三行旧读数被改写成实测那条 —— 驱动注册了就照用,驱动报 exit 0 只表示内容判断被推迟;探针改为从无驱动的裸克隆跑,并顺手带上「对照要复现被测条件」这条纪律。为什么:两处文字互相矛盾,旧的那处推论已被 git 2.43.0 的实测推翻,而按它去读会把「会冲突」读成「干净」;两条都是您已答「同意」的裁决。
风险:纯文字,零代码;行数 388 不动、上限不动、棘轮不动;回滚即 revert 一个 commit。
要您做什么:受管面,人工合并这张 PR;或指出哪一行措辞与您的裁决不符。
Generated by Claude Code