diff --git a/maps/README.md b/maps/README.md index 2ea07cdd7fd..ef5adf705be 100644 --- a/maps/README.md +++ b/maps/README.md @@ -13,6 +13,33 @@ identifies the same capability in both maps. Product behavior remains governed b [the implementation spec](../doc/SPEC-implementation.md); a map cannot grant authority or redefine a permission denial as success. +## Capability identifiers + +The feature ID is the recipe filename without `.md`, such as `onboarding`. +The full capability ID joins that feature ID and a Sub-features key with `/`: +the `company` key in `feature-map/onboarding.md` is `onboarding/company`. +Its `agent-access-map/onboarding.md` companion uses the same local `company` key. +[The feature-map index](feature-map/README.md#browse-features) lists the existing +feature and full capability IDs. + +Each child page states ``Feature ID: `onboarding`.`` after its introduction or +product-map link. In feature recipes, show the full ID beside the parsed local +key: ``- `company`: `onboarding/company` — create a company``. In access +companions and Storybook verification guidance, keep the existing local heading +and put ``Capability ID: `onboarding/company`.`` beneath it. These labels make +the existing identifiers visible without changing keys, anchors, or ID generation. + +Use full capability IDs in cross-feature references, Storybook annotations, +tests, issues, PRs, and verification evidence. Both segments use lowercase +letters, digits, and hyphens. Keep filenames and keys stable when display titles +or navigation labels change; renaming either changes the capability ID. + +Entry-point IDs describe a surface, such as `web-wizard`, and are scoped to their +recipe. Reference them with a recipe link, such as +[onboarding.md#web-wizard](feature-map/onboarding.md#web-wizard), and record the +capability exercised separately. Navigation section labels are not capability IDs. +See [IDs and references](feature-map/README.md#ids-and-references) for examples. + ## Access contract Every business operation needs both an API and a usable agent entry point for an @@ -62,8 +89,9 @@ the agent path, even when a legacy agent can call the REST endpoint directly. ## Companion file format Each `agent-access-map/.md` has an H1, a relative link to its product file, -followed by one H2 backticked ID per product -sub-feature. Each capability contains these fields: +and its feature ID, followed by one H2 backticked local key per product +sub-feature. Each capability starts with its full capability ID and contains +these fields: - **Review:** `baseline` or `operation-reviewed`. - **API:** presence state and exact operation IDs, or a reasoned exception. @@ -139,8 +167,10 @@ separate from generated `maps/generated/coverage.json`, which lists page referen Change only the recipes, access contracts and stories whose behavior or intent changed. Feature recipes own navigation metadata; stories own small -`parameters.paperclip` annotations. Do not register entries or refresh counts in -shared READMEs, inventories, fingerprints or review journals. +`parameters.paperclip` annotations. Keep the feature-map README's readable ID +index aligned with those sources; it does not register entries for generation. +Do not refresh counts in shared READMEs, inventories, fingerprints or review +journals. `node scripts/storybook-catalog.mjs` validates and generates aggregate navigation, Storybook data, verification routes and the page inventory. All outputs live in diff --git a/maps/agent-access-map/README.md b/maps/agent-access-map/README.md index 97e156b878b..0e5a46f8ed1 100644 --- a/maps/agent-access-map/README.md +++ b/maps/agent-access-map/README.md @@ -4,6 +4,12 @@ This map accompanies the [feature map](../feature-map/README.md). It records API agent entry points, permission boundaries and verification for the same capability IDs. The [shared contract](../README.md) defines the format and maintenance rules. +Use full capability IDs when referring to access contracts outside their file: +`onboarding/company` means the `company` capability in `onboarding.md` in both maps. +The [feature index](../feature-map/README.md#browse-features) lists feature and +capability IDs; [IDs and references](../feature-map/README.md#ids-and-references) +explains entry-point references and stable naming. + ## Browse access contracts The same-named feature recipes define navigation and capability IDs. Run diff --git a/maps/agent-access-map/access.md b/maps/agent-access-map/access.md index c88ce491678..43cb3f92fba 100644 --- a/maps/agent-access-map/access.md +++ b/maps/agent-access-map/access.md @@ -2,6 +2,8 @@ Product map: [Login, invitations, and access](../feature-map/access.md). +Feature ID: `access`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `login` +Capability ID: `access/login`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -38,6 +42,8 @@ product-policy decision. ## `invitations` +Capability ID: `access/invitations`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -64,6 +70,8 @@ are different operations. ## `membership` +Capability ID: `access/membership`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -90,6 +98,8 @@ board-only. ## `resources` +Capability ID: `access/resources`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -115,6 +125,8 @@ resources and another company. ## `cli-auth` +Capability ID: `access/cli-auth`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/activity.md b/maps/agent-access-map/activity.md index 4ce0ea3e789..3f4d12a68dc 100644 --- a/maps/agent-access-map/activity.md +++ b/maps/agent-access-map/activity.md @@ -2,6 +2,8 @@ Product map: [Dashboards, activity, and audit trails](../feature-map/activity.md). +Feature ID: `activity`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `overview` +Capability ID: `activity/overview`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -35,6 +39,8 @@ surfaces. ## `activity` +Capability ID: `activity/activity`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -69,6 +75,8 @@ equate them with issue activity reading. Live sandbox access remains unverified. ## `runs` +Capability ID: `activity/runs`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -120,6 +128,8 @@ Live updated-bridge admission and useful incident diagnosis remain unverified. ## `routine-audit` +Capability ID: `activity/routine-audit`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -144,6 +154,8 @@ changes. ## `timeline` +Capability ID: `activity/timeline`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -167,6 +179,8 @@ Gaps: API exists; no dedicated timeline tool is necessary for this requirement. ## `agent-commentary` +Capability ID: `activity/agent-commentary`. + Review: `baseline`. API: `present` — `GET /api/companies/{companyId}/agent-commentary` and diff --git a/maps/agent-access-map/agent-chat.md b/maps/agent-access-map/agent-chat.md index e38bd25bee6..d914b583975 100644 --- a/maps/agent-access-map/agent-chat.md +++ b/maps/agent-access-map/agent-chat.md @@ -2,6 +2,8 @@ Product map: [Agent conversations and project handoff](../feature-map/agent-chat.md). +Feature ID: `agent-chat`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `discovery` +Capability ID: `agent-chat/discovery`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -36,6 +40,8 @@ missing from the generated API catalog. ## `history` +Capability ID: `agent-chat/history`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -62,6 +68,8 @@ messages are different actions. ## `handoff` +Capability ID: `agent-chat/handoff`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -88,6 +96,8 @@ repository access still apply. ## `conference-room` +Capability ID: `agent-chat/conference-room`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/agents.md b/maps/agent-access-map/agents.md index ecebbcc54f2..d167760680f 100644 --- a/maps/agent-access-map/agents.md +++ b/maps/agent-access-map/agents.md @@ -2,6 +2,8 @@ Product map: [Hiring, agent configuration, and organization](../feature-map/agents.md). +Feature ID: `agents`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -19,6 +21,8 @@ update does not claim operation-complete review or live agent verification. ## `hire` +Capability ID: `agents/hire`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -81,6 +85,8 @@ qualification remains not run. ## `instructions` +Capability ID: `agents/instructions`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -107,6 +113,8 @@ policy apply. ## `organization` +Capability ID: `agents/organization`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -133,6 +141,8 @@ authority. ## `lifecycle` +Capability ID: `agents/lifecycle`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -162,6 +172,8 @@ enforced actor restrictions. ## `built-in` +Capability ID: `agents/built-in`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -194,6 +206,8 @@ source-only evidence at the scoped commit, not a live provisioning result. ## `primary-agent` +Capability ID: `agents/primary-agent`. + Review: `baseline`. API: `present` — GET and PUT /api/companies/{companyId}/primary-agent/me. @@ -227,6 +241,8 @@ and Chat default resolution. ## `grok-bot` +Capability ID: `agents/grok-bot`. + Review: `baseline`. API: `present` — `POST /api/companies/{companyId}/grok-invitations`, operator-owned Grok invitations and agent-scoped `/grok-binding` setup, routine, verify, stop, recover and disconnect endpoints. Direct HTTPS `/mcp/runner` uses fixed named-agent OAuth. Grok tools expose durable assignment operations and task-bound upload/download grants. diff --git a/maps/agent-access-map/app-permissions.md b/maps/agent-access-map/app-permissions.md index a160f78b33e..d40da4f5489 100644 --- a/maps/agent-access-map/app-permissions.md +++ b/maps/agent-access-map/app-permissions.md @@ -3,6 +3,8 @@ Product map: [App access, action permissions, and testing](../feature-map/app-permissions.md). +Feature ID: `app-permissions`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -12,6 +14,8 @@ for format, permission checks, evidence and maintenance. ## `agent-access` +Capability ID: `app-permissions/agent-access`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -43,6 +47,8 @@ no grant credentials and do not authorize a task's tool calls. See the ## `action-policy` +Capability ID: `app-permissions/action-policy`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -67,6 +73,8 @@ explicitly delegated administration should be supported. ## `catalog-change` +Capability ID: `app-permissions/catalog-change`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -100,6 +108,8 @@ provider responses. They do not qualify a live Daytona account or agent model. ## `test-action` +Capability ID: `app-permissions/test-action`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -124,6 +134,8 @@ testing endpoint. ## `account-maintenance` +Capability ID: `app-permissions/account-maintenance`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/budgets-costs.md b/maps/agent-access-map/budgets-costs.md index f7240d1506e..9584991acf3 100644 --- a/maps/agent-access-map/budgets-costs.md +++ b/maps/agent-access-map/budgets-costs.md @@ -2,6 +2,8 @@ Product map: [Costs, budgets, and spending controls](../feature-map/budgets-costs.md). +Feature ID: `budgets-costs`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -16,6 +18,8 @@ that hold. See [accounting behavior](../../doc/prompt-injection-prevention.md). ## `cost-reporting` +Capability ID: `budgets-costs/cost-reporting`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -41,6 +45,8 @@ have additional board gates. ## `budgets` +Capability ID: `budgets-costs/budgets`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -66,6 +72,8 @@ ordinary company access. ## `incidents` +Capability ID: `budgets-costs/incidents`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -90,6 +98,8 @@ incident. ## `resolution` +Capability ID: `budgets-costs/resolution`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/cases.md b/maps/agent-access-map/cases.md index b0dc7215b95..c7ec737e5c4 100644 --- a/maps/agent-access-map/cases.md +++ b/maps/agent-access-map/cases.md @@ -2,6 +2,8 @@ Product map: [Cases and structured work records](../feature-map/cases.md). +Feature ID: `cases`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `browse` +Capability ID: `cases/browse`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -35,6 +39,8 @@ exists. ## `structure` +Capability ID: `cases/structure`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -60,6 +66,8 @@ endpoint requirement. ## `history` +Capability ID: `cases/history`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -84,6 +92,8 @@ Gaps: Source-backed access only; case visibility and document locks still apply. ## `task-links` +Capability ID: `cases/task-links`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/chat-channels.md b/maps/agent-access-map/chat-channels.md index 2786b70922e..a1aee857cda 100644 --- a/maps/agent-access-map/chat-channels.md +++ b/maps/agent-access-map/chat-channels.md @@ -2,6 +2,8 @@ Product map: [External chat and email conversations](../feature-map/chat-channels.md). +Feature ID: `chat-channels`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `providers` +Capability ID: `chat-channels/providers`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -41,6 +45,8 @@ and the UI integration; live provider qualification is still separate. ## `identity` +Capability ID: `chat-channels/identity`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -64,6 +70,8 @@ provider checks at the HTTP route. Native `call_api` preserves these permissions ## `conversation` +Capability ID: `chat-channels/conversation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -195,6 +203,8 @@ An existing conversation keeps its task binding. See ## `attachments` +Capability ID: `chat-channels/attachments`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -221,6 +231,8 @@ separate operations. ## `lifecycle` +Capability ID: `chat-channels/lifecycle`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/cli-operations.md b/maps/agent-access-map/cli-operations.md index 3513fe1593d..de3c2804cbd 100644 --- a/maps/agent-access-map/cli-operations.md +++ b/maps/agent-access-map/cli-operations.md @@ -2,6 +2,8 @@ Product map: [CLI, API clients, and local worktrees](../feature-map/cli-operations.md). +Feature ID: `cli-operations`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `context` +Capability ID: `cli-operations/context`. + Review: `baseline`. API: `not-applicable` — Local CLI configuration has no matching domain REST resource; @@ -34,6 +38,8 @@ local operator configuration. ## `domain-commands` +Capability ID: `cli-operations/domain-commands`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -60,6 +66,8 @@ allowed to this agent. ## `outputs` +Capability ID: `cli-operations/outputs`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -86,6 +94,8 @@ assertions. ## `run-controls` +Capability ID: `cli-operations/run-controls`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -112,6 +122,8 @@ not be counted as ordinary agent access. ## `worktree-instances` +Capability ID: `cli-operations/worktree-instances`. + Review: `baseline`. API: `not-applicable` — Local checkout and pre-start provisioning use local tools, not diff --git a/maps/agent-access-map/companies.md b/maps/agent-access-map/companies.md index 585af7ab3c6..9e5399a5e08 100644 --- a/maps/agent-access-map/companies.md +++ b/maps/agent-access-map/companies.md @@ -2,6 +2,8 @@ Product map: [Companies and portability](../feature-map/companies.md). +Feature ID: `companies`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `selection` +Capability ID: `companies/selection`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -40,6 +44,8 @@ selection is local state. ## `identity` +Capability ID: `companies/identity`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -65,6 +71,8 @@ denial evidence. ## `archive` +Capability ID: `companies/archive`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -91,6 +99,8 @@ equivalence rather than declaring all archival human-only. ## `portability` +Capability ID: `companies/portability`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -118,6 +128,8 @@ New-company/ZIP import flows retain their board and transport constraints. ## `decision-models` +Capability ID: `companies/decision-models`. + Review: `baseline`. API: `present` — GET and PUT /api/companies/{companyId}/decision-model; @@ -152,6 +164,8 @@ Live native and agent-credential reads remain unverified. ## `fast-responses` +Capability ID: `companies/fast-responses`. + Review: `baseline`. API: `present` — GET and PUT /api/companies/{companyId}/fast-response; @@ -186,6 +200,8 @@ work. Live native, provider and agent access remain unverified. ## `agent-observability` +Capability ID: `companies/agent-observability`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -208,6 +224,8 @@ Gaps: Direct agent management and independent personal harness enrollment are ou ## `prompt-injection-prevention` +Capability ID: `companies/prompt-injection-prevention`. + Review: `baseline`. API: `present` — GET/PUT /api/companies/{companyId}/prompt-injection-prevention, diff --git a/maps/agent-access-map/connection-setup.md b/maps/agent-access-map/connection-setup.md index 9651953f692..ee64513a67a 100644 --- a/maps/agent-access-map/connection-setup.md +++ b/maps/agent-access-map/connection-setup.md @@ -2,6 +2,8 @@ Product map: [Connection setup](../feature-map/connection-setup.md). +Feature ID: `connection-setup`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -16,6 +18,8 @@ does not activate the service. See [service configuration](../../doc/prompt-inje ## `catalog` +Capability ID: `connection-setup/catalog`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -41,6 +45,8 @@ administration. ## `identity-and-access` +Capability ID: `connection-setup/identity-and-access`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -65,6 +71,8 @@ the intended connection. ## `credentials` +Capability ID: `connection-setup/credentials`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -97,6 +105,8 @@ replaced by fixtures. Real provider authentication remains unqualified. ## `handoff` +Capability ID: `connection-setup/handoff`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -121,6 +131,8 @@ Gaps: OAuth/callback and addressed-user checks are deliberate separate boundarie ## `draft-recovery` +Capability ID: `connection-setup/draft-recovery`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -147,6 +159,8 @@ agent API gap. ## `task-request` +Capability ID: `connection-setup/task-request`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -172,6 +186,8 @@ approval system. ## `channel-setup` +Capability ID: `connection-setup/channel-setup`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -203,6 +219,8 @@ live provider or agent access. ## `failure` +Capability ID: `connection-setup/failure`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/developer-labs.md b/maps/agent-access-map/developer-labs.md index c8034e1d574..c5905bac210 100644 --- a/maps/agent-access-map/developer-labs.md +++ b/maps/agent-access-map/developer-labs.md @@ -2,6 +2,8 @@ Product map: [Developer previews and diagnostic labs](../feature-map/developer-labs.md). +Feature ID: `developer-labs`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `design` +Capability ID: `developer-labs/design`. + Review: `baseline`. API: `not-applicable` — No domain API required for static component examples; label this @@ -33,6 +37,8 @@ exception. ## `interaction-labs` +Capability ID: `developer-labs/interaction-labs`. + Review: `baseline`. API: `not-applicable` — A synthetic card's API parity belongs to the real feature, not @@ -55,6 +61,8 @@ Gaps: A synthetic card's API parity belongs to the real feature, not to a new la ## `performance` +Capability ID: `developer-labs/performance`. + Review: `baseline`. API: `not-applicable` — There is no domain REST action for scrolling a static fixture; @@ -77,6 +85,8 @@ evidence separately. ## `route-gates` +Capability ID: `developer-labs/route-gates`. + Review: `baseline`. API: `not-applicable` — Route registration and feature gates are not interchangeable; no diff --git a/maps/agent-access-map/documents-artifacts.md b/maps/agent-access-map/documents-artifacts.md index f1ad428f8e4..0b61733864e 100644 --- a/maps/agent-access-map/documents-artifacts.md +++ b/maps/agent-access-map/documents-artifacts.md @@ -3,6 +3,8 @@ Product map: [Documents, attachments, and work products](../feature-map/documents-artifacts.md). +Feature ID: `documents-artifacts`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -12,6 +14,8 @@ for format, permission checks, evidence and maintenance. ## `documents` +Capability ID: `documents-artifacts/documents`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -39,6 +43,8 @@ other-task tools cover additional scope. ## `annotations` +Capability ID: `documents-artifacts/annotations`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -64,6 +70,8 @@ anchors and resolver authority. ## `attachments` +Capability ID: `documents-artifacts/attachments`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -94,6 +102,8 @@ permission conditions. ## `work-products` +Capability ID: `documents-artifacts/work-products`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -120,6 +130,8 @@ accepted review. ## `library` +Capability ID: `documents-artifacts/library`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/execution-environments.md b/maps/agent-access-map/execution-environments.md index 1a5e97fc0a2..69bd94a2d62 100644 --- a/maps/agent-access-map/execution-environments.md +++ b/maps/agent-access-map/execution-environments.md @@ -3,6 +3,8 @@ Product map: [Local, SSH, and sandbox environments](../feature-map/execution-environments.md). +Feature ID: `execution-environments`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -18,6 +20,8 @@ or provider qualification is claimed by this update. ## `configuration` +Capability ID: `execution-environments/configuration`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -54,6 +58,8 @@ packages do not transfer platform qualification. ## `capabilities` +Capability ID: `execution-environments/capabilities`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -79,6 +85,8 @@ safe agent-readable capability listing is desired. ## `probe` +Capability ID: `execution-environments/probe`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -131,6 +139,8 @@ an accepted interaction does not turn the caller into a board administrator. ## `assignment` +Capability ID: `execution-environments/assignment`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -157,6 +167,8 @@ test authorized and denied selection. ## `images` +Capability ID: `execution-environments/images`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/gateways-profiles.md b/maps/agent-access-map/gateways-profiles.md index 421a1dfa3c0..e137b9a2a84 100644 --- a/maps/agent-access-map/gateways-profiles.md +++ b/maps/agent-access-map/gateways-profiles.md @@ -2,6 +2,8 @@ Product map: [Tool gateways and access profiles](../feature-map/gateways-profiles.md). +Feature ID: `gateways-profiles`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `gateway` +Capability ID: `gateways-profiles/gateway`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -36,6 +40,8 @@ Gaps: No agent named-gateway management path; assigned tool use exists separatel ## `profiles` +Capability ID: `gateways-profiles/profiles`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -65,6 +71,8 @@ entry writes. It grants no profile-management authority to agents. ## `client-connect` +Capability ID: `gateways-profiles/client-connect`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -133,6 +141,8 @@ server, not a live external provider or all client surfaces. ## `tokens` +Capability ID: `gateways-profiles/tokens`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -158,6 +168,8 @@ the denial. ## `activity` +Capability ID: `gateways-profiles/activity`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/goals.md b/maps/agent-access-map/goals.md index 2bf3f977bff..0de936ed78e 100644 --- a/maps/agent-access-map/goals.md +++ b/maps/agent-access-map/goals.md @@ -2,6 +2,8 @@ Product map: [Goals and work alignment](../feature-map/goals.md). +Feature ID: `goals`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `hierarchy` +Capability ID: `goals/hierarchy`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -37,6 +41,8 @@ production native binding. ## `alignment` +Capability ID: `goals/alignment`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -61,6 +67,8 @@ Gaps: Goal association is data access, separate from completing or reassigning t ## `navigation` +Capability ID: `goals/navigation`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/inbox-search.md b/maps/agent-access-map/inbox-search.md index d51d0d989dd..70b9f30321e 100644 --- a/maps/agent-access-map/inbox-search.md +++ b/maps/agent-access-map/inbox-search.md @@ -2,6 +2,8 @@ Product map: [Inbox, decisions, and search](../feature-map/inbox-search.md). +Feature ID: `inbox-search`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `views` +Capability ID: `inbox-search/views`. + The issue-list API accepts optional `includeAgentCreatedTasks`; false restricts independent results to human creation before search/pagination. Omission retains existing agent/API behavior. `includeParticipatedTasks=true` requires a board user @@ -54,6 +58,8 @@ is a separate user-only surface. ## `triage` +Capability ID: `inbox-search/triage`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -79,6 +85,8 @@ does not have equivalent agent semantics everywhere. ## `decisions` +Capability ID: `inbox-search/decisions`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -104,6 +112,8 @@ separate board/resolver boundaries. ## `search` +Capability ID: `inbox-search/search`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -131,6 +141,8 @@ the appropriate one. ## `toasts` +Capability ID: `inbox-search/toasts`. + Review: `baseline`. API: `present` — GET /api/companies/{companyId}/events/ws (WebSocket upgrade); viewer-specific diff --git a/maps/agent-access-map/instance-operations.md b/maps/agent-access-map/instance-operations.md index c039e8fea8a..c30d0b3a6bc 100644 --- a/maps/agent-access-map/instance-operations.md +++ b/maps/agent-access-map/instance-operations.md @@ -3,6 +3,8 @@ Product map: [Installation, configuration, updates, and backups](../feature-map/instance-operations.md). +Feature ID: `instance-operations`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -12,6 +14,8 @@ for format, permission checks, evidence and maintenance. ## `install-update` +Capability ID: `instance-operations/install-update`. + Review: `baseline`. API: `not-applicable` — No uniform company REST updater API. Treat pre-start @@ -34,6 +38,8 @@ exception or design an explicit delegated operator API. ## `server-service` +Capability ID: `instance-operations/server-service`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -58,6 +64,8 @@ Local service control is not agent company authority. ## `configuration` +Capability ID: `instance-operations/configuration`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -106,6 +114,8 @@ no live Cloud or agent-credential verification is claimed. ## `diagnostics` +Capability ID: `instance-operations/diagnostics`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -138,6 +148,8 @@ equivalent to that response. ## `backup` +Capability ID: `instance-operations/backup`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/navigation-preferences.md b/maps/agent-access-map/navigation-preferences.md index e5693a33b17..7d0d9a68dc9 100644 --- a/maps/agent-access-map/navigation-preferences.md +++ b/maps/agent-access-map/navigation-preferences.md @@ -3,6 +3,8 @@ Product map: [Navigation, profile, and announcements](../feature-map/navigation-preferences.md). +Feature ID: `navigation-preferences`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -12,6 +14,8 @@ for format, permission checks, evidence and maintenance. ## `navigation` +Capability ID: `navigation-preferences/navigation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -38,6 +42,8 @@ needs its own identity policy. ## `preferences` +Capability ID: `navigation-preferences/preferences`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -63,6 +69,8 @@ Collapse is in-memory; global collapse is disabled. ## `profile` +Capability ID: `navigation-preferences/profile`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -90,6 +98,8 @@ distinct permission paths. ## `announcements` +Capability ID: `navigation-preferences/announcements`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -114,6 +124,8 @@ Gaps: User-specific instance-wide dismissal has no agent delegation path today. ## `fallbacks` +Capability ID: `navigation-preferences/fallbacks`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/onboarding.md b/maps/agent-access-map/onboarding.md index 780dc5b9334..c6bac74ddd3 100644 --- a/maps/agent-access-map/onboarding.md +++ b/maps/agent-access-map/onboarding.md @@ -2,6 +2,8 @@ Product map: [Onboarding and first work](../feature-map/onboarding.md). +Feature ID: `onboarding`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -16,6 +18,8 @@ retain the original source commit; no live agent verification is added. ## `instance` +Capability ID: `onboarding/instance`. + Review: `baseline`. API: `not-applicable` — Bootstrapping an instance cannot depend solely on an API served @@ -39,6 +43,8 @@ not-yet-running instance. ## `company` +Capability ID: `onboarding/company`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -66,6 +72,8 @@ a company key. ## `adapter` +Capability ID: `onboarding/adapter`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -146,6 +154,8 @@ environment access separately. These agent-context checks remain `not-run`. ## `first-task` +Capability ID: `onboarding/first-task`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -185,6 +195,8 @@ completion reporting; revised live authorization and execution remain `not-run`. ## `resume` +Capability ID: `onboarding/resume`. + Review: `baseline`. API: `not-applicable` — No server onboarding-draft API for this browser-local state; diff --git a/maps/agent-access-map/plugins.md b/maps/agent-access-map/plugins.md index 7e889819ff2..6ce5beaa9bf 100644 --- a/maps/agent-access-map/plugins.md +++ b/maps/agent-access-map/plugins.md @@ -2,6 +2,8 @@ Product map: [Plugins and contributed product surfaces](../feature-map/plugins.md). +Feature ID: `plugins`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `installation` +Capability ID: `plugins/installation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -34,6 +38,8 @@ authority decision. ## `configuration` +Capability ID: `plugins/configuration`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -66,6 +72,8 @@ This does not add an ordinary agent API. ## `contributions` +Capability ID: `plugins/contributions`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -92,6 +100,8 @@ plugin's API/tool coverage. ## `lifecycle` +Capability ID: `plugins/lifecycle`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/projects.md b/maps/agent-access-map/projects.md index 8803df24f07..d22d183b6d7 100644 --- a/maps/agent-access-map/projects.md +++ b/maps/agent-access-map/projects.md @@ -2,6 +2,8 @@ Product map: [Projects and repositories](../feature-map/projects.md). +Feature ID: `projects`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `lifecycle` +Capability ID: `projects/lifecycle`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -37,6 +41,8 @@ still apply. ## `task-context` +Capability ID: `projects/task-context`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -62,6 +68,8 @@ separate checks. ## `repositories` +Capability ID: `projects/repositories`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -88,6 +96,8 @@ project hard-requires board and needs a delegation decision. ## `defaults` +Capability ID: `projects/defaults`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/questions-and-approvals.md b/maps/agent-access-map/questions-and-approvals.md index 7ed7d2de128..30bf493c72e 100644 --- a/maps/agent-access-map/questions-and-approvals.md +++ b/maps/agent-access-map/questions-and-approvals.md @@ -2,6 +2,8 @@ Product map: [Questions and approvals](../feature-map/questions-and-approvals.md). +Feature ID: `questions-and-approvals`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `questions` +Capability ID: `questions-and-approvals/questions`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -37,6 +41,8 @@ resolver policy. ## `dismiss-and-reopen` +Capability ID: `questions-and-approvals/dismiss-and-reopen`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -60,6 +66,8 @@ require a new mutation API. ## `confirmations` +Capability ID: `questions-and-approvals/confirmations`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -86,6 +94,8 @@ acceptance/response controls remain restricted. ## `plan-review` +Capability ID: `questions-and-approvals/plan-review`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -112,6 +122,8 @@ capability. ## `audience` +Capability ID: `questions-and-approvals/audience`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -137,6 +149,8 @@ authority. ## `governance` +Capability ID: `questions-and-approvals/governance`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -163,6 +177,8 @@ Preserve explicit approver authority. ## `tool-review` +Capability ID: `questions-and-approvals/tool-review`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -188,6 +204,8 @@ scope via generic API. ## `continuation` +Capability ID: `questions-and-approvals/continuation`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/recovery.md b/maps/agent-access-map/recovery.md index 0801a2bb062..5eadaf0c3d2 100644 --- a/maps/agent-access-map/recovery.md +++ b/maps/agent-access-map/recovery.md @@ -2,6 +2,8 @@ Product map: [Recovery](../feature-map/recovery.md). +Feature ID: `recovery`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `diagnosis` +Capability ID: `recovery/diagnosis`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -69,6 +73,8 @@ prove successful recovery. ## `bounded-continuation` +Capability ID: `recovery/bounded-continuation`. + Controller recovery can restore the exact active turn's saved completion proposal before reconnecting its provider. It requires matching run/session/source/turn identity and subsequent provider termination. This adds no agent retry, completion, @@ -114,6 +120,8 @@ revised live agent authorization and callback delivery remain `not-run`. ## `source-action` +Capability ID: `recovery/source-action`. + The recovery-actions read API includes settled execution reconciliation holds with an automatic `replay: blocked` receipt, as well as retained workspace holds. The existing company and task-read checks remain in force. The board notice @@ -176,6 +184,8 @@ live provider-stop proof. ## `exhaustion` +Capability ID: `recovery/exhaustion`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -201,6 +211,8 @@ specified owner/action. ## `workspace` +Capability ID: `recovery/workspace`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -264,6 +276,8 @@ proof through the finalization reconciler; agents cannot attest owner shutdown. ## `unknown-outcome` +Capability ID: `recovery/unknown-outcome`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -288,6 +302,8 @@ obtain apparent parity. ## `user-continuation` +Capability ID: `recovery/user-continuation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -313,6 +329,8 @@ retry control is not. ## `reconnect` +Capability ID: `recovery/reconnect`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/routines.md b/maps/agent-access-map/routines.md index 9abfe59048e..01fb9b378f2 100644 --- a/maps/agent-access-map/routines.md +++ b/maps/agent-access-map/routines.md @@ -2,6 +2,8 @@ Product map: [Routines, schedules, and triggers](../feature-map/routines.md). +Feature ID: `routines`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `definition` +Capability ID: `routines/definition`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -40,6 +44,8 @@ issue or company default. ## `triggers` +Capability ID: `routines/triggers`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -75,6 +81,8 @@ These are local contract checks, not a live provider sleep/wake qualification. ## `run-now` +Capability ID: `routines/run-now`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -100,6 +108,8 @@ native authority requires a running bound run. A separate control binding remain ## `history` +Capability ID: `routines/history`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -125,6 +135,8 @@ ownership for agents. ## `management` +Capability ID: `routines/management`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/runs-adapters.md b/maps/agent-access-map/runs-adapters.md index f51a6bd5b15..3c0c53209b4 100644 --- a/maps/agent-access-map/runs-adapters.md +++ b/maps/agent-access-map/runs-adapters.md @@ -2,6 +2,8 @@ Product map: [Runs, harnesses, and model accounts](../feature-map/runs-adapters.md). +Feature ID: `runs-adapters`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -23,6 +25,8 @@ unrelated operations; no live provider or agent authorization is claimed. ## `availability` +Capability ID: `runs-adapters/availability`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -68,6 +72,8 @@ unchanged. This is source/control evidence, not live Kubernetes qualification. ## `validation` +Capability ID: `runs-adapters/validation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -147,6 +153,8 @@ settings. See [creation access](./agents.md#hire). ## `runs` +Capability ID: `runs-adapters/runs`. + Review: `baseline`. Scoped source-only timing evidence: workspace preparation spans carry only the @@ -204,6 +212,8 @@ session-control access. Deployed diagnostic usefulness remains unverified. ## `session` +Capability ID: `runs-adapters/session`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/secrets.md b/maps/agent-access-map/secrets.md index 551f7046987..a31d497c445 100644 --- a/maps/agent-access-map/secrets.md +++ b/maps/agent-access-map/secrets.md @@ -2,6 +2,8 @@ Product map: [Secrets, personal credentials, and proposals](../feature-map/secrets.md). +Feature ID: `secrets`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `company-secrets` +Capability ID: `secrets/company-secrets`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -39,6 +43,8 @@ is a separate scoped operation described under runtime-delivery. ## `user-secrets` +Capability ID: `secrets/user-secrets`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -64,6 +70,8 @@ key. ## `proposals` +Capability ID: `secrets/proposals`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -90,6 +98,8 @@ Native calls retain active-run, scope and skill-test JWT restrictions. ## `vault-import` +Capability ID: `secrets/vault-import`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -115,6 +125,8 @@ secret. ## `runtime-delivery` +Capability ID: `secrets/runtime-delivery`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/skills.md b/maps/agent-access-map/skills.md index 9c7dff92df7..71776058621 100644 --- a/maps/agent-access-map/skills.md +++ b/maps/agent-access-map/skills.md @@ -2,6 +2,8 @@ Product map: [Skill discovery, authoring, and policy](../feature-map/skills.md). +Feature ID: `skills`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `discovery` +Capability ID: `skills/discovery`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -42,6 +46,8 @@ agent's role name. ## `authoring` +Capability ID: `skills/authoring`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -69,6 +75,8 @@ support a narrower shape than full API. ## `versions` +Capability ID: `skills/versions`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -114,6 +122,8 @@ cover separate actors and project-access revocation; this adds no agent API. ## `policy` +Capability ID: `skills/policy`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -151,6 +161,8 @@ assignment round trip. ## `testing` +Capability ID: `skills/testing`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/status-cards.md b/maps/agent-access-map/status-cards.md index ef2dbf42b66..b031002f46d 100644 --- a/maps/agent-access-map/status-cards.md +++ b/maps/agent-access-map/status-cards.md @@ -2,6 +2,8 @@ Product map: [Status cards and refreshed summaries](../feature-map/status-cards.md). +Feature ID: `status-cards`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `authoring` +Capability ID: `status-cards/authoring`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -36,6 +40,8 @@ feature. ## `generation` +Capability ID: `status-cards/generation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -61,6 +67,8 @@ limits apply. ## `inspection` +Capability ID: `status-cards/inspection`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -87,6 +95,8 @@ successful generation. ## `archive` +Capability ID: `status-cards/archive`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/steering.md b/maps/agent-access-map/steering.md index 496ae859659..232a2a578b0 100644 --- a/maps/agent-access-map/steering.md +++ b/maps/agent-access-map/steering.md @@ -2,6 +2,8 @@ Product map: [Steering and queued messages](../feature-map/steering.md). +Feature ID: `steering`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `queue` +Capability ID: `steering/queue`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -46,6 +50,8 @@ messages requires separate authority. ## `edit-order-discard` +Capability ID: `steering/edit-order-discard`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -71,6 +77,8 @@ needed before granting one. ## `steer` +Capability ID: `steering/steer`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -95,6 +103,8 @@ preserves this denial and cannot impersonate the steering user. ## `interrupt` +Capability ID: `steering/interrupt`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -118,6 +128,8 @@ Gaps: Explicit operator action is distinct from an agent yielding/blocking its o ## `stop-and-pause` +Capability ID: `steering/stop-and-pause`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -143,6 +155,8 @@ generic agent management path. ## `drafts` +Capability ID: `steering/drafts`. + Review: `baseline`. API: `not-applicable` — No shared server draft resource for this presentation state; @@ -165,6 +179,8 @@ would be a deliberate new capability. ## `approval-queue` +Capability ID: `steering/approval-queue`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/task-coordination.md b/maps/agent-access-map/task-coordination.md index 20b33cb299b..a9bd1ddcc56 100644 --- a/maps/agent-access-map/task-coordination.md +++ b/maps/agent-access-map/task-coordination.md @@ -3,6 +3,8 @@ Product map: [Delegation, dependencies, and signoff](../feature-map/task-coordination.md). +Feature ID: `task-coordination`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -14,6 +16,8 @@ for format, permission checks, evidence and maintenance. ## `delegation` +Capability ID: `task-coordination/delegation`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -39,6 +43,8 @@ protected task/resource policy. ## `dependencies` +Capability ID: `task-coordination/dependencies`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -65,6 +71,8 @@ forwards blockedByIssueIds to the REST route and retains its ownership checks. ## `signoff` +Capability ID: `task-coordination/signoff`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -92,6 +100,8 @@ boundary. ## `tree-control` +Capability ID: `task-coordination/tree-control`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/tasks.md b/maps/agent-access-map/tasks.md index 8f999cee676..f0746678e05 100644 --- a/maps/agent-access-map/tasks.md +++ b/maps/agent-access-map/tasks.md @@ -2,6 +2,8 @@ Product map: [Task creation and lifecycle](../feature-map/tasks.md). +Feature ID: `tasks`. + Review date: 2026-10-12. Source commit: `58e16dbddfc9c8d0cf60867f9d9847f0feda055b`. Native REST transport reconciled in this change; see the [shared transport contract](README.md#native-rest-transport). @@ -13,6 +15,8 @@ for format, permission checks, evidence and maintenance. ## `create` +Capability ID: `tasks/create`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -40,6 +44,8 @@ narrower/different APIs. ## `organize` +Capability ID: `tasks/organize`. + `GET /api/companies/{companyId}/issues/summaries?ids=...` reads up to five exact UUIDs and returns only navigation summaries. Normal company and task-read permissions apply to ordinary agent REST calls; task-bridge keys are denied. @@ -84,6 +90,8 @@ necessarily shared server preferences. ## `properties` +Capability ID: `tasks/properties`. + Review: `baseline`. Agent REST callers can promote a prepared backlog task with @@ -163,6 +171,8 @@ status, assignment and dependency fields to existing route authorization. ## `discussion` +Capability ID: `tasks/discussion`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -190,6 +200,8 @@ checks; it cannot impersonate a user. ## `completion` +Capability ID: `tasks/completion`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/teams.md b/maps/agent-access-map/teams.md index 600e463eca6..d6e4eeb7ec3 100644 --- a/maps/agent-access-map/teams.md +++ b/maps/agent-access-map/teams.md @@ -2,6 +2,8 @@ Product map: [Team packages and catalog installation](../feature-map/teams.md). +Feature ID: `teams`. + Review date: 2026-10-12. Source commit: `f981fa3cc10cb8663a87dec60345fbff46d54d0a`. This is a source-reviewed baseline of representative operations and known gaps. @@ -11,6 +13,8 @@ for format, permission checks, evidence and maintenance. ## `discovery` +Capability ID: `teams/discovery`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -35,6 +39,8 @@ Gaps: Team browsing exists even though there is no dedicated teams product scree ## `preview` +Capability ID: `teams/preview`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -59,6 +65,8 @@ execution proof. ## `install` +Capability ID: `teams/install`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -83,6 +91,8 @@ still need operator setup. ## `configuration` +Capability ID: `teams/configuration`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/agent-access-map/workspaces.md b/maps/agent-access-map/workspaces.md index 46a8fca7571..96bb90d9803 100644 --- a/maps/agent-access-map/workspaces.md +++ b/maps/agent-access-map/workspaces.md @@ -2,6 +2,8 @@ Product map: [Execution workspaces, services, and files](../feature-map/workspaces.md). +Feature ID: `workspaces`. + Lost-source reconstruction adds the board-only `POST /api/issues/{id}/recovery-actions/reconstruct-workspace` action. It requires `runtime:manage` and ordinary task visibility. Agents cannot authorize it. The @@ -25,6 +27,8 @@ for format, permission checks, evidence and maintenance. ## `binding` +Capability ID: `workspaces/binding`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -124,6 +128,8 @@ a running service. ## `provisioning` +Capability ID: `workspaces/provisioning`. + Source preparation keeps its dedicated lock connection active during work on other connections. It preserves company/source exclusion and existing admission authority; it adds no agent API or permission. The @@ -169,6 +175,8 @@ is a separate protected operation. ## `services` +Capability ID: `workspaces/services`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -196,6 +204,8 @@ must be recorded. ## `files-git` +Capability ID: `workspaces/files-git`. + Review: `baseline`. API: `present` — representative operation IDs: @@ -229,6 +239,8 @@ workspace metadata, and operation logs retain their app-data privacy. ## `closure` +Capability ID: `workspaces/closure`. + Review: `baseline`. API: `present` — representative operation IDs: diff --git a/maps/feature-map/README.md b/maps/feature-map/README.md index c99d1ba3fc0..d11144493a9 100644 --- a/maps/feature-map/README.md +++ b/maps/feature-map/README.md @@ -9,16 +9,115 @@ The sibling [agent access map](../agent-access-map/README.md) records APIs, agent entry points and permission boundaries for the same capability IDs. Follow the [shared map contract](../README.md) when maintaining either map. +## IDs and references + +Use the existing IDs in issues, PRs, Storybook annotations, tests, and verification +evidence: + +| Reference | Example | Defined by | +| --- | --- | --- | +| Feature ID | `onboarding` | The recipe filename without `.md`. | +| Capability ID | `onboarding/company` | The feature ID plus a key from its Sub-features list, separated by `/`. | +| Entry-point reference | [onboarding.md#web-wizard](onboarding.md#web-wizard) | The recipe filename plus its entry-point heading. The local entry-point ID is `web-wizard`. | + +For example, report verifying `onboarding/company` through `web-wizard`. +Capabilities describe behavior; entry points identify the surface used to exercise +it. Entry-point IDs are separate from generated capability IDs. Both maps and +Storybook use the same full capability IDs. Each child page states its feature +ID; recipe bullets show the full capability ID beside the local key, and access +companions show it beneath the local heading. Local keys remain unchanged for +parsing and existing anchors. + +Keep recipe filenames, sub-feature keys, and entry-point keys stable when changing +display titles or navigation. Renaming a filename or key changes its references. +The section headings below are navigation labels, not additional IDs. + ## Browse features +Use this index to open a recipe or copy its feature and full capability IDs. + +### Getting started and access + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `onboarding` | [Onboarding and first work](onboarding.md) | `onboarding/instance`, `onboarding/company`, `onboarding/adapter`, `onboarding/first-task`, `onboarding/resume` | +| `access` | [Login, invitations, and access](access.md) | `access/login`, `access/invitations`, `access/membership`, `access/resources`, `access/cli-auth` | +| `companies` | [Companies and portability](companies.md) | `companies/selection`, `companies/identity`, `companies/decision-models`, `companies/prompt-injection-prevention`, `companies/fast-responses`, `companies/agent-observability`, `companies/archive`, `companies/portability` | + +### Tasks and conversations + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `tasks` | [Task creation and lifecycle](tasks.md) | `tasks/create`, `tasks/organize`, `tasks/properties`, `tasks/discussion`, `tasks/completion` | +| `task-coordination` | [Delegation, dependencies, and signoff](task-coordination.md) | `task-coordination/delegation`, `task-coordination/dependencies`, `task-coordination/signoff`, `task-coordination/tree-control` | +| `inbox-search` | [Inbox, decisions, and search](inbox-search.md) | `inbox-search/views`, `inbox-search/triage`, `inbox-search/decisions`, `inbox-search/search`, `inbox-search/toasts` | +| `agent-chat` | [Agent conversations and project handoff](agent-chat.md) | `agent-chat/discovery`, `agent-chat/history`, `agent-chat/handoff`, `agent-chat/conference-room` | +| `questions-and-approvals` | [Questions and approvals](questions-and-approvals.md) | `questions-and-approvals/questions`, `questions-and-approvals/dismiss-and-reopen`, `questions-and-approvals/confirmations`, `questions-and-approvals/plan-review`, `questions-and-approvals/audience`, `questions-and-approvals/governance`, `questions-and-approvals/tool-review`, `questions-and-approvals/continuation` | +| `steering` | [Steering and queued messages](steering.md) | `steering/queue`, `steering/edit-order-discard`, `steering/steer`, `steering/interrupt`, `steering/stop-and-pause`, `steering/drafts`, `steering/approval-queue` | +| `documents-artifacts` | [Documents, attachments, and work products](documents-artifacts.md) | `documents-artifacts/documents`, `documents-artifacts/annotations`, `documents-artifacts/attachments`, `documents-artifacts/work-products`, `documents-artifacts/library` | + +### Agents and reusable capabilities + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `agents` | [Hiring, configuration, and organization](agents.md) | `agents/hire`, `agents/grok-bot`, `agents/instructions`, `agents/organization`, `agents/primary-agent`, `agents/lifecycle`, `agents/built-in` | +| `runs-adapters` | [Runs, harnesses, and model accounts](runs-adapters.md) | `runs-adapters/availability`, `runs-adapters/validation`, `runs-adapters/runs`, `runs-adapters/session` | +| `skills` | [Skills and Skill Studio](skills.md) | `skills/discovery`, `skills/authoring`, `skills/versions`, `skills/policy`, `skills/testing` | +| `teams` | [Team packages and installation](teams.md) | `teams/discovery`, `teams/preview`, `teams/install`, `teams/configuration` | + +### Projects and execution + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `projects` | [Projects and repositories](projects.md) | `projects/lifecycle`, `projects/task-context`, `projects/repositories`, `projects/defaults` | +| `goals` | [Goals and work alignment](goals.md) | `goals/hierarchy`, `goals/alignment`, `goals/navigation` | +| `workspaces` | [Workspaces, services, and files](workspaces.md) | `workspaces/binding`, `workspaces/provisioning`, `workspaces/services`, `workspaces/files-git`, `workspaces/closure` | +| `execution-environments` | [Execution environments](execution-environments.md) | `execution-environments/configuration`, `execution-environments/capabilities`, `execution-environments/probe`, `execution-environments/assignment`, `execution-environments/images` | +| `recovery` | [Recovery](recovery.md) | `recovery/diagnosis`, `recovery/bounded-continuation`, `recovery/source-action`, `recovery/exhaustion`, `recovery/workspace`, `recovery/unknown-outcome`, `recovery/user-continuation`, `recovery/reconnect` | + +### Apps, channels, and extensions + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `connection-setup` | [Connection setup](connection-setup.md) | `connection-setup/catalog`, `connection-setup/identity-and-access`, `connection-setup/credentials`, `connection-setup/handoff`, `connection-setup/draft-recovery`, `connection-setup/task-request`, `connection-setup/channel-setup`, `connection-setup/failure` | +| `app-permissions` | [App access and action permissions](app-permissions.md) | `app-permissions/agent-access`, `app-permissions/action-policy`, `app-permissions/catalog-change`, `app-permissions/test-action`, `app-permissions/account-maintenance` | +| `chat-channels` | [External chat and email](chat-channels.md) | `chat-channels/providers`, `chat-channels/identity`, `chat-channels/conversation`, `chat-channels/attachments`, `chat-channels/lifecycle` | +| `gateways-profiles` | [Tool gateways and access profiles](gateways-profiles.md) | `gateways-profiles/gateway`, `gateways-profiles/profiles`, `gateways-profiles/client-connect`, `gateways-profiles/tokens`, `gateways-profiles/activity` | +| `secrets` | [Secrets and proposals](secrets.md) | `secrets/company-secrets`, `secrets/user-secrets`, `secrets/proposals`, `secrets/vault-import`, `secrets/runtime-delivery` | +| `plugins` | [Plugins](plugins.md) | `plugins/installation`, `plugins/configuration`, `plugins/contributions`, `plugins/lifecycle` | + +### Automation and structured work + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `routines` | [Routines, schedules, and triggers](routines.md) | `routines/definition`, `routines/triggers`, `routines/run-now`, `routines/history`, `routines/management` | +| `cases` | [Cases](cases.md) | `cases/browse`, `cases/structure`, `cases/history`, `cases/task-links` | +| `status-cards` | [Status cards](status-cards.md) | `status-cards/authoring`, `status-cards/generation`, `status-cards/inspection`, `status-cards/archive` | + +### Oversight and operation + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `budgets-costs` | [Costs and budgets](budgets-costs.md) | `budgets-costs/cost-reporting`, `budgets-costs/budgets`, `budgets-costs/incidents`, `budgets-costs/resolution` | +| `activity` | [Dashboards and audit trails](activity.md) | `activity/overview`, `activity/activity`, `activity/runs`, `activity/routine-audit`, `activity/timeline`, `activity/agent-commentary` | +| `navigation-preferences` | [Navigation, profile, and announcements](navigation-preferences.md) | `navigation-preferences/navigation`, `navigation-preferences/preferences`, `navigation-preferences/profile`, `navigation-preferences/announcements`, `navigation-preferences/fallbacks` | +| `instance-operations` | [Instance operations](instance-operations.md) | `instance-operations/install-update`, `instance-operations/server-service`, `instance-operations/configuration`, `instance-operations/diagnostics`, `instance-operations/backup` | +| `cli-operations` | [CLI/API and local worktrees](cli-operations.md) | `cli-operations/context`, `cli-operations/domain-commands`, `cli-operations/outputs`, `cli-operations/run-controls`, `cli-operations/worktree-instances` | + +### Contributor surfaces + +| Feature ID | Recipe | Capability IDs | +| --- | --- | --- | +| `developer-labs` | [Developer previews and diagnostic labs](developer-labs.md) | `developer-labs/design`, `developer-labs/interaction-labs`, `developer-labs/performance`, `developer-labs/route-gates` | + Open the [published Storybook guide](https://d1p6rlowie26tp.cloudfront.net/storybook/branches/master/?path=/story/overview-storybook-guide--coverage-guide) for the assembled feature and capability index. The Markdown recipes in this directory are the authored source. Each has a same-named agent-access companion. Run `node scripts/storybook-catalog.mjs` to generate local navigation in `maps/generated/feature-map.md`, `maps/generated/agent-access-map.md`, and the -Storybook guide. A new recipe is discovered automatically; do not register it in -this README or maintain counts here. +Storybook guide. Recipes are discovered automatically from their navigation +metadata; generation does not depend on this high-level index. ## Before driving a journey @@ -53,10 +152,12 @@ launcher, credentials, scheduled job, or second test framework. ## Evidence contract Report each entry point as **passed**, **failed**, **blocked** (with its missing -prerequisite), or **not run**. Include the feature filename and entry-point ID, -commit/environment, user action, expected and observed result, command/exit code, -and evidence links. Screenshots or traces should show both the action and the -discriminating result. Include task/run/request IDs when relevant, without secrets. +prerequisite), or **not run**. Include the feature ID, full capability IDs and +entry-point ID (for example, `onboarding/company` through `web-wizard`), plus the +recipe link, commit/environment, user action, expected and observed result, +command/exit code, and evidence links. Screenshots or traces should show both the +action and the discriminating result. Include task/run/request IDs when relevant, +without secrets. A fix is verified across its affected surfaces only when each has evidence or an explicit reason it does not apply. Shared code alone does not prove parity. @@ -96,7 +197,8 @@ navigation: {"section":"Tasks and conversations","sectionOrder":20,"order":10} The H1 supplies the feature title, and the first paragraph supplies its summary. Orders are local to the section; leave gaps for additions. Equal orders use the stable filename as a tie-breaker. Keep a section's name/order consistent across -its recipes. A new feature or capability needs only its recipe and companion. +its recipes. Discovery uses the recipe and companion; keep the readable ID index +above aligned when features or capability IDs change. Optional `### Storybook verification` guidance lives inside the recipe's Gotchas section. Each level-four heading contains a backtick-quoted capability key and @@ -107,7 +209,8 @@ The generated gap report combines this guidance with current story associations. After frontmatter, each recipe starts with an H1 and a user-visible description, then exactly: -1. **Sub-features** — stable backticked IDs and observable behavior/states. +1. **Sub-features** — stable backticked local keys, full capability IDs, and observable behavior/states, + such as ``- `company`: `onboarding/company` — create a company``. 2. **How to get to it (user POV)** — one H3 backticked entry-point ID per surface. 3. **Driving it with ** — starts with `Preconditions:`; repeat each entry-point H3, with `Automated:` and `Manual:` paragraphs. Name test scope and gaps honestly. diff --git a/maps/feature-map/access.md b/maps/feature-map/access.md index 406adb138f8..58abc8ddd60 100644 --- a/maps/feature-map/access.md +++ b/maps/feature-map/access.md @@ -6,17 +6,19 @@ navigation: {"section":"Getting started and access","sectionOrder":10,"order":20 People and agents enter the correct instance and company with the permissions granted to their identity. Login, membership, resource access, and CLI authorization have separate controls. +Feature ID: `access`. + Implementation: [auth page](../../ui/src/pages/Auth.tsx), [company members](../../ui/src/pages/CompanyAccess.tsx), [invitation](../../ui/src/pages/InviteLanding.tsx). Agent access: [companion](../agent-access-map/access.md). ## Sub-features -- `login`: sign in or claim the board in the configured deployment mode. -- `invitations`: join through a valid invite and handle expired or already-used links. -- `membership`: review join requests and manage company/instance membership and permissions. -- `resources`: respect company and resource boundaries on deep links and mutations. -- `cli-auth`: authorize a CLI session and revoke or replace credentials. +- `login`: `access/login` — sign in or claim the board in the configured deployment mode. +- `invitations`: `access/invitations` — join through a valid invite and handle expired or already-used links. +- `membership`: `access/membership` — review join requests and manage company/instance membership and permissions. +- `resources`: `access/resources` — respect company and resource boundaries on deep links and mutations. +- `cli-auth`: `access/cli-auth` — authorize a CLI session and revoke or replace credentials. ## How to get to it (user POV) @@ -71,6 +73,8 @@ logout alone does not establish that server revocation succeeded. #### `login` +Capability ID: `access/login`. + Scope: ui Storybook: Sign-in form, pending and invalid credentials, deployment-mode claim gate, expired claim. Production: Authenticate and reload company deep link; sign out and confirm session enforcement; reject invalid bootstrap claim. @@ -78,6 +82,8 @@ Sources: Source: [Auth.tsx](../../ui/src/pages/Auth.tsx), [BoardClaim.tsx](../.. #### `membership` +Capability ID: `access/membership`. + Scope: ui Storybook: Member and join-request lists; editable versus read-only roles; pending change, rejected request, revoked invite. Production: Persist role/membership changes; enforce actual actor authority, invite replay/expiry and cross-company denial. @@ -85,6 +91,8 @@ Sources: Source: [CompanyAccess.tsx](../../ui/src/pages/CompanyAccess.tsx), [aut #### `cli-auth` +Capability ID: `access/cli-auth`. + Scope: ui Storybook: CLI authorization approval, pending, expired/denied and already-authorized states. Production: Authorize intended CLI identity/context, make scoped request, revoke current server token and retry same bearer; logout alone is insufficient. diff --git a/maps/feature-map/activity.md b/maps/feature-map/activity.md index 1833177cc14..7e746d2fd51 100644 --- a/maps/feature-map/activity.md +++ b/maps/feature-map/activity.md @@ -6,18 +6,20 @@ navigation: {"section":"Oversight and operation","sectionOrder":70,"order":20} People inspect company health, recent activity, run history, and routine activity, then follow evidence back to the task or agent responsible. +Feature ID: `activity`. + Implementation: [dashboard](../../ui/src/pages/Dashboard.tsx), [live dashboard](../../ui/src/pages/DashboardLive.tsx), [audit hub](../../ui/src/pages/audit/AuditHub.tsx). Agent access: [companion](../agent-access-map/activity.md). ## Sub-features -- `overview`: inspect the company dashboard and live-work summary. -- `activity`: filter and page through recorded actor/resource events. -- `runs`: find executions and follow their task/agent context. -- `routine-audit`: inspect routine execution activity separately from its definition. -- `timeline`: use the available timeline view to understand work over time. -- `agent-commentary`: browse attributed agent suggestions and complaints. +- `overview`: `activity/overview` — inspect the company dashboard and live-work summary. +- `activity`: `activity/activity` — filter and page through recorded actor/resource events. +- `runs`: `activity/runs` — find executions and follow their task/agent context. +- `routine-audit`: `activity/routine-audit` — inspect routine execution activity separately from its definition. +- `timeline`: `activity/timeline` — use the available timeline view to understand work over time. +- `agent-commentary`: `activity/agent-commentary` — browse attributed agent suggestions and complaints. ## How to get to it (user POV) @@ -80,6 +82,8 @@ not prove live database filtering or authorization. #### `runs` +Capability ID: `activity/runs`. + Scope: ui Storybook: Mount AuditRuns selected status/agent/routine, linked task/agent, empty/loading/error/retry and 200-entry limit. Do not invent pagination. Production: GET /companies/{id}/heartbeat-runs and /routines/{id}/runs require company/read/privacy checks; real browser follows context links and confirms the referenced execution. diff --git a/maps/feature-map/agent-chat.md b/maps/feature-map/agent-chat.md index 39798dfaaea..2a6e367a1e5 100644 --- a/maps/feature-map/agent-chat.md +++ b/maps/feature-map/agent-chat.md @@ -6,16 +6,18 @@ navigation: {"section":"Tasks and conversations","sectionOrder":20,"order":40} A person can hold a persistent conversation with an agent, return to its history, and hand useful work into a project or task. The gated conference-room chat is a separate conversation surface. +Feature ID: `agent-chat`. + Implementation: [agent chat](../../ui/src/pages/AgentChat.tsx), [chat landing](../../ui/src/pages/AgentChats.tsx), [conference room](../../ui/src/pages/BoardChat.tsx). Agent access: [companion](../agent-access-map/agent-chat.md). ## Sub-features -- `discovery`: find an agent and reopen an accessible recent conversation. -- `history`: send messages, inspect replies/files, and return to the same conversation. -- `handoff`: create or identify a project/task from chat and follow the resulting work. -- `conference-room`: use the separately gated board chat without assuming parity with agent chat. +- `discovery`: `agent-chat/discovery` — find an agent and reopen an accessible recent conversation. +- `history`: `agent-chat/history` — send messages, inspect replies/files, and return to the same conversation. +- `handoff`: `agent-chat/handoff` — create or identify a project/task from chat and follow the resulting work. +- `conference-room`: `agent-chat/conference-room` — use the separately gated board chat without assuming parity with agent chat. ## How to get to it (user POV) @@ -81,6 +83,8 @@ Manual: Check disabled access first, enable in the disposable instance, then sen #### `conference-room` +Capability ID: `agent-chat/conference-room`. + Scope: ui Storybook: Conference-room flag disabled, empty/history/reply, busy and explicit failure states. Production: Exercise separate BoardChat route gate, local-trusted deployment and authenticated Claude CLI; send/reload real conversation with responding agent attribution. diff --git a/maps/feature-map/agents.md b/maps/feature-map/agents.md index 76088a25141..52df9e0250d 100644 --- a/maps/feature-map/agents.md +++ b/maps/feature-map/agents.md @@ -6,20 +6,22 @@ navigation: {"section":"Agents and reusable capabilities","sectionOrder":30,"ord Operators hire agents, configure their identity and instructions, assign reporting relationships, and manage their lifecycle. Built-in agents have their own setup and lifecycle constraints. +Feature ID: `agents`. + Implementation: [hiring](../../ui/src/pages/NewAgent.tsx), [configuration](../../ui/src/components/AgentConfigForm.tsx), [organization](../../ui/src/pages/OrgChart.tsx). Agent access: [companion](../agent-access-map/agents.md). ## Sub-features -- `hire`: choose identity, harness, model, and required account settings; edit +- `hire`: `agents/hire` — choose identity, harness, model, and required account settings; edit reporting relationships through the agent configuration afterward. -- `grok-bot`: experimental existing-Bot agent setup through remote OAuth, routine credentials, and an authenticated two-way challenge; current contact, stop and explicit recovery. -- `instructions`: edit agent configuration and instruction files with durable revisions. -- `organization`: inspect and change reporting relationships through supported controls. -- `primary-agent`: choose a personal primary agent for the company, confirm replacement, and inspect its roster/sidebar and task/chat defaults. -- `lifecycle`: pause/resume or retire an agent while preserving history. -- `built-in`: configure required agents without treating them as ordinary removable hires. +- `grok-bot`: `agents/grok-bot` — experimental existing-Bot agent setup through remote OAuth, routine credentials, and an authenticated two-way challenge; current contact, stop and explicit recovery. +- `instructions`: `agents/instructions` — edit agent configuration and instruction files with durable revisions. +- `organization`: `agents/organization` — inspect and change reporting relationships through supported controls. +- `primary-agent`: `agents/primary-agent` — choose a personal primary agent for the company, confirm replacement, and inspect its roster/sidebar and task/chat defaults. +- `lifecycle`: `agents/lifecycle` — pause/resume or retire an agent while preserving history. +- `built-in`: `agents/built-in` — configure required agents without treating them as ordinary removable hires. ## How to get to it (user POV) diff --git a/maps/feature-map/app-permissions.md b/maps/feature-map/app-permissions.md index 8352134b25f..f68a93a3fe2 100644 --- a/maps/feature-map/app-permissions.md +++ b/maps/feature-map/app-permissions.md @@ -6,17 +6,19 @@ navigation: {"section":"Apps, channels, and extensions","sectionOrder":50,"order After connecting an app, an operator decides which agents may use it and whether each action is off, requires approval, or is allowed. Activity and action tests help verify the resulting access. +Feature ID: `app-permissions`. + Implementation: [app detail](../../ui/src/pages/apps/AppDetail.tsx), [permissions](../../ui/src/pages/apps/app-detail/PermissionsPanel.tsx), [activity](../../ui/src/pages/apps/app-detail/ActivityPanel.tsx). Agent access: [companion](../agent-access-map/app-permissions.md). ## Sub-features -- `agent-access`: grant the connection to all or selected eligible agents. -- `action-policy`: set off/ask/allowed independently for available actions. -- `catalog-change`: review newly discovered/quarantined actions before enabling them. -- `test-action`: choose an actor and inputs and inspect a real action result. -- `account-maintenance`: inspect accounts, reconnect/revoke, and review connection activity. +- `agent-access`: `app-permissions/agent-access` — grant the connection to all or selected eligible agents. +- `action-policy`: `app-permissions/action-policy` — set off/ask/allowed independently for available actions. +- `catalog-change`: `app-permissions/catalog-change` — review newly discovered/quarantined actions before enabling them. +- `test-action`: `app-permissions/test-action` — choose an actor and inputs and inspect a real action result. +- `account-maintenance`: `app-permissions/account-maintenance` — inspect accounts, reconnect/revoke, and review connection activity. ## How to get to it (user POV) @@ -80,6 +82,8 @@ run-bound file transfers, and revocation with fixture provider responses. #### `catalog-change` +Capability ID: `app-permissions/catalog-change`. + Scope: ui Storybook: Mount PermissionsPanel/AppDetail with quarantined actions, selection/review, refresh pending, empty and failed discovery states. Existing auto-allowed NewToolsAllowed examples are not quarantine review. Production: Exercise catalog refresh and new-tool review with permitted/denied actors; unreviewed actions stay quarantined, prior Off/Ask choices survive refresh, and approved review persists. diff --git a/maps/feature-map/budgets-costs.md b/maps/feature-map/budgets-costs.md index ff6789fe8ab..2703cf5e6a0 100644 --- a/maps/feature-map/budgets-costs.md +++ b/maps/feature-map/budgets-costs.md @@ -6,6 +6,8 @@ navigation: {"section":"Oversight and operation","sectionOrder":70,"order":10} Operators inspect recorded spend and configure budget controls for the company, projects, and agents. Hard stops pause or prevent eligible work until the governing incident is resolved. +Feature ID: `budgets-costs`. + Implementation: [costs and budget host](../../ui/src/pages/Costs.tsx), [audit hub](../../ui/src/pages/audit/AuditHub.tsx). Agent access: [companion](../agent-access-map/budgets-costs.md). @@ -17,10 +19,10 @@ that hold. See [accounting behavior](../../doc/prompt-injection-prevention.md). ## Sub-features -- `cost-reporting`: inspect spend by the offered time range and resource dimensions. -- `budgets`: configure supported company/project/agent limits and inspect usage. -- `incidents`: distinguish warnings, hard stops, and manual pauses. -- `resolution`: raise or resolve a budget incident through authorized controls and verify resumption. +- `cost-reporting`: `budgets-costs/cost-reporting` — inspect spend by the offered time range and resource dimensions. +- `budgets`: `budgets-costs/budgets` — configure supported company/project/agent limits and inspect usage. +- `incidents`: `budgets-costs/incidents` — distinguish warnings, hard stops, and manual pauses. +- `resolution`: `budgets-costs/resolution` — raise or resolve a budget incident through authorized controls and verify resumption. ## How to get to it (user POV) @@ -61,6 +63,8 @@ Manual: Create a small fixture budget, cross its threshold with synthetic record #### `resolution` +Capability ID: `budgets-costs/resolution`. + Scope: ui Storybook: Mount BudgetIncidentCard with entered raised limit, invalid limit, keep-paused, applying, authorized/blocked and error states wired through actual host. Existing matrix handlers are no-ops. Production: POST /companies/{id}/budget-incidents/{id}/resolve must authorize scope-specific raise, persist resolution and resume eligible work while retaining overlapping budget/manual holds. diff --git a/maps/feature-map/cases.md b/maps/feature-map/cases.md index 1b974959dd3..c49c8e6179c 100644 --- a/maps/feature-map/cases.md +++ b/maps/feature-map/cases.md @@ -6,16 +6,18 @@ navigation: {"section":"Automation and structured work","sectionOrder":60,"order The cases experiment exposes structured records with types, fields, parent/child relationships, activity, revisions, and related task work. +Feature ID: `cases`. + Implementation: [case list](../../ui/src/pages/Cases.tsx), [case detail](../../ui/src/pages/CaseDetail.tsx). Agent access: [companion](../agent-access-map/cases.md). ## Sub-features -- `browse`: search, filter, sort, group, and navigate case records. -- `structure`: inspect fields and parent/child relationships without losing matching descendants. -- `history`: inspect revisions and activity for a record. -- `task-links`: follow work associated with a case in both directions. +- `browse`: `cases/browse` — search, filter, sort, group, and navigate case records. +- `structure`: `cases/structure` — inspect fields and parent/child relationships without losing matching descendants. +- `history`: `cases/history` — inspect revisions and activity for a record. +- `task-links`: `cases/task-links` — follow work associated with a case in both directions. ## How to get to it (user POV) @@ -57,6 +59,8 @@ Verify cross-company and invalid changes fail clearly. #### `browse` +Capability ID: `cases/browse`. + Scope: ui Storybook: Mount Cases search/filter/sort/group/tree, matched-child parent context, persisted view choices, keyboard navigation and empty/loading/error. Production: GET /companies/{id}/cases scope/filter behavior is production evidence; rendered fixtures establish presentation only. Mutation/permission scenarios need real API checks separately. @@ -64,6 +68,8 @@ Sources: Source: [Cases.tsx](../../ui/src/pages/Cases.tsx), [cases.ts](../../ser #### `structure` +Capability ID: `cases/structure`. + Scope: ui Storybook: Mount CaseDetail and CaseFieldsPanel with arbitrary JSON fields and parent/children, matching descendants and unavailable child. Do not invent a general field editor or typed field validation. Production: GET /cases/{id} must return permitted company records and correct relationships; changes/persistence require route tests separately. @@ -71,6 +77,8 @@ Sources: Source: [CaseDetail.tsx](../../ui/src/pages/CaseDetail.tsx), [CaseField #### `history` +Capability ID: `cases/history`. + Scope: ui Storybook: Mount CaseDetail activity and document revisions as distinct views, empty/loading/errors, attribution and source links. Production: GET /cases/{id}/events and /cases/{id}/documents/{key}/revisions require company/access filtering; a fixture list does not establish durable revision creation or restoration. @@ -78,6 +86,8 @@ Sources: Source: [CaseDetail.tsx](../../ui/src/pages/CaseDetail.tsx), [cases.ts] #### `task-links` +Capability ID: `cases/task-links`. + Scope: ui Storybook: Mount CaseDetail and IssueCasesPanel related-task/case links in both directions, missing links and unavailable targets. Production: GET /issues/{id}/cases and GET /cases/{id} must enforce permitted task/case relationships; production browser cold links verify destination and company context. diff --git a/maps/feature-map/chat-channels.md b/maps/feature-map/chat-channels.md index fe41e668792..e02c5ecff20 100644 --- a/maps/feature-map/chat-channels.md +++ b/maps/feature-map/chat-channels.md @@ -6,17 +6,19 @@ navigation: {"section":"Apps, channels, and extensions","sectionOrder":50,"order People can talk to an assigned agent through configured external channels, bind their identity, exchange files, and inspect delivery state. Each provider has a different identity, threading, and attachment contract. +Feature ID: `chat-channels`. + Implementation: [endpoint setup](../../ui/src/pages/apps/chat/ChatEndpointSetup.tsx), [endpoint detail](../../ui/src/pages/apps/chat/ChatEndpointDetail.tsx), [email setup](../../ui/src/pages/apps/chat/EmailEndpointSetup.tsx). Agent access: [companion](../agent-access-map/chat-channels.md). ## Sub-features -- `providers`: configure the available Slack, Discord, Microsoft Teams, Telegram, GitHub, AgentMail, and experimental iMessage Photon and Speko paths; availability still depends on gates and provider support. -- `identity`: link the external sender to the intended authorized Paperclip identity. -- `conversation`: route inbound messages to the selected agent and send replies to the correct thread. -- `attachments`: transfer supported files with inspectable delivery and failure states. -- `lifecycle`: inspect endpoint activity, repair auth, and disable delivery when required. +- `providers`: `chat-channels/providers` — configure the available Slack, Discord, Microsoft Teams, Telegram, GitHub, AgentMail, and experimental iMessage Photon and Speko paths; availability still depends on gates and provider support. +- `identity`: `chat-channels/identity` — link the external sender to the intended authorized Paperclip identity. +- `conversation`: `chat-channels/conversation` — route inbound messages to the selected agent and send replies to the correct thread. +- `attachments`: `chat-channels/attachments` — transfer supported files with inspectable delivery and failure states. +- `lifecycle`: `chat-channels/lifecycle` — inspect endpoint activity, repair auth, and disable delivery when required. ## How to get to it (user POV) @@ -174,6 +176,8 @@ or telephone playback. Those provider outcomes remain explicit release gates. #### `attachments` +Capability ID: `chat-channels/attachments`. + Scope: ui Storybook: Mount TaskChatBubble attachments and ChatEndpointDetail provider-specific consent/upload/delivery failure and unknown-outcome states. Local email attachment dialog remains a prototype. Production: Transfer a disposable supported file through each affected provider; verify recipient delivery, read scope, duplicate/replay handling and failure/unknown state without treating notification as file-upload proof. diff --git a/maps/feature-map/cli-operations.md b/maps/feature-map/cli-operations.md index b8ad053c22c..d7b19d02266 100644 --- a/maps/feature-map/cli-operations.md +++ b/maps/feature-map/cli-operations.md @@ -6,17 +6,19 @@ navigation: {"section":"Oversight and operation","sectionOrder":70,"order":50} Operators and agents can work through explicit CLI/API context, manage domain resources, inspect runs, and create isolated local worktree instances for development. +Feature ID: `cli-operations`. + Implementation: [command registry](../../cli/src/index.ts), [client context](../../cli/src/commands/client/context.ts), [worktree commands](../../cli/src/commands/worktree.ts). Agent access: [companion](../agent-access-map/cli-operations.md). ## Sub-features -- `context`: choose instance/API base, profile, identity, and company explicitly. -- `domain-commands`: read/write tasks, agents, projects, goals, approvals, routines, and other registered resources. -- `outputs`: work with documents/assets/skills and inspect machine-readable results. -- `run-controls`: invoke/inspect supported runs and observe actual outcomes. -- `worktree-instances`: initialize, seed, diagnose, and clean up only an owned development instance. +- `context`: `cli-operations/context` — choose instance/API base, profile, identity, and company explicitly. +- `domain-commands`: `cli-operations/domain-commands` — read/write tasks, agents, projects, goals, approvals, routines, and other registered resources. +- `outputs`: `cli-operations/outputs` — work with documents/assets/skills and inspect machine-readable results. +- `run-controls`: `cli-operations/run-controls` — invoke/inspect supported runs and observe actual outcomes. +- `worktree-instances`: `cli-operations/worktree-instances` — initialize, seed, diagnose, and clean up only an owned development instance. ## How to get to it (user POV) @@ -69,6 +71,8 @@ Manual: Initialize an owned disposable worktree instance, inspect its printed pa #### `context` +Capability ID: `cli-operations/context`. + Scope: cli Storybook: No authored story required for CLI profile/context selection. Production: Verify selected API origin, identity and company, JSON output and invalid-token/wrong-company failures. A persona label is not authentication. @@ -76,6 +80,8 @@ Sources: Source: [context.ts](../../cli/src/commands/client/context.ts). Tests: #### `domain-commands` +Capability ID: `cli-operations/domain-commands`. + Scope: cli Storybook: No authored story required for command parsing and domain API execution; corresponding product UI keeps its own story needs. Production: Discover registered help, use a disposable company, assert persisted mutations and denied operations with the actual actor. Command parity is not every endpoint passing live. @@ -83,6 +89,8 @@ Sources: Source: [index.ts](../../cli/src/index.ts), [issue.ts](../../cli/src/co #### `outputs` +Capability ID: `cli-operations/outputs`. + Scope: cli Storybook: No authored story required for CLI document/asset/skill IO or machine-readable output. Production: Assert payload/schema, exit code, written contents, authorization and file integrity. Open the resulting document/asset in the product for cross-surface acceptance. @@ -90,6 +98,8 @@ Sources: Source: [issue.ts](../../cli/src/commands/client/issue.ts), [asset.ts]( #### `run-controls` +Capability ID: `cli-operations/run-controls`. + Scope: cli Storybook: No authored story required for invoke/list/get/cancel/events/log command execution. Production: Assert the real run ID, event/log output and resulting state, eligible actor and cancellation denial. Printed success does not prove provider completion. @@ -97,6 +107,8 @@ Sources: Source: [run.ts](../../cli/src/commands/client/run.ts), [heartbeat-run. #### `worktree-instances` +Capability ID: `cli-operations/worktree-instances`. + Scope: cli Storybook: No authored story required for worktree initialize/seed/repair/cleanup commands. Production: Use only an owned isolated checkout/instance; verify paths, ports, health, login and seed provenance, then cleanup ownership. Capture evidence before teardown. diff --git a/maps/feature-map/companies.md b/maps/feature-map/companies.md index 7fa388626f4..566a49319b0 100644 --- a/maps/feature-map/companies.md +++ b/maps/feature-map/companies.md @@ -6,20 +6,22 @@ navigation: {"section":"Getting started and access","sectionOrder":10,"order":30 An operator can switch between companies, change their identity and settings, archive them, and preview an import or export. Each company remains a separate scope for work and agents. +Feature ID: `companies`. + Implementation: [companies](../../ui/src/pages/Companies.tsx), [settings](../../ui/src/pages/CompanySettings.tsx), [import](../../ui/src/pages/CompanyImport.tsx), [export](../../ui/src/pages/CompanyExport.tsx). Agent access: [companion](../agent-access-map/companies.md). ## Sub-features -- `selection`: create/select a company and keep navigation in its scope. -- `identity`: update company identity and configured settings. -- `decision-models`: configure and test the company's decision model, then inspect invocation history and recorded usage. -- `prompt-injection-prevention`: opt into a shared OpenRouter classifier for existing tool-result guards, test fixed samples, and recover unavailable selections. -- `fast-responses`: configure and test the experimental fast-response service, then inspect acknowledgement history, failures, and recorded usage. -- `agent-observability`: configure one company OTLP destination for Codex and Claude Code, test synthetic delivery, and disable export. -- `archive`: archive and restore through the available controls without confusing archival with deletion. -- `portability`: preview a company package and inspect imported agents, projects, skills, and conflicts. +- `selection`: `companies/selection` — create/select a company and keep navigation in its scope. +- `identity`: `companies/identity` — update company identity and configured settings. +- `decision-models`: `companies/decision-models` — configure and test the company's decision model, then inspect invocation history and recorded usage. +- `prompt-injection-prevention`: `companies/prompt-injection-prevention` — opt into a shared OpenRouter classifier for existing tool-result guards, test fixed samples, and recover unavailable selections. +- `fast-responses`: `companies/fast-responses` — configure and test the experimental fast-response service, then inspect acknowledgement history, failures, and recorded usage. +- `agent-observability`: `companies/agent-observability` — configure one company OTLP destination for Codex and Claude Code, test synthetic delivery, and disable export. +- `archive`: `companies/archive` — archive and restore through the available controls without confusing archival with deletion. +- `portability`: `companies/portability` — preview a company package and inspect imported agents, projects, skills, and conflicts. ## How to get to it (user POV) @@ -88,6 +90,8 @@ Use an owned provider fixture for failure states; record any actual provider usa #### `selection` +Capability ID: `companies/selection`. + Scope: ui Storybook: Company list/create/switcher; empty, loading, error, unavailable company and switched navigation. Production: Switch and reload between companies; verify tasks/agents/cache/routes remain scoped and unauthorized company requests fail. @@ -95,6 +99,8 @@ Sources: Source: [Companies.tsx](../../ui/src/pages/Companies.tsx), [CompanySwit #### `archive` +Capability ID: `companies/archive`. + Scope: ui Storybook: Archive confirmation, pending/error and departure navigation; archived list entry and Unarchive action. Production: Archive eligible agents/runs without deleting history; restoration handles archival-specific pause and navigates to correct company. @@ -102,6 +108,8 @@ Sources: Source: [CompanySettings.tsx](../../ui/src/pages/CompanySettings.tsx), #### `portability` +Capability ID: `companies/portability`. + Scope: ui Storybook: Import/export preview, conflict choice, warnings, async progress/failure/success and restricted managed deployment. Production: Apply real small package to disposable target; inspect counts/references/conflicts, source immutability and credential exclusions; imported task requires separate runnable-account proof. @@ -128,6 +136,8 @@ and `agent-observability-03-journey` mount production subjects with simulated AP ### `prompt-injection-prevention` +Capability ID: `companies/prompt-injection-prevention`. + Scope: ui, api, runtime Storybook: Production PromptInjectionPreventionSettingsView states under Companies and portability → Prompt Injection Prevention. Provider data is simulated. diff --git a/maps/feature-map/connection-setup.md b/maps/feature-map/connection-setup.md index e52ab89ff84..2e0e1960afb 100644 --- a/maps/feature-map/connection-setup.md +++ b/maps/feature-map/connection-setup.md @@ -9,6 +9,8 @@ setup from either Apps or a task that needs access. A saved draft, a completed provider login, a usable connection, and a resumed task are separate checkpoints. Chat channels additionally require an endpoint and linked sender identity. +Feature ID: `connection-setup`. + Agent access: [companion](../agent-access-map/connection-setup.md). Prompt Injection Prevention reuses shared OpenRouter API-key setup directly from @@ -18,21 +20,21 @@ does not activate the service. See [service configuration](../../doc/prompt-inje ## Sub-features -- `catalog`: find a provider, inspect its available methods, and open setup; +- `catalog`: `connection-setup/catalog` — find a provider, inspect its available methods, and open setup; unavailable methods explain their prerequisite rather than silently switching. -- `identity-and-access`: select personal/shared identity and eligible agents; +- `identity-and-access`: `connection-setup/identity-and-access` — select personal/shared identity and eligible agents; an empty explicit selection and company-wide access must not be confused. -- `credentials`: provider sign-in, key, or generic MCP URL follows its supported +- `credentials`: `connection-setup/credentials` — provider sign-in, key, or generic MCP URL follows its supported setup method; credentials are not retained in browser draft storage. -- `handoff`: provider popup/full-page callback returns to the correct setup +- `handoff`: `connection-setup/handoff` — provider popup/full-page callback returns to the correct setup host with the original task intent and identity choice intact. -- `draft-recovery`: cancel, Back, Save & exit, reload, Finish setup, and reconnect +- `draft-recovery`: `connection-setup/draft-recovery` — cancel, Back, Save & exit, reload, Finish setup, and reconnect preserve the exact draft rather than creating duplicate connections. -- `task-request`: only the addressed person resolves the requested connection; +- `task-request`: `connection-setup/task-request` — only the addressed person resolves the requested connection; usable access releases the pending task request through normal continuation. -- `channel-setup`: provider endpoint, represented agent, linked sender, and +- `channel-setup`: `connection-setup/channel-setup` — provider endpoint, represented agent, linked sender, and communication instructions are configured before an external message is used. -- `failure`: denied login, unreachable/private URL, expired credentials, and +- `failure`: `connection-setup/failure` — denied login, unreachable/private URL, expired credentials, and permission errors leave an actionable state rather than a false success. ## How to get to it (user POV) diff --git a/maps/feature-map/developer-labs.md b/maps/feature-map/developer-labs.md index 70f027621f9..93ff71d70af 100644 --- a/maps/feature-map/developer-labs.md +++ b/maps/feature-map/developer-labs.md @@ -6,16 +6,18 @@ navigation: {"section":"Contributor surfaces","sectionOrder":80,"order":10} Contributors can inspect design examples, interaction labs, and performance fixtures. These are development surfaces and do not count as production feature verification. +Feature ID: `developer-labs`. + Implementation: [route registration](../../ui/src/App.tsx), [design guide](../../ui/src/pages/DesignGuide.tsx), [long-thread fixture](../../ui/src/pages/IssueChatLongThreadPerf.tsx). Agent access: [companion](../agent-access-map/developer-labs.md). ## Sub-features -- `design`: inspect shared components and layout examples in the design guide or Storybook. -- `interaction-labs`: exercise synthetic bootstrap, task-chat, denial, and collaboration states. -- `performance`: measure the provided long-thread fixture with known data and environment. -- `route-gates`: distinguish dev-only, experimental, historical, and fallback surfaces. +- `design`: `developer-labs/design` — inspect shared components and layout examples in the design guide or Storybook. +- `interaction-labs`: `developer-labs/interaction-labs` — exercise synthetic bootstrap, task-chat, denial, and collaboration states. +- `performance`: `developer-labs/performance` — measure the provided long-thread fixture with known data and environment. +- `route-gates`: `developer-labs/route-gates` — distinguish dev-only, experimental, historical, and fallback surfaces. ## How to get to it (user POV) @@ -57,6 +59,8 @@ real-task behavior before extrapolating fixture measurements. #### `performance` +Capability ID: `developer-labs/performance`. + Scope: browser Storybook: A screenshot/story is optional context, not the required performance evidence. Production: Use existing browser performance harnesses. Record build/browser/data size, timing/trace and scrolling. Long-thread fixture has a disabled composer; task-chat HTML harness uses a plain textarea and simulated updates. @@ -64,6 +68,8 @@ Sources: Source: [IssueChatLongThreadPerf.tsx](../../ui/src/pages/IssueChatLongT #### `route-gates` +Capability ID: `developer-labs/route-gates`. + Scope: browser Storybook: No isolated story required to prove actual route registration, redirects or gates; isolated gated-control examples remain useful. Production: Drive real routes under their actual development, experimental, production and fallback settings. Do not assume every lab is dev-only: global long-thread/lab/design routes also exist in production registration. diff --git a/maps/feature-map/documents-artifacts.md b/maps/feature-map/documents-artifacts.md index 37be4f67dc4..4401e3090d9 100644 --- a/maps/feature-map/documents-artifacts.md +++ b/maps/feature-map/documents-artifacts.md @@ -6,17 +6,19 @@ navigation: {"section":"Tasks and conversations","sectionOrder":20,"order":70} People read and revise task documents, annotate specific content, open attached files, and inspect the outputs an agent hands back. The artifact library provides another route to the same work. +Feature ID: `documents-artifacts`. + Implementation: [task documents](../../ui/src/components/IssueDocumentsSection.tsx), [artifact library](../../ui/src/pages/Artifacts.tsx), [document panel](../../ui/src/components/task-side-panel/TaskDocumentPanel.tsx). Agent access: [companion](../agent-access-map/documents-artifacts.md). ## Sub-features -- `documents`: edit versioned task documents and inspect or restore revisions. -- `annotations`: attach feedback to document content and inspect resolution state. -- `attachments`: upload, preview, and download allowed files with company access checks. -- `work-products`: link deliverables to their source task, resource, and review context. -- `library`: search, filter, group, and open artifact stacks. +- `documents`: `documents-artifacts/documents` — edit versioned task documents and inspect or restore revisions. +- `annotations`: `documents-artifacts/annotations` — attach feedback to document content and inspect resolution state. +- `attachments`: `documents-artifacts/attachments` — upload, preview, and download allowed files with company access checks. +- `work-products`: `documents-artifacts/work-products` — link deliverables to their source task, resource, and review context. +- `library`: `documents-artifacts/library` — search, filter, group, and open artifact stacks. ## How to get to it (user POV) @@ -73,6 +75,8 @@ Manual: Find the task’s output through search and grouping, open its stack, pa #### `documents` +Capability ID: `documents-artifacts/documents`. + Scope: ui Storybook: Writable/read-only document, save pending/failure/conflict, revision history/historical preview and restore confirmation. Production: Persist edited body and reload; append-only restore creates new revision; reject stale writes and inaccessible company/task. diff --git a/maps/feature-map/execution-environments.md b/maps/feature-map/execution-environments.md index a4b2e7fbad9..61d0022cbe7 100644 --- a/maps/feature-map/execution-environments.md +++ b/maps/feature-map/execution-environments.md @@ -6,17 +6,19 @@ navigation: {"section":"Projects and execution","sectionOrder":40,"order":40} Operators configure where agents execute, probe readiness, select an environment for work, and inspect remote provisioning or custom-image state when the installed provider supports it. +Feature ID: `execution-environments`. + Implementation: [environment settings](../../ui/src/pages/CompanyEnvironments.tsx), [environment runtime](../../server/src/services/environment-runtime.ts). Agent access: [companion](../agent-access-map/execution-environments.md). ## Sub-features -- `configuration`: inspect local environments and configure available SSH/sandbox targets. -- `capabilities`: select only drivers/providers that advertise the required execution capability. -- `probe`: test reachability and runtime prerequisites in the actual target. -- `assignment`: bind the intended agent/project/workspace to its execution target. -- `images`: inspect supported sandbox custom-image preparation and terminal workflows. +- `configuration`: `execution-environments/configuration` — inspect local environments and configure available SSH/sandbox targets. +- `capabilities`: `execution-environments/capabilities` — select only drivers/providers that advertise the required execution capability. +- `probe`: `execution-environments/probe` — test reachability and runtime prerequisites in the actual target. +- `assignment`: `execution-environments/assignment` — bind the intended agent/project/workspace to its execution target. +- `images`: `execution-environments/images` — inspect supported sandbox custom-image preparation and terminal workflows. ## How to get to it (user POV) @@ -100,6 +102,8 @@ Manual: Run a bounded command in the intended target, inspect its output and wor #### `configuration` +Capability ID: `execution-environments/configuration`. + Scope: ui Storybook: Local/SSH/sandbox editors; unavailable providers, missing credentials, save pending/error and restricted operator. Production: Persist target configuration and enforce instance-admin/local-operator mutation boundary; target catalog is instance-scoped. @@ -107,6 +111,8 @@ Sources: Source: [CompanyEnvironments.tsx](../../ui/src/pages/CompanyEnvironment #### `capabilities` +Capability ID: `execution-environments/capabilities`. + Scope: ui Storybook: Supported versus unavailable driver/provider controls and interactive-setup/template-capture limitations. Production: Verify advertised driver/plugin capabilities match operations; unavailable provider cannot become working target; capability discovery must not allocate sandbox. @@ -114,6 +120,8 @@ Sources: Source: [CompanyEnvironments.tsx](../../ui/src/pages/CompanyEnvironment #### `probe` +Capability ID: `execution-environments/probe`. + Scope: ui Storybook: Remote Test pending, success, reachability/auth failure and platform qualification absent/invalidated notice. Production: Probe actual owned target; verify selected saved immutable config/image/company qualification plus lease cleanup; local API probe proves host/cwd only and has no UI Test button. @@ -121,6 +129,8 @@ Sources: Source: [CompanyEnvironments.tsx](../../ui/src/pages/CompanyEnvironment #### `images` +Capability ID: `execution-environments/images`. + Scope: ui Storybook: Custom-image setup/capture/progress, terminal connect/disconnect/failure, unsupported capability and active-image drift. Production: Execute owned provider setup/capture/probe/terminal transport with correct saved image identity, authority, cleanup and shutdown; terminal screenshot cannot prove operation. diff --git a/maps/feature-map/gateways-profiles.md b/maps/feature-map/gateways-profiles.md index 49569340552..078661b1fad 100644 --- a/maps/feature-map/gateways-profiles.md +++ b/maps/feature-map/gateways-profiles.md @@ -6,17 +6,19 @@ navigation: {"section":"Apps, channels, and extensions","sectionOrder":50,"order Administrators expose selected tools through gateways and reusable access profiles, connect clients, manage tokens, and inspect gateway activity. +Feature ID: `gateways-profiles`. + Implementation: [gateways](../../ui/src/pages/apps/gateways/GatewaysList.tsx), [gateway detail](../../ui/src/pages/apps/gateways/GatewayDetail.tsx), [profiles](../../ui/src/pages/tools/profiles/ProfileWizard.tsx). Agent access: [companion](../agent-access-map/gateways-profiles.md). ## Sub-features -- `gateway`: create/edit an endpoint backed by a tool access profile. -- `profiles`: define reusable tool access configuration and inspect draft/detail state. -- `client-connect`: copy the intended endpoint/configuration to an authorized test client. -- `tokens`: create/revoke client credentials and verify their scope. -- `activity`: inspect tool discovery/calls and explicit errors. +- `gateway`: `gateways-profiles/gateway` — create/edit an endpoint backed by a tool access profile. +- `profiles`: `gateways-profiles/profiles` — define reusable tool access configuration and inspect draft/detail state. +- `client-connect`: `gateways-profiles/client-connect` — copy the intended endpoint/configuration to an authorized test client. +- `tokens`: `gateways-profiles/tokens` — create/revoke client credentials and verify their scope. +- `activity`: `gateways-profiles/activity` — inspect tool discovery/calls and explicit errors. ## How to get to it (user POV) @@ -71,6 +73,8 @@ Manual: Create a bounded profile, choose its offered tools and options, save or #### `tokens` +Capability ID: `gateways-profiles/tokens`. + Scope: ui Storybook: Mount current TokensPanel with issue controls, once-only token reveal, expiry/actions, revocation confirmation and failures. Old GatewaysTab fixtures and assistant OAuth revocation are insufficient. Production: Issue bounded token via POST /tool-gateway/gateways/{id}/tokens; call allowed and excluded tools; revoke via /tool-gateway/gateway-tokens/{id}/revoke and verify denial using same client. diff --git a/maps/feature-map/goals.md b/maps/feature-map/goals.md index e133ab5d112..f95f28fea05 100644 --- a/maps/feature-map/goals.md +++ b/maps/feature-map/goals.md @@ -6,15 +6,17 @@ navigation: {"section":"Projects and execution","sectionOrder":40,"order":20} People define company and lower-level goals and connect projects and tasks to the outcome they serve. +Feature ID: `goals`. + Implementation: [goals](../../ui/src/pages/Goals.tsx), [goal detail](../../ui/src/pages/GoalDetail.tsx). Agent access: [companion](../agent-access-map/goals.md). ## Sub-features -- `hierarchy`: create and inspect goal level, parent, owner, and status. -- `alignment`: associate work with a valid goal in the same company. -- `navigation`: follow goal/project/task context to understand why work exists. +- `hierarchy`: `goals/hierarchy` — create and inspect goal level, parent, owner, and status. +- `alignment`: `goals/alignment` — associate work with a valid goal in the same company. +- `navigation`: `goals/navigation` — follow goal/project/task context to understand why work exists. ## How to get to it (user POV) @@ -56,6 +58,8 @@ Manual: Compare a task with an explicit goal to one relying on project context. #### `alignment` +Capability ID: `goals/alignment`. + Scope: ui Storybook: Project/task goal selection, explicit/inherited context and invalid association error. Production: Persist same-company valid association, reject invalid/cross-company reference, verify explicit versus inherited server context after reload. @@ -63,6 +67,8 @@ Sources: Source: [ProjectProperties.tsx](../../ui/src/components/ProjectProperti #### `navigation` +Capability ID: `goals/navigation`. + Scope: ui Storybook: Parent/child goal and project/task context links, empty/unavailable context and permitted destination. Production: Follow actual goal/project/task records and compare explicit versus inherited context; ensure reload and inaccessible destination behavior. diff --git a/maps/feature-map/inbox-search.md b/maps/feature-map/inbox-search.md index 04d20711aed..4a7ae79c0ad 100644 --- a/maps/feature-map/inbox-search.md +++ b/maps/feature-map/inbox-search.md @@ -6,17 +6,19 @@ navigation: {"section":"Tasks and conversations","sectionOrder":20,"order":30} People find work that needs their attention, distinguish unread activity from required decisions, archive handled items, and search across the company. +Feature ID: `inbox-search`. + Implementation: [inbox](../../ui/src/pages/Inbox.tsx), [decisions](../../ui/src/pages/WhatNeedsMe.tsx), [search](../../ui/src/pages/Search.tsx). Agent access: [companion](../agent-access-map/inbox-search.md). ## Sub-features -- `views`: use Mine, Recent, Unread, Blocked, and broader task views. -- `triage`: read or archive attention items without pretending the underlying task is complete. -- `decisions`: open the source of a decision and act in the right context. -- `search`: query company work and follow a result to its original record. -- `toasts`: receive live task notifications only for personal participation or explicit mentions. +- `views`: `inbox-search/views` — use Mine, Recent, Unread, Blocked, and broader task views. +- `triage`: `inbox-search/triage` — read or archive attention items without pretending the underlying task is complete. +- `decisions`: `inbox-search/decisions` — open the source of a decision and act in the right context. +- `search`: `inbox-search/search` — query company work and follow a result to its original record. +- `toasts`: `inbox-search/toasts` — receive live task notifications only for personal participation or explicit mentions. ## How to get to it (user POV) @@ -116,6 +118,8 @@ after switching company/account to verify suppression and isolation. #### `views` +Capability ID: `inbox-search/views`. + Scope: ui Storybook: Mine/Recent/Unread/Blocked and broader task views; combined versus standalone host; loading/empty/error/filter states. Production: Use persisted personal participation/read data; verify scoped counts and list navigation/reload; automatic read cleanup must not create Mine membership. @@ -123,6 +127,8 @@ Sources: Source: [Inbox.tsx](../../ui/src/pages/Inbox.tsx), [Issues.tsx](../../u #### `toasts` +Capability ID: `inbox-search/toasts`. + Scope: ui Storybook: Eligible live task toast, explicit mention, quiet unrelated event, own-action/visible-task suppression, dedupe and company/account switch. Production: Persisted participation and mentions determine per-viewer socket eligibility; quiet events still refresh caches; reload retains eligibility, unauthorized resources remain denied. diff --git a/maps/feature-map/instance-operations.md b/maps/feature-map/instance-operations.md index 3a8605cd30a..1e765079c69 100644 --- a/maps/feature-map/instance-operations.md +++ b/maps/feature-map/instance-operations.md @@ -6,17 +6,19 @@ navigation: {"section":"Oversight and operation","sectionOrder":70,"order":40} An operator can install and run Paperclip, diagnose the instance, configure supported deployment settings, manage its service, and produce a recoverable database backup. +Feature ID: `instance-operations`. + Implementation: [CLI entry point](../../cli/src/index.ts), [instance settings](../../ui/src/pages/InstanceExperimentalSettings.tsx), [backup command](../../cli/src/commands/db-backup.ts). Agent access: [companion](../agent-access-map/instance-operations.md). ## Sub-features -- `install-update`: inspect install channel/version and apply supported update or rollback operations. -- `server-service`: start/stop the intended instance and inspect its service health. -- `configuration`: configure database, server binding, storage, secrets, and available experimental settings. -- `diagnostics`: use doctor/health output to distinguish readiness from a listening port. -- `backup`: create and inspect backups and verify restore only into a separate disposable target. +- `install-update`: `instance-operations/install-update` — inspect install channel/version and apply supported update or rollback operations. +- `server-service`: `instance-operations/server-service` — start/stop the intended instance and inspect its service health. +- `configuration`: `instance-operations/configuration` — configure database, server binding, storage, secrets, and available experimental settings. +- `diagnostics`: `instance-operations/diagnostics` — use doctor/health output to distinguish readiness from a listening port. +- `backup`: `instance-operations/backup` — create and inspect backups and verify restore only into a separate disposable target. ## How to get to it (user POV) @@ -90,6 +92,8 @@ identities and persistence; they do not establish a deployed staging walkthrough #### `backup` +Capability ID: `instance-operations/backup`. + Scope: ui Storybook: Mount shipped InstanceGeneralSettings in CompanySettings with daily/weekly/monthly retention presets, selected values, saving/error/loading and cloud-hidden controls. Backup creation and restore remain separate CLI/operator checks. Production: PATCH /api/instance/settings/general must enforce instance settings authority and managed hidden fields, persist retention and survive reload. Separately inspect a real backup and restore a known record into a second disposable target; a successful write does not prove restoration. @@ -97,6 +101,8 @@ Sources: Source: [InstanceGeneralSettings.tsx](../../ui/src/pages/InstanceGenera #### `install-update` +Capability ID: `instance-operations/install-update`. + Scope: cli Storybook: No authored story required for install, channel selection, update or rollback command execution. Production: Use an owned managed installation: check/dry-run, installed version, retained payload rollback and failure. Source-checkout guidance is a separate case; rollback does not undo database migrations. @@ -104,6 +110,8 @@ Sources: Source: [index.ts](../../cli/src/index.ts), [install.ts](../../cli/src/ #### `diagnostics` +Capability ID: `instance-operations/diagnostics`. + Scope: cli Storybook: No authored story required for doctor/health command results. Production: Run doctor against an owned data directory; check readiness and nonzero failures. A listening port alone does not prove readiness; repair requires observing the repaired result. diff --git a/maps/feature-map/navigation-preferences.md b/maps/feature-map/navigation-preferences.md index 244995c2686..2c90c37096d 100644 --- a/maps/feature-map/navigation-preferences.md +++ b/maps/feature-map/navigation-preferences.md @@ -6,17 +6,19 @@ navigation: {"section":"Oversight and operation","sectionOrder":70,"order":30} People organize their sidebar, move between company resources, maintain their profile, and dismiss product announcements with the correct persistence and identity scope. +Feature ID: `navigation-preferences`. + Implementation: [sidebar](../../ui/src/components/Sidebar.tsx), [profile](../../ui/src/pages/ProfileSettings.tsx), [announcements](../../ui/src/components/AnnouncementWell.tsx). Agent access: [companion](../agent-access-map/navigation-preferences.md). ## Sub-features -- `navigation`: use current sidebar links, favorites, recents, and available layout controls. -- `preferences`: persist supported ordering/collapse choices for the intended user/company. -- `profile`: edit personal identity and inspect public profile links. -- `announcements`: inspect and dismiss an announcement with its intended instance-wide user scope. -- `fallbacks`: handle missing resources and old deep links without presenting another resource as the target. +- `navigation`: `navigation-preferences/navigation` — use current sidebar links, favorites, recents, and available layout controls. +- `preferences`: `navigation-preferences/preferences` — persist supported ordering/collapse choices for the intended user/company. +- `profile`: `navigation-preferences/profile` — edit personal identity and inspect public profile links. +- `announcements`: `navigation-preferences/announcements` — inspect and dismiss an announcement with its intended instance-wide user scope. +- `fallbacks`: `navigation-preferences/fallbacks` — handle missing resources and old deep links without presenting another resource as the target. ## How to get to it (user POV) @@ -59,6 +61,8 @@ Manual: Change a disposable user’s display details, reload, and inspect an att #### `preferences` +Capability ID: `navigation-preferences/preferences`. + Scope: ui Storybook: Mount Sidebar using real preference boundary with stars/order/collapse/recents state. Clearly distinguish in-memory section collapse, browser-local recents and server-saved stars/order. Production: GET/PUT /sidebar-preferences/me and /companies/{id}/sidebar-preferences/me plus stars must retain intended user/company isolation across reload and switch. Section collapse reopens after reload; global collapse is disabled. @@ -66,6 +70,8 @@ Sources: Source: [Sidebar.tsx](../../ui/src/components/Sidebar.tsx), [sidebar-pr #### `fallbacks` +Capability ID: `navigation-preferences/fallbacks`. + Scope: browser Storybook: A NotFound rendering story can help polish, but missing-resource/legacy-deep-link capability principally needs real App/router/browser scenarios preserving company and query intent. Production: Cold-open invalid company/resource and retired URL; verify explicit fallback or correct canonical redirect without silently targeting a different resource/company. diff --git a/maps/feature-map/onboarding.md b/maps/feature-map/onboarding.md index 1c15e75dfbc..e15d3c7f827 100644 --- a/maps/feature-map/onboarding.md +++ b/maps/feature-map/onboarding.md @@ -6,17 +6,19 @@ navigation: {"section":"Getting started and access","sectionOrder":10,"order":10 An operator can start an instance, create a company, configure its first agent, and reach a real first task. Instance setup and company onboarding are separate steps. +Feature ID: `onboarding`. + Implementation: [web wizard](../../ui/src/components/OnboardingWizard.tsx), [CLI setup](../../cli/src/commands/onboard.ts). Agent access: [companion](../agent-access-map/onboarding.md). ## Sub-features -- `instance`: choose local instance configuration and start the server. -- `company`: create a company with its identity and initial agent. -- `adapter`: choose an available harness, model, account, and execution environment. -- `first-task`: leave setup with a task whose execution or missing prerequisite is visible. -- `resume`: return to an incomplete wizard without losing saved state. +- `instance`: `onboarding/instance` — choose local instance configuration and start the server. +- `company`: `onboarding/company` — create a company with its identity and initial agent. +- `adapter`: `onboarding/adapter` — choose an available harness, model, account, and execution environment. +- `first-task`: `onboarding/first-task` — leave setup with a task whose execution or missing prerequisite is visible. +- `resume`: `onboarding/resume` — return to an incomplete wizard without losing saved state. ## How to get to it (user POV) @@ -156,6 +158,8 @@ Manual: Run setup in the disposable directory, open the URL it prints, and confi #### `resume` +Capability ID: `onboarding/resume`. + Scope: ui Storybook: Restored incomplete wizard; invalid or unauthorized saved company; temporarily withheld draft; account switch; storage failure. Production: Reload company-prefixed onboarding without duplicating company; restore only authorized account/company draft and retain input after recoverable loading failure. @@ -163,6 +167,8 @@ Sources: Source: [OnboardingWizard.tsx](../../ui/src/components/OnboardingWizard #### `instance` +Capability ID: `onboarding/instance`. + Scope: cli Storybook: No authored UI story required for host installation and startup. Production: Configure isolated data directory, start instance, confirm printed URL/identity/health, restart with saved configuration. diff --git a/maps/feature-map/plugins.md b/maps/feature-map/plugins.md index eb48fa23e6c..abc295f409b 100644 --- a/maps/feature-map/plugins.md +++ b/maps/feature-map/plugins.md @@ -6,16 +6,18 @@ navigation: {"section":"Apps, channels, and extensions","sectionOrder":50,"order Operators install and configure plugins, inspect their status and errors, and use their contributed pages, tools, and managed resources within the plugin’s granted capabilities. +Feature ID: `plugins`. + Implementation: [plugin manager](../../ui/src/pages/PluginManager.tsx), [plugin settings](../../ui/src/pages/PluginSettings.tsx), [plugin page](../../ui/src/pages/PluginPage.tsx). Agent access: [companion](../agent-access-map/plugins.md). ## Sub-features -- `installation`: install a trusted test package or local development plugin through supported controls. -- `configuration`: save validated configuration and inspect activation/failure state. -- `contributions`: open plugin routes, settings, tools, and contributed resource tabs. -- `lifecycle`: disable/remove or reload a disposable plugin and observe cleanup. +- `installation`: `plugins/installation` — install a trusted test package or local development plugin through supported controls. +- `configuration`: `plugins/configuration` — save validated configuration and inspect activation/failure state. +- `contributions`: `plugins/contributions` — open plugin routes, settings, tools, and contributed resource tabs. +- `lifecycle`: `plugins/lifecycle` — disable/remove or reload a disposable plugin and observe cleanup. ## How to get to it (user POV) @@ -61,6 +63,8 @@ Manual: Open the contributed page by navigation and cold deep link, perform a ha #### `installation` +Capability ID: `plugins/installation`. + Scope: ui Storybook: Mount PluginManager trusted package and bundled-local choices, pending install, validation/recoverable error and installed status. Production: POST /plugins/install on a disposable package; enforce instance install authority, trusted path/package validation and correct version. Package and local install are distinct. @@ -68,6 +72,8 @@ Sources: Source: [PluginManager.tsx](../../ui/src/pages/PluginManager.tsx), [plu #### `configuration` +Capability ID: `plugins/configuration`. + Scope: ui Storybook: Mount PluginSettings valid/invalid schema inputs, saved configuration, pending/failure and unavailable plugin. Production: GET/POST /plugins/{id}/config and POST config/test must preserve validation/company scope and deliver saved config to real plugin worker/startup. @@ -75,6 +81,8 @@ Sources: Source: [PluginSettings.tsx](../../ui/src/pages/PluginSettings.tsx), [p #### `contributions` +Capability ID: `plugins/contributions`. + Scope: ui Storybook: Mount PluginPage and CompanySettingsPluginPage contributed routes/tabs, loading, missing/unavailable plugin and action failures with a known fixture plugin. Production: Serve real static plugin UI; enforce bridge data/action host capabilities and company boundaries; exercise a harmless action and cold deep link. @@ -82,6 +90,8 @@ Sources: Source: [PluginPage.tsx](../../ui/src/pages/PluginPage.tsx), [CompanySe #### `lifecycle` +Capability ID: `plugins/lifecycle`. + Scope: ui Storybook: Mount PluginManager active/disabled/uninstall/upgrade pending and failures; distinguish operator controls from developer watcher reload. Production: POST enable/disable and DELETE /plugins/{id} must stop worker/tool/managed-resource activity and clean owned resources; verify disposable restart/uninstall and developer watcher separately. diff --git a/maps/feature-map/projects.md b/maps/feature-map/projects.md index 148731b9613..e05b6bf98eb 100644 --- a/maps/feature-map/projects.md +++ b/maps/feature-map/projects.md @@ -6,16 +6,18 @@ navigation: {"section":"Projects and execution","sectionOrder":40,"order":10} People group tasks into projects, attach goals and repositories, and configure the context and defaults used by project work. +Feature ID: `projects`. + Implementation: [project list](../../ui/src/pages/Projects.tsx), [project detail](../../ui/src/pages/ProjectDetail.tsx). Agent access: [companion](../agent-access-map/projects.md). ## Sub-features -- `lifecycle`: create, name, organize, and archive projects. -- `task-context`: inspect project tasks and create work in the selected project. -- `repositories`: configure repository/workspace sources and verify usable checkouts. -- `defaults`: maintain project instructions, environment, goal, and budget context where offered. +- `lifecycle`: `projects/lifecycle` — create, name, organize, and archive projects. +- `task-context`: `projects/task-context` — inspect project tasks and create work in the selected project. +- `repositories`: `projects/repositories` — configure repository/workspace sources and verify usable checkouts. +- `defaults`: `projects/defaults` — maintain project instructions, environment, goal, and budget context where offered. ## How to get to it (user POV) diff --git a/maps/feature-map/questions-and-approvals.md b/maps/feature-map/questions-and-approvals.md index a1331c32574..72842ba3b6b 100644 --- a/maps/feature-map/questions-and-approvals.md +++ b/maps/feature-map/questions-and-approvals.md @@ -9,26 +9,28 @@ history. A question, plan confirmation, governance approval, and app-tool review can look similar but have different authority and continuation rules. Each decision must stay attached to its original request and survive reload. +Feature ID: `questions-and-approvals`. + Agent access: [companion](../agent-access-map/questions-and-approvals.md). ## Sub-features -- `questions`: single-choice, multiple-choice, custom, and free-text answers; +- `questions`: `questions-and-approvals/questions` — single-choice, multiple-choice, custom, and free-text answers; paged forms retain answers until submission and show validation failures. -- `dismiss-and-reopen`: unanswered questions remain in the feed after dismissal +- `dismiss-and-reopen`: `questions-and-approvals/dismiss-and-reopen` — unanswered questions remain in the feed after dismissal or a newer message; reopening restores the form without inventing an answer. -- `confirmations`: accept, decline, or request changes; stale, expired, resolved, +- `confirmations`: `questions-and-approvals/confirmations` — accept, decline, or request changes; stale, expired, resolved, and withdrawn requests cannot be acted on again. -- `plan-review`: inspect the requested plan revision before accepting or asking +- `plan-review`: `questions-and-approvals/plan-review` — inspect the requested plan revision before accepting or asking for changes. An ordinary planning task can proceed to execution; Agent Chat hands work to linked tasks and remains a conversation. -- `audience`: the current actor, company, named audience, and review policy govern +- `audience`: `questions-and-approvals/audience` — the current actor, company, named audience, and review policy govern resolution. A visible request is not necessarily actionable by that viewer. -- `governance`: pending/history views, approve/reject, revision request, and +- `governance`: `questions-and-approvals/governance` — pending/history views, approve/reject, revision request, and resubmission for formal board approvals. -- `tool-review`: approve once, always allow the displayed scope, or decline; +- `tool-review`: `questions-and-approvals/tool-review` — approve once, always allow the displayed scope, or decline; decision status and provider execution outcome remain distinct. -- `continuation`: one recorded response leads to the eligible waiting run or +- `continuation`: `questions-and-approvals/continuation` — one recorded response leads to the eligible waiting run or continuation; repeated clicks, reloads, and competing tabs do not repeat work. ## How to get to it (user POV) diff --git a/maps/feature-map/recovery.md b/maps/feature-map/recovery.md index 0e0a0bfd1ca..42427349414 100644 --- a/maps/feature-map/recovery.md +++ b/maps/feature-map/recovery.md @@ -9,19 +9,21 @@ continuation is available. Recovery retains task context and ownership, honors pause and budget gates, and distinguishes confirmed failure from an uncertain external outcome. A retry acknowledgement alone is not proof that work resumed. +Feature ID: `recovery`. + Agent access: [companion](../agent-access-map/recovery.md). ## Sub-features -- `diagnosis`: a task/run exposes the recorded cause, evidence, owner, attempt +- `diagnosis`: `recovery/diagnosis` — a task/run exposes the recorded cause, evidence, owner, attempt progress, and next action without requiring a raw-log interpretation. -- `bounded-continuation`: supported interrupted work continues with preserved +- `bounded-continuation`: `recovery/bounded-continuation` — supported interrupted work continues with preserved conversation context and bounded attempts, without blindly replaying tools. -- `source-action`: source-scoped recovery actions remain attached to the task; +- `source-action`: `recovery/source-action` — source-scoped recovery actions remain attached to the task; independent repair work may have its own issue and return owner. -- `exhaustion`: exhausted or overdue recovery exposes the current gate and +- `exhaustion`: `recovery/exhaustion` — exhausted or overdue recovery exposes the current gate and permitted operator action; it does not claim an automatic path is still live. -- `workspace`: workspace divergence/export failures show the applicable repair, +- `workspace`: `recovery/workspace` — workspace divergence/export failures show the applicable repair, reconcile, or isolated reissue action with evidence and authority checks. Retained-file recovery runs in the harness with observed task progress and a Retry recovery action only after transient failures. It preserves newer files, @@ -30,11 +32,11 @@ Agent access: [companion](../agent-access-map/recovery.md). workspace link when the destination is disabled. Local PostgreSQL and real filesystem regressions cover native and legacy recovery and one-time delivery; hosted provider recovery remains separate acceptance. -- `unknown-outcome`: uncertain external side effects require inspection and +- `unknown-outcome`: `recovery/unknown-outcome` — uncertain external side effects require inspection and an explicit decision, not automatic replay. -- `user-continuation`: saved user messages after a stop are reconsidered once +- `user-continuation`: `recovery/user-continuation` — saved user messages after a stop are reconsidered once cleanup proves the old execution is stopped; duplicate wakes are avoided. -- `reconnect`: browser stream recovery refreshes persisted state without claiming +- `reconnect`: `recovery/reconnect` — browser stream recovery refreshes persisted state without claiming the agent itself restarted or that a failed run succeeded. ## How to get to it (user POV) @@ -311,6 +313,8 @@ only. Separately inspect the underlying execution if it is still stuck. #### `exhaustion` +Capability ID: `recovery/exhaustion`. + Scope: ui Storybook: Exhausted/overdue attempts, operator retry pending/error, blocked authority/gate and specific escalation. Production: Inspect durable attempt bounds and actual eligible retry/repair; acknowledgment alone does not prove continued execution. @@ -318,6 +322,8 @@ Sources: Source: [IssueRecoveryActionCard.tsx](../../ui/src/components/IssueReco #### `unknown-outcome` +Capability ID: `recovery/unknown-outcome`. + Scope: ui Storybook: Uncertain external outcome, required inspection/evidence and explicit permitted operator decision. Production: Corroborate provider outcome before authorization; enforce no automatic external side-effect replay and reject stale/unauthorized decisions. @@ -325,6 +331,8 @@ Sources: Source: [IssueRecoveryActionCard.tsx](../../ui/src/components/IssueReco #### `user-continuation` +Capability ID: `recovery/user-continuation`. + Scope: ui Storybook: Saved follow-up waiting on stop cleanup, pause/budget gate, one eligible continuation and result/failure. Production: Confirm previous execution stopped before delivery, preserve message, avoid duplicate wakes and honor actual task/ancestor/budget gate in separate legacy/native paths. diff --git a/maps/feature-map/routines.md b/maps/feature-map/routines.md index d0c2bab2381..f401996bdf2 100644 --- a/maps/feature-map/routines.md +++ b/maps/feature-map/routines.md @@ -6,17 +6,19 @@ navigation: {"section":"Automation and structured work","sectionOrder":60,"order Operators define repeatable work, configure its inputs and triggers, run it on demand or automatically, and inspect the execution history and resulting tasks. +Feature ID: `routines`. + Implementation: [routine list](../../ui/src/pages/Routines.tsx), [routine detail](../../ui/src/pages/RoutineDetail.tsx), [trigger editor](../../ui/src/components/routine-triggers/TriggerWizard.tsx). Agent access: [companion](../agent-access-map/routines.md). ## Sub-features -- `definition`: save the request, agent, project, variables, and execution context. -- `triggers`: configure supported schedules/webhooks or other offered triggers. -- `run-now`: supply inputs and create an observable routine execution. -- `history`: inspect resulting tasks and past outcomes. -- `management`: organize, pause/disable, archive, and distinguish plugin-managed routines. +- `definition`: `routines/definition` — save the request, agent, project, variables, and execution context. +- `triggers`: `routines/triggers` — configure supported schedules/webhooks or other offered triggers. +- `run-now`: `routines/run-now` — supply inputs and create an observable routine execution. +- `history`: `routines/history` — inspect resulting tasks and past outcomes. +- `management`: `routines/management` — organize, pause/disable, archive, and distinguish plugin-managed routines. ## How to get to it (user POV) @@ -72,6 +74,8 @@ for both the agent and its responsible person. #### `run-now` +Capability ID: `routines/run-now`. + Scope: ui Storybook: Mount RoutineRunVariablesDialog through actual RoutineDetail with required/default inputs, project/workspace overrides, pending, blocked and failed submission. RunButton-only no-op examples do not supply/run inputs. Production: POST /routines/{id}/run must validate variables, create one attributed execution/task and obey pause/access/budget gates; inspect actual task outcome separately. diff --git a/maps/feature-map/runs-adapters.md b/maps/feature-map/runs-adapters.md index 7acc1b3fffd..2ac7ce82e92 100644 --- a/maps/feature-map/runs-adapters.md +++ b/maps/feature-map/runs-adapters.md @@ -6,16 +6,18 @@ navigation: {"section":"Agents and reusable capabilities","sectionOrder":30,"ord Operators choose an agent harness and model account, inspect execution history and transcripts, and distinguish a working configuration from a successful task result. +Feature ID: `runs-adapters`. + Implementation: [adapter manager](../../ui/src/pages/AdapterManager.tsx), [run host](../../ui/src/pages/AgentDetail.tsx), [configuration](../../ui/src/components/AgentConfigForm.tsx). Agent access: [companion](../agent-access-map/runs-adapters.md). ## Sub-features -- `availability`: discover installed adapters and available models/accounts. -- `validation`: test an adapter in the selected execution environment and surface authentication failures. -- `runs`: inspect run status, events, output, costs, and the source task. -- `session`: preserve or reset execution context through supported lifecycle actions. +- `availability`: `runs-adapters/availability` — discover installed adapters and available models/accounts. +- `validation`: `runs-adapters/validation` — test an adapter in the selected execution environment and surface authentication failures. +- `runs`: `runs-adapters/runs` — inspect run status, events, output, costs, and the source task. +- `session`: `runs-adapters/session` — preserve or reset execution context through supported lifecycle actions. ## How to get to it (user POV) diff --git a/maps/feature-map/secrets.md b/maps/feature-map/secrets.md index 3b44fae6615..c3e566c63e4 100644 --- a/maps/feature-map/secrets.md +++ b/maps/feature-map/secrets.md @@ -6,17 +6,19 @@ navigation: {"section":"Apps, channels, and extensions","sectionOrder":50,"order Operators manage company secret references, users supply their own credentials where required, and reviewers decide proposed secret changes without exposing secret values in ordinary UI evidence. +Feature ID: `secrets`. + Implementation: [secrets page](../../ui/src/pages/Secrets.tsx), [personal secrets](../../ui/src/pages/secrets/MyUserSecretsTab.tsx), [proposals](../../ui/src/pages/secrets/ProposalsTab.tsx). Agent access: [companion](../agent-access-map/secrets.md). ## Sub-features -- `company-secrets`: create/update secret references and control their bindings. -- `user-secrets`: define required user credentials and set a value for the current user. -- `proposals`: review proposed changes with the appropriate authority. -- `vault-import`: import eligible external-vault references through the offered flow. -- `runtime-delivery`: deliver only the secret references authorized for the run/actor. Agent-owned instance secrets stay in the trusted server runtime and are never delivered to an agent. +- `company-secrets`: `secrets/company-secrets` — create/update secret references and control their bindings. +- `user-secrets`: `secrets/user-secrets` — define required user credentials and set a value for the current user. +- `proposals`: `secrets/proposals` — review proposed changes with the appropriate authority. +- `vault-import`: `secrets/vault-import` — import eligible external-vault references through the offered flow. +- `runtime-delivery`: `secrets/runtime-delivery` — deliver only the secret references authorized for the run/actor. Agent-owned instance secrets stay in the trusted server runtime and are never delivered to an agent. ## How to get to it (user POV) @@ -58,6 +60,8 @@ Manual: Review a dummy proposal, reject one and accept another, then inspect the #### `proposals` +Capability ID: `secrets/proposals`. + Scope: ui Storybook: Mount ProposalsTab pending secret/binding proposals, blocked authority, expired/resolved proposal, approval/rejection pending/error, and redacted metadata. Production: GET /companies/{id}/secret-proposals and POST approve/reject must enforce company/admin/target authority, durable resolution and redaction; verified run-bound agent proposal creation is separate. diff --git a/maps/feature-map/skills.md b/maps/feature-map/skills.md index 7b9c2a169b5..b3db94c6cc9 100644 --- a/maps/feature-map/skills.md +++ b/maps/feature-map/skills.md @@ -6,17 +6,19 @@ navigation: {"section":"Agents and reusable capabilities","sectionOrder":30,"ord Operators discover or import skills, author and test them in Skill Studio, manage source versions, and decide which agents may use them. +Feature ID: `skills`. + Implementation: [skill library](../../ui/src/pages/CompanySkills.tsx), [studio](../../ui/src/pages/SkillStudio.tsx), [sources](../../ui/src/pages/SkillSources.tsx), [agent skills](../../ui/src/pages/agent-skills/AgentSkillsTab.tsx). Agent access: [companion](../agent-access-map/skills.md). ## Sub-features -- `discovery`: browse installed/discover views and import a skill or source. -- `authoring`: create/edit a writable skill or fork a read-only source. -- `versions`: inspect revisions, source updates, diffs, and selected releases. -- `policy`: apply agent enablement and skill usage policy independently from installation. -- `testing`: run a bounded Studio test and inspect its result and interactions. +- `discovery`: `skills/discovery` — browse installed/discover views and import a skill or source. +- `authoring`: `skills/authoring` — create/edit a writable skill or fork a read-only source. +- `versions`: `skills/versions` — inspect revisions, source updates, diffs, and selected releases. +- `policy`: `skills/policy` — apply agent enablement and skill usage policy independently from installation. +- `testing`: `skills/testing` — run a bounded Studio test and inspect its result and interactions. ## How to get to it (user POV) @@ -129,6 +131,8 @@ Open Choose connection while a source is being refreshed. Select an authorized a #### `testing` +Capability ID: `skills/testing`. + Scope: ui Storybook: Studio test inputs/configuration, running, question/approval, result and failed test states. Production: Run bounded test of actual saved version with correct selected account/environment; inspect persisted test detail and eligible interaction response. diff --git a/maps/feature-map/status-cards.md b/maps/feature-map/status-cards.md index 395215d442a..d43f9eac4e6 100644 --- a/maps/feature-map/status-cards.md +++ b/maps/feature-map/status-cards.md @@ -6,16 +6,18 @@ navigation: {"section":"Automation and structured work","sectionOrder":60,"order The status-card experiment turns a saved prompt/query into an inspectable summary of watched work, with refresh history, configuration, and archive/restore controls. +Feature ID: `status-cards`. + Implementation: [status page](../../ui/src/pages/StatusCards/index.tsx), [card detail](../../ui/src/pages/StatusCards/StatusCardDetailDrawer.tsx). Agent access: [companion](../agent-access-map/status-cards.md). ## Sub-features -- `authoring`: create a card and configure its prompt, refresh behavior, and summarizer. -- `generation`: observe compilation/refresh tasks and their successful or failed output. -- `inspection`: read the summary, watched work, history, and available query debugging. -- `archive`: archive and restore without confusing a stale summary with a current result. +- `authoring`: `status-cards/authoring` — create a card and configure its prompt, refresh behavior, and summarizer. +- `generation`: `status-cards/generation` — observe compilation/refresh tasks and their successful or failed output. +- `inspection`: `status-cards/inspection` — read the summary, watched work, history, and available query debugging. +- `archive`: `status-cards/archive` — archive and restore without confusing a stale summary with a current result. ## How to get to it (user POV) @@ -53,6 +55,8 @@ Manual: Change a disposable card’s prompt or summarizer, run the offered rebui #### `authoring` +Capability ID: `status-cards/authoring`. + Scope: ui Storybook: Mount CreateStatusCardDialog and StatusCardSettingsForm prompt, summarizer, refresh options, required/invalid inputs and save errors. Production: POST /companies/{id}/status-cards and PATCH /status-cards/{id} must enforce gate/author authority, save configuration and start expected compile task when prompt changes. @@ -60,6 +64,8 @@ Sources: Source: [CreateStatusCardDialog.tsx](../../ui/src/pages/StatusCards/Cre #### `generation` +Capability ID: `status-cards/generation`. + Scope: ui Storybook: Mount card tile/drawer compiling, refreshing, failed, stale existing summary and successful new-summary states with linked task. Production: POST /status-cards/{id}/recompile and /refresh plus update/finalization engine must persist actual new output/history; compare saved summary with source tasks, not merely successful task status. @@ -67,6 +73,8 @@ Sources: Source: [StatusCardTile.tsx](../../ui/src/pages/StatusCards/StatusCardT #### `inspection` +Capability ID: `status-cards/inspection`. + Scope: ui Storybook: Mount StatusCardDetailDrawer summary, watched work, update/revision history, query debug, empty/loading/error and stale summary disclosure. Production: GET /status-cards/{id}, /updates, /summary-revisions and /dry-run must filter accessible card/source records; fixtures cannot establish summary truth or query authorization. @@ -74,6 +82,8 @@ Sources: Source: [StatusCardDetailDrawer.tsx](../../ui/src/pages/StatusCards/Sta #### `archive` +Capability ID: `status-cards/archive`. + Scope: ui Storybook: Mount StatusCards and ArchivedStatusCardRow active/archived list, restore pending/failure and old-summary state. Archive differs from deletion. Production: PATCH /status-cards/{id} archived true/false must persist and authorize change; restore may enqueue refresh, whose new outcome must be inspected rather than treating old summary as current. diff --git a/maps/feature-map/steering.md b/maps/feature-map/steering.md index 3d7be84eae0..55c6dcb56e3 100644 --- a/maps/feature-map/steering.md +++ b/maps/feature-map/steering.md @@ -9,22 +9,24 @@ not been consumed, and choose when to steer or interrupt. Stopping a run and pausing a task are separate controls. The UI must preserve the message, explain why it is waiting, and only claim delivery after an authoritative acknowledgement. +Feature ID: `steering`. + Agent access: [companion](../agent-access-map/steering.md). ## Sub-features -- `queue`: a busy task saves follow-ups and shows their order and wait reason. -- `edit-order-discard`: edit full Markdown, reorder, and discard eligible saved +- `queue`: `steering/queue` — a busy task saves follow-ups and shows their order and wait reason. +- `edit-order-discard`: `steering/edit-order-discard` — edit full Markdown, reorder, and discard eligible saved messages; ownership, revision conflicts, and already-dispatched states matter. -- `steer`: explicit user action sends a queued message into a compatible active +- `steer`: `steering/steer` — explicit user action sends a queued message into a compatible active run; unavailable capabilities and provider rejection remain visible. -- `interrupt`: stop the current execution and carry accepted follow-ups into +- `interrupt`: `steering/interrupt` — stop the current execution and carry accepted follow-ups into the eligible continuation without delivering them twice. -- `stop-and-pause`: distinguish stop-in-flight, confirmed stop, task/ancestor +- `stop-and-pause`: `steering/stop-and-pause` — distinguish stop-in-flight, confirmed stop, task/ancestor pause, agent pause, and budget hold. Resume must respect the actual gate. -- `drafts`: switching tasks, reloading, and uncertain submission retain the +- `drafts`: `steering/drafts` — switching tasks, reloading, and uncertain submission retain the correct task's draft and attachment receipts. -- `approval-queue`: answered questions and accepted approvals have durable +- `approval-queue`: `steering/approval-queue` — answered questions and accepted approvals have durable delivery distinct from editable ordinary comments. ## How to get to it (user POV) @@ -165,6 +167,8 @@ gap; do not assume browser queue controls are available in every channel. #### `drafts` +Capability ID: `steering/drafts`. + Scope: ui Storybook: Task-keyed restored draft and attachment receipts; task switch/reload, failed send and uncertain-save recovery. Production: Retain correct task draft across navigation and reload; inspect authoritative saved receipt before claiming delivery; do not clear storage on every harness mount. @@ -172,6 +176,8 @@ Sources: Source: [TaskChatComposer.tsx](../../ui/src/components/task-chat/TaskCh #### `approval-queue` +Capability ID: `steering/approval-queue`. + Scope: ui Storybook: Answered question/accepted approval delivery waiting, eligible steer/interrupt, failed delivery and fresh-session-only approval. Production: Keep response delivery durable and distinct from editable comments; coalesce once, enforce fresh-session restrictions and deduplicate concurrent/retried continuation. diff --git a/maps/feature-map/task-coordination.md b/maps/feature-map/task-coordination.md index 427edcda712..86a60dc5611 100644 --- a/maps/feature-map/task-coordination.md +++ b/maps/feature-map/task-coordination.md @@ -6,16 +6,18 @@ navigation: {"section":"Tasks and conversations","sectionOrder":20,"order":20} A larger task can coordinate child work, dependencies, reviewers, and execution controls while preserving a clear owner and a traceable completion decision. +Feature ID: `task-coordination`. + Implementation: [task thread](../../ui/src/pages/IssueDetail.tsx), [execution policy](../../server/src/services/issues.ts). Agent access: [companion](../agent-access-map/task-coordination.md). ## Sub-features -- `delegation`: inspect parent/child tasks and the original request behind delegated work. -- `dependencies`: show blocking tasks and wake eligible work when prerequisites resolve. -- `signoff`: apply the configured implementation/review completion policy. -- `tree-control`: pause or resume a task tree without bypassing its gates. +- `delegation`: `task-coordination/delegation` — inspect parent/child tasks and the original request behind delegated work. +- `dependencies`: `task-coordination/dependencies` — show blocking tasks and wake eligible work when prerequisites resolve. +- `signoff`: `task-coordination/signoff` — apply the configured implementation/review completion policy. +- `tree-control`: `task-coordination/tree-control` — pause or resume a task tree without bypassing its gates. ## How to get to it (user POV) diff --git a/maps/feature-map/tasks.md b/maps/feature-map/tasks.md index 00a89ad109a..b9b43f63e05 100644 --- a/maps/feature-map/tasks.md +++ b/maps/feature-map/tasks.md @@ -6,17 +6,19 @@ navigation: {"section":"Tasks and conversations","sectionOrder":20,"order":10} People create, assign, organize, discuss, and finish tasks. A task retains its owner, project, priority, history, and outputs as it moves through the work lifecycle. +Feature ID: `tasks`. + Implementation: [new task](../../ui/src/components/NewIssueDialog.tsx), [task list](../../ui/src/pages/Issues.tsx), [task detail](../../ui/src/pages/IssueDetail.tsx). Agent access: [companion](../agent-access-map/tasks.md). ## Sub-features -- `create`: capture a title/request with the intended agent, project, and attachments. -- `organize`: filter, sort, group, and navigate tasks without losing the selected context. -- `properties`: change status, priority, assignee, project, and relationships where authorized. -- `discussion`: persist comments, references, and files on the task. -- `completion`: distinguish backlog, active work, review, blocked, done, and cancelled outcomes. +- `create`: `tasks/create` — capture a title/request with the intended agent, project, and attachments. +- `organize`: `tasks/organize` — filter, sort, group, and navigate tasks without losing the selected context. +- `properties`: `tasks/properties` — change status, priority, assignee, project, and relationships where authorized. +- `discussion`: `tasks/discussion` — persist comments, references, and files on the task. +- `completion`: `tasks/completion` — distinguish backlog, active work, review, blocked, done, and cancelled outcomes. ## How to get to it (user POV) diff --git a/maps/feature-map/teams.md b/maps/feature-map/teams.md index f6fc151941f..d6bbefcb08d 100644 --- a/maps/feature-map/teams.md +++ b/maps/feature-map/teams.md @@ -6,16 +6,18 @@ navigation: {"section":"Agents and reusable capabilities","sectionOrder":30,"ord Operators can preview and install a team package with its agents and related resources. Catalog/package installation is available through the CLI/API; the repository also contains catalog UI components that are not a current top-level route. +Feature ID: `teams`. + Implementation: [CLI teams](../../cli/src/commands/client/teams.ts), [catalog components](../../ui/src/pages/TeamCatalog.tsx). Agent access: [companion](../agent-access-map/teams.md). ## Sub-features -- `discovery`: list available team catalog entries and inspect package contents. -- `preview`: inspect proposed resources and installation options before mutation. -- `install`: install into the intended company and inspect resulting agents and resources. -- `configuration`: supply required adapters/accounts and verify installed agents can work. +- `discovery`: `teams/discovery` — list available team catalog entries and inspect package contents. +- `preview`: `teams/preview` — inspect proposed resources and installation options before mutation. +- `install`: `teams/install` — install into the intended company and inspect resulting agents and resources. +- `configuration`: `teams/configuration` — supply required adapters/accounts and verify installed agents can work. ## How to get to it (user POV) diff --git a/maps/feature-map/workspaces.md b/maps/feature-map/workspaces.md index 24b6cfbb3d8..81761a324b7 100644 --- a/maps/feature-map/workspaces.md +++ b/maps/feature-map/workspaces.md @@ -6,17 +6,19 @@ navigation: {"section":"Projects and execution","sectionOrder":40,"order":30} A project or task can use a managed workspace with inspectable files, Git state, services, and runtime controls. Operators can follow its lifecycle through provisioning, use, and closure. +Feature ID: `workspaces`. + Implementation: [workspace list](../../ui/src/pages/Workspaces.tsx), [execution workspace](../../ui/src/pages/ExecutionWorkspaceDetail.tsx), [project workspace](../../ui/src/pages/ProjectWorkspaceDetail.tsx). Agent access: [companion](../agent-access-map/workspaces.md). ## Sub-features -- `binding`: identify the workspace actually bound to a task/run. -- `provisioning`: observe readiness and failures instead of inferring readiness from a created record. -- `services`: start/stop supported services and inspect logs and exposed endpoints. -- `files-git`: inspect workspace files and repository state used for the deliverable. -- `closure`: close/reopen or reconcile through permitted controls without losing work. +- `binding`: `workspaces/binding` — identify the workspace actually bound to a task/run. +- `provisioning`: `workspaces/provisioning` — observe readiness and failures instead of inferring readiness from a created record. +- `services`: `workspaces/services` — start/stop supported services and inspect logs and exposed endpoints. +- `files-git`: `workspaces/files-git` — inspect workspace files and repository state used for the deliverable. +- `closure`: `workspaces/closure` — close/reopen or reconcile through permitted controls without losing work. For a historical failed export whose exact sandbox was destroyed, the task recovery notice offers **Continue from saved sources** to an authorized board operator. @@ -157,6 +159,8 @@ Manual: Provision a disposable workspace, wait for readiness, start an available #### `closure` +Capability ID: `workspaces/closure`. + Scope: ui Storybook: Close-readiness checks, pending changes/active runs, blocked/pending/error close, retry close and eligible reopening. Production: Confirm owned workspace shutdown, preserved files/Git state and permitted lifecycle transition/reopening; Browser Use session closure is unrelated.