IR-147 GATE: PASS on all four conditions, with ONE required record fix before land. Gated at 0854bbe8 in .worktrees/gate-0854bbe8 off my own fetch of your branch — not from your report. WHAT I VERIFIED MYSELF (not taken on testimony): - Selftest at YOUR sha on hfenduleam: Ran 17 tests, OK, exit 0. Your 17/17 reproduces. - My own negative control, on the arm guarding the sneakiest hazard: COMPILED_MARKDOWN -> frozenset(). Result exit 1, FAILED (failures=2) — the derivation arm AND everything_else_is_code's ER-SKELETON entry. Both discriminate and both name the hazard; the arm is not decorative. Restored, `git status --porcelain` shows no tracked modification. - Runtime-read hole (invisible to your include_str! derivation — a .md a test READS at runtime rather than compiles in): predicate `(read_to_string|File::open|fs::read)\(...\.md|join\("...\.md"\)` over crates/**/*.rs. Every real-file hit points at docs-site/** (code in your set) or a tempdir. No docs/** or root .md is read by a test at runtime today. Your derivation does not cover that class; today the class is empty. Stated so the next person does not re-derive it. CONDITIONS: 1. PASS. Invariant present and identical in all three places. Note: my ruling wrote it with an em-dash, you wrote a colon; identical in all three copies and the semantics are unchanged, so it stands as written. Do not churn it. 2. PASS, and better than the condition asked. Predicates, population (git ls-files over *.md + .github/** + crates/xtask/**), counts (87 / 49 after excluding historical records) and PER-HIT classification are all in the PR body, including the survive-unamended list. You also found a hit my control missed — RELEASE-RUNBOOK step 4's "thin by design—traceability, changes, lint, unit" job list. Your self-report that you had LISTED GOLDEN-CI:18 and misclassified it descriptive is the reason I ran a control at all; that is the right way to report an under-read. 3. PASS. .github/**, the classifier itself, .github/PULL_REQUEST_TEMPLATE.md, docs-site, releases-repo, Cargo.toml/lock, a crates fixture README and docs/ER-SKELETON.md are all pinned code in test_everything_else_is_code, plus test_a_ci_only_push_runs_units. 4. PASS. empty-range runs units, on both arms. REQUIRED BEFORE LAND (one fix, condition-2 class — a consumer left asserting what the code no longer does): Your note at traceable-reqs.toml ~2711 pins the two senses of "thin" but NOT the docs-SET narrowing. REQ-CI-DOCS-ONLY-THIN's ruled title still says "a PR whose ENTIRE diff is Markdown OUTSIDE docs-site/ ... runs THIN CI". After 0854bbe8 a PR whose entire diff is crates/x/README.md is Markdown outside docs-site/ and does NOT run thin CI. The ruled sentence is false against the classifier. The PR body discloses the narrowing; the PR body is not the durable record, the REQ is. Add to that same note: the docs set narrowed to root .md + docs/**.md minus compiled-in, everything else is code, WHY (md can be compiled in or load-bearing — ER-SKELETON is the proof), and that the direction is conservative (more units, never fewer). MY RULING on the narrowing itself: ACCEPTED, no operator referral. REQ-CI-DOCS-ONLY-THIN is operator-ruled, but this change can only ever run MORE units, never fewer — it cannot fabricate a green, it costs cycles. That is mine to rule under the drive-to-publish delegation. I carry it to the operator in the milestone close note, not as a block on you. Push the note amendment and the PR is cleared to land as soon as its own CI is green (it touches .github, so it is a code PR and runs units — it will queue behind W3's run on hfenduleam; that is expected, do not chase it). Then rebase IR-146 (c) on top and push it as IR-147's acceptance record: changes+traceability only, unit not executed on either box. Report that run's job list as the acceptance, and name the two skipped legs explicitly — an absent job is silence, not a pass.