Resolves #14643
Ships the Fleet cockpit's source-honesty layer end to end. A closed sourceHealth contract now preserves the assembler DTO's roster, repository, and runtime provenance through the Store-backed record boundary; malformed, inherited, prototype-shaped, or lifecycle-contradictory facts fail closed. SourceHealthMarker renders each axis as visible text plus matching state/confidence classes and ARIA, and AgentCard, FleetCockpit, and the card factory all consume the same contract without leaf providers or CSS-in-JS.
Evidence: L3 (fresh branch app consumed a real Fleet HTTP DTO; Neural Link inspected the live Store/card/markers, highlighted the runtime marker, verified nonzero computed geometry + visible text/classes/ARIA, found zero console errors, and passed component consistency) → L3 required (AC3 live-data Neural Link verification). No residuals.
Deltas from ticket
- The live DTO at verification time carried per-row
roster: wired/observed, repoStatus: wired/observed, and runtime: wired/inferred; its fleet activity capability was the current not-wired/none surface. The implementation therefore does not hardcode the ticket's earlier current-state example: it renders the live facts and retains a closed fixture matrix for every source-state × confidence combination.
- Runtime lifecycle state is now mapped atomically with runtime provenance. A nominally running lifecycle behind absent, malformed, or non-wired runtime truth downgrades to
off instead of presenting placeholder state as fact.
- The reusable pattern lives in
SourceHealthMarker plus pure sourceHealth helpers so the future detail-pane consumer can reuse it without duplicating card logic.
Test Evidence
npm run test-unit -- test/playwright/unit/apps/agentos/view/fleet/sourceHealthMarker.spec.mjs test/playwright/unit/apps/agentos/view/fleet/agentCard.spec.mjs test/playwright/unit/apps/agentos/view/fleet/fleetCardFactory.spec.mjs test/playwright/unit/apps/agentos/view/fleet/fleetCockpit.spec.mjs --workers=1 → 40/40 passed.
npm run agent-preflight → ticket archaeology, block alignment, and staged gates passed.
node --check passed for all six affected/new source modules; git diff --cached --check passed before commit.
- Live Neural Link proof at commit
7907d6e3d6e47293ea376ccceb6ffd82eff67921:
- FleetRoster contained the real bridge row for the probe identity with all three DTO source facts.
- Runtime marker VDOM:
RUN INFERRED, fm-source-wired, fm-confidence-inferred, aria-label="Runtime source: wired, confidence inferred.".
- Computed marker geometry:
73.03125 × 9 px; three markers occupied distinct nonzero rectangles.
verify_component_consistency reported consistent: true; Neural Link console error query returned none.
Post-Merge Validation
Commits
7907d6e3d6 — render Fleet source health honestly.
Evolution
The implementation initially sat behind the Store de-singleton work. After PR #14920 merged, this branch rebased onto dev and retained the provider-hosted Store boundary. The final live probe used the actual bridge DTO rather than promoting the fixture matrix into runtime evidence.
Related: #14560 #14598 #14608 #14920
Authored by Euclid (GPT-5.6 Sol, Codex Desktop). Session de713f27-0e82-4960-b4c6-f281e0c36449.
Resolves #14643
Ships the Fleet cockpit's source-honesty layer end to end. A closed
sourceHealthcontract now preserves the assembler DTO's roster, repository, and runtime provenance through the Store-backed record boundary; malformed, inherited, prototype-shaped, or lifecycle-contradictory facts fail closed.SourceHealthMarkerrenders each axis as visible text plus matching state/confidence classes and ARIA, andAgentCard,FleetCockpit, and the card factory all consume the same contract without leaf providers or CSS-in-JS.Evidence: L3 (fresh branch app consumed a real Fleet HTTP DTO; Neural Link inspected the live Store/card/markers, highlighted the runtime marker, verified nonzero computed geometry + visible text/classes/ARIA, found zero console errors, and passed component consistency) → L3 required (AC3 live-data Neural Link verification). No residuals.
Deltas from ticket
roster: wired/observed,repoStatus: wired/observed, andruntime: wired/inferred; its fleet activity capability was the currentnot-wired/nonesurface. The implementation therefore does not hardcode the ticket's earlier current-state example: it renders the live facts and retains a closed fixture matrix for every source-state × confidence combination.offinstead of presenting placeholder state as fact.SourceHealthMarkerplus puresourceHealthhelpers so the future detail-pane consumer can reuse it without duplicating card logic.Test Evidence
npm run test-unit -- test/playwright/unit/apps/agentos/view/fleet/sourceHealthMarker.spec.mjs test/playwright/unit/apps/agentos/view/fleet/agentCard.spec.mjs test/playwright/unit/apps/agentos/view/fleet/fleetCardFactory.spec.mjs test/playwright/unit/apps/agentos/view/fleet/fleetCockpit.spec.mjs --workers=1→ 40/40 passed.npm run agent-preflight→ ticket archaeology, block alignment, and staged gates passed.node --checkpassed for all six affected/new source modules;git diff --cached --checkpassed before commit.7907d6e3d6e47293ea376ccceb6ffd82eff67921:RUN INFERRED,fm-source-wired,fm-confidence-inferred,aria-label="Runtime source: wired, confidence inferred.".73.03125 × 9px; three markers occupied distinct nonzero rectangles.verify_component_consistencyreportedconsistent: true; Neural Link console error query returned none.Post-Merge Validation
Commits
7907d6e3d6— render Fleet source health honestly.Evolution
The implementation initially sat behind the Store de-singleton work. After PR #14920 merged, this branch rebased onto
devand retained the provider-hosted Store boundary. The final live probe used the actual bridge DTO rather than promoting the fixture matrix into runtime evidence.Related: #14560 #14598 #14608 #14920
Authored by Euclid (GPT-5.6 Sol, Codex Desktop). Session de713f27-0e82-4960-b4c6-f281e0c36449.