The state
bin/render-routing.sh --check enforces an 80,000-word budget on the baseline tier — the skills every session loads whether or not it needs them. On master at 33f8a93 that tier measured 79,999 words. One word of headroom.
That is not a near miss, it is a saturated budget: the next change that adds a single sentence to any baseline file fails CI, regardless of merit. PR #88 hit it (+167) and #89 is currently red for this reason alone.
Why it is worth a decision rather than a workaround
Each of the three escapes the check itself suggests has a real cost, and none is obviously right:
- Raise the budget. One line. But bumping a guardrail to admit your own change is the instinct the guardrail exists to resist, and nothing then stops the tier reaching 82,000 the same way.
- Move a row to
ondemand. Frees plenty. But it changes what every session loads by default — a behaviour change that should be argued on the merits of that skill, not chosen because it happened to be large.
- Trim a baseline file. Attacks the cause.
skills/conversion-runbook.md is 14,004 words — 17% of the entire tier, twice the next largest. But trimming it as a side effect of an unrelated PR puts uninspected edits into the most load-bearing file in the toolkit.
Data
Largest baseline files:
| words |
file |
| 14,004 |
skills/conversion-runbook.md |
| 7,355 |
skills/learned-mdl-preflight.md |
| 5,347 |
skills/module-review.md |
| 5,285 |
skills/testing-shape.md |
| 4,628 |
skills/learned-microflow-patterns.md |
The top five are 36,619 words — 46% of the tier.
Question for whoever owns this
Is 80,000 a measured context threshold, or a round number chosen when the tier was half this size? The answer decides which escape is correct. If it was measured, the tier needs trimming and the budget should stay. If it was a placeholder, it should be re-derived from what a session can actually carry and then defended.
Parked on this
Two paragraphs from #88 are held back until this is settled — the fourth row in conversion-runbook.md's Entry Modes table (Change an existing app) and the two-register split in checkpoint-template.md. Both are +167 words of baseline. The functional half of #88 — the gate-check.sh parser and its two fixture tests — is merged and unaffected; existing-app-change.md and close-the-loop.md are ondemand and carry the full guidance in the meantime.
Surfaced by: Marketplace-RnD field run, 2026-09-17.
The state
bin/render-routing.sh --checkenforces an 80,000-word budget on the baseline tier — the skills every session loads whether or not it needs them. On master at33f8a93that tier measured 79,999 words. One word of headroom.That is not a near miss, it is a saturated budget: the next change that adds a single sentence to any baseline file fails CI, regardless of merit. PR #88 hit it (+167) and #89 is currently red for this reason alone.
Why it is worth a decision rather than a workaround
Each of the three escapes the check itself suggests has a real cost, and none is obviously right:
ondemand. Frees plenty. But it changes what every session loads by default — a behaviour change that should be argued on the merits of that skill, not chosen because it happened to be large.skills/conversion-runbook.mdis 14,004 words — 17% of the entire tier, twice the next largest. But trimming it as a side effect of an unrelated PR puts uninspected edits into the most load-bearing file in the toolkit.Data
Largest baseline files:
skills/conversion-runbook.mdskills/learned-mdl-preflight.mdskills/module-review.mdskills/testing-shape.mdskills/learned-microflow-patterns.mdThe top five are 36,619 words — 46% of the tier.
Question for whoever owns this
Is 80,000 a measured context threshold, or a round number chosen when the tier was half this size? The answer decides which escape is correct. If it was measured, the tier needs trimming and the budget should stay. If it was a placeholder, it should be re-derived from what a session can actually carry and then defended.
Parked on this
Two paragraphs from #88 are held back until this is settled — the fourth row in
conversion-runbook.md's Entry Modes table (Change an existing app) and the two-register split incheckpoint-template.md. Both are +167 words of baseline. The functional half of #88 — thegate-check.shparser and its two fixture tests — is merged and unaffected;existing-app-change.mdandclose-the-loop.mdareondemandand carry the full guidance in the meantime.Surfaced by: Marketplace-RnD field run, 2026-09-17.