LearnNewsExamplesServices
Frontmatter
id15036
titleBrain-side open-lane-count enricher: stamp openLaneCount on the fleet roster DTO rows
stateClosed
labels
enhancementai
assigneesneo-opus-ada
createdAtJul 11, 2026, 2:55 PM
updatedAt1:55 AM
githubUrlhttps://github.com/neomjs/neo/issues/15036
authorneo-opus-vega
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt1:55 AM

Brain-side open-lane-count enricher: stamp openLaneCount on the fleet roster DTO rows

Closed Backlog/active-chunk-5 enhancementai
neo-opus-vega
neo-opus-vega commented on Jul 11, 2026, 2:55 PM

⛔ SUPERSEDED — 2026-07-12 (Drop+Supersede). Dropped per @neo-gpt-emmy's corrective review (PRR_kwDODSospM8AAAABFvdVvw), @neo-opus-ada's #15074 close, and @tobiu's negative-ROI direction on this line. openLaneCount is a FALSE concept — promoted from #14592's layout-density evidence, not an actual open-assigned-issue count — and FleetControlBridge as raw GitHub-issue source owner violated the #14573 / D#15090 boundary. No rebuild: do NOT re-invest in an "honestly-named projection" on the same instinct; await a genuinely VALIDATED premise (a canonical lane model only if the operator explicitly asks for one). The Context / Ledger / ACs below are retained for history but are MOOT — the concept they validated is dropped.


Context

The FM cockpit's AgentCard open-lane count badge (PR #15029, #14598) established openLaneCount as a roster-DTO-owned tri-state field end-to-end: createFleetCockpitStatus hoists it from the supplied agent rows (src/ai/fleet/fleetCockpitStatus.mjs, the launchable pattern), FleetCockpit.mapRosterRow() carries it onto the shared FleetAgent record, and the card renders the badge only on a reported positive count. The contract row lives in apps/agentos/CARD-CONTRACT.md.

What does not exist yet is the stamping producer: no Brain-side code writes a count onto the roster rows, so every live row reaches the cockpit as openLaneCount: null and the wired cockpit renders no badges — honest (null = no badge, per the contract's degrade rule), but empty. This is the seam's named successor, surfaced by Euclid's PR-#15029 review (the first-authoritative-load probe).

The Problem

The measured density evidence (#14592) puts 7–17 open lanes on an active resident — the badge is glance-load-bearing at real scale, and it only carries value once a live producer stamps real counts.

The Fix

An assembler-side enricher (the resolveIdentityDisplay precedent, #14802): where the Brain-side fleetRoster verb assembles agent rows, stamp openLaneCount per resident before the rows reach createFleetCockpitStatus.

Source decision at claim (record it on this ticket):

  1. Local synced issues corpus (resources/content/issues/** frontmatter assignees) — zero API cost, freshness = the sync pipeline's cadence (hourly), needs the canonical-clone path only where the Brain already runs.
  2. Live gh/API query per roster poll — fresh, but rate-limit-coupled and slow at poll frequency.

Option 1 matches the roster's freshness class (the roster itself is poll-based); option 2 is likely over-engineering. Whichever wins, enricher FAILURE must degrade to null (the contract's tri-state rule) — never a stale or fabricated count.

DECISION (recorded 2026-07-12, implemented in PR #15074): Option 1 — the local synced issues corpus (resources/content/issues/issue-*.md frontmatter state+assignees), scanned once per assembly by resolveOpenLaneCounts{counts, complete}. Enricher failure taints the whole scan → null for every resident (never a guessed 0, never a partial under-count).

Contract Ledger

Canonicalized into this body from @neo-opus-ada's PR #15074 review-response addendum (a Contract Ledger is T3 body-substrate, not a T2 comment) per @neo-gpt-emmy's Cycle-2 review (#15074 review 4679798367). Truth-synced 2026-07-12 to the achieved exact-head evidence (was 35/L2-only at authoring).

Target Surface Source of Authority Behavior (COMPLETE) Fallback (INCOMPLETE) Docs Evidence
fleetRoster().rows[n].openLaneCount (roster DTO, integer ≥ 0 | null) local synced issues corpus (resources/content/issues/issue-*.md frontmatter state+assignees), scanned once per assembly by resolveOpenLaneCounts{counts, complete} dir exists, listing ok, EVERY issue file parses → the resident's OPEN-assigned count (RA1 array-only OPEN semantics), or a proven 0 when the resident is absent (nothing open) missing corpus / unreadable listing / ANY unparseable OR structurally-unusable record (unrecognized state; OPEN assignees not an array / an invalid entry) / resolver throw → null for every resident — never a guessed 0, never a partial under-count (a parse-or-schema failure can't reveal which assignee it would have counted, so it taints the whole scan) apps/agentos/CARD-CONTRACT.md badge row + resolveOpenLaneCounts JSDoc + FleetControlBridge.fleetRoster/laneCountResolver JSDoc L2+L3 — 42 tests (16 resolver + 26 bridge) incl. the RA2 discriminating regression (good+malformed issue for the same resident → INCOMPLETE, never the good count) + live-corpus smoke (complete:true, 464 real files, realistic densities); L3 achieved 2026-07-12 — cockpit render badges witnessed on 0ac46a9 (Ada 14 / Euclid 11 / Emmy 1, console errors []); transport to final head 1ce0f74 is valid — the delta changes only true-null handling/spec/JSDoc, the corpus has 0 true-null records, and the final smoke reproduces the same rows

Acceptance Criteria

  • The Brain-side fleetRoster assembly stamps openLaneCount (integer ≥ 0) per resident from the chosen source; residents the source cannot resolve carry null.
  • Enricher failure (missing corpus, parse error, source down) degrades the FIELD to null — the roster verb itself must not fail on enricher trouble.
  • Unit spec: stamped counts flow; unresolvable residents stay null; a thrown source yields null rows, not a thrown verb.
  • NL-verifiable: the wired cockpit renders live badges with the stamped counts (the #14598 render wall consumes it unchanged — zero Body diff expected). L3 achieved (2026-07-12): cockpit render witnessed on 0ac46a9 — badge receipts Ada 14 / Euclid 11 / Emmy 1, console errors []; transport to final head 1ce0f74 valid (delta = true-null handling/spec/JSDoc only, 0 true-null corpus records, final smoke reproduces the same rows). Reopen-trigger (retained): the first authoritative cockpit load does NOT render a live N lanes badge for a resident the corpus shows as open-assigned.
  • CARD-CONTRACT.md's badge row updates its producer cell from "until one exists every live row carries null" to the chosen source.

Out of Scope

  • The badge render + Body-side field plumbing — shipped via PR #15029 (#14598).
  • Lane-LINE text enrichment (laneLine) — the activity capability owns it (#14572/#14573 arc).

Related

Refs #14560 (the consuming cockpit epic — deliberately NOT a sub: Brain-side enrichment is the epic's out-of-scope Lane-C class) · #14598 / PR #15029 (the consumer + seam) · #14592 (the density evidence) · #14802 (the enrichment precedent) · #15022 (the launchable tri-state sibling).

Release classification: not release-blocking (the badge degrades honestly without it; it turns on the value).

Live latest-open sweep: newest #15035 checked 2026-07-11T13:0xZ; no equivalent (searches "lane count" / "openLaneCount" clean). Structure-map gate: assembler-side enrichment beside the existing fleetRoster verb — sibling-lift of #14802's join, no new ai/ placement class.

Authored by Vega (Claude Fable 5, Claude Code). Session d2fbbdb4-404b-47e1-bbb3-1b9e0330894b. Retrieval Hint: "fleet roster openLaneCount enricher stamp badge Brain-side"

tobiu referenced in commit 6a05bdd - "feat(agentos): AgentCard open-lane count badge — the density-evidence lane consequence (#14598) (#15029) on Jul 11, 2026, 4:35 PM
tobiu closed this issue on 1:55 AM