LearnNewsExamplesServices
Frontmatter
id16927
titleRoster names a degraded presence producer — the capability-envelope chip
stateClosed
labels
enhancementai
assigneesneo-fable-clio
createdAtAug 10, 2026, 11:57 PM
updatedAtAug 11, 2026, 12:38 AM
githubUrlhttps://github.com/neomjs/neo/issues/16927
authorneo-fable-clio
commentsCount0
parentIssue16737
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 11, 2026, 12:38 AM

Roster names a degraded presence producer — the capability-envelope chip

Closed Backlog/active-chunk-15 enhancementai
neo-fable-clio
neo-fable-clio commented on Aug 10, 2026, 11:57 PM

The delivered slice of #16737's tier-degradation AC — split per the one-PR-resolvable rule (the #16787 precedent, same parent): this leaf carries exactly what its PR ships; the parent keeps the horizon-band vocabulary, wake-route health, and viewer-scoping ACs.

Context

Operator falsifier, live 2026-08-10 ~23:50 (evidence: #16737 comment IC_kwDODSospM8AAAABOLNxVg): the plane's who_is_online surface entered a degradation wave, the producer correctly emitted the degraded/none capability envelope (fleetPresenceStateAdapter.mjs:153-159), every card's presence band correctly vanished (absence of signal, never a verdict) — and the operator read the unnamed absence as "no one is online", a verdict. The naming half of the AC ("renders from tiers that ANSWERED and names them") was undelivered for the all-tiers-failed case: grep capabilities.presence apps/agentos/ → zero consumers; loadRoster destructured {rows} and dropped the envelope.

The Fix (as shipped)

  • FleetCockpit.loadRoster retains capabilities from the assembler DTO and plumbs capabilities.presence ?? null onto the grid on every ADMITTED snapshot (generation-fenced; recovery clears on the next poll — the polls already re-read, verified across two live degradation/recovery cycles).
  • FleetGrid gains the reactive presenceCapability_ config + a header chip (fleet-presence-cap, role=status) rendered by an idempotent applier: degraded → "presence unobservable · <producer's retained reason>"; wired renders nothing (bands speak); not-wired renders nothing (an expected-absent axis must not become another permanent line — the #16924 doctrine); a11y label mirrors the visible words.
  • SCSS: one chip class riding existing tokens (idle-amber border — informational, below the wedged alarm register).

Acceptance Criteria

  • Degraded envelope → named chip with retained reason; reasonless degradation still names itself.
  • wired / not-wired / null render nothing; recovery clears a previous claim.
  • Create-time envelope renders (the isConstructed-lifecycle path, applier-split per the HealthBar pattern).
  • loadRoster plumbs the envelope on admitted snapshots and null when absent (fenced harness spec).
  • Post-merge: live receipt on the next real plane-degradation window (chip visible over an intact roster).

Out of Scope

Horizon bands, wake-route health, viewer scoping (parent #16737) · spine-banner verdicts (#16913, delivered) · the #16924 default-state partition (sibling PR).

Related

#16737 (parent) · #16787 (the split precedent) · #16924 / PR #16926 (sibling render doctrine).

Live latest-10 sweep 2026-08-10T22:05Z: no equivalent. A2A sweep: no overlapping claim.

Origin Session ID: ff94e740-acb8-4f25-a94b-b614bdd91ea1

Retrieval Hint: "presence capability envelope chip unobservable named degradation"

tobiu referenced in commit 5c497ca - "feat(agent-os): a degraded presence producer gets named at roster level (#16927) (#16928)" on Aug 11, 2026, 12:38 AM
tobiu closed this issue on Aug 11, 2026, 12:38 AM