Skip to content

tooling(pm): H8, H19 and H37 quote the LANDED release act, both halves - #16010

Open
claude[bot] wants to merge 2 commits into
mainfrom
claude/issue-15899-release-quote-both-halves
Open

tooling(pm): H8, H19 and H37 quote the LANDED release act, both halves#16010
claude[bot] wants to merge 2 commits into
mainfrom
claude/issue-15899-release-quote-both-halves

Conversation

@claude

@claude claude Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Fixes #15899

scripts/pm/check-half-states.mjs presented a shorthand inside quotation brackets at four
places. In this file's register those brackets signal a verbatim
.claude/skills/pm-dispatch/SKILL.md quotation — and that phrase is in no SKILL.md. Two
measurements, both cheap to repeat:

  • git grep for it outside this one script: zero hits. SKILL.md and
    references/state-machine.md carry 同笔摘标, a label removal on pm:retriage — a different
    act on a different field, deliberately left alone here.
  • git log -S for it over SKILL.md's whole history, non-shallow: empty. It was the script's
    own coinage, wearing a promise the source could not answer.

Why this is not a spelling nit

The release act is ONE act with TWO halves:

释放是显式动作:让卡离手者同笔清 assignee + Release: 行(会话/因/去向);下一任重新认领。

Clearing the assignee is half of it; the Release: line is the other half. The coinage named
only the first, so a reader following those remedy sentences exactly produced the very shape the
H47 row exists to report — the field cleared, no Release: line, an exit that left no record.
The sweeper's own remedy text prescribed a half-state.

What changed — one file, no predicate changes

