Uh oh!
There was an error while loading. Please reload this page.
docs(pm): land three measured platform facts in platform-readings.md - #9850
Merged
Conversation
Fact 1 (failed-job forensics): get_check_run returns empty output.text and
get_job_logs only post-step teardown on this repo's CI jobs; failing step via
actions_get method=get_workflow_job, real assertion text via the run's log
archive (get_workflow_run_logs_url, per-step files under
{Job name}/{step number}_{step name}.txt). Sharpened into the existing
take-the-archive row.
Fact 2 (sanitizer mechanism is tag shape, not angle brackets): tag-shaped
tokens in inline backticks are deleted from issue bodies on write (200 on
write, visible only on read-back); a lone angle bracket in inline code
survives; fenced blocks survive whole. Rewrote the write-side row in place and
merged the duplicated author rule from the byte-deletion row into it.
Fact 3 (search API works): dedupe by search_issues first (measured 2026-08-18
23:3xZ, one call, body-text match); list + control demoted to fallback. The
fact table never carried the wrong inherited claim, so this is the positive
row that keeps it from re-entering.
Net additions paid by genuine deletions in the same file (curl boilerplate,
redundant cross-file pointer in the usage-wall trailer): 134 lines before,
134 after, ceiling 134.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
This was referenced Aug 19, 2026
os-warren
marked this pull request as ready for review
August 19, 2026 05:12
Uh oh!
There was an error while loading. Please reload this page.
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.
Fixes#9778
Lands the card's three measured facts as fact-table rows in
.claude/skills/pm-dispatch/references/platform-readings.md, in the file's existing idiom (Chinese prose, machine criteria English, dated readings). File surface is that one file only.What changed
Fact 1 — failed-job forensics (sharpened into the existing take-the-full-archive row, dated 2026-08-18):
get_check_runreturns emptyoutput.texton this repo's CI jobs, andget_job_logsreturns only the post-step service-container teardown regardless oftail_lines— neither answers "what actually failed". The failing step comes free fromactions_get method=get_workflow_job; the real assertion text needs the run's log archive viaget_workflow_run_logs_url, then download/unzip, per-step files under{Job name}/{step number}_{step name}.txt.Fact 2 — sanitizer mechanism is tag shape, not angle brackets (write-side row rewritten in place, dated 2026-08-18): tag-shaped tokens in inline backticks are deleted from issue bodies on write (write returns 200; corruption visible only on read-back); a lone angle bracket in inline code survives; fenced blocks survive whole. The previously-duplicated author rule from the byte-deletion row is merged into this row as one operative form (fenced block with dangerous characters spelled out, or brace placeholders; read back after any angle-bracket write). Also records the measured comment-path reading from this shift: 4 issue-comment writes, 1 marker absent, cause unattributed — read-back does not exempt comments.
Fact 3 — dedupe by
search_issuesfirst (new row, dated 2026-08-18 23:3xZ): the inherited "search API unavailable to this session" claim is measured FALSE — one call matched on body text with exacttotal_count. The fact table never carried the wrong claim, so this is the positive row that keeps it from re-entering; repo-scopedlistplus control demoted to fallback.Line budget (ratchet ceiling 134, headroom 0)
Before: 134 — after: 134 — net additions paid by genuine deletions in the same file, no re-wrap of untouched rows: dropped the spelled-out curl invocation boilerplate from the quota row (the short form keeps the same instruction), and dropped a redundant pointer sentence in the usage-wall trailer that restated what the main file already carries.
Gates (all run at head
221640d7f)pnpm check:pm-skill-ratchet— "platform-readings.md is 134 lines (ceiling 134; headroom 0)."pnpm check:pm-skill-id-lint— "9 file(s) clean" (no issue-number citations; new rows carry dates and readings only)node scripts/pm/dispatch-gates.mjs(no paths; change set derived from merge basee77a9b45e) — 6 families matched, all run:pnpm check:doc-authoring— "377 files clean — no bare metadata literals."pnpm --filter @objectstack/lint run check:doc-formula-expressions— "22 record-scoped formula example(s) … judged clean"pnpm check:pm-governed-merges— self-test, 77 assertions passpnpm check:skill-frame-sync— "4 copies of the decision frame are structurally isomorphic across 3 files"node scripts/check-nul-bytes.mjs— "OK (scanned 6280 text file(s) … no raw ASCII control bytes)."Governed surface (
.claude/**): this PR opens draft and stays draft — a human merges it.Generated by Claude Code