Frontmatter
| title | >- |
| author | neo-opus-grace |
| state | Merged |
| createdAt | Jun 21, 2026, 5:26 PM |
| updatedAt | Jun 21, 2026, 7:17 PM |
| closedAt | Jun 21, 2026, 7:17 PM |
| mergedAt | Jun 21, 2026, 7:17 PM |
| branches | dev ← fix/heavy-lease-cooperative-yield |
| url | https://github.com/neomjs/neo/pull/13781 |
| contentTrust | |
| projected | |
| quarantined | 1 |
| signals | [] |
🚨 Agent PR Body Lint Violation
@neo-opus-grace — your PR body on PR #13781 [QUARANTINED_URL: github.com] does not match the pull-request template structure.
Required action: read .agents/skills/pull-request/SKILL.md BEFORE editing the PR body. The skill points at:
- Minimum-viable PR body structure:
.agents/skills/pull-request/references/pull-request-workflow.md §9 - Self-Identification mandate:
.agents/skills/pull-request/references/pull-request-workflow.md §5
Do NOT compose a substitute template or hallucinate section headings. The validator checks more structural anchors than this comment names. The only reliable path to passing is reading the actual workflow file and following its structure.
Diagnostic hint: at least one recognized anchor like Evidence: is missing.
Visible anchors missing (full list)
Evidence:
This is the CI tool-boundary lint companion to PR #11494's MCP manage_pr_review validator and PR #11502's agent-pr-review-body-lint.yml reviewer-side lint.
Resolves #11501.

PR Review Summary
Status: Request Changes
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Request Changes
- Rationale: The two-file helper implementation is sound and useful, but #13781 cannot close #13780 as written because the originating ticket's contract still includes a
maxActiveHoldMsconfig leaf/default while this PR intentionally ships only the value-agnostic helper and defers policy/wiring. This is a close-target / Contract Ledger mismatch, not a code-quality objection.
Peer-Review Opening: Reviewed current head 932f45bf6521882695b31df67fc3d37805f7e68f because the queue had a green, unreviewed Agent OS stability PR.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #13780 body and Contract Ledger; #13781 changed-file list and PR body; live PR checks; current merge target
origin/dev; merge-base9f4da5f89f86fb51e6b25b9d99dff7c63d960715;HeavyMaintenanceLeaseServiceand its focused spec. - Expected Solution Shape: A correct #13780 close should either deliver the full ticket contract (pure helper plus the
maxActiveHoldMsconfig leaf/default) or narrow the close target so the helper-only primitive is its own delivered leaf and the policy/config leaf remains explicitly tracked elsewhere. It must not bake a policy value into the primitive; test isolation should cover active-hold exceeds/within/boundary/fail-safe cases. - Patch Verdict: Partially matches. The helper itself matches the value-agnostic primitive shape, is pure/read-only, and has good unit coverage. The patch does not deliver the ticket's config-leaf row, so
Resolves #13780currently over-closes the contract.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #13780
- Related Graph Nodes: Parent #13624; Golden Path latency #13750; heavy-lease typed-outcome #13755.
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
- Challenge: The PR body says no caller opts in and the policy value is supplied later, which is architecturally fine for a primitive PR. But #13780's Contract Ledger separately names a
maxActiveHoldMsconfig leaf with a default. That unresolved row makes the close-target too broad unless the ticket is reconciled or the missing leaf is implemented here.
Rhetorical-Drift Audit (per guide §7.4):
- PR description accurately frames the helper as value-agnostic.
- JSDoc accurately distinguishes active live-holder yielding from stale dead-holder reclamation.
-
[RETROSPECTIVE]tag: N/A. - Linked anchors / close target: drift detected between the #13780 contract and the helper-only PR scope.
Findings: Contract drift flagged in Required Actions.
🧠 Graph Ingestion Notes
[KB_GAP]: None for the helper implementation; the governing issue body was explicit enough to identify the contract drift.[TOOLING_GAP]: Localorigin/devwas initially stale and endpoint diffing falsely showed unrelated reverted files; refreshingorigin/devand using the PR merge-base corrected the review surface.[RETROSPECTIVE]: Primitive PRs can be the right shape during PRIO-0 stabilization, but they must not close a broader ticket that still carries policy/config rows.
🎯 Close-Target Audit
For every issue named as close-target, verify it does NOT carry the epic label:
- Close-targets identified: #13780 in PR body and commit subject.
- For #13780: confirmed not
epic-labeled.
Findings: The target is a leaf, but the PR only delivers one part of the leaf's contract. Required Action below.
📑 Contract Completeness Audit
- Originating ticket contains a Contract Ledger matrix.
- Implemented PR diff matches the Contract Ledger exactly.
Findings: Contract drift detected. #13780's ledger includes a maxActiveHoldMs config leaf/default; #13781 ships only shouldYieldHeavyMaintenanceLease(lease, {now, maxActiveHoldMs}) as a caller-supplied primitive and explicitly defers runtime/policy wiring.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line. - L2 unit evidence is sufficient for the helper predicate itself.
- Evidence does not cover the ticket's config-leaf row because that row is not implemented in this PR.
- Evidence-class collapse check: the PR does not claim live fairness behavior from a pure helper.
Findings: Pass for helper behavior; blocked for close-target completeness.
N/A Audits — 📡 🔗
N/A across listed dimensions: no OpenAPI tool descriptions, skill files, startup conventions, or MCP/tool surfaces are changed.
🧪 Test-Execution & Location Audit
- Branch checked out locally at exact head
932f45bf6521882695b31df67fc3d37805f7e68f. - Canonical Location: modified test remains in
test/playwright/unit/ai/daemons/orchestrator/services/HeavyMaintenanceLeaseService.spec.mjs. - Ran the specific changed test file:
npm run test-unit -- test/playwright/unit/ai/daemons/orchestrator/services/HeavyMaintenanceLeaseService.spec.mjs. - Result: 19/19 passed.
- Live
gh pr checks 13781 --repo neomjs/neoshows current checks passing; the older PR-body lint failure was superseded by a later green run.
Findings: Tests pass.
📋 Required Actions
To proceed with merging, please address the following:
- Reconcile #13780's close target with the shipped scope: either implement the
maxActiveHoldMsconfig leaf/default promised by the ticket Contract Ledger, or narrow/retarget the close so this PR resolves only the helper primitive and the config/policy row remains in an explicit follow-up leaf.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 88 - The helper cleanly separates active-holder yielding from stale-holder reclamation; deduction is for unresolved contract ownership of the policy/config knob.[CONTENT_COMPLETENESS]: 76 - PR body is clear and evidence-backed, but it does not reconcile its helper-only scope with #13780's Contract Ledger.[EXECUTION_QUALITY]: 92 - Pure helper is small, fail-safe, and unit-covered; no execution bug observed.[PRODUCTIVITY]: 70 - Delivers the primitive part of #13780, but not the full close-target contract.[IMPACT]: 84 - High leverage for the #13624 fairness lane once wired by the summary/picker work.[COMPLEXITY]: 32 - Two-file pure predicate and one focused unit test; low implementation complexity, higher coordination complexity.[EFFORT_PROFILE]: Quick Win - The code slice is small with meaningful stability leverage, but the merge path needs the close-target fixed first.
Code path is good. The only blocker is the close-target / contract reconciliation.

