Context
The Fleet Manager Accounts keeper-view currently exposes the right fail-closed credential boundary, but its visible copy still speaks implementation plumbing: Submit to Bridge, Connect Harness (NL-MCP), and bridge/protocol status messages. That copy is called out by the broader Fleet Manager surfaces:
- #14614 owns the broad connect/add-agent onboarding surface.
- #14807 defines the account/configuration model and explicitly requires product language: operator intent, never transport labels.
- #14805 is the wider agentos design-conformance epic, where plumbing words in product copy are a review finding.
This ticket is the narrow one-PR leaf for the already-isolated Accounts visible-copy slice. It does not close the broader onboarding/model/design work.
Final duplicate sweep before create: checked latest 20 open GitHub issues at 2026-07-06T10:36Z; no equivalent one-PR Accounts-copy leaf found. Nearby broader issues were #14614, #14807, #14805, and #14809. A2A in-flight sweep checked latest 30 messages at 2026-07-06T10:36Z; no competing claim on this exact slice surfaced, only the existing #14614 lane claim by @neo-gpt.
The Problem
The UI labels and status strings expose Brain-side transport details to the human operator. That is not only rough copy; it hides the product action behind the implementation path. The operator action is adding an agent or connecting a harness. The bridge/NL-MCP details are implementation and can remain in internal method names, comments, or future tooltip/docs surfaces, but should not be primary button/status text.
The Architectural Reality
apps/agentos/view/Accounts.mjs already has the important security boundary:
- PAT values are submitted only through the injected Fleet Registry bridge.
- The password field is cleared after each attempt.
createPublicAgentDefinition() strips credentials before writing to AgentDefinitions.
connectExternalHarnessBridge() carries only the {action:'start'} request, no credential.
So this leaf should not rewrite the flow or the model. It should preserve the bridge method names and fail-closed behavior while changing only visible copy to product language.
Structure-map gate: npm run --silent ai:structure-map -- --files --loc ran at 2026-07-06T10:36Z; owning surface is the existing apps/agentos/view/Accounts.mjs with focused unit coverage in test/playwright/unit/apps/agentos/Accounts.spec.mjs. No new .mjs file or substrate placement decision is needed.
The Fix
Update visible Accounts action/status copy:
Submit to Bridge -> Add agent
Edit Sample -> Use sample
Connect Harness (NL-MCP) -> Connect harness
- replace user-facing bridge/protocol status messages with product-language equivalents while preserving fail-closed/no-browser-secret wording.
Add a focused unit/source guard in Accounts.spec.mjs to pin the product labels and reject the old bridge/protocol labels.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs / Tests |
Evidence |
| Accounts visible action labels |
#14807 product-language rule; apps/agentos/view/Accounts.mjs |
Buttons speak user intent: Add agent, Use sample, Connect harness |
Internal bridge method names remain unchanged |
test/playwright/unit/apps/agentos/Accounts.spec.mjs source guard |
L2 unit/source guard |
| Accounts fail-closed status copy |
Existing credential boundary in Accounts.mjs |
User-facing copy stays product-level while saying no PAT/browser connection state is stored |
Bridge/protocol details stay in implementation comments/JSDoc |
Existing credential-boundary tests plus new copy guard |
L2 unit/source guard |
| Broad onboarding surface |
#14614 |
This ticket only fixes visible copy; #14614 remains open for operable-cold flow work |
Link as related, not close-target |
PR body Related: #14614 |
Scope audit |
Decision Record impact
None. This is an app-level copy/guard leaf aligned with existing Fleet Manager product-language direction; no ADR or durable schema changes.
Acceptance Criteria
Out of Scope
The full #14614 add-agent/connect onboarding flow; the #14807 multi-agent configuration model; design-token styling/layout conformance from #14805/#14809; Brain-side bridge implementation; NL-MCP connection semantics.
Related
#14614 · #14807 · #14805 · #14809 · #14560
Origin Session ID: e0af78f0-80e9-485d-ae00-654ce902178d
Retrieval Hint: "Accounts add-agent product language Submit to Bridge Connect Harness NL-MCP visible copy"
Context
The Fleet Manager Accounts keeper-view currently exposes the right fail-closed credential boundary, but its visible copy still speaks implementation plumbing:
Submit to Bridge,Connect Harness (NL-MCP), and bridge/protocol status messages. That copy is called out by the broader Fleet Manager surfaces:This ticket is the narrow one-PR leaf for the already-isolated Accounts visible-copy slice. It does not close the broader onboarding/model/design work.
Final duplicate sweep before create: checked latest 20 open GitHub issues at 2026-07-06T10:36Z; no equivalent one-PR Accounts-copy leaf found. Nearby broader issues were #14614, #14807, #14805, and #14809. A2A in-flight sweep checked latest 30 messages at 2026-07-06T10:36Z; no competing claim on this exact slice surfaced, only the existing #14614 lane claim by @neo-gpt.
The Problem
The UI labels and status strings expose Brain-side transport details to the human operator. That is not only rough copy; it hides the product action behind the implementation path. The operator action is adding an agent or connecting a harness. The bridge/NL-MCP details are implementation and can remain in internal method names, comments, or future tooltip/docs surfaces, but should not be primary button/status text.
The Architectural Reality
apps/agentos/view/Accounts.mjsalready has the important security boundary:createPublicAgentDefinition()strips credentials before writing toAgentDefinitions.connectExternalHarnessBridge()carries only the{action:'start'}request, no credential.So this leaf should not rewrite the flow or the model. It should preserve the bridge method names and fail-closed behavior while changing only visible copy to product language.
Structure-map gate:
npm run --silent ai:structure-map -- --files --locran at 2026-07-06T10:36Z; owning surface is the existingapps/agentos/view/Accounts.mjswith focused unit coverage intest/playwright/unit/apps/agentos/Accounts.spec.mjs. No new.mjsfile or substrate placement decision is needed.The Fix
Update visible Accounts action/status copy:
Submit to Bridge->Add agentEdit Sample->Use sampleConnect Harness (NL-MCP)->Connect harnessAdd a focused unit/source guard in
Accounts.spec.mjsto pin the product labels and reject the old bridge/protocol labels.Contract Ledger Matrix
apps/agentos/view/Accounts.mjsAdd agent,Use sample,Connect harnesstest/playwright/unit/apps/agentos/Accounts.spec.mjssource guardAccounts.mjsRelated: #14614Decision Record impact
None. This is an app-level copy/guard leaf aligned with existing Fleet Manager product-language direction; no ADR or durable schema changes.
Acceptance Criteria
Add agent,Use sample, andConnect harness.Submit to Bridge,Fleet Registry bridge unavailable in dev-server mode. Submit fails closed,Connect Harness (NL-MCP), orExternal harness connected through the Neural Link bridge.Out of Scope
The full #14614 add-agent/connect onboarding flow; the #14807 multi-agent configuration model; design-token styling/layout conformance from #14805/#14809; Brain-side bridge implementation; NL-MCP connection semantics.
Related
#14614 · #14807 · #14805 · #14809 · #14560
Origin Session ID: e0af78f0-80e9-485d-ae00-654ce902178d Retrieval Hint: "Accounts add-agent product language Submit to Bridge Connect Harness NL-MCP visible copy"