Uh oh!
There was an error while loading. Please reload this page.
Teach the shared-refs family rule at recipe level (worktree isolates tree and HEAD only) - #11137
Conversation
…atform-readings git worktree isolates the working tree and HEAD, and nothing else under .git/ — refs (including refs/remotes/*), the stash stack, config and hooks are common to every worktree. os-dev.md now states the family rule once (folding the stash clause into it), records BASE=$(git rev-parse HEAD) at branch time in the worktree recipe, and anchors "where I started" reset/diff/log/rebase to the recorded "$BASE", never to origin/main — a shared pointer another agent's fetch advances, whose soft reset stages their merged files as yours while reporting success. platform-readings gains the measured fact row. Ceilinged files pay by in-file deletion of genuine duplicates and land exactly at their ceilings (399, 134). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e
os-zhuang
commented
Aug 22, 2026
PM 验收 — ACCEPT(终态)复核:席位 session_01MsbKEG4LtERSLaDrbehM3e 全 diff 审毕(+17/−13 两文件)。裁定范围逐项落地:家族规则(worktree 只隔离工作树与 HEAD, 治理面终态:draft 保持,仅维护者合并;已指派。 Generated by Claude Code |
…3 maintainer ruling The merge group for this PR went red on check-skill-line-ratchet: os-dev.md composes to 401 lines against main (which #11112 took to 395), and to 405 once the queued #11137 (395→399) lands ahead of it — each PR green alone, over the ceiling only in composition. Maintainer ruling, 2026-08-23, on this PR (option B of the three put to them, verbatim): 「B:提天花板 399→405」 — keep the +6-line cross-repo caveat and raise the ceiling, quoted in the PR body as the ratchet requires. Sized to exactly 405 so headroom returns to zero once both queued PRs land. Gate + 19-case self-test green at this commit. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e
Uh oh!
There was an error while loading. Please reload this page.
…se a contradicted --repo assertion (objectstack-ai#11126) * fix(pm): make dispatch-gates name the repo it answers about, and refuse a contradicted --repo assertion The tool derives gate families from the tree it runs in and never said so. Handed a sister repo's paths it returned a confident, well-formed, exit-0 answer about the wrong repo, with no tell — and four of the five repos in scope hold no copy of the script at all, so every sister-repo dispatch was exposed to it. Every derivation now opens with a banner naming the repo and commit the answer came from, and `--repo <owner>/<name>` turns a caller's expectation into a checked assertion that refuses, naming both repos, on mismatch. Paths are repo-relative, so a path's home repo is never guessed: the banner is the unconditional tell and the assertion is the mechanical one. The no-path merge-base mode is untouched apart from the banner. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e * chore(pm): raise the os-dev.md line ceiling 399→405 per the 2026-08-23 maintainer ruling The merge group for this PR went red on check-skill-line-ratchet: os-dev.md composes to 401 lines against main (which objectstack-ai#11112 took to 395), and to 405 once the queued objectstack-ai#11137 (395→399) lands ahead of it — each PR green alone, over the ceiling only in composition. Maintainer ruling, 2026-08-23, on this PR (option B of the three put to them, verbatim): 「B:提天花板 399→405」 — keep the +6-line cross-repo caveat and raise the ceiling, quoted in the PR body as the ratchet requires. Sized to exactly 405 so headroom returns to zero once both queued PRs land. Gate + 19-case self-test green at this commit. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e --------- Co-authored-by: Claude <noreply@anthropic.com>
Fixes#10743
What
Teaches the family rule at recipe level, per the grading scope:
git worktreeisolates the working tree and HEAD, and nothing else under.git/— refs (includingrefs/remotes/*), the stash stack, config, hooks are common to every worktree. A recipe is worktree-safe only if it never names shared state..claude/agents/os-dev.md(395 before, 399 after, ceiling 399):BASE=$(git rev-parse HEAD)before any work.git status) stated once for both instances. It adds the shared-pointer hazard —git reset --soft origin/mainstages other agents' merged files, landed after your branch point, as yours (measured shape: four agents' merged files staged by one soft reset, caught pre-commit) — and the discipline: "where I started" reset/diff/log/rebase anchor the recorded"$BASE"..claude/skills/pm-dispatch/references/platform-readings.md(134 before, 134 after, ceiling 134 — zero headroom):refs/remotes/origin/main, the soft-reset failure shape, and the recorded-base-sha discipline.ls-remotespelling (kept verbatim in the zero-cost-equivalents row, now pointed to) and the positive-hit-sufficient reading (also carried by the enable-verify sequence). The queue-saturation boundary fact is retained; no fact or safe procedure deleted.Conditional surfaces — no carrier spelling found
Grepped
AGENTS.md,CLAUDE.md, pm-dispatchSKILL.mdand the dispatch runbook for recipes anchoringorigin/mainas an implicit "where I started": every hit is either a deliberate read of current main (premise verification,git merge origin/mainin merge-queue context, same-day churn scans) or an already-taught hazard description (the checkout-from-ref clauses). Their stash-alternative recipes anchorHEAD~1/ implicit HEAD, which is worktree-safe. Per the adjudicated scope, no new sections were added to those files.Verification
All 8 derived gate families green at head
194dcb7e9(union re-run after the final commit;node scripts/pm/dispatch-gates.mjswith no hand-fed paths derived the set):check:pm-skill-ratchet— "✓ check-skill-line-ratchet: .claude/agents/os-dev.md is 399 lines (ceiling 399; headroom 0)." and "✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/platform-readings.md is 134 lines (ceiling 134; headroom 0)."check:pm-skill-id-lint— "✓ check-skill-id-lint: 17 file(s) clean (pattern /#[0-9]{3,}/g)."check:doc-authoring— "✓ doc authoring guard: 389 files clean — no bare metadata literals."check:nul-bytes— "check-nul-bytes: OK (scanned 6446 text file(s) ...)" plus the extra-gate control-byte self-scan on both touched files (no hits).check:agent-model-declared,check:pm-governed-merges,check:skill-frame-sync,check:doc-formula-expressions— all self-tests and scans green (verdict lines in the report comment).Docs-only
.claude/change: no changeset;skip-changesetlabel applied via the additive POST with read-back after bots settle.Governed surfaces — draft PR, human merge only.
Generated by Claude Code
Generated by Claude Code