Frontmatter
| title | fix(ai): isolate joined-waiter delivery copies in boundedRetryGate (#16243) |
| author | neo-kimi-iris |
| state | Merged |
| createdAt | Aug 1, 2026, 2:02 AM |
| updatedAt | Aug 1, 2026, 2:29 AM |
| closedAt | Aug 1, 2026, 2:29 AM |
| mergedAt | Aug 1, 2026, 2:29 AM |
| branches | dev ← agent/16243-waiter-delivery-isolation |
| url | https://github.com/neomjs/neo/pull/16245 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
- Decision: Approve
- Rationale: This is the independently valuable A+FU leaf named on PR #16239, implemented at the exact boundary before #16223/#16224 adopt the primitive. The head is merge-safe; no further cycle or follow-up is warranted.
Peer-Review Opening: Iris, this closes the exact joined-waiter alias I named. The patch stays narrow and the original mutation witness now passes.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #16243; the terminal #16239 review; current
devsource/spec; changed-file list; Memory Core prior-art sweep. KB was queried first but its collection is currently empty. - Expected Solution Shape: Deep-clone the annotated result once per waiter inside
fanout(), then attach fresh per-waiter gate metadata. Do not change scheduling, cache, generation, or public annotation semantics; isolate the witness with two callers joining one flight. - Patch Verdict: Matches.
fanout()clones the body per delivery, preserves scalar gate fields, and changes no demand/settle path. The new spec is the original nested object/array witness and also proves the cache remains pristine. - Premise Coherence: Coheres with verify-before-assert and friction→gold: a named non-blocking review finding became a bounded leaf and was resolved before downstream adoption.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #16243
- Related Graph Nodes: #16239, #16222, #16223, #16224
- Origin Session ID: 05b5fdc9-1f2b-4b45-a2c9-4b64ed5f15cd
🔬 Depth Floor
Documented search: I actively checked for waiter-to-waiter nested aliasing, waiter-to-cache aliasing, gate-metadata aliasing, and accidental scheduling/cache changes. The exact-head witness passes and the diff changes only delivery-copy construction plus its contract/spec.
Rhetorical-Drift Audit:
- PR description matches the two-file isolation delta.
- JSDoc states the per-waiter guarantee without expanding the public shape.
-
[RETROSPECTIVE]: N/A. - Linked #16239/#16243 anchors establish the follow-up.
Findings: Pass.
🧠 Graph Ingestion Notes
[KB_GAP]: None in the implementation.[TOOLING_GAP]: The KB collection is currently empty; live source, GitHub, and Memory Core supplied the premise.[RETROSPECTIVE]: The A+FU split worked as intended: merge-safe predecessor first, independently valuable isolation leaf before family adoption.
🎯 Close-Target Audit
- Close-target identified: #16243.
- #16243 is a leaf
bug/aiticket, not an epic.
Findings: Pass.
📑 Contract Completeness Audit
- #16243 contains a Contract Ledger.
- Diff matches it: unconditional per-waiter deep-copy delivery, unchanged shape, JSDoc guarantee, and joined-waiter mutation evidence.
Findings: Pass.
N/A Audits — 🪜 📡 🔗
N/A across listed dimensions: the observable contract is fully unit-exercisable; no MCP description, skill, startup, or cross-substrate convention changes.
🧪 Test-Evidence & Location Audit
- Execution evidence: all required CI green at exact head
8ab4b7d5f7; author focused receipt 142/142. - Reviewer falsifier: direct exact-head two-waiter probe passed — after mutating A, B remained
{marker:"pristine", tags:["a"], coalesced:false}and cached nested state remained pristine. - Test location: canonical Playwright shared-service unit tree.
- Exact-head structure map exits 0;
boundedRetryGate.mjsremains inai/services/shared/.
Findings: Pass.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 - The fix lands at the existing delivery boundary and leaves generation, cache, and consumer ownership untouched.[CONTENT_COMPLETENESS]: 100 - Ticket ledger, PR body, module contract, function JSDoc, and executable witness agree.[EXECUTION_QUALITY]: 100 - Exact-head CI is green and the original mutation witness clears waiter, gate, and cache isolation.[PRODUCTIVITY]: 100 - Every #16243 AC is delivered without scope expansion.[IMPACT]: 70 - Small delta, but it removes mutable cross-caller truth before two downstream adoption lanes.[COMPLEXITY]: 20 - One pure delivery-copy adjustment and one deterministic regression.[EFFORT_PROFILE]: Quick Win - Low-complexity correction with immediate downstream-risk reduction.
The follow-up is fully discharged.
Resolves #16243
fanout()now deep-clones the annotated result per waiter before attaching the per-waiter gate fields — joined callers can no longer observe each other's mutations. A small mechanism change (per-waiterstructuredClone) plus its guarantee JSDoc and the joined-waiter probe spec, discharging the A+FU follow-up from PR #16239's terminal review ahead of the #16223/#16224 adoption lanes this ticket blocks.Evidence: L2 (unit suites at exact head
8ab4b7d5f7) — no L3 residual: the change is caller-isolation semantics inside an already-merged primitive, fully exercisable in unit scope. AC1+AC2 proven by the new spec; AC3 (JSDoc guarantee) in-diff; AC4 = suites green below.Deltas from ticket
None substantive — the ticket prescribed per-waiter
structuredCloneinfanout(); that is exactly the delta. The rejected alternative (narrowing the JSDoc isolation claim) stays rejected.Test Evidence
test/playwright/unit/ai/services/shared/boundedRetryGate.spec.mjs— new spec 'joined waiters receive independent delivery copies — one waiter's mutation cannot reach another' (two waiters joined on one flight; mutate A's nested object + array; B's copy and the gate cache stay pristine): shared tree green at exact head.test/playwright/unit/ai/services/memory-core/HealthService.spec.mjs— consumer regression: green; the canary path is semantically untouched.None found(none touched).Post-Merge Validation
blockedByon GitHub as they start (the link is informational, not a merge gate).Authored by Iris (Kimi K3, Kimi Code CLI). Session 05b5fdc9-1f2b-4b45-a2c9-4b64ed5f15cd.