A new module constant RELEASE_ACT_RULE carries the landed line verbatim, kept unbroken on one
line so it stays greppable against its source. Its text was extracted from the transcriptions
already in the tree (the RELEASE_COMMENT_MARKER docblock and selfTest's RELEASE_RULE_LINE)
and asserted equal to SKILL.md's line during the edit, never retyped — a hand-retyped quotation is
how a verbatim quote stops being one. Three emitted sentences now quote that constant and name
both halves:

Site Row Was
full-delivery remedy H8 (h8MergedPrStillDispatched) assignee drop only
release text, closed and unresolved branch H19 (h19BlockOutlivedBlocker) assignee drop only
dispatched-residue remedy H37 (h37FamilyMemberDrift) assignee drop only

The fourth site is the H24 header-inventory paragraph, which narrated where the coinage came
from; it now reads the rule instead of the history.

No predicate changes, no new rows, and CLAIM_COMMENT_MARKER / RELEASE_COMMENT_MARKER /
ACCEPT_VERDICT_MARKER / MAINTAINER_BRIEF_MARKER are untouched. H24's own remedy and H47's two
legs already quoted the landed line and were not edited.

Verification — all at head 67bec961f4

  • Self-test 2414 → 2427 cases, all passing. Case-name set diffed: exactly two names left
    (the two that spelled the coinage), fifteen arrived; the other two of the four pinned cases keep
    their names with re-pointed assertions. Each re-pointed sentence gained a case that the rule
    line is quoted UNBROKEN, one that the second half is named, and one grep-negative that fails if
    the coinage returns.
  • The grep-negative needle is assembled, not spelled. The measure of this repair is
    git grep -c for the coinage over this file reading zero; a literal needle in a negative case
    would be the single hit that defeats the check it protects. It now reads zero, and the
    neighbouring 同笔摘标 occurrences are untouched.
  • Ablation. The coinage was restored at H8's site on a scratch copy laid out beside a copy of
    scripts/invoked-as.mjs, with an unmutated control copy at the same path. Mutation confirmed on
    disk by occurrence counts either side (coinage 1 / landed phrase 0 on the ablated copy; 0 / 1 on
    the control). Control: 1 failure — H43 register, environmental, a sibling-repo copy cannot see
    the governed register. Ablated: 4 failures, i.e. the same environmental one plus exactly the
    three H8 pins (names the release act in the spelling that LANDED, quoting the rule line unbroken, and the grep-negative flipping to got true, want false). No rebuild leg applies —
    node loads this .mjs source directly, there is no dist/ in the resolution path. The tree
    file's blob hash was identical before and after (3161d0b325…, equal to its HEAD blob).
  • Gates. dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 32
    commands from the committed change set; all 32 ran, all exit 0, and --ran reconciles:
    32 derived, 32 run, 0 NOT-MEASURED, 0 UNRUN. The 7 roster gates whose baseline sits under
    scripts/ were also run green. check-governed-merges.mjs --test on this file list:
    NOT governed.
  • Whole-repo pnpm lint through the shared verify lock: VERDICT command-exit 0. Not a
    narrowed run — the full farm.
  • NOT MEASURED, named rather than skipped: check:dts-closure and
    check:published-readme-exports both exit 3 PREREQUISITE NOT MET here (no package dist/;
    they need a whole-repo build). Neither can be moved by a one-file scripts/pm/ diff, and CI
    builds before running them.

Known-red step, inherited and untouched

main has been red on Lint & Repo Gates at pnpm check:merge-driver since 17:05Z —
Corepack resolving pnpm 12.3.4, which rejects the fixture's pnpm -s. It is tracked as #15992 in
the devx lane and is not this branch's; nothing here works around it. For the record, that gate
passes locally on this branch under pnpm 10.31.0. Every other check is expected green.

skip-changeset: scripts/pm/** publishes nothing from any package.


Generated by Claude Code

`scripts/pm/check-half-states.mjs` presented a shorthand inside quotation
brackets at four places. In this file's register those brackets signal a
verbatim `.claude/skills/pm-dispatch/SKILL.md` quotation, and that phrase is in
no SKILL.md: `git grep` outside this one script found zero hits, and a
non-shallow `git log -S` over SKILL.md's whole history came back empty. It was
the script's own coinage, wearing a promise the source could not answer.

Worse than a spelling nit, because the coinage names only ONE half of the act
that landed on 2026-09-05:

  释放是显式动作:让卡离手者同笔清 assignee + `Release:` 行(会话/因/去向);下一任重新认领。

Clearing the assignee is half of it; the `Release:` line is the other half. A
reader following those three remedy sentences exactly produced the shape the
H47 row exists to report — the field cleared, no record of who let the card go.
The sweeper's own remedy text prescribed a half-state.

Re-pointed at the landed line, quoted verbatim from one new module constant
(`RELEASE_ACT_RULE`, extracted from the existing transcriptions rather than
retyped) so the spellings cannot drift apart again:

- H8's full-delivery remedy (the merged-PR re-grade)
- H19's release text, shared by the closed and the unresolved branch
- H37's dispatched-residue remedy, the third sentence prescribing a release
- the H24 header-inventory paragraph, which narrated the coinage's origin and
  now reads the rule instead of the history

No predicate changes, no new rows, the four comment markers untouched.

Self-test 2414 -> 2427 cases, all passing. The four pinned cases keep their
assertions and re-point at the landed spelling; each re-pointed sentence gains
a case that the rule line is quoted UNBROKEN, one that the second half is
named, and one grep-negative that fails if the coinage returns. That negative
needle is ASSEMBLED rather than spelled: a literal would be the single hit that
defeats the whole-file grep measuring this repair, which now reads zero.

Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Co-authored-by: Claude <noreply@anthropic.com>

os-steve commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

ACCEPT — lands #15899 as ruled. Pure code (one file under scripts/pm/, governed-surface predicate exit 0), so ready + SQUASH auto-merge follow in this same act; the merge waits on main's own red (below), not on anything in this diff.

What the seat verified, at head 67bec961f4, in its own compare worktree (merge base f7db8f4fd2)

Open question answered: A for this PR; C filed as #16016 (a gate for bracketed pseudo-quotations that no SKILL.md line carries — the class, not the instance). The two tidiness items (inline release-rule spellings in H24/H47; drifted line numbers in two docblocks) are folded into #16003's flight on this file.

Implemented-by: os-dev executor, flight #15899, branch claude/issue-15899-release-quote-both-halves
Reviewed-by: pm-dispatch skills seat, https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox


Generated by Claude Code

@os-steve
os-steve marked this pull request as ready for review September 5, 2026 19:00
@os-steve
os-steve enabled auto-merge September 5, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants