Frontmatter
| title | feat: a degraded presence producer gets named at roster level (#16927) |
| author | neo-fable-clio |
| state | Merged |
| createdAt | Aug 10, 2026, 11:58 PM |
| updatedAt | Aug 11, 2026, 12:38 AM |
| closedAt | Aug 11, 2026, 12:38 AM |
| mergedAt | Aug 11, 2026, 12:38 AM |
| branches | dev ← feature/16737-presence-capability-chip |
| url | https://github.com/neomjs/neo/pull/16928 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: This is the smallest honest consumer for #16927: retain the existing assembler capability envelope, cross the already-fenced roster boundary, and render degradation only where it answers. It adds no second presence model or provider-specific vocabulary.
Peer-Review Opening: Clio, this closes the unnamed-absence failure cleanly. The producer remains authoritative, FleetGrid owns rendering, and recovery removes the claim.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #16927 and parent #16737; changed-file census; current
devFleetControlBridge/FleetCockpit/FleetGrid source; the capability-envelope producer; NeoBasereactive-config, component, provider, model, and store contracts. - Expected Solution Shape: Carry the existing generation-fenced
capabilities.presenceDTO into one reactive FleetGrid surface; show only degraded truth with a safe bounded reason; clear on wired/not-wired/null and on recovery. Do not infer liveness or hard-code provider reasons. - Patch Verdict: Matches.
loadRosterassigns the envelope only after the existing admission/freshness guards, FleetGrid handles eager and reactive lifecycle paths, and text/a11y rendering stays on the safe text sink. - Premise Coherence: Coheres with verify-before-assert and flat ownership: the producer owns capability truth, the cockpit transports it, and the grid presents it without inventing a verdict.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #16927
- Related Graph Nodes: #16737, #16787, #16924
- Origin Session ID: ff94e740-acb8-4f25-a94b-b614bdd91ea1
🔬 Depth Floor
Documented search: I actively looked for generation-fence bypass, eager-config lifecycle loss, unsafe reason rendering, stale recovery state, and cross-PR merge conflicts. The exact-head path holds; both sibling merge orders compose mechanically. The aggregate-attention integration belongs to #16926, whose close-target owns that verdict.
Rhetorical-Drift Audit:
- PR description matches the delivered DTO/plumbing/render behavior
- Anchor & Echo comments describe the lifecycle reason without ticket-line snapshotting
-
[RETROSPECTIVE]tag: N/A - Linked anchors establish the degraded-capability contract
Findings: Pass.
🧠 Graph Ingestion Notes
[KB_GAP]: None.[TOOLING_GAP]: Knowledge-base synthesis was unavailable during review; exact-head source and issue authority were sufficient.[RETROSPECTIVE]: A missing signal must remain absence until its producer explicitly emits a degraded capability; then the UI should name the unavailable axis, not infer agent liveness.
🎯 Close-Target Audit
- Close-targets identified: #16927
- #16927 confirmed not
epic-labeled
Findings: Pass.
N/A Audits — 📑 📡 🔗
N/A across listed dimensions: this PR adds an internal Fleet DTO consumer and presentation config, not a public contract ledger, OpenAPI description, skill, or new cross-substrate convention.
🪜 Evidence Audit
- PR body declares L2 achieved and L2 required
- The live degradation-window receipt is explicitly retained as Post-Merge Validation
- The residual is named on #16927
- Unit evidence is not promoted to a live-plane receipt
- No unreachable external receipt is used as the merge gate
Findings: Pass; the live pixel receipt remains an honest post-merge check, not a code blocker.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head required CI is 16/16 green at
ec043b01f22cbceb34574bbe68a12e5d18938f47; author reports 114 focused specs - Reviewer falsifier: exact-source lifecycle/producer audit and bidirectional composition check found no independent correctness or merge-order defect
- Test location: Fleet cockpit/grid unit specs are correctly placed
Findings: Pass. Tests cover degraded/reasonless, wired/not-wired/null, create-time, runtime recovery, a11y, and cockpit envelope plumbing.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 96 - Existing producer authority, cockpit transport, and view ownership remain cleanly separated.[CONTENT_COMPLETENESS]: 94 - The entire #16927 code contract lands; only the explicitly post-merge live receipt remains.[EXECUTION_QUALITY]: 96 - Correct generation fencing, reactive lifecycle, safe rendering, recovery, and focused controls.[PRODUCTIVITY]: 96 - Small diff closes a high-signal operator ambiguity without a second truth model.[IMPACT]: 91 - Prevents degraded presence infrastructure from being misread as everyone offline.[COMPLEXITY]: 94 - Minimal plumbing with explicit lifecycle handling and no unnecessary abstraction.[EFFORT_PROFILE]: Quick Win - Narrow consumer completion with strong behavioral coverage.
Approved at the exact green head; human merge remains the final gate.
Resolves #16927 Refs #16737
The roster now NAMES a degraded presence producer instead of letting absence read as a verdict.
loadRosterretains the assembler DTO'scapabilities(previously dropped at the destructure) and plumbscapabilities.presence ?? nullonto the grid on every admitted, generation-fenced snapshot;FleetGridgains a reactivepresenceCapability_config rendering arole=statusheader chip — degraded →presence unobservable · <producer's retained reason>— whilewired(bands speak for themselves),not-wired(an expected-absent axis must not become another permanent line), andnullall render nothing, and recovery clears the claim on the next poll. This is the naming half of #16737's tier-degradation AC, falsified live by the operator ("no one is online") when a plane degradation wave correctly vanished every band with nothing on the surface saying why.Evidence: L2 (fenced loadRoster harness + real-FleetGrid chip matrix, 114 specs green in the two touched files) → L2 required (close-target ACs are render/plumb contracts). Residual: the live-degradation-window pixel receipt [#16927 Post-Merge].
Deltas from ticket
applyPresenceCapability) becauseisConstructedstays false through the wholeonConstructedchain — the create-time envelope is applied explicitly there, the exact HealthBarapplyCountspattern; the lifecycle subtlety is named in both the code comment and the spec's create-time row.Test Evidence
npm run test-unit -- test/playwright/unit/apps/agentos/view/fleet/fleetGrid.spec.mjs test/playwright/unit/apps/agentos/view/fleet/fleetCockpit.spec.mjs→ 114 passed. New rows: the chip matrix on a real FleetGrid (degraded-with-reason, reasonless-degraded, wired/not-wired/null all silent, recovery clears, create-time envelope renders, a11y label mirrors visible words) and the cockpit plumb (degraded envelope reachesgrid.presenceCapabilitydeep-equal; omitted envelope plumbs null on the next admitted snapshot).Post-Merge Validation
Commits (if multi-commit)
Single commit.
Authored by Clio (Fable 5, Claude Code). Session ff94e740-acb8-4f25-a94b-b614bdd91ea1.