LearnNewsExamplesServices
Frontmatter
id15397
titleDefine-agent fork-independent half: add-agent flow + form + config-card re-skin to the token layer
stateClosed
labels
enhancementdesignai
assigneesneo-opus-vega
createdAtJul 18, 2026, 4:25 AM
updatedAtJul 18, 2026, 4:46 AM
githubUrlhttps://github.com/neomjs/neo/issues/15397
authorneo-opus-vega
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 18, 2026, 4:46 AM

Define-agent fork-independent half: add-agent flow + form + config-card re-skin to the token layer

Closed Backlog/active-chunk-7 enhancementdesignai
neo-opus-vega
neo-opus-vega commented on Jul 18, 2026, 4:25 AM

Context

The delivered-slice split of #15242 (Lane D1, mine), per the running precedent (#15351/#15350, #15360/#15361): the S5 design-shape proposal is with @neo-opus-grace (three mount forks — config placement, entry affordance, zone geometry; A2A a94dc332, ping-and-continue), and every unit that NO fork outcome changes is built and witnessed now. #15242 stays OPEN for the mount, the design sign-off, and the NL add-agent journey on the mounted surface.

What this slice delivers

  1. apps/agentos/view/fleet/addAgentFlow.mjs — the pure flow half: idle → validating → submitting → readback-confirmed | gated | rejected; the #14614 canonical readback as the ONLY success truth (identity-fields + serializability + top-level-secret-key + credential-echo guard, lifted from Accounts' upsert discipline into a pure, unit-testable function); absent bridge = first-class gated outcome; transport errors sanitized (an outcome never carries credential bytes). DI seam via bridgeResolver (the #15333 injected-reader discipline — the Body never constructs a bridge).
  2. apps/agentos/view/fleet/AddAgentForm.mjs — the S5 form to the token layer: username + PAT + registry-derived harness chips; honest-lifecycle status line; bridge-absent probed at construction → submit disabled-with-reason (CARD-CONTRACT controls rule); PAT field cleared on EVERY settle; agentDefinitionAccepted fired with the validated readback — the mount owner (fork-dependent) wires the roster write.
  3. AgentConfigCard moved into the fleet module + re-skinnedagent-config-*fm-config-* vocabulary on the --fm-* tokens; behavior contract untouched (pure derivation, configIntent purity, tri-state honesty, stale-paint guard); harness chips unified onto the new .fm-chip selector-chip primitive (shared with the add form; distinct from EventChip's observation chips).
  4. SCSS: fleet/AgentConfigCard.scss + fleet/AddAgentForm.scss + fleet/Chips.scss — geometry + token reads only; ink tiers per TOKENS.md roles (no --fm-ink-faint — its contrast failure is on record); every state pairs hue with a non-color carrier (1.4.1 discipline); legacy block deleted from Accounts.scss.
  5. Witnesses: unit/apps/agentos/addAgentFlow.spec.mjs (9 — flow outcomes incl. echo/secret/circular readbacks, sanitized transport throw, form round-trips with a stub bridge, PAT-clear on confirmed AND rejected settle, no-submit-on-invalid) + component/apps/agentos/AddAgentForm.spec.mjs (mounted #13058 matrix: typed credential reaches no sink — localStorage/sessionStorage/URL/console — with a console-capture positive control; gated affordance rendered honest). The matrix witness runs in CI via the components shard (#15368).

Acceptance Criteria

  • Flow module + form + re-skin land with the witnesses above green (unit + mounted).
  • Existing Accounts surfaces keep working against the moved/re-skinned card (unit suite + the AccountsConfigSurface e2e journey green).
  • No fork pre-emption: nothing in this slice mounts a new surface or retires FleetSettingsPanel — that is #15242's remaining scope behind Grace's ruling.

Out of Scope

The S5 mount (dock zone vs detail tab), FleetSettingsPanel retirement, design sign-off, and the NL-driven add-agent journey — all #15242, which stays open.

Related

Parent #15242 (stays open) · #14614 (readback truth) · #13058 (credential matrix) · #15368 (the CI shard the mounted witness rides) · precedent chain #15316/#15331/#15351/#15360.

Live latest-open sweep: checked latest 8 at 2026-07-18T02:25Z (latest #15396); the OpenCode-seat wave (#15391/#15392/#15394) is adjacent-but-different (harness registry vs this UI slice — the form's registry-derived chips pick #15391 up for free). A2A in-flight (4 latest): G1/G3 docking + review-seat traffic; no collision with my standing #15242 claim.

Decision Record impact: none.

Origin Session ID: 2dcbf336-4338-4009-82f3-79f1b1d151f1

Retrieval Hint: "define-agent fork-independent slice add-agent flow form fm-chip re-skin readback gated"

tobiu referenced in commit 0889cc9 - "feat(agentos): the define-agent fork-independent half — flow, form, config-card re-skin (#15397) (#15398) on Jul 18, 2026, 4:46 AM
tobiu closed this issue on Jul 18, 2026, 4:46 AM