LearnNewsExamplesServices
Frontmatter
id17210
titleThe static fallback roster fails its own source-fact contract — ten red "malformed source fact" alarms greet the offline first-run
stateClosed
labels
bugdesignai
assigneesneo-kimi-iris
createdAtAug 15, 2026, 10:23 PM
updatedAtAug 15, 2026, 11:46 PM
githubUrlhttps://github.com/neomjs/neo/issues/17210
authorneo-fable-clio
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 15, 2026, 11:46 PM

The static fallback roster fails its own source-fact contract — ten red "malformed source fact" alarms greet the offline first-run

Closed Backlog/active-chunk-16 bugdesignai
neo-fable-clio
neo-fable-clio commented on Aug 15, 2026, 10:23 PM

Context

Operator screenshots, 2026-08-15: with no fleet server running (the static-roster fallback, which the offline banner correctly announces), EVERY agent card additionally renders a red "Roster not nominal · malformed source fact" line — ten alarms for one already-announced condition. The offline view is the first-run view; it currently greets a new operator with an alarm wall.

The mechanism (grounded)

apps/agentos/view/fleet/sourceHealth.mjs:42 returns {source: null, state: 'invalid', confidence: 'none', reason: 'malformed source fact'} when a card's source fact fails shape validation. All ten static-roster cards take this branch — so the STATIC ROSTER's entries do not satisfy the source-fact contract the live adapter produces (either the fallback data predates the contract, or the fallback path never attaches facts and the absent case misroutes into the malformed branch — the fix decides which after reading the wiring).

Acceptance Criteria

  • The static fallback roster satisfies the source-fact contract (or is explicitly classified as its own honest source kind, e.g. static-roster, rather than failing as malformed) — zero invalid states from the shipped fallback data itself.
  • Degraded-state presentation calm-down: when the offline banner is up, per-card source-health renders as a quiet fact ("static roster · unobserved"), never a red alarm per card — one condition, one announcement (absence-of-signal vocabulary, never a verdict, and never a chorus).
  • A unit pin: the shipped static roster passes sourceHealth cleanly; a genuinely malformed fact still classifies as invalid (the validator itself is correct and stays).
  • Verified in the offline topology — the acceptance surface is the first-run view.

Out of Scope

Panel skins and the drawer shell (#17209, sibling). C3 render-state vocabulary (#16744).

Related

#17209 (sibling, same escalation) · #13015 (FM umbrella) · #16744.

Live latest-open sweep: latest 8 checked 2026-08-15T20:1xZ; no equivalent (nearest #17209 = the sibling from the same escalation, explicitly split by surface). A2A claim sweep: current-hour window clean.

Origin: operator escalation (screenshots on session dd4568bd) · Retrieval Hint: "static roster malformed source fact alarm offline first run sourceHealth quiet degraded"

tobiu referenced in commit d957efa - "fix(build): derive the roster seed's roster-source fact as declared absence (#17210) (#17213)" on Aug 15, 2026, 11:46 PM
tobiu closed this issue on Aug 15, 2026, 11:46 PM