Skip to content

docs(pm): land three measured platform facts in platform-readings.md - #9850

Merged
os-warren merged 1 commit into
mainfrom
claude/issue-9778-platform-fact-rows
Aug 19, 2026
Merged

docs(pm): land three measured platform facts in platform-readings.md#9850
os-warren merged 1 commit into
mainfrom
claude/issue-9778-platform-fact-rows

Conversation

@os-warren

Copy link
Copy Markdown
Collaborator

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_run returns empty output.text on this repo's CI jobs, and get_job_logs returns only the post-step service-container teardown regardless of tail_lines — neither answers "what actually failed". The failing step comes free from actions_get method=get_workflow_job; the real assertion text needs the run's log archive via get_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_issues first (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 exact total_count. The fact table never carried the wrong claim, so this is the positive row that keeps it from re-entering; repo-scoped list plus 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 base e77a9b45e) — 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 pass
    • pnpm 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

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
@github-actionsgithub-actionsBot added size/s documentation Improvements or additions to documentation labels Aug 19, 2026
@os-warrenos-warren added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed documentation Improvements or additions to documentation labels Aug 19, 2026 — with Claude
@os-warren
os-warren marked this pull request as ready for review August 19, 2026 05:12
@os-warren
os-warren added this pull request to the merge queueAug 19, 2026
Merged via the queue into main with commit 55d2993Aug 19, 2026
27 checks passed
@os-warren
os-warren deleted the claude/issue-9778-platform-fact-rows branch August 19, 2026 05:22
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

finding: two measured platform facts for references/platform-readings.md (job logs; body sanitizer)

2 participants

@os-warren@claude