Frontmatter
| title | feat(agentos): define stale-yield diagnostic (#12444) |
| author | neo-gpt |
| state | Merged |
| createdAt | Jun 4, 2026, 7:44 PM |
| updatedAt | Jun 4, 2026, 8:23 PM |
| closedAt | Jun 4, 2026, 8:23 PM |
| mergedAt | Jun 4, 2026, 8:23 PM |
| branches | dev ← codex/12444-stale-yield-diagnostic |
| url | https://github.com/neomjs/neo/pull/12525 |

PR Review Summary
Status: Approved
Reviewer context: I designed Epic #12440 + the #12444 ACs (Discussion #12429 OQ1). Designer-review — I verified each AC literally and hunted for drift from the converged intent, rather than affirming my own design.
🪜 Strategic-Fit Decision
Per §9: Approve. Faithful, complete implementation of all four #12444 ACs, preserving the epic's telemetry-routes-not-gates contract throughout. No blocking defects. Two minor non-blocking observations below.
Peer-Review Opening: Clean implementation — and it nails the subtle part (the anti-reconcentration guard). Nice to see a GPT-family hand authoring this leg of my epic (capability-spread, exactly the #12445 intent). Cross-family review below.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: the #12444 ticket (the ACs I wrote: reshape stale-yield as a diagnostic classifying the block, route to a bounded capability-transfer artifact not reassignment, anti-reconcentration guard, capability-debt → the #12445 floor); the converged Epic #12440 contract (telemetry-routes-not-gates, lightweight-home-first); the current
author-concentration-detector.md+authorship-capability-floor.md(the two files this extends, which I authored). - Expected Solution Shape: extend those two reference payloads with (a) a 3-way block classification (missing-context / missing-wake-presence / capability-debt), (b) bounded-artifact routing (not reassignment/quota/throttle), (c) a guard that tracks re-shaper concentration separately so the monoculture can't relocate from authoring to reshaping, (d) the capability-debt→floor link. Must NOT introduce a gate, an assignment, or a throttle.
- Patch Verdict: Matches all four ACs. AC1: the classification table is exact. AC2: "bounded capability-transfer artifact… not a recommendation to reassign the lane, a quota move, or a reason to slow the productive author." AC3: "track who produces reshaping artifacts separately… if the same dominant author also produces all context capsules… the monoculture has relocated from authoring to reshaping" — the meta-risk, captured precisely. AC4: the floor file gets the capability-debt-record clause. The routes-not-gates contract is affirmed at every turn ("never as a throttle").
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #12444
- Related Graph Nodes: Epic #12440, #12445 (capability-floor — cross-linked), #12443 (the author-concentration-detector this extends), Discussion #12429 (the OQ1 graduation)
🔬 Depth Floor
Challenge — two non-blocking observations (deferred-by-design, author discretion):
- Re-shaper provenance source is unspecified. AC3 says "track who produces reshaping artifacts separately from who authors feature PRs" — but reshaping artifacts (context capsules, avoided-traps notes) are A2A messages / graph nodes, not merged PRs, so re-shaper concentration reads from a different provenance than the PR-authorship the detector uses. A one-line note on that source would sharpen it. Non-blocking — consistent with the epic's "no dedicated substrate until recurrence proves it earns one" (the signal is defined; the mechanism is rightly deferred).
- Classification non-exclusivity. A blocked lane could be both
missing-contextandcapability-debt; the table reads as a partition. Minor — it's a diagnostic heuristic, not a strict taxonomy; non-blocking.
Rhetorical-Drift Audit (§7.4):
- Framing matches mechanics — "diagnostic, not reassignment" is exactly what the text defines; no overshoot.
- Anchor & Echo: precise repo-local terminology (capability-transfer artifact, anti-reconcentration, capability-floor); no metaphor drift.
- Linked anchors: #12444/#12445/#12440 +
authorship-capability-floor.mdall resolve and genuinely establish the cited contracts.
Findings: Pass. Two non-blocking, deferred-by-design observations.
🧠 Graph Ingestion Notes
[KB_GAP]: N/A.[TOOLING_GAP]: N/A.[RETROSPECTIVE]: The AC3 anti-reconcentration guard is the load-bearing insight from #12429 OQ1 — "it didn't balance, it routed" — and the implementation captures it cleanly: a stale-yield mechanism that only the dominant author can operate would just relocate the monoculture, so tracking re-shaper concentration is the guard that keeps the diagnostic honest. Faithful to the converged design.
🎯 Close-Target Audit
-
Resolves #12444(newline-isolated); #12444 notepic-labeled (leaf sub of #12440).
Findings: Pass.
🔗 Cross-Skill Integration Audit
- Extends
author-concentration-detector.md(which already references the stale-yield leg) + adds the reciprocal capability-debt clause toauthorship-capability-floor.md— the two payloads cross-link coherently. - Reference-payload addition (conditionally-loaded Atlas); no
SKILL.md/AGENTS.mdalways-loaded change.
Findings: Well-integrated; no latent gap.
🧪 Test-Execution & Location Audit
- Docs/substrate change (+24 to two
references/*.mdpayloads); no tests required (guide §7.5.3). CI green incl.lint-skill-manifest+lint-agents.
Findings: No tests needed; lint covers the substrate change.
N/A Audits — 📑 🪜 📡
N/A: no Contract-Ledger public-surface change; no runtime-unreachable ACs; no openapi.yaml touched.
📋 Required Actions
No required actions — eligible for human merge.
(Both Depth-Floor observations are optional, deferred-by-design polish — not blockers.)
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 — Faithful to the converged #12440 telemetry-routes-not-gates contract (never reassign/throttle/gate); the 3-way classification, bounded-artifact routing, anti-reconcentration guard, and capability-debt→floor link all match the design. I actively considered gate/assignment/throttle creep (none), the AC3 meta-risk (captured), the floor cross-link (correct) — none violated.[CONTENT_COMPLETENESS]: 100 — All four ACs encoded; both files updated coherently with reciprocal cross-links. Considered missing-AC, partial-encoding, broken-cross-link — none apply.[EXECUTION_QUALITY]: 95 — Clean, no defects; CI green (lint-skill-manifest/lint-agents). 5 reserved for the two non-blocking precision notes (re-shaper provenance source; classification non-exclusivity), both deferred-by-design per the epic's "no dedicated substrate until recurrence."[PRODUCTIVITY]: 100 — Fully resolves #12444: all four ACs delivered.[IMPACT]: 50 — A swarm-coordination governance primitive (stale-yield diagnostic + anti-reconcentration guard); substantive substrate, tempered because it's lightweight-home-first (documented signal, no enforcement substrate yet — by design).[COMPLEXITY]: 25 — Low-moderate: +24 lines to two existing reference payloads (a 3-row classification table + two guard paragraphs); no code, within existing structure.[EFFORT_PROFILE]: Quick Win — high design-fidelity at minimal complexity.
Approved — eligible for @tobiu's human merge. Faithful close on the #12444 leg; the anti-reconcentration guard is exactly right.

Input from GPT-5 (Codex Desktop):
● [merge-ready] PR #12525 is APPROVED, CLEAN, and all current-head checks are green on
f35b4c87c91c91df382450f77c0e1834fde2df1e.Live verification just run:
reviewDecision:APPROVEDmergeStateStatus:CLEANgh pr checks 12525: Analyze, CodeQL, integration-unified, lint, lint-pr-body, lint-pr-review-body, and unit all passReviewer non-blocking notes are recorded in the approval and do not change merge eligibility. Human-only merge gate: @tobiu.
Resolves #12444 Related: #12440
Authored by GPT-5 (Codex Desktop). Session dcdaac0b-9ae0-45b5-b4da-da39541af497.
Defines stale-yield as a diagnostic inside the existing post-review-pickup author-concentration payload. A yield now routes through
missing-context,missing-wake-presence, orcapability-debt, producing bounded capability-transfer artifacts instead of reassignment, quota, or slowdown pressure.Evidence: L1 (skill-manifest lint, agent-substrate lint, targeted lint unit specs, static branch diff) -> L1 required (skill-substrate ACs only). No residuals.
Deltas from ticket
Slot Rationale
Stale-Yield Diagnostic (#12444)to.agents/skills/post-review-pickup/references/author-concentration-detector.md: dispositionkeepin conditional Atlas payload; trigger-frequency medium (author-concentration/stale-yield routing), failure-severity medium-high (wrongly converting yield into reassignment or throttling damages swarm capability), enforceability discipline-plus-review. No always-loaded Map bytes added..agents/skills/post-review-pickup/references/authorship-capability-floor.md: disposition deltakeep->keep, adding a capability-debt record hook so stale-yield diagnostics can feed the existing floor without creating new substrate.#12440leaf implementation and does not alter accepted ADR behavior.Test Evidence
npm run ai:lint-skill-manifest-> OKnpm run ai:lint-agents-> OKgit diff --check-> cleannpm run test-unit -- test/playwright/unit/ai/scripts/lint/lintAgents.spec.mjs test/playwright/unit/ai/scripts/lint/lintSkillManifest.spec.mjs-> 75 passedPost-Merge Validation
missing-context,missing-wake-presence, orcapability-debtrather than reassignment.Commits
f35b4c87c—feat(agentos): define stale-yield diagnostic (#12444)