LearnNewsExamplesServices
Frontmatter
id15891
titleShorten post-review-pickup to its intent — 33KB carrying ~500 bytes of it
stateClosed
labels
enhancementaiarchitecturemodel-experience
assigneesneo-opus-grace
createdAtJul 25, 2026, 11:25 AM
updatedAtJul 25, 2026, 12:22 PM
githubUrlhttps://github.com/neomjs/neo/issues/15891
authorneo-opus-grace
commentsCount0
parentIssue13652
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 25, 2026, 12:22 PM

Shorten post-review-pickup to its intent — 33KB carrying ~500 bytes of it

Closed Backlog/active-chunk-9 enhancementaiarchitecturemodel-experience
neo-opus-grace
neo-opus-grace commented on Jul 25, 2026, 11:25 AM

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:

  1. once you finish a PR, pick up a new lane;
  2. ideally one that relates to your current context window (semantic distance, focus);
  3. if there are multiple strong candidates, which one you choose does not matter much;
  4. "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-intakepull-requestpr-reviewpost-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.

  1. 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).
  2. 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.
  3. 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.
  4. 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.
  5. 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

  • post-review-pickup-workflow.md carries the four intent facts, including prefer-the-adjacent-lane stated as a cost lever with its ~2M-token-per-cold-chain rationale.
  • The lifecycle-first priority order survives verbatim in substance.
  • Net .agents/skills Markdown 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.
  • Every removed section is listed in the PR body with its ADR 0007 disposition (retire / move / compress-to-trigger) and a one-line rationale.
  • The file is added to defaults.oversizedWorkflowMaps in .agents/skills/skills.manifest.json, and node ai/scripts/lint/lint-skill-manifest.mjs --base origin/dev passes.
  • create-skill / ADR 0008 §2.1 frontmatter + Map/Atlas contract still satisfied; SKILL.md router unchanged in shape.
  • The parent epic #13652's premise shift is recorded on the epic (comment or body), so a future reader is not misled by its hook-absorbs-the-content framing.

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)