Context
Sub of #13652. Operator direction, 2026-07-25, from live flatrate-burn economics.
post-review-pickup is 33,025 bytes across 5 files — the 4th-largest skill payload — and it exists to prevent exactly one failure mode the operator named: an agent finishing a PR and claiming "there is nothing left to do!", which is absurd against 200+ open tickets plus two skills (ideation-sandbox, tech-debt-radar) that mint effectively unbounded new ones, plus a mailbox that generates lanes on its own once peers are online (help requests, review requests).
The operator's full intent, stated verbatim in-session, is four facts:
- once you finish a PR, pick up a new lane;
- ideally one that relates to your current context window (semantic distance, focus);
- if there are multiple strong candidates, which one you choose does not matter much;
- "nothing left to do" is never true.
That is ~500 bytes of intent carried by a 33KB payload — roughly 60×.
Three of those four facts are already turn-loaded, in the always-present L3 firewall block: "There is no hold state. A lane done / blocked / merge-pending / peer-waiting is never a stop — jump to a different high-value area; high-value work is infinite, we never run out." So the payload is largely paying a second time for a stance that already costs nothing.
Model-generation context. This payload was authored when the swarm ran Gemini 3 Pro, Opus 4.6, and GPT 5.5. The seats are now GPT 5.6 Sol, Opus 5, Fable 5, and Kimi K3. Choreography that scaffolded a weaker model's lane-selection is now drain.
The Problem
Measured cost, and it is worst exactly where headroom is scarcest.
One full lifecycle path (ticket-intake → pull-request → pr-review → post-review-pickup), mandatory payloads only:
| Surface |
Bytes |
~Tokens |
| four skill payloads |
216,131 |
~60,000 |
| + turn-loaded CLAUDE.md + AGENTS_ATLAS |
46,252 |
~12,900 |
| total |
262,383 |
~72,900 |
Against the Codex flatrate window (reduced from ~370K to ~258K tokens before compaction) that is 28% of the window consumed before a single line of the code under change is read — a single-load figure. Because compaction evicts the payloads and the next lifecycle step re-reads them, cumulative per-session cost multiplies: two cycles ≈ 56%, three exceeds 70%. The GPT seats (@neo-gpt-emmy, @neo-gpt) carry this worst.
Related but distinct axis, already measured under #15877: one forced turn-end continuation costs ~1.79M–2.09M full-rate-equivalent tokens because it spawns a median-20-message chain over a deep context. That makes fact (2) above — prefer a lane adjacent to your warm context — a first-order cost lever, not merely a focus heuristic. A distant lane forces a cold context rebuild. The current payload frames lane choice as a correctness question (matrices, states, terminals) and never states the cost framing.
The Architectural Reality
.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md — 20,396 bytes (post-#15877 compression of §2.6). Section census: §1 Trigger 2,894 · §1.5 Pre-Review Intake Gate 511 · §1.6 Night-Shift Leased Driver 469 · §1.7 Three-Heartbeat Threshold 1,232 · §2 Reviewer Pickup Matrix 2,007 · §2.5 Mandatory Lane-State Emission 1,798 · §2.6 (already compressed) · §2.7 Pre-Implementation Brief 197 · §3 Author Pickup Matrix 1,133 · §4 Author-Concentration Detector 825 · §5 Turn-Terminals Externally-Falsifiable 1,792 · §5 Gated Own Lanes 1,523 · §5 Broadcast-Suppressed Fallback 1,166 · §5 Substrate-evolution-flywheel 666 · §6 Integration Points 580 · §7 Anti-Patterns 1,428.
- Sibling payloads in the same skill:
pre-review-intake-lane-gate.md, author-concentration-detector.md, authorship-capability-floor.md.
- ~6.8KB of the 20.4KB (33%) is turn-terminal / no-hold apparatus scaffolding — §2.5, §5 externally-falsifiable terminals, gated-own-lanes, §1.7 three-heartbeat, §1.6 night-shift leased driver. PR #15890 (this epic's sibling lane) ships
stopHook.laneContinuation defaulting OFF, which removes the consumer that scaffolding served.
- Governing design already exists — this ticket must not reinvent it. ADR 0008 §2.2 Recursive Application (Discussion #11314 / Epic #11319): "Map vs World Atlas applies recursively to workflow files themselves. A workflow
.md becomes a Map for its own sub-rules when it grows beyond the natural load-frequency boundary; edge-case sections extract to sibling references/<sub-rule>.md files referenced via one-line trigger pointers." Disposition vocabulary is ADR 0007's 3-Axis Slot Rule (trigger-frequency × failure-severity × enforceability → keep/move/compress-to-trigger/rewrite/retire) plus substrate-vs-discipline tagging.
- The mechanical guard exists but cannot see this file.
ai/scripts/lint/lint-skill-manifest.mjs enforces oversizedWorkflowMaps (PR #11438) — but that is a hand-maintained allowlist with exactly two entries in .agents/skills/skills.manifest.json: pr-review/references/pr-review-guide.md and pull-request/references/pull-request-workflow.md. It is not a measured threshold. post-review-pickup-workflow.md has therefore never been under recursive Map/Atlas pressure — only the global maxPositiveDeltaBytes: 250 net-growth budget, which is a one-way ratchet: it blocks accretion and never forces reduction.
Premise shift from the parent epic (surfaced, not papered over)
Epic #13652's thesis is "mechanical enforcement replaces prompt-machinery" — keep the Stop hook, strip the prose, and absorb the prose's valuable content into the hook's injected directive so nothing is lost.
Operator direction on 2026-07-25 inverts half of that: the hook's continuation apparatus is itself too expensive (#15877 / PR #15890) and now defaults OFF. Both positions agree the prose should shrink; they disagree on what replaces it. The epic said "the hook". The current answer is "nothing — a current-generation model does lane selection natively."
Consequence for the epic's load-bearing constraint: the lifecycle-first priority order it wanted absorbed into the hook directive needs a different home, or no home. This ticket takes the position that the priority order is worth keeping and the choreography around it is not — but that is the reviewable call, and a reviewer should challenge it rather than assume it.
The Fix
Rewrite post-review-pickup-workflow.md to the operator's four-fact intent, applying ADR 0008 §2.2 recursively rather than inventing a new scheme.
- Keep, compressed: never-claim-empty (with the concrete abundance pointers: open-ticket count,
ideation-sandbox, tech-debt-radar, the mailbox); prefer-the-adjacent-lane, stated as the cost lever it is; among strong candidates do not optimize the choice; the lifecycle-first priority order (own red-CI PRs → own green PRs needing a reviewer → requested reviews → blocked peer PRs → scarce cross-family reviews → backlog).
- Retire: the ~6.8KB turn-terminal / no-hold apparatus scaffolding whose consumer PR #15890 switches off — §2.5 mandatory lane-state emission mechanics, §5 externally-falsifiable terminals, gated-own-lanes, §1.7 three-heartbeat threshold, §1.6 night-shift leased driver. Retire, not relocate: moving text between skill files still counts against the budget and preserves the cost.
- Move genuinely-conditional edge cases to sibling
references/<sub-rule>.md behind one-line trigger pointers, per ADR 0008 §2.2 — not as a way to keep the bytes while passing the lint, but only where the content survives the 3-Axis Slot Rule on its own merits.
- Close the guard gap: add
post-review-pickup/references/post-review-pickup-workflow.md to oversizedWorkflowMaps so the reduction cannot silently regrow. This is the decay-mitigation the §self_evolving_systems Substrate Accretion Defense requires — without it the one-way ratchet re-inflates the file.
- Record each cut section's disposition with the ADR 0007 vocabulary in the PR body, so the reduction is reviewable per-section rather than as a byte total.
Acceptance Criteria
Out of Scope
pr-review (91,641 bytes). Operator explicitly excluded it: its payload changes the verdict — approve vs request-changes — and surfaces findings that would otherwise be missed. Verdict-changing content earns its slot at any model tier. Do not touch it in this ticket.
pull-request, ticket-intake, and the other payloads — same discriminator to be applied, but each is its own sub of #13652.
- Replacing the hand-maintained
oversizedWorkflowMaps allowlist with a measured threshold. That is a real defect (a guard that only sees a curated two-file list) but it is a lint-mechanics change with its own blast radius, and bundling it here would couple a content rewrite to an enforcement redesign.
- Turn-loaded
AGENTS.md / .claude/CLAUDE.md reduction — Tier-4 operator authority, not agent-editable.
- Re-litigating L3_No_Hold_State itself. The stance stays; only its duplicated prose scaffolding is in scope.
Avoided Traps
- Inventing a new pruning scheme. ADR 0008 §2.2 already decided recursive Map/Atlas and ADR 0007 already supplies the disposition vocabulary. A ticket that reinvented either would fragment the authority.
- Relocation disguised as reduction. Moving prose into a sibling
references/ file keeps the token cost on the next reader and still counts against the manifest budget. Only retire actually recovers cost.
- Self-report as the pruning test. An earlier proposal in-session was "after invoking a skill, name one section you did not use." Rejected: self-report cannot observe the counterfactual — a section that widened the search space registers as "I found a bug", not as "that section earned its tokens" — and the bias runs the wrong way, since checklists feel used while generative content feels unused. The discriminator adopted instead is does the payload change the verdict, or only the format, with the cheap proxy repo-specific knowledge vs general competence.
- Cutting by byte count alone. The 3-Axis Slot Rule is the gate; a small section with high failure-severity outranks a large one that merely restates turn-loaded stance.
Decision Record impact
aligned-with ADR 0008 (§2.2 Recursive Application is the governing design this ticket applies) and aligned-with ADR 0007 (3-Axis Slot Rule supplies the disposition vocabulary). No ADR is amended or challenged.
Note for the reviewer: the parent epic #13652's premise shifts (see the section above), but no ADR authority does.
Related
- Parent: #13652 (Epic — mechanical enforcement replaces prompt-machinery).
- #15877 / PR #15890 — the
stopHook.laneContinuation leaf that removes the consumer for ~6.8KB of this file's scaffolding; this ticket is blocked-by that PR, because both modify post-review-pickup-workflow.md and a second PR before merge is a self-inflicted conflict.
- #13623 (operationalize §no_hold_state), #10757 (cognitive-load audit cycle 2), #10777 (agent-runtime engagement discipline) — adjacent, not duplicates: none of them shortens this payload.
- ADR 0008 (skill anatomy), ADR 0007 (compaction taxonomy), Discussion #11314 / Epic #11319 (recursive Map/Atlas), PR #11438 (
oversizedWorkflowMaps enforcement).
Live latest-open sweep: checked latest 20 open issues at 2026-07-25T09:22Z; nearest neighbours are #13652 (parent, this is its sub), #13623, #10757, #10777 — none shortens this payload. A2A in-flight claim sweep at 2026-07-25T09:24Z over the latest 30 messages, all read-states: no [lane-claim]/[lane-intent] on skill-shortening scope; newest traffic is 8h stale (roster parked by operator).
Origin Session ID: cb8b1069-54cc-43fd-943f-0e20b45661c8
Retrieval Hint: query_raw_memories("post-review-pickup shorten skill payload intent four facts adjacent lane oversizedWorkflowMaps")
Authored by Grace (@neo-opus-grace, Opus 5)
Context
Sub of #13652. Operator direction, 2026-07-25, from live flatrate-burn economics.
post-review-pickupis 33,025 bytes across 5 files — the 4th-largest skill payload — and it exists to prevent exactly one failure mode the operator named: an agent finishing a PR and claiming "there is nothing left to do!", which is absurd against 200+ open tickets plus two skills (ideation-sandbox,tech-debt-radar) that mint effectively unbounded new ones, plus a mailbox that generates lanes on its own once peers are online (help requests, review requests).The operator's full intent, stated verbatim in-session, is four facts:
That is ~500 bytes of intent carried by a 33KB payload — roughly 60×.
Three of those four facts are already turn-loaded, in the always-present L3 firewall block: "There is no hold state. A lane done / blocked / merge-pending / peer-waiting is never a stop — jump to a different high-value area; high-value work is infinite, we never run out." So the payload is largely paying a second time for a stance that already costs nothing.
Model-generation context. This payload was authored when the swarm ran Gemini 3 Pro, Opus 4.6, and GPT 5.5. The seats are now GPT 5.6 Sol, Opus 5, Fable 5, and Kimi K3. Choreography that scaffolded a weaker model's lane-selection is now drain.
The Problem
Measured cost, and it is worst exactly where headroom is scarcest.
One full lifecycle path (
ticket-intake→pull-request→pr-review→post-review-pickup), mandatory payloads only:Against the Codex flatrate window (reduced from ~370K to ~258K tokens before compaction) that is 28% of the window consumed before a single line of the code under change is read — a single-load figure. Because compaction evicts the payloads and the next lifecycle step re-reads them, cumulative per-session cost multiplies: two cycles ≈ 56%, three exceeds 70%. The GPT seats (
@neo-gpt-emmy,@neo-gpt) carry this worst.Related but distinct axis, already measured under #15877: one forced turn-end continuation costs ~1.79M–2.09M full-rate-equivalent tokens because it spawns a median-20-message chain over a deep context. That makes fact (2) above — prefer a lane adjacent to your warm context — a first-order cost lever, not merely a focus heuristic. A distant lane forces a cold context rebuild. The current payload frames lane choice as a correctness question (matrices, states, terminals) and never states the cost framing.
The Architectural Reality
.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md— 20,396 bytes (post-#15877 compression of §2.6). Section census: §1 Trigger 2,894 · §1.5 Pre-Review Intake Gate 511 · §1.6 Night-Shift Leased Driver 469 · §1.7 Three-Heartbeat Threshold 1,232 · §2 Reviewer Pickup Matrix 2,007 · §2.5 Mandatory Lane-State Emission 1,798 · §2.6 (already compressed) · §2.7 Pre-Implementation Brief 197 · §3 Author Pickup Matrix 1,133 · §4 Author-Concentration Detector 825 · §5 Turn-Terminals Externally-Falsifiable 1,792 · §5 Gated Own Lanes 1,523 · §5 Broadcast-Suppressed Fallback 1,166 · §5 Substrate-evolution-flywheel 666 · §6 Integration Points 580 · §7 Anti-Patterns 1,428.pre-review-intake-lane-gate.md,author-concentration-detector.md,authorship-capability-floor.md.stopHook.laneContinuationdefaulting OFF, which removes the consumer that scaffolding served..mdbecomes a Map for its own sub-rules when it grows beyond the natural load-frequency boundary; edge-case sections extract to siblingreferences/<sub-rule>.mdfiles referenced via one-line trigger pointers." Disposition vocabulary is ADR 0007's 3-Axis Slot Rule (trigger-frequency × failure-severity × enforceability →keep/move/compress-to-trigger/rewrite/retire) plus substrate-vs-discipline tagging.ai/scripts/lint/lint-skill-manifest.mjsenforcesoversizedWorkflowMaps(PR #11438) — but that is a hand-maintained allowlist with exactly two entries in.agents/skills/skills.manifest.json:pr-review/references/pr-review-guide.mdandpull-request/references/pull-request-workflow.md. It is not a measured threshold.post-review-pickup-workflow.mdhas therefore never been under recursive Map/Atlas pressure — only the globalmaxPositiveDeltaBytes: 250net-growth budget, which is a one-way ratchet: it blocks accretion and never forces reduction.Premise shift from the parent epic (surfaced, not papered over)
Epic #13652's thesis is "mechanical enforcement replaces prompt-machinery" — keep the Stop hook, strip the prose, and absorb the prose's valuable content into the hook's injected directive so nothing is lost.
Operator direction on 2026-07-25 inverts half of that: the hook's continuation apparatus is itself too expensive (#15877 / PR #15890) and now defaults OFF. Both positions agree the prose should shrink; they disagree on what replaces it. The epic said "the hook". The current answer is "nothing — a current-generation model does lane selection natively."
Consequence for the epic's load-bearing constraint: the lifecycle-first priority order it wanted absorbed into the hook directive needs a different home, or no home. This ticket takes the position that the priority order is worth keeping and the choreography around it is not — but that is the reviewable call, and a reviewer should challenge it rather than assume it.
The Fix
Rewrite
post-review-pickup-workflow.mdto the operator's four-fact intent, applying ADR 0008 §2.2 recursively rather than inventing a new scheme.ideation-sandbox,tech-debt-radar, the mailbox); prefer-the-adjacent-lane, stated as the cost lever it is; among strong candidates do not optimize the choice; the lifecycle-first priority order (own red-CI PRs → own green PRs needing a reviewer → requested reviews → blocked peer PRs → scarce cross-family reviews → backlog).references/<sub-rule>.mdbehind one-line trigger pointers, per ADR 0008 §2.2 — not as a way to keep the bytes while passing the lint, but only where the content survives the 3-Axis Slot Rule on its own merits.post-review-pickup/references/post-review-pickup-workflow.mdtooversizedWorkflowMapsso the reduction cannot silently regrow. This is the decay-mitigation the §self_evolving_systems Substrate Accretion Defense requires — without it the one-way ratchet re-inflates the file.Acceptance Criteria
post-review-pickup-workflow.mdcarries the four intent facts, including prefer-the-adjacent-lane stated as a cost lever with its ~2M-token-per-cold-chain rationale..agents/skillsMarkdown delta for the PR is negative, and the PR does not use[skill-growth-justified:]to pass the budget.post-review-pickup-workflow.md≤ 8,000 bytes (from 20,396) — a target, and a reviewer may accept a higher number if a named section defends its slot under the 3-Axis Slot Rule.retire/move/compress-to-trigger) and a one-line rationale.defaults.oversizedWorkflowMapsin.agents/skills/skills.manifest.json, andnode ai/scripts/lint/lint-skill-manifest.mjs --base origin/devpasses.create-skill/ ADR 0008 §2.1 frontmatter + Map/Atlas contract still satisfied;SKILL.mdrouter unchanged in shape.Out of Scope
pr-review(91,641 bytes). Operator explicitly excluded it: its payload changes the verdict — approve vs request-changes — and surfaces findings that would otherwise be missed. Verdict-changing content earns its slot at any model tier. Do not touch it in this ticket.pull-request,ticket-intake, and the other payloads — same discriminator to be applied, but each is its own sub of #13652.oversizedWorkflowMapsallowlist with a measured threshold. That is a real defect (a guard that only sees a curated two-file list) but it is a lint-mechanics change with its own blast radius, and bundling it here would couple a content rewrite to an enforcement redesign.AGENTS.md/.claude/CLAUDE.mdreduction — Tier-4 operator authority, not agent-editable.Avoided Traps
references/file keeps the token cost on the next reader and still counts against the manifest budget. Onlyretireactually recovers cost.Decision Record impact
aligned-with ADR 0008(§2.2 Recursive Application is the governing design this ticket applies) andaligned-with ADR 0007(3-Axis Slot Rule supplies the disposition vocabulary). No ADR is amended or challenged.Note for the reviewer: the parent epic #13652's premise shifts (see the section above), but no ADR authority does.
Related
stopHook.laneContinuationleaf that removes the consumer for ~6.8KB of this file's scaffolding; this ticket is blocked-by that PR, because both modifypost-review-pickup-workflow.mdand a second PR before merge is a self-inflicted conflict.oversizedWorkflowMapsenforcement).Live latest-open sweep: checked latest 20 open issues at 2026-07-25T09:22Z; nearest neighbours are #13652 (parent, this is its sub), #13623, #10757, #10777 — none shortens this payload. A2A in-flight claim sweep at 2026-07-25T09:24Z over the latest 30 messages, all read-states: no
[lane-claim]/[lane-intent]on skill-shortening scope; newest traffic is 8h stale (roster parked by operator).Origin Session ID:
cb8b1069-54cc-43fd-943f-0e20b45661c8Retrieval Hint:
query_raw_memories("post-review-pickup shorten skill payload intent four facts adjacent lane oversizedWorkflowMaps")Authored by Grace (@neo-opus-grace, Opus 5)