You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[finding] check-skill-line-ratchet's release-aftercare comment still says landing-operations.md's ceiling "stays at 82" — the map pins it at 80 with zero slack #13093
Filed unassigned by the dev seat landing PR #13092 (which had to compute that file's exact byte budget, which is how the stale line surfaced). Comment-only; the gate itself is correct and green.
and eight lines below, in the comment block attached to the release-aftercare.md entry:
// count (headroom 0, same convention as the entries above). Its pointer from// landing-operations.md rides existing slack on that file's last// MERGED-tracking line, so that ceiling stays at 82 — no re-wrap, no cut.['.claude/skills/pm-dispatch/references/release-aftercare.md',58],
"that ceiling" is landing-operations.md's, and it is 80, not 82. The file's own header comment records the move explicitly:
landing-operations.md moved the other way (82 to 80, its standing headroom locked in)
So the release-aftercare comment was true when written and went stale when that re-pin landed. Nothing reads it, so nothing went red.
Why it is worth a card rather than nothing
It is wrong in the direction that costs an author a round. Two claims, both false today:
"that ceiling stays at 82" — a reader planning an edit to landing-operations.md reads 2 lines of headroom that do not exist. The real state is 80/80, headroom 0, and the gate says so on every run: ✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/landing-operations.md is 80 lines (ceiling 80; headroom 0).
"rides existing slack on that file's last MERGED-tracking line" — there is no slack on that line or any other. Measured with the script's own wrapLine over every paragraph and list item in the file: the canonical wrap of each one is already the number of lines it occupies, so no paragraph gives a line back without a content cut.
The file is the one with the tightest budget in the ratcheted set and it is edited often, so the wrong number is read at exactly the moment it matters.
Suggested shape (not prescriptive)
Correct the number to 80 and drop or restate the "rides existing slack" clause, since headroom 0 is what the same block asserts for every other entry. It is a comment edit inside a governed file, so it needs the usual net-0 discipline in whatever PR carries it — cheap to fold into any other ratchet-script round rather than spending a PR on its own.
{
"issue": 13093,
"status": "done",
"premise_still_valid": true,
"branch": "claude/issue-13093-ratchet-comment",
"worktree": "/home/user/objectstack-13093-comment",
"pr_url": "https://github.com/objectstack-ai/objectstack/pull/13161",
"pr_number": 13161,
"draft": true,
"edits": "One file, one hunk, +5/-3, comment-only: scripts/pm/check-skill-line-ratchet.mjs lines 257-259. Dropped both stale claims ('that ceiling stays at 82' and 'rides existing slack on that file's last MERGED-tracking line') rather than restating corrected numbers. Replacement points at the landing-operations.md CEILINGS entry directly above and records WHY the arithmetic is absent, so it cannot re-stale and a later author does not re-add it. No ceiling value, no predicate, no CEILINGS datum touched — the SKILL.md row-pin a later queued card will lower is untouched.",
"summary": "The release-aftercare.md comment block carried two claims stale since landing-operations.md was re-pinned 82 to 80. Both confirmed stale by measurement, then removed in favour of the smaller non-re-staling wording the card preferred. Claim 1 refuted by the gate's own verdict line: 'landing-operations.md is 80 lines (ceiling 80; headroom 0)'; the file header already recorded the 82 to 80 move, so the comment contradicted both its neighbour and its own header. Claim 2 refuted positionally: the pointer sits at line 49 while the last MERGED-tracking line is now line 53.",
"tests": "All runs at commit 08caf7243 (branch head; working tree clean). Exit codes captured by redirect-then-capture, never through a pipe. Union derived mechanically via 'node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack' (stderr provenance confirmed: derived from objectstack-ai/objectstack at 08caf7243, --repo assertion holds; 1 path vs merge base 56470d86b, three-dot). 16 of 17 families GREEN. Key verdict lines: 'check-skill-line-ratchet self-test: 111 cases pass.' and 'check-skill-line-ratchet: .claude/skills/pm-dispatch/references/landing-operations.md is 80 lines (ceiling 80; headroom 0).' Also green: check:agent-test-spelling, check:bash32-floor, check:cli-command-ids, check:cross-package-test-inputs, check:entry-guard, check:parse-guard, check:pnpm-filter-targets, check:watch-hint-literal, check-ci-filter-parity.mjs, check-cross-package-test-inputs.mjs, check-shard-attestation.mjs. Convention-triggered (edited a GATE SCRIPT), both green: bare-root-worklist.mjs --self-test, check:pm-dispatch-gates. Blast radius (scripts that textually reference the edited file), both green: check-published-list-mirrors.mjs, check-skills-token-ratchet.mjs. NOT MEASURED (not red): check-test-completeness.mjs — CI-only, no pnpm wrapper, takes a runtime turbo log; invoked bare it prints its usage line and exits 1, an invocation error rather than a verdict. No ablation was applicable (comment-only change; no predicate to mutate). Control-char self-scan of the edited file: no matches.",
"gates": "16 green / 1 not-measured (check-test-completeness.mjs, CI-only). No red.",
"changeset": "none — skip-changeset label applied at PR-open via read-union-write-readback on the MCP channel. Read set was ['size/xs'] (size-labeler had already run); wrote union ['size/xs','skip-changeset']; comparative read-back returned exactly ['size/xs','skip-changeset'], so nothing was stripped by the whole-set write.",
"mcp_calls": 9,
"stopped": false,
"open_questions": [],
"out_of_scope_findings": [],
"notes": [
"CARD DISCREPANCY, does not change the fix: the card stated claim 2 was refuted because 'no slack exists on any line — measured with the script's own wrapLine'. Measured here against the script's own MAX_LINE_BYTES of 120, per-line byte slack DOES exist: the pointer line 49 is 104 bytes (16B spare) and line 53 is 98 bytes (22B spare). Claim 2 is stale for a different reason than the card gave — the pointer is at line 49 while the LAST MERGED-tracking line is now 53, and the file sits at ceiling 80 with headroom 0. Reporting the measurement as observed rather than as the card predicted.",
"CHANNEL SWITCH DECLARED: repo-scoped REST is 403 for this seat ('GitHub access is not enabled for this session') and gh is absent — the measured container-dev shape. All GitHub writes and reads went through MCP.",
"FOOTER, dispatch vs standing clause: the dispatch asked for a bare footer with no preceding separator; the standing os-dev clause makes the session-URL form the create-time PR-body form. Followed the standing clause per the 'prompt conflicts with the standing file, standing file wins' rule, and flagging it here as required. The platform then appended a SECOND session-URL footer preceded by a horizontal rule. Left as-is and not 'repaired': a PATCH edit would normalise the footer down to bare and risks a body that is currently intact.",
"PR body read back in full after create: complete, both code blocks and the whole gate table present. The entity-escaped apostrophes in the API JSON are the API's own encoding, not sanitizer damage.",
"LANDING: non-governed surface (scripts/pm), delivered as draft per dispatch; PM self-reviews and lands. Report delivered to GitHub first per contract, then as the final message.",
"Worktree /home/user/objectstack-13093-comment left in place pending PM review; teardown on request."
]
}
Activity
os-litant commentedon Aug 29, 2026
Claim: skills 席派发认领(定级 LOW-MEDIUM——纯注释陈旧,但错向会费一轮;同笔离⚠️ #13090 也要动本脚本——pin 765→642 跟降,Blocked-by PR 13085;本卡先行,13090 排后)。
finding)。Session:
session_01MnijPVVDakqK2J335JoJtq· Branch:claude/issue-13093-ratchet-comment· Worktree:../objectstack-13093-comment(dev 自建)File surface:
scripts/pm/check-skill-line-ratchet.mjsrelease-aftercare 条目注释两句(「stays at 82」与「rides existing slack」双假)。非治理面(scripts/pm)⇒ 落地走 PM 自审直落道。Container & model: os-dev 子代理;opus 执行。
Clause-② limb: 不触发(注释,不改谓词)。
Serial: 该脚本无占用(
Generated by Claude Code
os-litant commentedon Aug 29, 2026
os-dev-report
{ "issue": 13093, "status": "done", "premise_still_valid": true, "branch": "claude/issue-13093-ratchet-comment", "worktree": "/home/user/objectstack-13093-comment", "pr_url": "https://github.com/objectstack-ai/objectstack/pull/13161", "pr_number": 13161, "draft": true, "edits": "One file, one hunk, +5/-3, comment-only: scripts/pm/check-skill-line-ratchet.mjs lines 257-259. Dropped both stale claims ('that ceiling stays at 82' and 'rides existing slack on that file's last MERGED-tracking line') rather than restating corrected numbers. Replacement points at the landing-operations.md CEILINGS entry directly above and records WHY the arithmetic is absent, so it cannot re-stale and a later author does not re-add it. No ceiling value, no predicate, no CEILINGS datum touched — the SKILL.md row-pin a later queued card will lower is untouched.", "summary": "The release-aftercare.md comment block carried two claims stale since landing-operations.md was re-pinned 82 to 80. Both confirmed stale by measurement, then removed in favour of the smaller non-re-staling wording the card preferred. Claim 1 refuted by the gate's own verdict line: 'landing-operations.md is 80 lines (ceiling 80; headroom 0)'; the file header already recorded the 82 to 80 move, so the comment contradicted both its neighbour and its own header. Claim 2 refuted positionally: the pointer sits at line 49 while the last MERGED-tracking line is now line 53.", "tests": "All runs at commit 08caf7243 (branch head; working tree clean). Exit codes captured by redirect-then-capture, never through a pipe. Union derived mechanically via 'node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack' (stderr provenance confirmed: derived from objectstack-ai/objectstack at 08caf7243, --repo assertion holds; 1 path vs merge base 56470d86b, three-dot). 16 of 17 families GREEN. Key verdict lines: 'check-skill-line-ratchet self-test: 111 cases pass.' and 'check-skill-line-ratchet: .claude/skills/pm-dispatch/references/landing-operations.md is 80 lines (ceiling 80; headroom 0).' Also green: check:agent-test-spelling, check:bash32-floor, check:cli-command-ids, check:cross-package-test-inputs, check:entry-guard, check:parse-guard, check:pnpm-filter-targets, check:watch-hint-literal, check-ci-filter-parity.mjs, check-cross-package-test-inputs.mjs, check-shard-attestation.mjs. Convention-triggered (edited a GATE SCRIPT), both green: bare-root-worklist.mjs --self-test, check:pm-dispatch-gates. Blast radius (scripts that textually reference the edited file), both green: check-published-list-mirrors.mjs, check-skills-token-ratchet.mjs. NOT MEASURED (not red): check-test-completeness.mjs — CI-only, no pnpm wrapper, takes a runtime turbo log; invoked bare it prints its usage line and exits 1, an invocation error rather than a verdict. No ablation was applicable (comment-only change; no predicate to mutate). Control-char self-scan of the edited file: no matches.", "gates": "16 green / 1 not-measured (check-test-completeness.mjs, CI-only). No red.", "changeset": "none — skip-changeset label applied at PR-open via read-union-write-readback on the MCP channel. Read set was ['size/xs'] (size-labeler had already run); wrote union ['size/xs','skip-changeset']; comparative read-back returned exactly ['size/xs','skip-changeset'], so nothing was stripped by the whole-set write.", "mcp_calls": 9, "stopped": false, "open_questions": [], "out_of_scope_findings": [], "notes": [ "CARD DISCREPANCY, does not change the fix: the card stated claim 2 was refuted because 'no slack exists on any line — measured with the script's own wrapLine'. Measured here against the script's own MAX_LINE_BYTES of 120, per-line byte slack DOES exist: the pointer line 49 is 104 bytes (16B spare) and line 53 is 98 bytes (22B spare). Claim 2 is stale for a different reason than the card gave — the pointer is at line 49 while the LAST MERGED-tracking line is now 53, and the file sits at ceiling 80 with headroom 0. Reporting the measurement as observed rather than as the card predicted.", "CHANNEL SWITCH DECLARED: repo-scoped REST is 403 for this seat ('GitHub access is not enabled for this session') and gh is absent — the measured container-dev shape. All GitHub writes and reads went through MCP.", "FOOTER, dispatch vs standing clause: the dispatch asked for a bare footer with no preceding separator; the standing os-dev clause makes the session-URL form the create-time PR-body form. Followed the standing clause per the 'prompt conflicts with the standing file, standing file wins' rule, and flagging it here as required. The platform then appended a SECOND session-URL footer preceded by a horizontal rule. Left as-is and not 'repaired': a PATCH edit would normalise the footer down to bare and risks a body that is currently intact.", "PR body read back in full after create: complete, both code blocks and the whole gate table present. The entity-escaped apostrophes in the API JSON are the API's own encoding, not sanitizer damage.", "LANDING: non-governed surface (scripts/pm), delivered as draft per dispatch; PM self-reviews and lands. Report delivered to GitHub first per contract, then as the final message.", "Worktree /home/user/objectstack-13093-comment left in place pending PM review; teardown on request." ] }Generated by Claude Code