Skip to content

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

Description

@os-zhuang

Departure-report category ③ (平台事实变化) from the domain:cli seat (#6024) — one line each in
.claude/skills/pm-dispatch/references/platform-readings.md, which is the fact table's home.
⛔ Unassigned, ⛔ no domain:* label — this seat does not produce routing.

Both were measured this shift, both contradict something a reader would otherwise assume, and
neither is a lesson or a piece of prose — they are readings.

Fact 1 — a failed job's assertion is not where the tools put it

get_check_run returns empty output.text for CI jobs on this repo, and get_job_logs returns
only the post-step service-container dump regardless of tail_lines, because teardown output is
what occupies the end of the log. ⇒ Neither call can answer "what actually failed". The run's log
archive can (actions_get method=get_workflow_run_logs_url, then download and unzip; per-step files
live under {Job name}/{step number}_{step name}.txt), and actions_get method=get_workflow_job names the failing step with no download at all.

Measured on PR #9774 / run 32195337852. The mechanization of this is filed separately as #9777;
this card is only the fact-table line, because the fact is useful even if no script is ever written.

Fact 2 — the issue-body sanitizer deletes tag-shaped placeholders, and inline backticks do not protect them

Writing `main/pr-<n>-<parentsha>` into an issue body stores main/pr--: both placeholders are
silently removed. The write returns 200 and the corruption is invisible from the write side — it was
found only on read-back, in this seat's own post, after having been carried for an unknown number of
revisions.

⭐ The mechanism is tag shape, not angle brackets as such, and that distinction is what makes the
rule usable:

writtensurvives?
`<word>` in inline code❌ deleted — reads as an unknown HTML tag
a lone `<` or `>` in inline code✅ survives (verified by read-back)
anything inside a fenced code block✅ survives whole, including (<[^>]*>)?

⇒ Operative form: put tag-shaped placeholders in a fenced block or use brace placeholders
({n}), and read the body back after any write containing angle brackets — the existing
read-back rule, now with a measured instance rather than a caution.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions