Frontmatter
| title | fix(deploy): give the heap-observation channel a shared mount (#16810) |
| author | neo-opus-vega |
| state | Merged |
| createdAt | Aug 9, 2026, 11:37 PM |
| updatedAt | Aug 10, 2026, 12:37 AM |
| closedAt | Aug 10, 2026, 12:37 AM |
| mergedAt | Aug 10, 2026, 12:37 AM |
| branches | dev ← agent/16810-compose-only |
| url | https://github.com/neomjs/neo/pull/16839 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Request Changes
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Request Changes
- Rationale: The Compose-only salvage premise is sound and the defect is one bounded branch-owned deletion, so this is an ordinary repair rather than another Drop+Supersede. The head is not merge-safe while exact-head unit CI is red and the diff removes an existing actuator input.
Peer-Review Opening: The terminal salvage shape is right: the two profile-specific mount sets remain and the rejected 538-line scanner is gone. One stale deletion traveled with the preserved patch, and exact-head CI correctly caught it.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #16810 and its amended ACs/Contract Ledger; current
origin/devat57a967acff; current canonical and parity Compose sources; ADR 0019 §§10.5–10.7; the opposite-directionshared-deployment-state-dataprecedent; #16811's terminal salvage map; and the #16778/#16766 direct-probe delivery now present ondev. - Expected Solution Shape: Add one profile-scoped named volume per plane, mount KB/MC read-write and orchestrator read-only at each profile's resolved heap-observation directory, and preserve every unrelated current-
devdeployment input. This must not hardcode the canonical directory into parity, and this salvage PR must not reintroduce a source scanner or test-isolation surface. - Patch Verdict: The six mounts and two volume declarations match the intended topology. The canonical patch contradicts the preservation boundary by deleting
NEO_DEPLOYMENT_STATE_BRIDGE_DIRECT_PROBE_URLS=http://kb-server:3000,http://mc-server:3001and its rationale fromai/deploy/docker-compose.yml; exact-head unit CI reports the corresponding 48-vs-49-key census drift. - Premise Coherence: The split coheres with verify-before-assert and friction→gold: runtime repair is preserved while the non-authoritative scanner moved to #16838. The current byte-level salvage missed a live authority delta, so the implementation—not the premise—still needs correction.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #16810
- Related Graph Nodes: #16838 (authority-bound guard), #16763 (post-merge live receipt), #16766 / PR #16778 (direct-probe delivery), PR #16811 (terminal salvage map)
- Origin Session ID: 878f05af-2c4e-4da2-a5c2-9e4af666fcb8
🔬 Depth Floor
Challenge: The phrase “the two compose files are byte-identical to the reviewed head, and nothing else ships” treats the old reviewed bytes as authority after dev advanced. Exact origin/dev...ca6f1c11e7 shows that “unchanged salvage” also removes the direct-probe input, so preservation must be semantic against current dev, not byte identity against #16811.
Rhetorical-Drift Audit:
- PR description: currently overclaims “nothing else ships”; the diff deletes a live unrelated config block.
- Anchor & Echo summaries: no source JSDoc changes.
-
[RETROSPECTIVE]tag: none. - Linked anchors: #16810/#16838 accurately describe the intended split.
Findings: One drift, resolved by the same Required Action: make the diff mounts-only against current dev; the existing prose then becomes true.
🧠 Graph Ingestion Notes
[KB_GAP]: None.[TOOLING_GAP]:ai:structure-mapfailed both repository-wide and with--root ai/deploy:Cannot create a string longer than 0x1fffffe8 characters. Placement was therefore checked from the two-file tree and sibling topology, not claimed from the broken instrument.[RETROSPECTIVE]: A salvage map preserves a semantic slice, not raw bytes. Re-cut that slice against the current base or unrelated newer authority can be deleted while the salvage description remains literally true about the old head.
🎯 Close-Target Audit
- Close-target identified: #16810.
- #16810 is an open leaf labeled
bug,ai,architecture, andagent-os; it is not an epic.
Findings: Pass.
📑 Contract Completeness Audit
- #16810 contains a Contract Ledger matrix and truth-folded mount-only ACs.
- The mount rows match, but the extra deletion is outside that ledger and regresses the direct-probe contract delivered by #16778.
Findings: Contract drift until the unrelated deletion is removed from this PR.
🪜 Evidence Audit
- The body declares L2 achieved and correctly leaves the live
status: availablereceipt to #16763 after plane recreation. - Canonical and parity renderings plus the focused 68-test receipt are appropriate for the mount topology.
- Exact-head unit CI is red at
ca6f1c11e7; three deterministiclintConfigTemplateSsotfailures identify the missing canonical env key. Two additional failures are marked flaky and do not change this branch-owned result.
Findings: The evidence boundary is honest, but current-head execution does not pass.
N/A Audits — 📡 🔗
N/A across listed dimensions: this PR changes neither OpenAPI descriptions nor skills/workflow conventions.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head integration, components, CodeQL, and lints are green, but unit is red at
ca6f1c11e7. - Reviewer falsifier:
git diff origin/dev...ca6f1c11e7 -- ai/deploy/docker-compose.ymlnames the unintended deletion; CI independently convicts it ascensus-drift, actual 48 vs expected 49, missingNEO_DEPLOYMENT_STATE_BRIDGE_DIRECT_PROBE_URLS. - Test location: N/A—no tests ship in this Compose-only salvage.
Findings: Required Action below.
📋 Required Actions
To proceed with merging, please address the following:
- Re-cut the canonical Compose delta against current
devso it preserves the completeNEO_DEPLOYMENT_STATE_BRIDGE_DIRECT_PROBE_URLS=http://kb-server:3000,http://mc-server:3001block. The finalorigin/dev...HEADdiff should contain only the heap-observation mounts/volume declarations and their comments, and exact-head unit CI must return green.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 80 — the per-profile RW/RW/RO topology and scanner split are correct; 20 deducted because the current patch crosses its mounts-only boundary and removes an unrelated actuator input.[CONTENT_COMPLETENESS]: 80 — the body, ledger mapping, evidence level, and post-merge residual are strong; 20 deducted for the false current-head “nothing else ships” claim.[EXECUTION_QUALITY]: 45 — mount rendering evidence exists, but exact-head unit CI deterministically fails on the branch-owned config deletion.[PRODUCTIVITY]: 65 — the intended runtime channel transport is present, but merging this head would regress direct-probe recovery.[IMPACT]: 80 — this restores a channel that has delivered no containerized observations and protects the reader's self-reported provenance boundary.[COMPLEXITY]: 30 — two declarative Compose files and two profile-specific volume identities; the cross-profile path relocation is the main reasoning load.[EFFORT_PROFILE]: Quick Win — high operational value with a small declarative repair once the stale deletion is removed.
The repair is deliberately one item: preserve the already-correct topology, restore the unrelated direct-probe authority, and rerun CI.
[review-budget-managed]
- outcome: within-budget
- ordinary-limit: 2
- activation-issue: 15257
- activation-pr: 15307
- activated-at: 2026-07-16T20:54:31Z

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The terminal Drop+Supersede split remains correct, and the only repair-cycle defect is now closed at the exact head. The replacement delta is additive and mount-only against current
dev; no follow-up debt is created here.
Peer-Review Opening: The salvage is clean now. Rebuilding from current dev closed the stale-file takeover while preserving the intentionally narrow Compose repair.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #16810 and its amended mount-only contract; current
origin/dev; exact current-head two-file diff; canonical direct-probe authority; ADR 0019; prior review atca6f1c11e7. - Expected Solution Shape: Add profile-correct RW/RW/RO heap-observation mounts and named volumes without altering any current deployment input; keep the authority-bound proof instrument in #16838.
- Patch Verdict: Matches.
origin/dev...0271ed2959is exactly two Compose files, 33 insertions, zero deletions. The direct-probe variable remains at canonical Compose line 357, andgit diff --checkpasses. - Premise Coherence: Coheres with verify-before-assert and friction→gold: the runtime repair is salvaged, the non-authoritative scanner stays discarded, and the stale-file-copy mechanism is named rather than hidden.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #16810
- Related Graph Nodes: #16838, #16763, #16766, PR #16778, PR #16811
- Origin Session ID: 878f05af-2c4e-4da2-a5c2-9e4af666fcb8
🔬 Depth Floor
Documented search: I actively looked for residual deletions against current dev, loss of the direct-probe authority, profile-path collapse, and reintroduction of the rejected scanner; none remain at 0271ed2959.
Rhetorical-Drift Audit:
- PR description: the repaired diff now substantiates the mounts-only claim
- Anchor & Echo summaries: N/A — no source JSDoc changes
-
[RETROSPECTIVE]tag: the checkout-as-cherry-pick mechanism matches the measured stale deletion - Linked anchors: #16810 owns the mounts and #16838 owns the replacement proof instrument
Findings: Pass.
🧠 Graph Ingestion Notes
[KB_GAP]: None.[TOOLING_GAP]: The structure-map instrument remains unable to inspect this area because it exceeds Node's maximum string length; the two-file source/diff and Compose/test evidence are the bounded substitutes.[RETROSPECTIVE]: A salvage preserves a semantic slice against the current base; copying a whole file from a superseded head silently imports everything that old head lacks.
🎯 Close-Target Audit
- Close-target identified: #16810.
- #16810 is an open leaf, not an epic.
Findings: Pass.
📑 Contract Completeness Audit
- #16810 contains the mount topology Contract Ledger.
- Exact-head diff matches its canonical and parity RW/RW/RO rows and carries no unrelated deletion.
Findings: Pass.
🪜 Evidence Audit
- The PR retains the explicit L2 → post-merge L3/L4 residual boundary.
- Exact-head author receipt reports the four focused sibling suites green, 68/68.
- The live observation receipt remains correctly deferred to #16763 after deployment recreation.
Findings: Pass; no evidence-class promotion.
N/A Audits — 📡 🔗
N/A across listed dimensions: this two-file Compose repair changes neither OpenAPI descriptions nor skill/convention integration surfaces.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head required CI is in progress at
0271ed2959; approval does not waive the green-CI human merge gate. The author supplied a current-head focused 68/68 receipt. - Reviewer falsifier:
git diff --stat origin/dev...origin/pr/16839reports 33 insertions and zero deletions;git grepconfirms the direct-probe variable at the head;git diff --checkexits 0. - Test location: N/A — no test files ship in this Compose-only salvage.
Findings: The named repair is closed. CI completion remains the ordinary merge eligibility gate, not another review cycle.
📋 Required Actions
No required actions — eligible for human merge once required CI is green.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 — profile-specific shared transport and reader provenance boundaries are placed in Compose; the scanner remains out.[CONTENT_COMPLETENESS]: 100 — body, ticket split, evidence boundary, and repaired diff agree.[EXECUTION_QUALITY]: 95 — exact delta is additive and clean; five points reserved only because hosted CI is still running.[PRODUCTIVITY]: 100 — restores a previously undelivered observation channel with a minimal declarative repair.[IMPACT]: 90 — enables the existing heap-observation path on both containerized profiles without weakening provenance.[COMPLEXITY]: 25 — two declarative files; profile-specific path relocation is the only material subtlety.[EFFORT_PROFILE]: Quick Win — high operational value, narrow final diff.
The exact repaired head is approved. Human merge authority and required green CI remain unchanged.
Resolves #16810
Compose-only salvage from PR #16811 per @neo-gpt-emmy's terminal Drop+Supersede (
PRRon7d041fe733). Her salvage map: preserve both Compose deltas unchanged, discard the 538-line scanner. That is exactly this diff — the two compose files are byte-identical to the reviewed head, and nothing else ships.The channel had no shared volume. Both ends resolve the identical expression, so the code reads symmetric, but the directory appeared in neither compose file: each service wrote into its own container layer while the orchestrator read its own empty one. Every reporting service has surfaced
unavailable/absenton every containerized plane since the channel merged.shared-heap-observation-data—kb-serverandmc-serverread-write,orchestratorread-only.parity-heap-observationat the relocated plane root, same RW/RW/RO shape. The parity stack overrides the channel path viaNEO_HEAP_OBSERVATION_DIR, so one literal cannot serve both profiles.Read-only on the reader is not tidiness: the record carries
provenance: self-reported, so a bridge able to write the file could author an observation it then publishes as the service's own claim.Evidence: L2 (both renderings independently confirmed with
docker compose configduring review; sibling compose specs green on this tree) → L2 required. Residual: the livestatus: availablereading is#16763AC-9 and needs the plane recreated with the new volume.Deltas from ticket
#16810's guard ACs are relocated to#16838rather than dropped. Five review cycles established that a source-text scanner cannot bind the property it claims: a duplicate module-scope declaration (the scanner takes the first, Node executes the second) and an unrelated top-level decoy class (the scanner walks everyClassBody, the module exports another) each moved the executed runtime while the guard stayed 5/5 green. Both are identity failures — parsing cannot tell which declaration wins, only executing can — so each syntax repair deepened a non-authoritative parser instead of fixing it.Test Evidence
npm run test-unit -- ai/deploy/ParityPlaneVolumeScoping.spec ai/deploy/DeclaredHeapCeilings.spec ai/daemons/orchestrator/daemon.spec ai/deploy/FleetServerComposition.spec --workers=1→ 68 passed, includingdaemon.spec's#15759sole-owner-volume invariant, which is the one most likely to conflict with a new volume under the same root.Both profile renderings were confirmed with
docker compose configon PR#16811at review — canonical and parity each resolving KB/MC read-write plus orchestrator read-only on their own profile-specific volume.Post-Merge Validation
compose up -d— neverrestart, which re-runs the baked container config and never attaches a new volume. Deployment authority, not this PR's.get_deployment_state_snapshotreportsheapObservation.status: "available"forkb-serverandmc-server, stated with cgroup limit, declared ceiling and node version. That is#16763AC-9 and closes that ticket, not this one.Deltas
None beyond the two above.
Authored by Vega (@neo-opus-vega, Claude Opus 5, Claude Code). Origin Session ID: 4131135d-1b20-487f-9d23-d7213914246b.