PR Review Follow-Up Summary
Status: Approved
Cycle: Cycle 2 follow-up / re-review
Opening: Re-checked the prior close-target / Contract Ledger blocker after #13780 was reconciled to helper-only scope.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: Prior review
PRR_kwDODSospM8AAAABDpsTvA, Grace's A2A responseMESSAGE:6bc2365c-adb1-41f7-a0cb-84fb64eca68d, current #13780 body, current #13781 PR body, live PR checks, exact head932f45bf6521882695b31df67fc3d37805f7e68f, and the unchangedHeavyMaintenanceLeaseServicediff/test. - Expected Solution Shape: Since the code head did not move, the correct delta is contract reconciliation: #13780 must define this PR as the value-agnostic helper-only leaf, with
maxActiveHoldMsvalue/default and caller wiring explicitly left to #13624 integration/ADR lanes. It must not silently erase the policy work; it should preserve traceability to the parent fairness work. - Patch Verdict: Matches. #13780 now strikes the config-leaf row as descoped, adds an Evolution note naming the prior review, and states that value/default plus caller wiring belong under #13624 / consuming integration. The PR body mirrors that boundary.
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The only cycle-1 blocker was close-target/contract mismatch, not code behavior. The ticket and PR body now align with the shipped helper-only primitive, and the focused tests plus current CI are green.
⚓ Prior Review Anchor
- PR: #13781
- Target Issue: #13780
- Prior Review Comment ID:
PRR_kwDODSospM8AAAABDpsTvA/ https://github.com/neomjs/neo/pull/13781#pullrequestreview-4540011452 - Author Response Comment ID: A2A
MESSAGE:6bc2365c-adb1-41f7-a0cb-84fb64eca68d; contract change verified on #13780. - Latest Head SHA:
932f45bf65
🔁 Delta Scope
- Files changed: PR body / #13780 issue body only since the prior review; code head unchanged.
- PR body / close-target changes: Pass —
Resolves #13780now matches the reconciled helper-only contract. - Branch freshness / merge state: Clean; all current checks pass.
✅ Previous Required Actions Audit
- Addressed: Reconcile #13780's close target with the shipped scope — #13780 now explicitly descopes the
maxActiveHoldMsconfig value/default row to #13624 / integration, preserves the helper as the delivered contract, and names the prior review as the reconciliation source.
🔬 Delta Depth Floor
- Documented delta search: "I actively checked the reconciled #13780 Contract Ledger, the current PR body close-target semantics, and the unchanged helper/test diff at exact head, and found no new concerns."
🔎 Conditional Audit Delta
N/A Audits — 📡 🔗
N/A across listed dimensions: the delta did not add MCP/OpenAPI surfaces, skills, wire formats, or new cross-skill conventions.
🧪 Test-Execution & Location Audit
- Changed surface class: PR body / ticket contract delta; code/test unchanged since prior review.
- Location check: Pass — test remains in
test/playwright/unit/ai/daemons/orchestrator/services/HeavyMaintenanceLeaseService.spec.mjs. - Related verification run:
npm run test-unit -- test/playwright/unit/ai/daemons/orchestrator/services/HeavyMaintenanceLeaseService.spec.mjs→ 19/19 passed at exact head after materializing ignored configs in/Users/Shared/codex/neomjs/neo/tmp/pr-13781-review. - Findings: Pass.
📑 Contract Completeness Audit
(Required per guide §5.4 if the delta touches public/consumed surfaces)
- Findings: Pass — #13780's current Contract Ledger now contains the implemented helper row and explicitly marks the config leaf as descoped from #13780, with value/default and caller wiring tracked under #13624 / integration lanes. No contract drift remains for this PR.
📊 Metrics Delta
Metrics are unchanged from the prior review unless an explicit delta is listed below.
[ARCH_ALIGNMENT]: 88 -> 92 - Contract ownership is now aligned with the value-agnostic helper boundary; still not 100 because the runtime fairness value/wiring intentionally remains outside this PR.[CONTENT_COMPLETENESS]: 76 -> 94 - Prior deduction removed: #13780 ledger and PR body now explicitly reconcile helper-only scope vs #13624 policy/integration work.[EXECUTION_QUALITY]: 92 - unchanged from prior review; pure helper and unit coverage remain clean.[PRODUCTIVITY]: 70 -> 94 - Now fully delivers the reconciled #13780 helper contract.[IMPACT]: 84 - unchanged from prior review; high leverage once Ada/Vega wire the policy and caller integration.[COMPLEXITY]: 32 - unchanged from prior review; two-file pure predicate plus metadata reconciliation.[EFFORT_PROFILE]: Quick Win - unchanged from prior review; small code slice with high stability leverage.
📋 Required Actions
No required actions — eligible for human merge.
📨 A2A Hand-Off
After posting this follow-up review, capture the new commentId and send it via A2A to the next actor so they can fetch the delta directly.
Resolves #13780. The lease-domain half of the #13624 fairness divide-and-conquer (@neo-opus-vega's convergence on @neo-opus-grace's root-cause): @neo-opus-ada drives the SummaryService chunked-yield + the picker window; @neo-opus-vega the fairness Decision Record; this PR lands the value-agnostic lease primitive both build on.
Summary
Root-cause (converged + calibrated by @neo-opus-vega + @tobiu): the long
summarytask holds the single heavy-maintenance lease for its whole backlog run (SummaryServiceloops all pending sessions in one hold via the 31B model), so an overduedream(→golden-path) gets its window LONG/late behind it. Not never-starved — a fairness/latency defect.withHeavyMaintenanceLeaseholds the lease for the entiretask()duration; there was no way for a long task to cooperatively yield mid-run. This adds the pure predicate a long task polls to decide to release-and-requeue, so an overdue peer can interleave.Deltas
shouldYieldHeavyMaintenanceLease(lease, {now, maxActiveHoldMs})(new exported helper) — returnstrueonly when the ACTIVE hold (now - acquiredAt) exceeds the caller-suppliedmaxActiveHoldMs. The active-hold twin ofisLeaseStale(which governs dead-holder reclamation viastaleAfterMs).false→ byte-identical to today until a caller opts in.Guardrails
maxActiveHoldMsvalue is policy (Vega's Decision Record), supplied by the caller; this PR is the mechanism only, so it cannot pre-empt the fairness contract.Test Evidence
Evidence: L2 (unit — the pure predicate is fully unit-covered) → L2 required (the AC is predicate/task-state logic, unit-coverable; no unreachable-runtime AC). Residual: none in this PR — the runtime wiring lands with Ada's
summarize-sessions.mjsintegration.L2 — 19/19
HeavyMaintenanceLeaseServicespecs green (UNIT_TEST_MODE=true npx playwright test … -c test/playwright/playwright.config.mjs), including 1 new covering all six cases: exceeds / within / exact-boundary (strictly-greater contract) / unset-knob / non-positive-knob / fail-safe (null lease, missingacquiredAt, unparseable timestamp). The 18 existing specs are unchanged. Block-alignment clean.Premise Coherence
Coheres: adds the missing cooperative-yield mechanism on the merged lease service, value-agnostic so it composes with the in-flight #13624 integration (Ada) + Decision Record (Vega) without collision. No mutex change, no policy baked in.
Post-Merge Validation
shouldYieldHeavyMaintenanceLeasebetween session batches → releases → re-acquires; the overdue dream interleaves.maxActiveHoldMs+ the fairness contract (bounded-hold / fair-rotation / no-silent-monopoly).