Uh oh!
There was an error while loading. Please reload this page.
os-dev: prove the restore leg, scope the concurrency flag, break the park tiebreak, and make the report contract sanitizer-safe - #12082
Merged
Conversation
… park tie, and make the report contract sanitizer-safe Five amendments to .claude/agents/os-dev.md, paid for by re-flowing orphaned continuation lines in the sections they land in (the file sits at the ratchet ceiling with zero headroom). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMTpSRF5CjMmQBFfPtPCwJ
hotlong
marked this pull request as ready for review
August 25, 2026 09:15
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 25, 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 freeto 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.
Closes#11539
Closes#11648
Closes#11419
Closes#11463
Closes#11923
Five amendments to
.claude/agents/os-dev.md, one file. Four of them are the sameshape — an instrument that reports success while measuring the wrong thing — and the
fifth makes the report contract agree with the sanitizer reality every dispatch brief
already encodes.
Governed surface ⇒ draft, human merge. Not marked ready.
Per-item checklist
标准条款§git checkout origin/main -- <path>for the mutation and nothing about how to undo it; zero occurrences of theHEADspelling通则bullet ①: restore withgit checkout HEAD -- <path>, ⛔ never baregit checkout -- <path>— a ref-checkout writes the index, so a bare restore reads the mutation back and exits 0. ②: the restore is proved bygit diff HEADempty, symmetric with the mutation-proof the contract already demandsREPO_ROOT="$(git rev-parse --show-toplevel)"), with the trust ordering stated outright — the trap is the crash-path convenience, the byte/hash comparison is the proof; a trap that fired only proves a shell ran a function. ④ an emptygit hash-objectread is FAILURE, not "nothing to compare"; compare against the path's HEAD blob; a mismatch exits non-zero and loudly本地验证范围, after the gate-reading paragraphtypecheckthatexcludes**/*.test.ts(verify with--listFilesbefore claiming "typecheck clean" covers your edit), andMODULE_NOT_FOUND-class exit-1s that never reached the gate body — filed alongsideexit 99/ queue-timeout /PREREQUISITE NOT METas NOT MEASUREDrun/build), with theinstallrejection in the same breath: pnpm 10 answersERROR Unknown option: 'workspace-concurrency', andinstallis the first command in a fresh worktree — the rule's most expensive misuse point干净收尾§干净收尾§)`<!-- os-dev-report -->`— the marker the sanitizer eatsos-dev-report, ⛔ no HTML comments anywhere; the same report then goes out as the final message. The restart incident (three devs killed mid-final-message, zero work lost because the card copies existed) is carried as the reason this is durability, not ceremonyThe ratchet cost, and how it was paid
.claude/agents/os-dev.mdsits undercheck:pm-skill-ratchetat ceiling 470, headroom 0. ⛔ The ceiling is untouched — no raise, and no maintainer ruling was needed.origin/mainPayment is a re-flow of orphaned continuation lines in the four sections the amendments land in, using the gate's own
wrapLine— the same canonical wrapcheck:pm-skill-ratchetmeasures against, so the result is a fixed point of the gate rather than a hand-wrap that happens to fit. 28 blocks re-flowed, 40 lines reclaimed.Proof that the re-flow moved only whitespace
Content-preservation was measured, not asserted. Walking the before/after texts as token streams (non-whitespace chars, plus whitespace runs tagged newline-vs-literal-space):
Every removed break sat between two Han characters, where the CSS segment-break transformation removes it — the property the ratchet header names as what makes the corpus's CJK wrapping legal. Every added break was produced by
wrapLine, which offers a spaceless break only whena.cjk && b.cjk. Not one literal space was added or removed, and not one non-whitespace byte moved.wrapLinescored 27/61 against a deliberately-wrong control's 29/61. The control failed to discriminate, so that test proves nothing and is not offered as support. What replaced it is the direct measurement above, which assumes nothing about the join rule and instead measures what actually changed — plus a direct count of the failure mode it would have caused: literal spaces between two wide characters, 0 before and 0 after.Gates
All nine families derived from the real changeset by
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(the tool read the changeset from the merge base itself; no hand-built path list was fed to it). Run atb964b3269, exit codes captured before any pipe, each quoted from the gate's own verdict line:check:pm-skill-ratchet✓ check-skill-line-ratchet: .claude/agents/os-dev.md is 461 lines (ceiling 470; headroom 9).check:doc-authoring✓ doc authoring guard: 389 files clean — no bare metadata literals.check:agent-test-spelling✓ check-agent-test-spelling: 0 violations — 367 file(s) · 3686 bare `--` token(s) · 1141 launcher-rooted run(s)check:nul-bytescheck-nul-bytes: OK (scanned 6704 text file(s) … no raw ASCII control bytes).check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 filescheck:agent-model-declared✓ check-agent-model-declared: 1 agent definition(s) … all declare a modelcheck:pm-skill-id-lint✓ check-skill-id-lint: 22 file(s) clean (pattern /#[0-9]{3,}/g).check:pm-governed-merges✓ check-governed-merges --self-test: 129 assertions …check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 421 files / 1449 TS blocks judged cleanThe last one is worth a line, because it is this PR's own subject matter appearing in its own verification: it first exited 1 twice, both times
PREREQUISITE NOT MET(notypescriptinstalled; then@objectstack/formulanot built). Neither exit-1 was a red gate — the gate had not run a single check. Both were resolved (pnpm install, then two targeted builds underscripts/pm/os-verify-lock.sh) and the gate then measured green. That is exactly theNOT MEASUREDclass this PR adds to the standard.#11419's premise was re-verified live rather than taken from the card, on pnpm 10.31.0:No changeset: the diff is one
.claude/file and publishes nothing —skip-changesetapplies.Out of scope, filed not fixed
Recorded while paying the ratchet cost, filed unassigned as #12081: the corpus carries 45 soft breaks sitting directly after an ASCII comma between Chinese clauses, each rendering as a stray mid-sentence space (invisible in source, visible in the render). ⛔ Deliberately untouched here — closing them is a corpus-wide typography decision, not part of these five cards, and
#12081 remains open.Generated by Claude Code