Pre-merge leaf of #16694 — split during PR #16696 review cycle 2 per the reviewer's close-target rule (@neo-gpt-emmy): Resolves #16694 would auto-close the umbrella while its renderer-side live-roster AC is explicitly post-merge (interactive-operator class). This leaf carries exactly the pre-merge-provable scope PR #16696 delivers; #16694 stays open until its live receipt lands.
Context
Full provenance, receipts, and the day's three live-run causes: #16694 (umbrella), #16693 (sibling), PR #16696 (the delivering PR). Short form: plain cd harness && npm start must self-supply the app↔fleet transport with the bearer the shell already holds — zero coordination — and a UI-mode transport must never be a whole-Brain health claim.
Scope (what PR #16696 delivers, all pre-merge-provable)
resolveUiFleetTransport (brain.mjs): the witnessable three-outcome OWNER COMPOSITION — reuse (canonical same-bearer/viewer proof; never spawns), foreign-listener (named refusal, up:false, never throws, never adopts), spawn (composition itself registers observeBrain: false; real wire readiness gates up:true).
registerOwnedChild (brain.mjs): teardown ownership UNCONDITIONAL; Brain-health observation only for organism children; diagnostic-only sink for unobserved children.
bootUiFleetTransport (main.mjs): thin collaborator binding; its receipt feeds fleetCapability's gate (which UI-only mode previously starved with null — the structural defect that made ANY external coordination impossible).
- Smoke stays spawn-free (isolation contract).
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
resolveUiFleetTransport export |
harness/brain.mjs |
Three-outcome routing per the composition invariants above |
n/a (new) |
JSDoc on the export |
3 composition witnesses in brain.spec.mjs |
registerOwnedChild export |
harness/brain.mjs |
Drain membership unconditional; watcher routed by observeBrain |
n/a (new) |
JSDoc |
3 registry witnesses in brain.spec.mjs |
UI boot receipt → fleetCapability.getBrain |
harness/main.mjs |
{fleetPort, mode, up} feeds the existing gate; gate semantics UNCHANGED |
absent receipt ⇒ gate's named not-ready (fail-closed, as before) |
PR body |
live spawn receipt + gate unchanged in diff |
HARNESS_UI_FLEET* log markers |
harness/main.mjs |
One line per outcome + HARNESS_UI_FLEET_CHILD sink lines |
n/a |
JSDoc |
live run output |
| Smoke spawn-free invariant |
harness/package.json smoke flow |
NEO_HARNESS_SMOKE=1 never runs the UI transport boot |
n/a |
README unchanged |
smoke output: zero HARNESS_UI_FLEET lines |
Acceptance Criteria
Out of Scope
- The renderer-side live-roster receipt and the operator one-command run — #16694 (stays open).
- Reconnect/banner UX — #16699. Brain-leg attach re-triage — #16693.
Related
Creation-gate record: live latest-6 sweep 2026-08-08T14:38Z — no equivalent; this leaf is the review-directed close-target split, announced in the PR thread. Self-assigned (the PR is mine).
Origin Session ID: 32bcb092-f1c7-4856-9141-3e602ea88ed8
Retrieval Hint: "harness UI transport leaf composition witness ownership observation split close-target"
Pre-merge leaf of #16694 — split during PR #16696 review cycle 2 per the reviewer's close-target rule (@neo-gpt-emmy):
Resolves #16694would auto-close the umbrella while its renderer-side live-roster AC is explicitly post-merge (interactive-operator class). This leaf carries exactly the pre-merge-provable scope PR #16696 delivers; #16694 stays open until its live receipt lands.Context
Full provenance, receipts, and the day's three live-run causes: #16694 (umbrella), #16693 (sibling), PR #16696 (the delivering PR). Short form: plain
cd harness && npm startmust self-supply the app↔fleet transport with the bearer the shell already holds — zero coordination — and a UI-mode transport must never be a whole-Brain health claim.Scope (what PR #16696 delivers, all pre-merge-provable)
resolveUiFleetTransport(brain.mjs): the witnessable three-outcome OWNER COMPOSITION — reuse (canonical same-bearer/viewer proof; never spawns), foreign-listener (named refusal,up:false, never throws, never adopts), spawn (composition itself registersobserveBrain: false; real wire readiness gatesup:true).registerOwnedChild(brain.mjs): teardown ownership UNCONDITIONAL; Brain-health observation only for organism children; diagnostic-only sink for unobserved children.bootUiFleetTransport(main.mjs): thin collaborator binding; its receipt feedsfleetCapability's gate (which UI-only mode previously starved withnull— the structural defect that made ANY external coordination impossible).Contract Ledger Matrix
resolveUiFleetTransportexportharness/brain.mjsbrain.spec.mjsregisterOwnedChildexportharness/brain.mjsobserveBrainbrain.spec.mjsfleetCapability.getBrainharness/main.mjs{fleetPort, mode, up}feeds the existing gate; gate semantics UNCHANGEDHARNESS_UI_FLEET*log markersharness/main.mjsHARNESS_UI_FLEET_CHILDsink linesharness/package.jsonsmoke flowNEO_HARNESS_SMOKE=1never runs the UI transport bootHARNESS_UI_FLEETlinesAcceptance Criteria
observeBrain: falseinside the composition and gatesup:trueon readiness.npm run smokegreen with zeroHARNESS_UI_FLEETlines.Out of Scope
Related
Creation-gate record: live latest-6 sweep 2026-08-08T14:38Z — no equivalent; this leaf is the review-directed close-target split, announced in the PR thread. Self-assigned (the PR is mine).
Origin Session ID: 32bcb092-f1c7-4856-9141-3e602ea88ed8 Retrieval Hint: "harness UI transport leaf composition witness ownership observation split close-target"