A

Delivery structure

14 specs, 846 requirements, 5 with no code mapped
Knuckles-Team/arboraSpec delivery
Specs (14)
  • ARBORA-A2A75
  • ARBORA-ACCEPTANCE6
  • ARBORA-CAPACITY14
  • ARBORA-ACP8
  • ARBORA-DATA-MARKET19
  • ARBORA-RELEASE11
  • ARBORA-FLEET137
  • ARBORA-HOST197
  • ARBORA-OPS185
  • ARBORA-IDENTITY94
  • ARBORA-MCP-RESOURCES7
  • ARBORA-MESSAGING19
  • ARBORA-DEPLOY72
  • ARBORA-INGRESS2
Records not done
  • Requirementsall slices in all specs846
  • Requirements not donenot VERIFIED694
  • Specs not donewhole specs only14

Each spec shows its requirement count. Panel J lists every record.

B

Delivery states

count of total

Requirements (846)

SPECIFIED (specified)589 of 846 requirements
LANDED (landed)105 of 846 requirements
VERIFIED (verified)152 of 846 requirements

Specs (14)

SPECIFIED (specified)12 of 14 specs
LANDED (landed)2 of 14 specs

Each bar shows one state against all records of the same kind.

Percentages count current rows. Done means VERIFIED.

C

State definitions

delivery_state
StateDefinition
SPECIFIEDThe requirement is written. No code for it is on the default branch.
LANDEDA commit that carries its ID in a Spec trailer is on the default branch.
VERIFIEDIt is LANDED and a test bound to its ID exists.

A spec state is the lowest state of its rows. Done means VERIFIED.

Invalid state: 0

D

Specifications

specs/*/status.json
Spec / titleReq.LandedDoneSpec stateCode references
ARBORA-A2AARBORA-A2A — A2A projection, streaming, history and tool-subset admission7519/7516SPECIFIEDAU public session API implementation: external declaration; not verified
../../arbora/a2a/application.py:225 implementation: file exists; coverage not verified
../../arbora/a2a/application.py:39 implementation: file exists; coverage not verified
../../arbora/a2a/mcp.py:15 implementation: file exists; coverage not verified
../../arbora/api/invoke/bootstrap.py:99 implementation: file exists; coverage not verified
../../arbora/api/invoke/pipeline.py implementation: file exists; coverage not verified
../../arbora/api/mcp/caller.py:12 implementation: file exists; coverage not verified
../../arbora/mcp_server/composition.py:185 implementation: file exists; coverage not verified
arbora/a2a/admission.py implementation: file exists; coverage not verified
arbora/a2a/admission.py:50 implementation: file exists; coverage not verified
arbora/a2a/admission.py:61 implementation: file exists; coverage not verified
arbora/a2a/application.py implementation: file exists; coverage not verified
arbora/a2a/application.py:140 implementation: file exists; coverage not verified
arbora/a2a/authority.py implementation: file exists; coverage not verified
arbora/a2a/authority.py:256 implementation: file exists; coverage not verified
arbora/a2a/composition.py implementation: file exists; coverage not verified
arbora/a2a/models.py:104 implementation: file exists; coverage not verified
arbora/a2a/models.py:167 implementation: file exists; coverage not verified
arbora/a2a/routing.py:71 implementation: file exists; coverage not verified
arbora/a2a/service.py:40 implementation: file exists; coverage not verified
arbora/access/service.py:54 implementation: file exists; coverage not verified
arbora/api/invoke/pipeline.py:641 implementation: file exists; coverage not verified
`ARBORA-A2A` documentation: file exists; coverage not verified
arbora/a2a/models.py implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
test-spec.md documentation: file exists; coverage not verified
ARBORA-ACCEPTANCEARBORA-ACCEPTANCE — evidence acceptance freeze66/64LANDEDscripts/check_acceptance_evidence.py implementation: file exists; coverage not verified
tests/test_check_acceptance_evidence.py test: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
scripts/check_public_specs.py implementation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
ARBORA-CAPACITYARBORA-CAPACITY — Adaptive capacity control149/149SPECIFIEDrequirements.md documentation: file exists; coverage not verified
ARBORA-ACPARBORA-ACP — Conversational ACP gateway session projection and policy82/82SPECIFIEDarbora/acp/__init__.py:3 implementation: file exists; coverage not verified
arbora/acp/coding_session.py implementation: file exists; coverage not verified
arbora/acp/session_policy.py:101 implementation: file exists; coverage not verified
arbora/acp/session_policy.py:120 implementation: file exists; coverage not verified
arbora/acp/session_policy.py:21 implementation: file exists; coverage not verified
arbora/acp/session_policy.py:68 implementation: file exists; coverage not verified
arbora/acp/session_policy.py:89 implementation: file exists; coverage not verified
arbora/gateway/graph_api.py:368 implementation: file exists; coverage not verified
arbora/identity/broker.py:256 implementation: file exists; coverage not verified
arbora/webui_host/webui_co_service.py:77 implementation: file exists; coverage not verified
Adapter refusal documentation: file exists; coverage not verified
Admission documentation: file exists; coverage not verified
Observability documentation: file exists; coverage not verified
Policy limits documentation: file exists; coverage not verified
docs/architecture.md documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
ARBORA-DATA-MARKETARBORA-DATA-MARKET — Schema context, source admission, and finance projection195/190SPECIFIEDarbora/api/http/routes.py:72 implementation: file exists; coverage not verified
arbora/api/invoke/plan.py:24 implementation: file exists; coverage not verified
arbora/api/mcp/verbs.py:26 implementation: file exists; coverage not verified
arbora/finance/markets.py implementation: file exists; coverage not verified
arbora/mcp_server/server.py implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
ARBORA-RELEASEARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rollout113/112SPECIFIEDExisting path documentation: file exists; coverage not verified
Failure documentation: file exists; coverage not verified
Gates documentation: file exists; coverage not verified
Manifest documentation: file exists; coverage not verified
Ordering documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
ARBORA-FLEETARBORA-FLEET — Fleet catalog, intent tools, and policy safe reload13740/13718SPECIFIEDARBORA-OPS-R009 documentation: file exists; coverage not verified
arbora/deployment/doctor.py implementation: file exists; coverage not verified
arbora/fleet/catalog_reader.py implementation: file exists; coverage not verified
arbora/fleet/child_resilience.py implementation: file exists; coverage not verified
arbora/fleet/gateway_ops.py implementation: file exists; coverage not verified
arbora/fleet/multiplexer.py implementation: file exists; coverage not verified
arbora/fleet/onboarding.py:236 implementation: file exists; coverage not verified
arbora/fleet/session_notifications.py implementation: file exists; coverage not verified
arbora/webui_host/mcp_delegation.py implementation: file exists; coverage not verified
plan.md documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
test-spec.md documentation: file exists; coverage not verified
tests/fleet/test_fleet_onboarding.py test: file exists; coverage not verified
tests/test_fleet_catalog_reader.py test: file exists; coverage not verified
ARBORA-HOSTARBORA-HOST — Arbora host composition and ownership boundary19738/19725SPECIFIEDTUI-RUNTIME-R002.2 through R002.6 documentation: external declaration; not verified
requirements.md documentation: file exists; coverage not verified
ARBORA-OPSARBORA-OPS — Hosted API and intent operations18560/18535SPECIFIEDarbora/api/invoke/bootstrap.py:167 implementation: file exists; coverage not verified
arbora/api/invoke/pipeline.py:810 implementation: file exists; coverage not verified
arbora/api/ops/registry_factory.py implementation: file exists; coverage not verified
arbora/api/ops/retrieval.py:81 implementation: file exists; coverage not verified
arbora/api/policy/domain_scopes.py implementation: file exists; coverage not verified
arbora/api/registry/eg_binding.py implementation: file exists; coverage not verified
arbora/api/registry/scopes.py implementation: file exists; coverage not verified
arbora/gateway/dashboard_api.py implementation: file exists; coverage not verified
arbora/gateway/fleet_events.py implementation: file exists; coverage not verified
arbora/gateway/registry.py implementation: file exists; coverage not verified
spec documentation: file exists; coverage not verified
tests/api/test_registry_factory.py test: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
test-spec.md documentation: file exists; coverage not verified
ARBORA-IDENTITYARBORA-IDENTITY — ACCESS — identity, authorization, and access operations9442/9424SPECIFIEDarbora/a2a/authority.py implementation: file exists; coverage not verified
arbora/access/service.py:90 implementation: file exists; coverage not verified
arbora/api/http/auth.py:127 implementation: file exists; coverage not verified
arbora/api/invoke/audit.py implementation: file exists; coverage not verified
arbora/api/mcp/caller.py:12 implementation: file exists; coverage not verified
arbora/api/ops/access.py:151 implementation: file exists; coverage not verified
arbora/deployment/cli.py implementation: file exists; coverage not verified
arbora/gateway/graph_api.py implementation: file exists; coverage not verified
arbora/gateway/remote_oauth_api.py implementation: file exists; coverage not verified
arbora/gateway/remote_oauth_api.py:245 implementation: file exists; coverage not verified
arbora/identity/composition.py:48 implementation: file exists; coverage not verified
arbora/identity/oidc.py:102 implementation: file exists; coverage not verified
arbora/mcp_server/server.py implementation: file exists; coverage not verified
arbora/webui_host/webui_co_service.py implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
ARBORA-MCP-RESOURCESARBORA-MCP-RESOURCES — MCP resource/template publication reconciliation75/75SPECIFIED`docs/fleet.md` documentation: file exists; coverage not verified
`docs/status.md` documentation: file exists; coverage not verified
arbora/fleet/catalog_reader.py implementation: file exists; coverage not verified
arbora/fleet/mcp_resource_reconciliation.py implementation: file exists; coverage not verified
ARBORA-MESSAGINGARBORA-MESSAGING — Messaging channel supervision lifecycle196/193SPECIFIEDARBORA-HOST-R011 documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
test-spec.md documentation: file exists; coverage not verified
ARBORA-DEPLOYARBORA-DEPLOY — Portable Arbora development and deployment7220/729SPECIFIEDarbora/a2a/routing.py implementation: file exists; coverage not verified
arbora/skills/arbora-genesis/references/bare-metal.md documentation: file exists; coverage not verified
deploy/compose/compose.yaml implementation: file exists; coverage not verified
deploy/swarm/stack.yml implementation: file exists; coverage not verified
scripts/check_deployment_image_digests.py implementation: file exists; coverage not verified
specs/hosted-api-operations/plan.md documentation: file exists; coverage not verified
tests/deployment/test_arbora_deploy_artifacts.py test: file exists; coverage not verified
tests/deployment/test_image_digests.py test: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
ARBORA-INGRESSARBORA-INGRESS — Portable public ingress and identity cutover22/20LANDEDaccess control documentation: file exists; coverage not verified
docs/quality-gate-terms.md documentation: file exists; coverage not verified
Cutover documentation: file exists; coverage not verified
Portable proof documentation: file exists; coverage not verified
Profile contract documentation: file exists; coverage not verified
Request path documentation: file exists; coverage not verified
Security documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified

Landed counts LANDED and VERIFIED requirements. Done counts VERIFIED requirements only.

The spec state comes from the spec status file only.

U

Spec architecture

repository / component packages

Packages group specs by repository and declared component. Unassigned means no component was declared. Code links do not prove coverage. Mermaid source.

Knuckles-Team/arbora / Arbora A2A request adapter (1)
Knuckles-Team/arbora / Arbora A2A request adapter (1)ARBORA-A2A
ARBORA-A2A: source plan diagrams (Mermaid)
flowchart LR
  H[human A2A client] --> V[Arbora verified A2A adapter]
  V --> T[A2AService and operation invoke]
  T --> O[agent orchestrator public port]
  T --> E["engine WorkItem, grant and plan leases"]
  T --> F[fleet via hosted operation invoke]
  E --> A[durable audit reservation and outcome]
flowchart LR
  C[A2A caller] --> AC[Agent Card: from_wired_authorities]
  C --> S[message/stream]
  C --> G["tasks/get (history)"]
  S --> AU["AU task-event reader: owner contract pending"]
  G --> EG["EG durable transition ledger (EG-DURABLE-KERNEL)"]
  AU --> PN[push-notification trigger]
  PN --> OB["EG durable outbox (EG-DURABLE-KERNEL-R001)"]
flowchart LR
  C[A2A caller: agent graph ref + contextBudgetTokens] --> D[admit_tool_subset admission door]
  D -->|needs| EG["EG AgentAssemble (EG-DECISION-ENGINE-R036)"]
  D -->|needs| AU["AU signed AgentTurnEnvelope allowed-tool-subset (AU-CONTROL-R035)"]
  D -->|refused| R["typed ToolSubsetAdmissionDecision (admitted=False; reason; provenance)"]
  D -->|admitted, once both land| A["ToolSubsetAdmissionDecision (admitted tools + provenance)"]
  A --> X[OrchestratorA2ARouter / WorkItemA2AAuthority dispatch]
flowchart LR
  R[Authenticated A2A request] --> A[Retain resolved AU GraphSession]
  A --> C[Existing caller_from_session projection]
  C --> V[Existing session refresh]
  V --> I[Shared InvokeServices and Surface.A2A]
  I --> O[Registered operation scope and effect boundary]
Knuckles-Team/arbora / Unassigned (13)

ARBORA-ACCEPTANCE: no plan diagram declared.

ARBORA-ACP: no plan diagram declared.

ARBORA-CAPACITY: no plan diagram declared.

ARBORA-DATA-MARKET: no plan diagram declared.

ARBORA-DEPLOY: no plan diagram declared.

ARBORA-FLEET: source plan diagrams (Mermaid)
sequenceDiagram
    participant Caller
    participant Host as Arbora invoke
    participant EG
    participant SDK
    participant Agent as AU agent
    Caller->>Host: authenticated run + idempotency key
    Host->>EG: resolve skill, workflow, policy and distribution
    EG-->>Host: bound decisions and versioned identities
    Host->>Host: certify dependencies, admit all tools, reserve capacity
    Host->>SDK: approved typed allocation
    SDK-->>Host: actual instance receipt
    Host->>Agent: admitted skill identity and model configuration
    Agent->>EG: durable result through published execution contract
    Host->>EG: apply existing aggregation to result receipts
    EG-->>Caller: governed result and provenance
ARBORA-HOST: source plan diagrams (Mermaid)
flowchart LR
  C[Client] --> B[Transport identity and admission]
  B --> P[Shared action policy]
  P --> S[Typed application operation]
  S --> E[Graph engine client]
  S --> A[Agent runtime public API]
  S --> K[Connector SDK runner]
  S --> R[One result and receipt mapper]
  R --> C
ARBORA-IDENTITY: source plan diagrams (Mermaid)
flowchart LR
    B["Browser, CLI, MCP, A2A"] --> C[Arbora serving composition]
    C --> A[Authenticator per mode]
    A --> P[Principal and scope resolver]
    P --> I[Local issuer and short-lived token]
    I --> U[Verified actor and delegated session]
    U --> E["Engine identity, RBAC, CheckAccess, elevation, lease, audit"]
    E --> R[Typed redacted result]
    R --> C
ARBORA-INGRESS: source plan diagrams (Mermaid)
flowchart LR
  Browser --> Ingress[Operator TLS ingress]
  Ingress --> Gateway[Arbora gateway]
  Gateway --> Admission[Existing identity middleware]
  Admission --> Service[Arbora application service]
  Service --> Engine[Graph engine authorization]
  Browser --> IdP[Operator OIDC provider]

ARBORA-MCP-RESOURCES: no plan diagram declared.

ARBORA-MESSAGING: source plan diagrams (Mermaid)
stateDiagram-v2
  [*] --> STOPPED
  STOPPED --> STARTING: start()
  STARTING --> RUNNING: is_connected observed
  STARTING --> STOPPED: not connected, skipped
  STARTING --> DEGRADED: adapter missing/import failed
  RUNNING --> BACKING_OFF: recoverable listener failure
  BACKING_OFF --> RUNNING: listener resumed
  BACKING_OFF --> STOPPING: stop() during backoff
  RUNNING --> STOPPING: stop()
  DEGRADED --> STOPPING: stop()
  STOPPING --> STOPPED: tasks drained
ARBORA-OPS: source plan diagrams (Mermaid)
flowchart LR
  C[MCP / HTTP / A2A / fleet forwarder] --> S[verified surface adapter]
  S --> I["invoke: validate, scopes, policy, subject, effect, audit"]
  I --> R[one typed operation registry]
  I --> E[engine client under caller claims]
  I --> A[agent service via public port]
  I --> F[fleet gateway under caller credential]
  I --> D[durable audit and plan lease]
  R --> G["generated OpenAPI, schemas and clients"]
ARBORA-RELEASE: source plan diagrams (Mermaid)
flowchart LR
  Candidate --> Verify[Verify manifest and compatibility]
  Verify --> Plan[Topological dry run]
  Plan --> Stage[Apply one digest-pinned stage]
  Stage --> Probe[Readiness and functional probe]
  Probe -->|pass| Stage
  Probe -->|fail| Stop[Stop and rollback decision]
  Stage --> Complete[Complete signed receipt]
R

Spec relationships

declared dependencies and references

Depends on means a declared prerequisite. Extends and references do not imply prerequisite order. Shared code never creates dependencies. External targets are source declarations, not verified delivery.

Knuckles-Team/arbora / Arbora A2A request adapter
SpecRelationshipTargetEvidence
ARBORA-A2Adepends onAU public session APIKnuckles-Team/agent-utilities: external declaration; not verified; source: specs/a2a/plan.md
ARBORA-A2Adepends onARBORA-A2A-R006.2Knuckles-Team/arbora: local spec declaration; source: specs/a2a/plan.md
ARBORA-A2Areferences`AU-CONTROL-R035`Knuckles-Team/agent-utilities: external declaration; not verified; source: specs/a2a/spec.md
ARBORA-A2Areferences`EG-DECISION-ENGINE-001`Knuckles-Team/epistemic-graph: external declaration; not verified; source: specs/a2a/spec.md
Knuckles-Team/arbora / Unassigned
SpecRelationshipTargetEvidence
ARBORA-ACCEPTANCENo relationships declared; dependencies unknown
ARBORA-ACPreferencesARBORA-IDENTITY-001Knuckles-Team/arbora: file exists; coverage not verified; source: specs/conversational-acp-gateway/spec.md
ARBORA-ACPreferencesAccess controlKnuckles-Team/arbora: file exists; coverage not verified; source: specs/conversational-acp-gateway/spec.md
ARBORA-ACPreferencesAU-CONTROL-001Unresolved: unresolved; source: specs/conversational-acp-gateway/spec.md
ARBORA-CAPACITYreferenceshosted operationsKnuckles-Team/arbora: file exists; coverage not verified; source: specs/adaptive-capacity/spec.md
ARBORA-DATA-MARKETNo relationships declared; dependencies unknown
ARBORA-DEPLOYNo relationships declared; dependencies unknown
ARBORA-FLEETreferencesEG-DECISION-ENGINE-R176Knuckles-Team/epistemic-graph: external declaration; not verified; source: specs/fleet-catalog-and-tools/plan.md
ARBORA-FLEETreferencesEG-DECISION-ENGINE-R177Knuckles-Team/epistemic-graph: external declaration; not verified; source: specs/fleet-catalog-and-tools/plan.md
ARBORA-FLEETreferencesEG-TYPED-PACKS-R103Knuckles-Team/epistemic-graph: external declaration; not verified; source: specs/fleet-catalog-and-tools/plan.md
ARBORA-FLEETreferencesEG-TYPED-PACKS-R104Knuckles-Team/epistemic-graph: external declaration; not verified; source: specs/fleet-catalog-and-tools/plan.md
ARBORA-FLEETreferencesSDK-CONNECTOR-CONTROL-R068Knuckles-Team/agent-connector-sdk: external declaration; not verified; source: specs/fleet-catalog-and-tools/plan.md
ARBORA-HOSTreferencesA2A specKnuckles-Team/arbora: file exists; coverage not verified; source: specs/host-composition-boundary/spec.md
ARBORA-IDENTITYNo relationships declared; dependencies unknown
ARBORA-INGRESSreferencesAccess controlKnuckles-Team/arbora: file exists; coverage not verified; source: specs/public-ingress-identity/spec.md
ARBORA-INGRESSreferencesPortable deploymentKnuckles-Team/arbora: file exists; coverage not verified; source: specs/public-ingress-identity/spec.md
ARBORA-MCP-RESOURCESreferences`EG-REPO-INGEST-001`Knuckles-Team/epistemic-graph: external declaration; not verified; source: specs/mcp-resource-publication-reconciliation/spec.md
ARBORA-MCP-RESOURCESreferences`fleet-catalog-and-tools/spec.md`Knuckles-Team/arbora: file exists; coverage not verified; source: specs/mcp-resource-publication-reconciliation/spec.md
ARBORA-MCP-RESOURCESreferencesfleet-catalog-and-tools/spec.mdUnresolved: missing source; source: specs/mcp-resource-publication-reconciliation/spec.md
ARBORA-MESSAGINGNo relationships declared; dependencies unknown
ARBORA-OPS

Unparsed reference declaration: [EG orchestration](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md), [EG durable kernel](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md), [EG query](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md), [EG media](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md), [SDK ingest](https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md).; source: specs/hosted-api-operations/plan.md

referencesEG durable kernelKnuckles-Team/epistemic-graph: external declaration; not verified; source: specs/hosted-api-operations/plan.md
ARBORA-OPS

Unparsed reference declaration: [EG orchestration](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md), [EG durable kernel](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md), [EG query](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md), [EG media](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md), [SDK ingest](https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md).; source: specs/hosted-api-operations/plan.md

referencesEG mediaKnuckles-Team/epistemic-graph: external declaration; not verified; source: specs/hosted-api-operations/plan.md
ARBORA-OPS

Unparsed reference declaration: [EG orchestration](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md), [EG durable kernel](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md), [EG query](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md), [EG media](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md), [SDK ingest](https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md).; source: specs/hosted-api-operations/plan.md

referencesEG orchestrationKnuckles-Team/epistemic-graph: external declaration; not verified; source: specs/hosted-api-operations/plan.md
ARBORA-OPS

Unparsed reference declaration: [EG orchestration](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md), [EG durable kernel](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md), [EG query](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md), [EG media](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md), [SDK ingest](https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md).; source: specs/hosted-api-operations/plan.md

referencesEG queryKnuckles-Team/epistemic-graph: external declaration; not verified; source: specs/hosted-api-operations/plan.md
ARBORA-OPS

Unparsed reference declaration: [EG orchestration](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md), [EG durable kernel](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md), [EG query](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md), [EG media](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md), [SDK ingest](https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md).; source: specs/hosted-api-operations/plan.md

referencesSDK ingestKnuckles-Team/agent-connector-sdk: external declaration; not verified; source: specs/hosted-api-operations/plan.md
ARBORA-OPS

Unparsed reference declaration: [EG orchestration](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md), [EG durable kernel](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md), [EG query](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md), [EG media](https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md), [SDK ingest](https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md).; source: specs/hosted-api-operations/plan.md

referencesA2A task projectionKnuckles-Team/arbora: file exists; coverage not verified; source: specs/hosted-api-operations/spec.md
ARBORA-RELEASEreferencesPortable deploymentKnuckles-Team/arbora: file exists; coverage not verified; source: specs/dependency-ordered-release/spec.md
ARBORA-RELEASEreferencespublic ingressKnuckles-Team/arbora: file exists; coverage not verified; source: specs/dependency-ordered-release/spec.md
G

Open issues and pull requests

open at capture

Issues

0 open at capture.

    Pull Requests

    1 open at capture.

    The build reads GitHub one time. This page makes no live API requests.

    J

    Record inventory

    860 records

    Each status file gives one spec row. Each requirement gives one more row. A record without a valid state shows INVALID. Expand a Definition to read the canonical requirement and verification text.

    All documented records (860 rows)
    ID / sourceKindParentStateCommit / test evidence
    ARBORA-A2A
    ARBORA-A2A — A2A projection, streaming, history and tool-subset admission
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R001
    A2A facade over the engine and agent services
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **A2A facade over the engine and agent services.** arbora implements A2A as a facade over the public graph-engine and agent-utilities services exposed through MCP and REST, starting with unary agent-card discovery and task send/get/list/cancel, then adding durable task streaming and resubscribe without a second task store. Split into `ARBORA-A2A-R001.1` (the resubscribe method-table slice) with the event-cursor-backed streaming fixture remaining open under the parent. | Proven by contract tests covering the unary task operations and a durable stream/resubscribe fixture.
    requirementARBORA-A2ASPECIFIEDa8ed61b538e7
    ARBORA-A2A-R001.1
    Fail-closed `tasks/resubscribe` stub on the A2A method table
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Fail-closed `tasks/resubscribe` stub on the A2A method table.** arbora registers `tasks/resubscribe` in the A2A JSON-RPC method table with typed, validated params, and refuses it with a distinct error until durable, restart-safe event-cursor-backed streaming exists — never silently succeeding, never reported as an unrecognized method. | Proven by a test asserting `tasks/resubscribe` validates params and is refused with a dedicated JSON-RPC error code distinct from "method not found".
    requirementARBORA-A2ALANDEDa8ed61b538e7
    d5bff77ba836
    ARBORA-A2A-R002
    Inbound task routing with caller-filtered tool exposure
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Inbound task routing with caller-filtered tool exposure.** arbora routes inbound A2A tasks through the existing agent orchestration port into engine-backed work items. Caller-filtered assembly selects the agent and its exposed tool subset. The caller sees only authorized tools. `ARBORA-A2A-R002.1` covers fail-closed refusal when assembly selects a tool subset. `ARBORA-A2A-R002.2` covers caller-filtered enforcement through the AU signed dispatch carrier. That child remains open under the parent. | Proven by integration tests asserting routed tasks map to durable work-item identities and exposed tool subsets match the caller's authorization.
    requirementARBORA-A2ASPECIFIED9a79acee8b6c
    ARBORA-A2A-R002.1
    Fail-closed refusal when assembly selects a tool subset
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Fail-closed refusal when assembly selects a tool subset.** arbora refuses `dispatch()` with a distinct error before durable admission when a routing decision selects a tool subset. The signed AU dispatch carrier cannot enforce an allowlist at execution time. | Proven by a test asserting dispatch raises `A2AAssemblyUnavailable` whenever `decision.selected_tools` is non-empty.
    requirementARBORA-A2AVERIFIEDdfe297e0466d
    tests/a2a/test_authority.py:26
    ARBORA-A2A-R002.2
    Caller-filtered tool-subset enforcement at dispatch
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Caller-filtered tool-subset enforcement at dispatch.** The signed AU agent-dispatch carrier accepts and enforces an allowed-tool subset end to end. The caller's exposed tools match its authorization at execution time. Split into `ARBORA-A2A-R002.2.1` (the owner-named AU dependency) because arbora has no public door to add this itself. | Proven by integration tests asserting an enforced tool subset at execution, not just an advisory list.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R002.2.1
    Owner-blocked: AU carried, enforced tool-subset field
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Owner-blocked: AU carried, enforced tool-subset field.** `agent_utilities.orchestration.agent_dispatch.AgentTurnEnvelope`/`enqueue_agent_turn` has no field or mechanism to carry and enforce a caller-filtered tool allowlist at execution time. arbora's `WorkItemA2AAuthority._enqueue`/`dispatch` (`arbora/a2a/authority.py`) already refuse every request carrying `decision.selected_tools` (`ARBORA-A2A-R002.1`) rather than pass through an unenforced allowlist. agent-utilities owns adding that carried, enforced field. Until an agent-utilities spec exists and lands it, `ARBORA-A2A-R002.2` cannot be implemented in this repository. | No arbora-side test is possible against the current AU carrier contract. Verified by the fail-closed tests bound to `ARBORA-A2A-R002.1` continuing to refuse rather than silently drop the filter. Tracked as the explicit cross-repo dependency recorded in `tasks.md`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R002.2.2
    Reference-bound single-tool task worker
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Reference-bound single-tool task worker.** Model: `ToolTaskRequest`, `ToolTaskResult`, `ToolTaskCarrier`, `ToolTaskDispatcher` and `WorkItemFence` in `arbora/a2a/tool_task.py`. The carrier holds the job ID, the content-addressed request reference, the tenant, the session and one allowed tool. The request holds canonical JSON parameters, never a prompt. Behavior: `run_tool_task` claims the admitted WorkItem through the EG coordination methods. It resolves the exact request through the dispatcher inside the lease. The request digest, tenant, session and single tool must match the carrier before execution starts. The dispatcher reauthorizes the original caller and uses the job ID as its durable idempotency key. A bound result commits its receipt reference under the claim. Wiring: `arbora.a2a` exports the worker. The queue consumer calls it for each verified tool-task carrier, and acknowledges the delivery only when `ToolTaskRun.acknowledge` is true. Refusal: A missing dispatcher, a changed request or a wrong tool refuses before execution and commits a failed result. Some outcomes are uncertain: an exception after execution starts, a result for another job or caller, and an indeterminate result. Each uncertain outcome leaves the WorkItem open and the delivery unacknowledged. An expired deadline starts no execution and leaves the item open for reconciliation. A lost lease stops the worker without a commit. A terminal item skips the delivery. The worker never repeats an uncertain effect. | `tests/a2a/test_tool_task.py` covers each committed outcome, each uncertain outcome and each refusal before execution. It also covers duplicate delivery, a claim held elsewhere, an expired deadline, a foreign carrier, lease loss and canonical requests.
    requirementARBORA-A2AVERIFIED663cc8cad940
    tests/a2a/test_tool_task.py:20
    ARBORA-A2A-R003
    No duplicate skill or prompt harvesting in the multiplexer
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **No duplicate skill or prompt harvesting in the multiplexer.** arbora removes the multiplexer's separate skill and prompt harvesting path so there is exactly one owner for tool, skill, and prompt discovery, with no duplicate ingestion path remaining in the running package. | Proven by a runtime absence check confirming no duplicate harvest path is present or reachable in the deployed package.
    requirementARBORA-A2AVERIFIED2cbed24252ec
    deb2b45bf83d
    tests/fleet/test_no_duplicate_skill_prompt_harvest.py:58
    ARBORA-A2A-R004
    Served MCP bridge runs FastMCP 4, matching its declared version
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Served MCP bridge runs FastMCP 4, matching its declared version.** arbora's deployed MCP bridge runs on FastMCP 4 end to end, including native WebMCP and a single composition loop, so the dependency version it declares matches the version actually serving requests. | Semantic tests run against the exact declared FastMCP and engine dependency versions. A live-deployment probe confirms the served version.
    requirementARBORA-A2AVERIFIEDd5bff77ba836
    d60b46fc6984
    tests/deployment/test_release_canary.py:31
    tests/deployment/test_release_canary.py:62
    tests/deployment/test_release_canary.py:81
    tests/deployment/test_release_canary.py:93
    ARBORA-A2A-R005
    Durable, fail-closed A2A approval exchange for tool calls
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Durable, fail-closed A2A approval exchange for tool calls.** arbora defines a human approval exchange for pending tool-call effects in the A2A contract. The task enters an input-required state. The effect requires a signed approval message bound to that specific pending call. Approval stays disabled until the full signed exchange is implemented and proven end to end. Until then, every approval attempt is rejected. Split into `ARBORA-A2A-R005.1` (the fail-closed `arbora.plan/confirm` stub) with `ARBORA-A2A-R005.2` (the full signed chain) remaining open under the parent. | Negative tests prove approval is refused while unimplemented. A later full-chain test covers request, signed approval and execution.
    requirementARBORA-A2ASPECIFIED9a79acee8b6c
    ARBORA-A2A-R005.1
    Fail-closed `arbora.plan/confirm` stub on the A2A method table
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Fail-closed `arbora.plan/confirm` stub on the A2A method table.** arbora registers `arbora.plan/confirm` in the A2A JSON-RPC method table with typed, validated params, and refuses every confirmation attempt with a distinct error until the full signed human approval exchange exists. | Proven by a test asserting `arbora.plan/confirm` validates params and is refused with a dedicated JSON-RPC error code distinct from "method not found".
    requirementARBORA-A2AVERIFIEDa226c8fdf397
    tests/a2a/test_application.py:274
    ARBORA-A2A-R005.2
    Full signed human approval chain and input-required task emission
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Full signed human approval chain and input-required task emission.** A pending effect moves its durable task to `input-required` with a typed, server-attested pending-call envelope, and an atomic compare-and-set consumes a revocable human grant exactly once before the effect runs. Split into `ARBORA-A2A-R005.2.1` (the durable, revocable human-grant store with atomic compare-and-set consumption) with the rest of the chain (input-required task emission wired to a live pending call, signature verification, and the full request-to-execution test) remaining open under this row. | Proven by a full chain test from request through signed approval to execution, and negative tests for replay, changed params, different human, and expired/revoked grant.
    requirementARBORA-A2ALANDEDcdde0200a54a
    ARBORA-A2A-R005.2.1
    Durable, revocable human-grant store with atomic compare-and-set consumption
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Durable, revocable human-grant store with atomic compare-and-set consumption.** No grant store exists anywhere in arbora today (confirmed by source search: no `GrantStore`/compare-and-set human-approval primitive is defined). `ARBORA-A2A-R005.2` cannot move a task to `input-required` and consume a grant exactly once until this store — issuance, lookup, and a single atomic consume-once operation keyed by pending-call id — is specified and built as its own component. | Proven by unit tests asserting a grant is consumed at most once under concurrent compare-and-set attempts, and that consuming an expired or revoked grant fails closed.
    requirementARBORA-A2ALANDEDcdde0200a54a
    ARBORA-A2A-R005.2.2
    Validate detached pending-call signatures without authorizing execution
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Validate detached pending-call signatures without authorizing execution.** Define a closed, frozen server-side binding over the existing plan, task and pending-call identities. Bind parent and child work items, original human, approver, grant identity/revision and expiry. Verify Ed25519 signatures over canonical bytes with a fixed domain/version. Keys and binding evidence never come from confirmation params. The existing confirmation refusal calls this boundary with absent evidence and stays unavailable. Signature validity alone cannot authorize execution. | Scoped tests prove real cryptographic validity and reject altered binding, foreign human, expiry and inactive grant snapshots. A route test proves missing authority still refuses. Snapshot tests do not prove replay prevention or atomic consumption. The full R005.2 chain stays open.
    requirementARBORA-A2AVERIFIEDc935d6686ef5
    tests/a2a/test_approval_signature.py:25
    ARBORA-A2A-R005.3
    Model
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Model.** `ToolActionAdmissionRequest` and `ToolActionApproval` are new frozen models in `arbora/a2a/tool_action_admission.py`. Extend `A2APlanConfirmParams` (`arbora/a2a/models.py:104`) as a closed discriminated union: `confirmation_kind=tool_action` carries this request; `confirmation_kind=held_item` carries HeldItemAdmissionRequest. Reject missing, unknown or mixed variants. The request carries `pending_call_id`, `params_digest`, `trust_mark_ref` and `action_class`. `action_class` is one of `egress`, `privileged_call` or `delegation`. The approval carries `verdict` (`admit` or `deny`), `approval_ref` and `decision_ref`. The engine produces the trust mark; arbora only carries its reference. | Proven by `tests/a2a/test_tool_action_admission.py::test_models_are_closed_and_frozen`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R005.4
    Behavior
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Behavior.** `ToolActionAdmitter.admit` makes one engine round trip and returns the engine's verdict unchanged. The named default `deny_without_verdict` applies only when the engine returns none. arbora holds no policy table and no threshold. The engine decides whether an action follows untrusted content. | Proven by `tests/a2a/test_tool_action_admission.py::test_admit_returns_engine_verdict_unchanged` and `::test_default_applies_only_without_verdict`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R005.5
    Wiring
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Wiring.** Replace the synchronous `_plan_confirm_stub` with one async confirm dispatcher over the closed confirmation_kind union; the tool_action branch awaits shared invoke with Surface.A2A, verified caller, signed authority and audit before `ToolActionAdmitter.admit`. The current stub is (`arbora/a2a/application.py:140`), registered at `arbora/a2a/application.py:154` and reached from `_invoke_method` (`arbora/a2a/application.py:157`) on `POST /a2a`. The harness check at `agent_utilities/security/tool_guard.py:383` calls it through this method and applies the returned approval. No production caller reaches an admission function today. | Proven by `tests/a2a/test_tool_action_admission.py::test_confirm_dispatch_reaches_admitter`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R005.6
    Refusal
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Refusal.** The admitter refuses with a typed `ToolActionRefusal` reason: `ENGINE_UNAVAILABLE`, `TRUST_MARK_MISSING`, `ACTION_CLASS_UNKNOWN`, `GRANT_STORE_UNAVAILABLE` or `ABSTAINED`. A refusal never reads as approval. The harness must treat every refusal as deny. Approval stays refused until the full ARBORA-A2A-R005.2 signed chain and ARBORA-A2A-R006.2 verified-caller bridge (including R006.2.1) pass: live input-required pending call, signature verification, exact params/human binding, one-time grant consumption, expiry and revocation checks. The grant store alone is insufficient. | Proven by `tests/a2a/test_tool_action_admission.py::test_each_refusal_reason_denies`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R005.7
    Evidence
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Evidence.** Every approval and refusal records `approval_ref`, `decision_ref`, `pending_call_id`, `action_class` and `params_digest` in the audit reservation of `ARBORA-A2A-R007`. No credential or parameter value appears in the record. | Proven by `tests/a2a/test_tool_action_admission.py::test_audit_entry_names_decision_without_values`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R005.8
    Hot-path proof
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Hot-path proof.** The entry point is the wire method `arbora.plan/confirm` over `POST /a2a`. A scripted engine returns admit, deny and abstain for one pending call per action class. The test observes the verdict in the response and one linked audit entry per call. It proves a refusal never lets the action proceed. | Proven by `tests/a2a/test_tool_action_admission_e2e.py::test_confirm_returns_engine_verdict_and_audit`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R006
    Operation invoke and plan-confirm methods for A2A
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Operation invoke and plan-confirm methods for A2A.** arbora implements arbora.op/invoke and arbora.plan/confirm as A2A methods registered in its method table, so invoking an operation and confirming its input-required approval use the same scope, policy, and error semantics as other hosted operations. Split into `ARBORA-A2A-R006.1` (both methods registered, fail-closed) with `ARBORA-A2A-R006.2` (the bridge to the shared hosted-operation registry) remaining open under the parent. | Proven by contract tests asserting invoke and confirm share identical authorization and error codes with the MCP and REST paths for the same operation.
    requirementARBORA-A2ASPECIFIED9a79acee8b6c
    ARBORA-A2A-R006.1
    Register `arbora.op/invoke` and `arbora.plan/confirm`, fail-closed
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Register `arbora.op/invoke` and `arbora.plan/confirm`, fail-closed.** Arbora registers both methods in the A2A JSON-RPC table. It validates typed params. Each method refuses with a distinct error until shared hosted-operation invocation is bridged on `Surface.A2A`. | Tests validate params for both methods and assert refusal with a dedicated JSON-RPC code. The code differs from “method not found”.
    requirementARBORA-A2AVERIFIEDcdde0200a54a
    tests/a2a/test_application.py:236
    tests/a2a/test_application.py:275
    ARBORA-A2A-R006.2
    Bridge `arbora.op/invoke` to the shared hosted-operation registry
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Bridge `arbora.op/invoke` to the shared hosted-operation registry.** Arbora must retain the request-bound verified caller and compose the shared InvokeServices into its A2A facade. Pass that caller to arbora.api.invoke.pipeline.invoke with Surface.A2A. Reuse the registered operation's scope, policy, effect, reservation, audit and error decisions. R006.2.1 owns the Arbora caller handoff. AU's existing GraphSession shape already supports the projection; no shape extension is required. Caller retention alone cannot establish the bridge. | Planned tests must enter the real /a2a route and compare read, write and fleet operations across A2A, MCP and HTTP. Verify operation-specific authorization and zero effects for refused requests.
    requirementARBORA-A2ASPECIFIEDcdde0200a54a
    tests/a2a/test_operation_bridge.py:34
    ARBORA-A2A-R006.2.1
    Preserve the verified caller through Arbora A2A authentication
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Preserve the verified caller through Arbora A2A authentication.** Model: Reuse AU's public GraphSession and Arbora VerifiedCaller projection. The existing session exposes actor, tenant and engine_verified_context. Behavior: Bind the resolved session to the current request's verified credential provenance and retain it through dispatch. Wiring: Extend AmbientA2AAuthenticator at `arbora/a2a/application.py:39` and reuse caller_from_session at `arbora/api/mcp/caller.py:12`. Refresh through verify_current_from_session at `arbora/api/invoke/bootstrap.py:99`. Refusal: Reject missing, stale, foreign-tenant or unsupported actor contexts before invocation. Do not relabel ai_agent or automated_service as human or service. Evidence: A synthetic human-session probe establishes shape compatibility only. It does not prove production authentication or invocation. | Planned `tests/a2a/test_verified_caller_bridge.py` must enter the real HTTP entry point. Cover request-bound credentials, refresh, actor/tenant preservation and each refusal. Assert zero authority or backend calls on refusal. Returning the caller alone cannot close R006.2.
    requirementARBORA-A2AVERIFIEDcdde0200a54a
    ARBORA-A2A-R006.2.1.1
    Wire request-bound caller retention and refresh
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Wire request-bound caller retention and refresh.** Retain the authenticated session in `arbora/a2a/application.py:39` and pass its caller through dispatch at application.py:225. Reuse caller_from_session and verify_current_from_session without changing AU's compatible return shape. Preserve actor, tenant and credential provenance. Reject unsupported actors, stale authority and mismatched request identity before downstream calls. | Planned `tests/a2a/test_verified_caller_bridge.py::test_http_retains_and_refreshes_verified_caller` must enter /a2a with request-bound credentials. It must preserve identity and make zero downstream calls for every refusal. Synthetic ambient compatibility alone cannot satisfy this child.
    requirementARBORA-A2AVERIFIED013c270081a9
    5fc890ade3ae
    b582a7584de6
    tests/a2a/test_request_session_authority.py:43
    ARBORA-A2A-R006.2.2
    Compose shared invocation into A2A
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Compose shared invocation into A2A.** Extend `arbora/a2a/mcp.py:15` and `arbora/mcp_server/composition.py:185` to supply shared InvokeServices through the production serving path. Pass the verified caller to arbora.api.invoke.pipeline.invoke with Surface.A2A. Use the actual registered operation's scopes and shared effect, reservation, audit and error decisions. Keep signed confirmation subject to R005.2. | Planned `tests/a2a/test_verified_caller_bridge.py::test_serving_composition_reaches_shared_invoke` must exercise read, write and fleet operations through the real entry point. Compare A2A, MCP and HTTP authorization/refusal behavior. Refused calls must cause zero effects. Returning a caller without composed services cannot satisfy this child.
    requirementARBORA-A2ASPECIFIEDtests/mcp_server/test_hosted_invocation.py:25
    ARBORA-A2A-R006.3
    Model
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Model.** `HeldItemAdmissionRequest` and `HeldItemVerdict` are new frozen models in `arbora/a2a/held_item_admission.py`. The request carries `item_kind` (`run_output_proposal` or `stored_run_program`), `item_ref`, `content_digest` and `engine_decision_ref`. The verdict carries `outcome` (`admitted`, `rejected` or `abstained`), `verdict_ref` and, for a program, `verification_ref`. The engine owns the held item and its stored form. [arXiv:2606.17929] | Proven by `tests/a2a/test_held_item_admission.py::test_models_are_closed_and_frozen`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R006.4
    Behavior
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Behavior.** `HeldItemAdmitter.admit` asks the engine for the verdict on a held item and returns it unchanged. For a stored program, it checks that the verification record names a verifier other than the compiler. It checks pass and retirement evidence against the engine-supplied policy and thresholds. Missing policy evidence or thresholds must refuse; Arbora has no local default count. arbora holds no policy of its own. [arXiv:2606.17929] | Proven by `tests/a2a/test_held_item_admission.py::test_program_needs_distinct_verifier_and_required_passes`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R006.5
    Wiring
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Wiring.** The held_item branch of the same async confirmation_kind dispatcher awaits shared invoke with Surface.A2A, signed authority and audit before `HeldItemAdmitter.admit`; it replaces the current synchronous `_plan_confirm_stub` (`arbora/a2a/application.py:140`), reached from `_invoke_method` (`arbora/a2a/application.py:157`). Wire a dedicated public engine held-item admission port through shared `arbora.api.invoke.pipeline.invoke` with the verified caller and `Surface.A2A`. Preserve the full signed approval prerequisites, scope/policy checks, pending-call/params/human binding, grant/plan fences, audit reservation and consume-once behavior; arbora keeps no local record. This port and adapter are new wiring. Do not call `approve_elevation` (`arbora/access/service.py:54`): it validates ElevationApproval and hardcodes OPERATOR_CONSOLE, which is a different authority surface. The harness moves its proposal approval from `agent_utilities/knowledge_graph/enrichment/writeback/approval.py:47`. No production caller reaches an admission function today. | Proven by `tests/a2a/test_held_item_admission.py::test_confirm_dispatch_reaches_held_item_admitter`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R006.6
    Refusal
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Refusal.** The admitter refuses with a typed reason: `ENGINE_UNAVAILABLE`, `ITEM_UNKNOWN`, `DIGEST_MISMATCH`, `VERIFIER_NOT_INDEPENDENT`, `PASSES_INSUFFICIENT`, `RETIRED`, `POLICY_EVIDENCE_MISSING` or `ABSTAINED`. A refusal leaves the item held. The harness must not apply a refused output or run a refused program. | Proven by `tests/a2a/test_held_item_admission.py::test_each_refusal_leaves_item_held`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R006.7
    Evidence
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Evidence.** Every verdict records `verdict_ref`, `item_kind`, `item_ref`, `content_digest` and `verification_ref` in the audit reservation of `ARBORA-A2A-R007`. A rejected item records its refusal reason. | Proven by `tests/a2a/test_held_item_admission.py::test_audit_entry_names_verdict_and_item`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R006.8
    Hot-path proof
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Hot-path proof.** The entry point is the wire method `arbora.plan/confirm` over `POST /a2a`. A scripted engine holds one run output and one stored program. The test observes an admitted verdict applied once through shared invoke with Surface.A2A, a rejected verdict leaving the item held, and the linked audit entry. It proves operator elevation is never called and replay, changed params, wrong human, expired/revoked grants and unavailable producer ports cannot apply an item. | Proven by `tests/a2a/test_held_item_admission_e2e.py::test_confirm_admits_or_rejects_held_item`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R007
    Pre-effect audit reservation for every governed write
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Pre-effect audit reservation for every governed write.** Before any governed write or administrative effect, arbora reserves a tenant-scoped, idempotent audit entry in a pending state, binds it to the verified calling service's claims, and links the entry to the effect's outcome once known. A request with no audit class or an unavailable durable audit writer is rejected before the effect runs. | Proven by negative tests asserting a missing audit class or unavailable writer blocks the effect, and a reconciliation test linking a pending reservation to its final outcome.
    requirementARBORA-A2AVERIFIED9a79acee8b6c
    c2a6ab839fd3
    tests/api/test_invoke_contract.py:435
    tests/api/test_invoke_governance.py:443
    ARBORA-A2A-R008
    First-party A2A facade, not a vendored wrapper
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **First-party A2A facade, not a vendored wrapper.** arbora implements the A2A protocol facade itself as first-party code over the public graph-engine and agent orchestration ports, rather than wrapping or depending on an external vendored A2A implementation. | Proven by a source-level dependency check confirming the A2A facade is implemented in this repository against the public ports.
    requirementARBORA-A2AVERIFIEDd5bff77ba836
    tests/a2a/test_first_party_facade.py:53
    tests/a2a/test_first_party_facade.py:68
    tests/a2a/test_first_party_facade.py:86
    ARBORA-A2A-R009
    Advertise only what is wired
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Advertise only what is wired.** arbora's Agent Card sets `capabilities.streaming`, `capabilities.pushNotifications`, and `capabilities.stateTransitionHistory` true only when a real durable authority object implementing the matching protocol (`A2AStreamingAuthority`, `A2APushNotificationAuthority`, `A2ATransitionHistoryAuthority`) is wired into the running composition; no flag or partial authority can force a field true. Split into `ARBORA-A2A-R009.1` (the typed capability-advertisement model, landed in this PR). | Proven by unit tests over `A2AAgentCapabilities.from_wired_authorities` asserting default-false, per-authority true, and a `TypeError` refusal on a non-conforming object.
    requirementARBORA-A2AVERIFIED35257e780f7c
    tests/a2a/test_models.py:38
    tests/a2a/test_models.py:47
    tests/a2a/test_models.py:56
    tests/a2a/test_models.py:67
    tests/a2a/test_models.py:88
    ARBORA-A2A-R009.1
    Typed Agent Card capability-advertisement model
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Typed Agent Card capability-advertisement model.** arbora defines `A2AAgentCapabilities.from_wired_authorities` plus `A2AStreamingAuthority`/`A2APushNotificationAuthority`/`A2ATransitionHistoryAuthority` runtime-checkable protocols in `arbora/a2a/models.py`, so a capability field is derived from whether a conforming authority object was supplied, never from a bare boolean. | Proven by `tests/a2a/test_models.py` covering default-false, selective true, all-true, and refusal on a non-conforming authority.
    requirementARBORA-A2AVERIFIED35257e780f7c
    tests/a2a/test_models.py:39
    tests/a2a/test_models.py:48
    tests/a2a/test_models.py:57
    tests/a2a/test_models.py:68
    tests/a2a/test_models.py:89
    ARBORA-A2A-R010
    WorkItem stream projection, not a shadow log
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **WorkItem stream projection, not a shadow log.** Arbora must project status, step and terminal events through AU's public task-event reader. The exact producer requirement ID and durable task/tenant reader export remain unassigned in the current AU contracts. Define that owner contract before wiring message/stream, tasks/resubscribe or push delivery. Store no independent event-log copy. A missing, stale or unavailable projection must return typed UNAVAILABLE. Never backfill it from local state. | Future served integration must read real durable AU/EG events, enforce task and tenant scope, and resume after restart. Scripted fixtures alone cannot establish the missing producer or durable replay. Preserve all existing ordering, gap and zero-fabrication cases.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R011
    Transition history is read-through to epistemic-graph
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Transition history is read-through to epistemic-graph.** arbora's `tasks/get` history path reads a task's full state-transition ledger through to epistemic-graph's durable kernel (`EG-DURABLE-KERNEL`) with no local reconstruction. | Proven by a contract test against a scripted EG durable-kernel fixture asserting the returned history exactly matches the fixture ledger.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R012
    Typed refusal when the durable history authority is absent
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Typed refusal when the durable history authority is absent.** When no `A2ATransitionHistoryAuthority` is wired or the wired authority is unreachable, arbora returns a distinct JSON-RPC error `A2ATransitionHistoryUnavailable` with a privacy-safe message, never an empty or partially reconstructed history. | Proven by a negative test asserting the distinct error code and message shape, and that no history data is returned.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R012.1
    Landed: the protocol exists, the error does not
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Landed: the protocol exists, the error does not.** `arbora/a2a/models.py` defines the `A2ATransitionHistoryAuthority` runtime-checkable protocol (`ARBORA-A2A-R009.1`); no `A2ATransitionHistoryUnavailable` error type exists and `tasks/get` has no history-refusal wiring. | Proven today by `tests/a2a/test_models.py`; confirmed absent by `git grep -n A2ATransitionHistoryUnavailable arbora/ tests/`.
    requirementARBORA-A2AVERIFIED35257e780f7c
    tests/a2a/test_models.py:97
    ARBORA-A2A-R012.2
    Add the `A2ATransitionHistoryUnavailable` error type
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Add the `A2ATransitionHistoryUnavailable` error type.** Add `A2ATransitionHistoryUnavailable(RuntimeError)` to `arbora/a2a/authority.py`, mirroring the existing `A2AStreamingUnavailable` sibling-error docstring pattern (`-3201x` block). | A new test in `tests/a2a/` asserts the class exists, subclasses `RuntimeError`, and is exported from `arbora/a2a/authority.py.__all__`.
    requirementARBORA-A2AVERIFIED35257e780f7c
    tests/a2a/test_authority.py:51
    ARBORA-A2A-R012.3
    Blocked: wire `tasks/get`'s typed refusal
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Blocked: wire `tasks/get`'s typed refusal.** Wire `tasks/get` to raise `A2ATransitionHistoryUnavailable` when no `A2ATransitionHistoryAuthority` is wired or the wired authority raises on call, per test-spec row `A2A-HT06`. Blocked on `ARBORA-A2A` landing (`ARBORA-A2A-R014`), since the real history read-through this wires against does not exist until then. | `A2A-HT06` in `test-spec.md` passes once unblocked. Tracked here as the explicit cross-dependency rather than left implicit.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R013
    Push notifications are best-effort over a durable outbox
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Push notifications are best-effort over a durable outbox.** arbora retries push delivery from epistemic-graph's durable outbox (`EG-DURABLE-KERNEL-R001`), never an in-process queue; a repeatedly failing target is dead-lettered and reported. | Proven by a restart test asserting pending pushes survive process restart via the outbox, and a repeated-failure test asserting dead-letter reporting.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R014
    No capability advertised before ARBORA-A2A lands
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **No capability advertised before ARBORA-A2A lands.** Until `ARBORA-A2A`'s context-budget subset is on the default branch, arbora's composition layer refuses to wire a real streaming/push/history authority, keeping all three capability fields fixed false. | Proven by a composition-layer test asserting authority wiring is refused (or absent) while the `ARBORA-A2A` dependency flag is unset.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R014.1
    Card advertises no harness capability before it works
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Card advertises no harness capability before it works.** The Agent Card (`A2AAgentCapabilities`, `arbora/a2a/models.py:167`) must not carry any harness-admission field or extension until `ARBORA-A2A-R017.6` passes on the default branch. | Proven by `tests/a2a/test_agent_card.py::test_card_has_no_harness_field_before_admission_e2e`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R015
    Caller-visible card matches served behavior
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Caller-visible card matches served behavior.** A contract test asserts the Agent Card's advertised capability subset exactly matches which of streaming/push/history the integration fixture actually exercises at the tested revision. | Proven by a contract test comparing advertised capabilities against the fixture's exercised capability set at the exact tested revision.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R016
    Typed admission request/decision model
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Typed admission request/decision model.** Arbora defines a typed `ToolSubsetAdmissionRequest` (selected agent graph reference, caller context budget) and `ToolSubsetAdmissionDecision` (admitted flag, admitted tool subset, typed refusal reason, provenance) at the A2A admission door. Split into `ARBORA-A2A-R016.1` (the model plus a refusal test proving today's exact fail-closed result), with live EG/AU wiring remaining open under the parent. | Proven by a unit test constructing both models and exercising the admission function's current fail-closed return.
    requirementARBORA-A2ASPECIFIED35257e780f7c
    tests/a2a/test_admission.py:15
    ARBORA-A2A-R016.1
    Fail-closed admission function proven against today's unavailable upstreams
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Fail-closed admission function proven against today's unavailable upstreams.** Arbora's `admit_tool_subset` function accepts a typed `ToolSubsetAdmissionRequest` and returns a typed `ToolSubsetAdmissionDecision` refusing every request with `admitted=False`, no admitted tools, reason `EG_ASSEMBLE_UNAVAILABLE`, and a provenance reference naming the unavailable EG operation — never silently succeeding, never an unrecognized/untyped error. | Proven by a test asserting the exact refusal fields for a representative request while EG `AgentAssemble` and AU's envelope field remain unavailable.
    requirementARBORA-A2AVERIFIED35257e780f7c
    tests/a2a/test_admission.py:16
    ARBORA-A2A-R016.2
    Admission request carries model profile and task class
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Admission request carries model profile and task class.** `ToolSubsetAdmissionRequest` in `arbora/a2a/admission.py` gains `model_profile_ref` and `task_class`, both non-empty strings. Arbora takes both from the routed capability, never from the caller. | Proven by `tests/a2a/test_admission.py::test_request_requires_model_profile_and_task_class`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R016.3
    Admission decision carries the committed harness answer
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Admission decision carries the committed harness answer.** `ToolSubsetAdmissionDecision` gains `harness_config`, a typed mirror of the engine `HarnessConfigAnswer`, and `context_budget_tokens`. An admitted decision must carry both. A refused decision must carry neither. | Proven by `tests/a2a/test_admission.py::test_admitted_decision_carries_harness_config_and_budget`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R016.4
    Refusal enum gains the harness reasons
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Refusal enum gains the harness reasons.** `ToolSubsetAdmissionRefusalReason` gains `HARNESS_CONFIG_UNAVAILABLE`, `HARNESS_CONFIG_ABSTAINED`, `ENVELOPE_LACKS_HARNESS_CONFIG`, and `CONTEXT_BUDGET_MISSING`. Arbora holds no policy table and no default threshold. | Proven by `tests/a2a/test_admission.py::test_refusal_reasons_are_closed_set`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R016.5
    Routing decision carries model profile and task class
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Routing decision carries model profile and task class.** `A2ARouteDecision` in `arbora/a2a/routing.py` gains `model_profile_ref` and `task_class`, read from the `resolve_capability` result at `arbora/a2a/routing.py:61`. A result lacking either field must raise `A2AAssemblyUnavailable`. | Proven by `tests/a2a/test_routing.py::test_route_decision_carries_model_profile_and_task_class`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017
    Context-budget-bound subset sourced from EG assembly
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Context-budget-bound subset sourced from EG assembly.** The admission door derives an admitted tool subset only from a committed epistemic-graph `AgentAssemble` answer (`EG-DECISION-ENGINE-R036`) covering the selected agent graph within the caller's context budget; while that operation returns unavailable, admission refuses closed with reason `EG_ASSEMBLE_UNAVAILABLE`. | Proven by integration tests against a scripted EG assembly client covering an available committed answer and an unavailable/abstained answer.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017.1
    Engine decision port for HarnessConfig
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Engine decision port for HarnessConfig.** `arbora/a2a/admission.py` defines the `HarnessConfigDecider` protocol with one async method. The method takes tenant, model profile reference, task class, budget tokens, and priority. It returns the engine `HarnessConfigAnswer` (EG-DECISION-ENGINE row for the `HarnessConfig` question). | Proven by `tests/a2a/test_admission.py::test_decider_port_returns_typed_answer`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017.2
    Admission is async and calls the decider once
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Admission is async and calls the decider once.** `admit_tool_subset` becomes `async` and takes the decider as an argument. It makes exactly one engine round trip and reads the allowed tool subset from the answer's `action_space`. It makes no separate `AgentAssemble` call. | Proven by `tests/a2a/test_admission.py::test_admission_makes_one_engine_call`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017.3
    Priority comes from the principal class
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Priority comes from the principal class.** The admission request carries `priority`, set from the authenticated principal class through the engine contract's priority enum. The caller must not supply it. | Proven by `tests/a2a/test_admission.py::test_priority_is_set_from_principal_class`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017.4
    Missing budget refuses
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Missing budget refuses.** When `context_budget_tokens` is null or below 1, admission refuses with `CONTEXT_BUDGET_MISSING` before it calls the engine. | Proven by `tests/a2a/test_admission.py::test_missing_budget_refuses_before_engine_call`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017.5
    Wire admission into the send path
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Wire admission into the send path.** `A2AService.send_message` (`arbora/a2a/service.py:40`) calls `admit_tool_subset` after `router.route`. The call replaces the inline raises at `arbora/a2a/routing.py:74`, `arbora/a2a/authority.py:268`, and `arbora/a2a/authority.py:299`. | Proven by `tests/a2a/test_service_admission.py::test_send_message_refuses_without_admission`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R017.6
    End-to-end admitted task
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **End-to-end admitted task.** A scripted decider and a signing envelope fake drive `POST /a2a` `message/send` (`arbora/a2a/application.py:166`). The test asserts one enqueued envelope whose `harness_config` equals the scripted answer. | Proven by `tests/a2a/test_admission_e2e.py::test_message_send_enqueues_envelope_with_harness_config`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R018
    Cryptographic enforcement via the signed AU envelope
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Cryptographic enforcement via the signed AU envelope.** An admitted tool subset is carried only inside the signed AU `AgentTurnEnvelope`'s allowed-tool-subset field (`AU-CONTROL-R035`); while that field does not exist in the signed envelope, admission refuses closed with reason `ENVELOPE_LACKS_ALLOWED_TOOL_SUBSET` even given an EG assembly answer. | Proven by a test asserting a request refuses with this reason when the EG answer exists but the envelope carries no allowed-tool-subset field, and admits only once the signed field is present and its signature verified.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R018.1
    Envelope carries harness_config
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Envelope carries harness_config.** `WorkItemA2AAuthority._enqueue` (`arbora/a2a/authority.py:256`) passes the admitted `harness_config` into `AgentTurnEnvelope` next to the allowed tool subset. It depends on the AU-CONTROL row for the envelope `harness_config` field. | Proven by `tests/a2a/test_authority_envelope.py::test_enqueue_passes_harness_config`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R018.2
    Envelope without the field refuses
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Envelope without the field refuses.** When `AgentTurnEnvelope.model_fields` lacks `harness_config`, admission refuses with `ENVELOPE_LACKS_HARNESS_CONFIG`, even given a committed engine answer. | Proven by `tests/a2a/test_admission.py::test_envelope_lacking_harness_config_refuses`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R019
    Typed refusal reason and provenance on every decision
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Typed refusal reason and provenance on every decision.** Every `ToolSubsetAdmissionDecision`, admitted or refused, carries a stable machine-readable field sufficient to audit exactly which upstream answer authorized or blocked it. | Proven by a schema test asserting every decision instance has a non-empty `provenance` and, when refused, a `refusal_reason` drawn from the typed enumeration.
    requirementARBORA-A2ASPECIFIED35257e780f7c
    tests/a2a/test_admission.py:34
    ARBORA-A2A-R019.1
    Provenance names the harness decision
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Provenance names the harness decision.** An admitted decision's `provenance` names the engine decision record identifier of the `HarnessConfig` answer. A refused decision names the refusing operation. | Proven by `tests/a2a/test_admission.py::test_provenance_names_harness_decision_record`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R020
    No advisory, cached, or partial substitute
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **No advisory, cached, or partial substitute.** The admission door never returns a tool subset that is advisory-only, drawn from a prior request's cached answer, or a partial/best-effort coverage of the selected agent graph; an incomplete upstream answer is a refusal, not a smaller admission. | Proven by negative tests asserting a partial or stale upstream answer produces a refusal, never a trimmed admission.
    requirementARBORA-A2ASPECIFIED35257e780f7c
    tests/a2a/test_admission.py:53
    ARBORA-A2A-R020.1
    Abstention refuses and records the named default
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Abstention refuses and records the named default.** When the engine answer is a typed abstention, admission refuses with `HARNESS_CONFIG_ABSTAINED`. The decision records the abstention's named default in `provenance`. It must not apply that default. | Proven by `tests/a2a/test_admission.py::test_abstention_refuses_and_does_not_apply_default`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R020.2
    Unavailable, stale, or partial answers refuse
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Unavailable, stale, or partial answers refuse.** An unreachable engine, an expired decision record, or an answer missing a threshold under a summarizing policy refuses with `HARNESS_CONFIG_UNAVAILABLE`. | Proven by `tests/a2a/test_admission.py::test_unavailable_stale_or_partial_harness_answer_refuses`.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R021
    Fresh checkout
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Fresh checkout.** Contract and unit tests for the admission model and its refusal behavior run with published packages and no private network, sibling checkout, or live production identity provider. | Proven by running the admission test suite from a clean public clone with no additional configuration.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R022
    Critique-gated output release
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Critique-gated output release.** Require the owning AU runtime's typed checklist and questions. Bind the EG critique verdict to the exact generated output. Before release, apply the held-item contract in `ARBORA-A2A-R006.3` through `ARBORA-A2A-R006.8`. Preserve the verified-caller prerequisite in `ARBORA-A2A-R006.2.1` and signed-authority prerequisites in `ARBORA-A2A-R006.5`. Gate output at `arbora/a2a/application.py:_send_message`. Keep this separate from `arbora/a2a/routing.py:OrchestratorA2ARouter.route`; routing selects an agent and cannot satisfy critique acceptance. Keep release unavailable until the AU and EG producer contracts are published. Add no second approval authority. | Future acceptance: `tests/a2a/test_application.py::test_send_message_holds_output_until_bound_critique_passes` and `tests/a2a/test_application.py::test_send_message_rejects_untyped_preflight_and_failed_critique`. Exercise a verified caller through held-item admission. Bind the verdict to the exact output. Missing, mismatched, rejected, or abstained evidence leaves the item held and sends no output. Prove routing alone cannot satisfy critique acceptance. These tests are proposed; no execution is claimed.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R001.2
    AU:21 Arbora definition slice
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **AU:21 Arbora definition slice.** AU:21 cross-owner slice. Residual: The complete agent-run checkpoint payload and cross-process resume binding are not defined by a WorkItem lifecycle test. Short-term versus long-term memory lifecycle/retention and resumed-output binding to that run/memory state remain unspecified. Arbora minimum action: Retain partial; preserve existing host streaming IDs. Define EG durable checkpoint/memory state and retention, plus AU resume application. Also define exact host stream cursor/run-state binding with explicit dependency edges. Do not replace the existing streaming definition with a new rollup. Producer/consumer boundary: EG WorkItem lifecycle and isolation -> AU run execution -> existing ARBORA-A2A-R001/ARBORA-OPS-R001 streaming facade. The reviewed packet has no explicit dependency joining a complete run-checkpoint/memory contract to the resume and stream consumers. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `EG-DURABLE-KERNEL-R028, EG-IDENTITY-R006, ARBORA-A2A-R001, ARBORA-A2A-R001.1, ARBORA-OPS-R001`. Source record SHA-256: `d89bb9c69e2fdef6a5c3fd428ede3f91868539056c2b949700867d8d8087d1e7`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-external-eg01-06-20261012.json, epistemic-graph/specs/durable-graph-kernel/requirements.md:57#sha256=66e1226b2a189a06b745726076e2d9488ff11c39f37cf8d92771a2b1f7fe397a, epistemic-graph/specs/engine-identity-and-scope/requirements.md:10#sha256=391f0652a4ce4948ee2c627bf4a7b4c4c401856d04486b1d06868d4249bb78c8, arbora/specs/a2a/requirements.md:5#sha256=e00c4e341cbd5b772d17844fed798d0443604bdf4f03f763a368e5978e136714, arbora/specs/a2a/requirements.md:6#sha256=e1a365736468ee13707d0e1498b3508136c7e9564b5116f60db91bcf80a705c1, arbora/specs/hosted-api-operations/requirements.md:5#sha256=38fdae1cb2880fed7da4fba36e88e037022d0ba22cec18619c095e6c3d1d63fb`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/13`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `EG-DURABLE-KERNEL-R028, EG-IDENTITY-R006, ARBORA-A2A-R001, ARBORA-A2A-R001.1, ARBORA-OPS-R001`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-external-eg01-06-20261012.json, epistemic-graph/specs/durable-graph-kernel/requirements.md:57#sha256=66e1226b2a189a06b745726076e2d9488ff11c39f37cf8d92771a2b1f7fe397a, epistemic-graph/specs/engine-identity-and-scope/requirements.md:10#sha256=391f0652a4ce4948ee2c627bf4a7b4c4c401856d04486b1d06868d4249bb78c8, arbora/specs/a2a/requirements.md:5#sha256=e00c4e341cbd5b772d17844fed798d0443604bdf4f03f763a368e5978e136714, arbora/specs/a2a/requirements.md:6#sha256=e1a365736468ee13707d0e1498b3508136c7e9564b5116f60db91bcf80a705c1, arbora/specs/hosted-api-operations/requirements.md:5#sha256=38fdae1cb2880fed7da4fba36e88e037022d0ba22cec18619c095e6c3d1d63fb`. This definition does not assert these tests have run.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R010.1
    Opt-in committed terminal point read
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Opt-in committed terminal point read.** `tasks/get` and the shared MCP get action may request `includeCommittedEvent`. After existing task ownership admission, read AU RunClient.outcome through the current verified graph session. Validate the EG terminal record against tenant, graph, task and terminal outcome; revalidate caller authority after the read. Project only safe committed identity and result references. Missing or legacy producer data is explicitly unavailable. Never enable streaming, fabricate cursors or copy an event log. | Tests exercise shared service and HTTP parameter dispatch, valid readback, foreign bindings, stale caller, malformed producer records and zero reads for unauthorized tasks. Real native producer acceptance remains EG-DURABLE-KERNEL-R028.2; full lifecycle streaming stays under R010.
    requirementARBORA-A2ASPECIFIEDtests/a2a/test_terminal_event.py:59
    ARBORA-A2A-R001.3
    Served agent keeps and lists caller conversations
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Served agent keeps and lists caller conversations.** The served A2A application that `mount_sdk_a2a` builds in `arbora/host_bindings.py` keeps tasks and context history in an `InMemoryStorage`, and it does not serve `tasks/list`. A restart loses every conversation, and no client can list one. The served agent must store tasks and context history in the durable task store of the parent row. It must serve `tasks/list` filtered to the verified caller, newest first, with each context's identifier, title and last update. A `contextId` sent after a restart must continue that context. | A served-app test restarts the application between two turns of one context. The second turn must see the first. `tasks/list` must return only the caller's contexts, and a foreign `contextId` must be refused.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R001.4
    Served agent streams turn events or refuses streaming by type
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Served agent streams turn events or refuses streaming by type.** The served agent advertises `capabilities.streaming: false`. It answers `message/stream` with HTTP 500, because fasta2a raises `NotImplementedError`. Until streaming is served, `message/stream` and `tasks/resubscribe` must return the typed JSON-RPC refusal of `ARBORA-A2A-R001.1`. When streaming is served, `message/stream` must emit answer text deltas, each tool call with its name and arguments, each tool result, and the final state as A2A events. The card must then advertise `streaming: true`. | A served-app test expects the typed refusal, not HTTP 500, while streaming is unserved. A streaming fixture must observe text deltas, a tool call, its result and the final state in order.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R001.5
    Served agent accepts file parts
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Served agent accepts file parts.** The served agent must accept A2A `file` parts, which carry an image or text file as bytes with a media type, up to a configured size. It must pass them to the agent as model input. An oversized or unsupported part must be refused by type before any task is created. | A served-app test sends a PNG part and observes it in the agent's model input. An oversized part must create zero tasks.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-A2A-R016.6
    Caller model preference
    Definition — ARBORA-A2A / ARBORA-A2A — A2A projection, streaming, history and tool-subset admissionCanonical requirement and verification source
    **Caller model preference.** A caller may name a preferred model profile in message metadata as `arboraModelProfile`. Arbora decides the model. The routing decision of `ARBORA-A2A-R016.5` uses the preferred profile only when the routed capability allows it. Otherwise it uses the routed profile and records that the preference was not honoured. The task metadata must name the profile used. A read-only `models.list` operation must list the profiles the caller may prefer, with display name and provider. | Routing tests cover an allowed preference, a disallowed preference and an absent preference. An operation test must list only the caller's allowed profiles.
    requirementARBORA-A2ASPECIFIEDNo recorded commit/test evidence
    ARBORA-ACCEPTANCE
    ARBORA-ACCEPTANCE — evidence acceptance freeze
    specNoneLANDEDNo recorded commit/test evidence
    ARBORA-ACCEPTANCE-R001
    Typed acceptance-evidence model and freeze-gap checker
    Definition — ARBORA-ACCEPTANCE / ARBORA-ACCEPTANCE — evidence acceptance freezeCanonical requirement and verification source
    **Typed acceptance-evidence model and freeze-gap checker.** Arbora ships a typed model of the three evidence kinds a requirement needs for `ACCEPTED` (`merged_head`, `test`, and operational `consumer`/`release`, all at the same commit) and a checker that, given a spec's `status.json`, lists every `LANDED`/`CLOSED` requirement missing one or more of those kinds at its `merged_head` commit. | A unit test against a fixture `status.json` asserts the checker reports exactly the gapped requirement IDs with their missing evidence kind names, and a refusal test asserts a malformed or missing `status.json` raises rather than reporting a false pass.
    requirementARBORA-ACCEPTANCELANDEDa5951682d6da
    f62a4e2e39ed
    tests/test_check_acceptance_evidence.py:137
    tests/test_check_acceptance_evidence.py:83
    ARBORA-ACCEPTANCE-R001.1
    implement the typed EvidenceRecord/RequirementGap model and gaps_for_status/load_status functions plus the standalone CLI entry point in scripts/check_acceptanc
    Definition — ARBORA-ACCEPTANCE / ARBORA-ACCEPTANCE — evidence acceptance freezeCanonical requirement and verification source
    **implement the typed EvidenceRecord/RequirementGap model and gaps_for_status/load_status functions plus the standalone CLI entry point in scripts/check_acceptanc.** Child slice of `ARBORA-ACCEPTANCE-R001` (see tasks.md). | A unit test against a fixture status.json asserts the checker reports exactly the gapped requirement IDs with their missing evidence kind names, and a refusal test asserts a malformed or missing status.json raises rather than reporting a false pass
    requirementARBORA-ACCEPTANCELANDED57cb99978975
    ARBORA-ACCEPTANCE-R002
    Auditor distinct from delivery lane
    Definition — ARBORA-ACCEPTANCE / ARBORA-ACCEPTANCE — evidence acceptance freezeCanonical requirement and verification source
    **Auditor distinct from delivery lane.** A requirement's `acceptance_state` moves from `NOT_AUDITED` to `ACCEPTED` only in a change where the reviewing identity differs from the author of the `merged_head` commit it cites, and only after `ARBORA-ACCEPTANCE-R001`'s checker reports no gap for that requirement. | A review-trail test over a sample `status.json` edit asserts the recorded auditor identity differs from the cited commit's author, and that the checker was run (or its report attached) before the state flip.
    requirementARBORA-ACCEPTANCEVERIFIEDa5951682d6da
    f62a4e2e39ed
    tests/test_check_acceptance_evidence.py:179
    tests/test_check_acceptance_evidence.py:192
    tests/test_check_acceptance_evidence.py:205
    ARBORA-ACCEPTANCE-R003
    Evidence is append-only
    Definition — ARBORA-ACCEPTANCE / ARBORA-ACCEPTANCE — evidence acceptance freezeCanonical requirement and verification source
    **Evidence is append-only.** Once an evidence entry is recorded for a requirement, its `kind`, `commit`, `result`, and `url` fields are never rewritten in place; a correction is a new appended entry, and the checker only honors entries matching the requirement's current `merged_head` commit. | A regression test diffs two revisions of the same `status.json` and fails if any existing evidence entry's fields changed rather than a new entry being appended.
    requirementARBORA-ACCEPTANCEVERIFIEDa5951682d6da
    f62a4e2e39ed
    tests/test_check_acceptance_evidence.py:216
    tests/test_check_acceptance_evidence.py:224
    ARBORA-ACCEPTANCE-R004
    Operational evidence tracks the current commit, not a stale one
    Definition — ARBORA-ACCEPTANCE / ARBORA-ACCEPTANCE — evidence acceptance freezeCanonical requirement and verification source
    **Operational evidence tracks the current commit, not a stale one.** A `consumer` or `release` receipt satisfies the `ACCEPTED` gate only when recorded against the requirement's current `merged_head` commit; a receipt recorded against a superseded commit is treated as missing. | A fixture test moves a requirement's `merged_head` forward without a fresh operational receipt and asserts the checker reports the operational-evidence kind as missing again.
    requirementARBORA-ACCEPTANCEVERIFIEDa5951682d6da
    f62a4e2e39ed
    tests/test_check_acceptance_evidence.py:99
    ARBORA-ACCEPTANCE-R005
    Checker is the only path to an `ACCEPTED` report
    Definition — ARBORA-ACCEPTANCE / ARBORA-ACCEPTANCE — evidence acceptance freezeCanonical requirement and verification source
    **Checker is the only path to an `ACCEPTED` report.** The acceptance-evidence checker is runnable standalone (as a script or an importable module) against any spec directory under `specs/`, producing a deterministic, machine-parseable gap report with no network or live-cluster dependency. | A CLI invocation test runs the checker against each tracked spec's `status.json` offline and asserts exit code and report shape are deterministic across two consecutive runs.
    requirementARBORA-ACCEPTANCEVERIFIEDa5951682d6da
    f62a4e2e39ed
    tests/test_check_acceptance_evidence.py:232
    ARBORA-CAPACITY
    ARBORA-CAPACITY — Adaptive capacity control
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-CAPACITY-R001
    AIMD error-budget throttling that only narrows automatically (rollup)
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **AIMD error-budget throttling that only narrows automatically (rollup).** arbora observes a bounded error budget per tenant, child, and operation class and applies additive-increase/multiplicative-decrease throttling against the graph engine's declared capacity cell limit. An automatic control action may only narrow the allowed concurrency, never raise it above that ceiling, and every decision is recorded with its input window, old and new limits, and reason. Delivered through its child requirements, producer first. | Proven by a deterministic fixture test demonstrating decrease on budget breach, bounded recovery, and an idempotent decision receipt for a replayed window.
    requirementARBORA-CAPACITYSPECIFIEDd2f29725918d
    ARBORA-CAPACITY-R001.1
    Pure partitioned AIMD decision rule
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Pure partitioned AIMD decision rule.** `arbora/fleet/error_budget.py` defines typed `Partition`, `OutcomeSample`, `BudgetWindow`, `AimdConfig`, `ThrottleMode` and `ThrottleDecision`, and a pure `decide()` function that computes the next concurrency limit from a closed window and the controller's prior state: eligible service failures (not caller errors or policy denials) drive the error fraction, breach multiplicatively decreases bounded by a floor, a healthy window additively increases bounded by the engine/policy ceiling, and replaying the same window is idempotent. No clock, I/O or fleet dispatch wiring. | `tests/fleet/test_error_budget.py` covers bounded recovery, multiplicative decrease, the floor and engine-headroom ceiling, caller-error/policy-denial neutrality, insufficient-sample handling, idempotent replay, and tenant/child partition isolation.
    requirementARBORA-CAPACITYVERIFIED69d6f6eef5ea
    c46a1ded6a8f
    d2f29725918d
    tests/fleet/test_error_budget.py:28
    ARBORA-CAPACITY-R002
    Capacity status and mode operations
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Capacity status and mode operations.** arbora exposes capacity operations in arbora/api/ops/capacity.py and a read/config facade in arbora/fleet/throttle_service.py that report controller status, update cell limits, report throttle state, and select observe or enforce mode per child, using the same hosted-operation registry, identity, and error handling as other operations. | Proven by contract tests asserting a mode change requires verified administrator authorization while capacity:read permits status only.
    requirementARBORA-CAPACITYVERIFIED69d6f6eef5ea
    c46a1ded6a8f
    tests/api/test_capacity_ops.py:26
    ARBORA-CAPACITY-R001.2
    AU:26 Arbora definition slice
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **AU:26 Arbora definition slice.** AU:26 cross-owner slice. Residual: Per-run error frequency over a declared window is not the host tenant/child/operation partition. No joint latency/cost/error-driven model-and-width adjustment contract records each before/after model, width, budget and rationale on that run. Arbora minimum action: Extend the existing EG routing/continuation contract with the joint per-run observation window and adjustment receipt. Bind AU observations and trace application. Preserve host ceiling and narrow-only enforcement. Producer/consumer boundary: AU ObservedCost routing.py -> EG routing; AU continuation.py narrows and releases capacity. Arbora error_budget.decide computes partitioned AIMD. These separate paths have no reviewed joint per-run adjustment producer/consumer contract. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `AU-HARNESS-R007, AU-CONTROL-R006, AU-CONTROL-R006.1, AU-CONTROL-R019, EG-ORCH-VOCAB-R009, EG-ORCH-VOCAB-R009.1, EG-ORCH-VOCAB-R009.2, EG-ORCH-VOCAB-R009.3, EG-ORCH-VOCAB-R009.4, EG-ORCH-VOCAB-R009.5, EG-ORCH-VOCAB-R009.6, EG-ORCH-VOCAB-R009.7, EG-ORCH-VOCAB-R009.8, EG-ORCH-VOCAB-R009.9, EG-ORCH-VOCAB-R009.10, EG-ORCH-VOCAB-R009.11, EG-ORCH-VOCAB-R009.12, EG-ORCH-VOCAB-R009.13, EG-ORCH-VOCAB-R009.14, EG-ORCH-VOCAB-R009.15, EG-ORCH-VOCAB-R009.16, EG-ORCH-VOCAB-R009.17, ARBORA-CAPACITY-R001, ARBORA-CAPACITY-R001.1`. Source record SHA-256: `8d2f83f788c5fdd36c4dc47f85c9f7673393b6b9075dc46a5ac1c32afd2386e2`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, agent-utilities/specs/agent-control-plane/requirements.md:10#sha256=d23694e108652e92337ab4997286d2f3119818b3e7a9ff3f8a65f72a13bbb709, agent-utilities/specs/agent-control-plane/requirements.md:24#sha256=5e7396750953ba0daf829dd0df1d85d868211579eb5673bb158645ceb5204bb5, agent-utilities/specs/harness-evolution/requirements.md:12#sha256=6b67b965ae1e92c7eee335722320248c32212aef6b2a9add2bd117d4c56ba57b, epistemic-graph/specs/orchestration-vocabulary/requirements.md:60#sha256=48fa2a2cf52544702d56b50861ea5a0ceaf85ef47c0d39aba4792baeaeeb1b92, epistemic-graph/specs/orchestration-vocabulary/requirements.md:61#sha256=e4b274c430f4a5f68666f80a71c4e0efa4b18800e9027947b67d91d327b53863, arbora/specs/adaptive-capacity/requirements.md:6#sha256=7ab4ff5d4823d469480e338976991916a161b284d4fec717981291830bbc16f1`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/14`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `AU-HARNESS-R007, AU-CONTROL-R006, AU-CONTROL-R006.1, AU-CONTROL-R019, EG-ORCH-VOCAB-R009, EG-ORCH-VOCAB-R009.1, EG-ORCH-VOCAB-R009.2, EG-ORCH-VOCAB-R009.3, EG-ORCH-VOCAB-R009.4, EG-ORCH-VOCAB-R009.5, EG-ORCH-VOCAB-R009.6, EG-ORCH-VOCAB-R009.7, EG-ORCH-VOCAB-R009.8, EG-ORCH-VOCAB-R009.9, EG-ORCH-VOCAB-R009.10, EG-ORCH-VOCAB-R009.11, EG-ORCH-VOCAB-R009.12, EG-ORCH-VOCAB-R009.13, EG-ORCH-VOCAB-R009.14, EG-ORCH-VOCAB-R009.15, EG-ORCH-VOCAB-R009.16, EG-ORCH-VOCAB-R009.17, ARBORA-CAPACITY-R001, ARBORA-CAPACITY-R001.1`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, agent-utilities/specs/agent-control-plane/requirements.md:10#sha256=d23694e108652e92337ab4997286d2f3119818b3e7a9ff3f8a65f72a13bbb709, agent-utilities/specs/agent-control-plane/requirements.md:24#sha256=5e7396750953ba0daf829dd0df1d85d868211579eb5673bb158645ceb5204bb5, agent-utilities/specs/harness-evolution/requirements.md:12#sha256=6b67b965ae1e92c7eee335722320248c32212aef6b2a9add2bd117d4c56ba57b, epistemic-graph/specs/orchestration-vocabulary/requirements.md:60#sha256=48fa2a2cf52544702d56b50861ea5a0ceaf85ef47c0d39aba4792baeaeeb1b92, epistemic-graph/specs/orchestration-vocabulary/requirements.md:61#sha256=e4b274c430f4a5f68666f80a71c4e0efa4b18800e9027947b67d91d327b53863, arbora/specs/adaptive-capacity/requirements.md:6#sha256=7ab4ff5d4823d469480e338976991916a161b284d4fec717981291830bbc16f1`. This definition does not assert these tests have run.
    requirementARBORA-CAPACITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-CAPACITY-R003
    AU:70 Arbora definition slice
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **AU:70 Arbora definition slice.** AU:70 cross-owner slice. Residual: The contract does not define paper throughput numerator, denominator, window, or a 2000-papers/day target. It also lacks below-target policy to prioritize maintenance backlog purge and per-goal budget allocation. It lacks safe purge candidates, authorization/admission, refusal, and decision/result evidence. Arbora minimum action: Define an EG-owned observed-throughput decision with explicit window, units, and safe-purge rules. Also define purge/budget obligations. Bind hosted execution and connector observations. Test below/at/above threshold and refusal through the actual ingestion/maintenance route. Existing repository latency is not paper/day acceptance. Producer/consumer boundary: SDK paper transport -> EG SourceIngest/native commits + enrichment WorkItems -> ingestion telemetry -> EG budget/purge decision. (Missing) -> Arbora governed maintenance dispatch (missing). AU instrumentation supplies observations, not policy authority. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `AU-RETIRE-R005, EG-REPO-INGEST-R006`. Source record SHA-256: `902f964dd909186f3a31d1f8a84d146b715446e64dfeec62480c8151baa06996`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, epistemic-graph/specs/repository-index-and-ingestion/requirements.md:21#sha256=31b0c0f71492eba7ea58a154f3a2bb1552aff5c227a88548c09b3f9748b9b49b, agent-utilities/specs/au-engine-duplicate-retirement/requirements.md:14#sha256=0f054dbf4383f287ee72a12135a67fc0a6228e89bff2ee9e32df77fabb7f0ca9`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/22`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `AU-RETIRE-R005, EG-REPO-INGEST-R006`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, epistemic-graph/specs/repository-index-and-ingestion/requirements.md:21#sha256=31b0c0f71492eba7ea58a154f3a2bb1552aff5c227a88548c09b3f9748b9b49b, agent-utilities/specs/au-engine-duplicate-retirement/requirements.md:14#sha256=0f054dbf4383f287ee72a12135a67fc0a6228e89bff2ee9e32df77fabb7f0ca9`. This definition does not assert these tests have run.
    requirementARBORA-CAPACITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-CAPACITY-R004
    AU:122 Arbora definition slice
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **AU:122 Arbora definition slice.** AU:122 cross-owner slice. Arbora must qualify the served agents.run path using the versioned load profile in plan.md. Run 1,000 requests at each concurrency of 1, 8, and 32. Require terminal latency p95 at most 2,000 ms and failure rate at most 1 percent per level. Count 30-second timeouts as failures. Record workload, fixture, owner revisions, measurements, and a pass/fail result. Missing producer bindings or samples must refuse qualification. Synthetic bounded-map or scorer-only tests cannot qualify this path. Producer/consumer boundary: AU load driver -> served agent operation through Arbora -> measured per-run report/admission evidence. No exact load-driver/report producer contract was found. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `none assigned in this packet`. Source record SHA-256: `440703d339dcff0a4ca3658c11f5b32974a921515769f5f29e313bf26ba74fad`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:122, agent-utilities/specs/harness-evolution/requirements.md:141#sha256=7119a5b3ce026c7d1d3f47abe073ee89be517dae342e4e290b32a5969af85747, agent-utilities/specs/harness-evolution/requirements.md:82#sha256=f7ef7e6ef3f5b93aa4294dbb1371a21f1cf29ae7ec62c739a11deec7782d45c5, epistemic-graph/specs/decision-engine/requirements.md:152#sha256=a59accc536bb7195f5bebf8d0b75e7a2fd31628bbd3932d35c29d58ec0b342a0`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/31`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `none assigned in this packet`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:122, agent-utilities/specs/harness-evolution/requirements.md:141#sha256=7119a5b3ce026c7d1d3f47abe073ee89be517dae342e4e290b32a5969af85747, agent-utilities/specs/harness-evolution/requirements.md:82#sha256=f7ef7e6ef3f5b93aa4294dbb1371a21f1cf29ae7ec62c739a11deec7782d45c5, epistemic-graph/specs/decision-engine/requirements.md:152#sha256=a59accc536bb7195f5bebf8d0b75e7a2fd31628bbd3932d35c29d58ec0b342a0`. This definition does not assert these tests have run.
    requirementARBORA-CAPACITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-CAPACITY-R001.3
    EG:9 Arbora definition slice
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **EG:9 Arbora definition slice.** EG:9 cross-owner slice. Residual: Define bounded load/headroom scaling proposals, Arbora application and applied-state reconciliation. Arbora minimum action: Add the closed-loop producer/Arbora consumer and applied-state receipt; preserve existing ARBORA-HOST references. Producer/consumer boundary: EG capacity premises/place verdicts feed hosting policy; Arbora exposes limits/mode and pure AIMD. Engine scaling actuation/reconciliation is an absent definition, not an unlinked throttle. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `EG-DECISION-ENGINE-R112, EG-PLACEMENT-R001.6, ARBORA-CAPACITY-R001, ARBORA-CAPACITY-R002`. Source record SHA-256: `cb17ea03a7344584fed7a9f22a78c1e97c58919616433e7026481606fd0bdccb`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-18-final-eg.json, arbora/specs/adaptive-capacity/requirements.md:6#sha256=7ab4ff5d4823d469480e338976991916a161b284d4fec717981291830bbc16f1, epistemic-graph/specs/decision-engine/requirements.md:185#sha256=72ce9d891b8d3516a1041e5864816c04ae7f9fe772cc21afb8197f3d76036f81, arbora/specs/adaptive-capacity/requirements.md:5#sha256=81c3cae01a99708bf80635022e4c2372a7af3c950ddd88c55de5e6cd52694023, epistemic-graph/specs/placement-and-worker-policy/requirements.md:11#sha256=9cf3cc47b48a14a0afa3294aecf03e3015af29dd76781f30464008f0c0b5045b, arbora/specs/adaptive-capacity/requirements.md:7#sha256=a85c3cfac8bbd110aa18bad324bbc1fce87fb2c69c9c1593618d096011a1bf9d`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/32`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `EG-DECISION-ENGINE-R112, EG-PLACEMENT-R001.6, ARBORA-CAPACITY-R001, ARBORA-CAPACITY-R002`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-18-final-eg.json, arbora/specs/adaptive-capacity/requirements.md:6#sha256=7ab4ff5d4823d469480e338976991916a161b284d4fec717981291830bbc16f1, epistemic-graph/specs/decision-engine/requirements.md:185#sha256=72ce9d891b8d3516a1041e5864816c04ae7f9fe772cc21afb8197f3d76036f81, arbora/specs/adaptive-capacity/requirements.md:5#sha256=81c3cae01a99708bf80635022e4c2372a7af3c950ddd88c55de5e6cd52694023, epistemic-graph/specs/placement-and-worker-policy/requirements.md:11#sha256=9cf3cc47b48a14a0afa3294aecf03e3015af29dd76781f30464008f0c0b5045b, arbora/specs/adaptive-capacity/requirements.md:7#sha256=a85c3cfac8bbd110aa18bad324bbc1fce87fb2c69c9c1593618d096011a1bf9d`. This definition does not assert these tests have run.
    requirementARBORA-CAPACITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-CAPACITY-R750
    Scaling authority and intent contracts (rollup)
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Scaling authority and intent contracts (rollup).** `arbora/fleet/scaling/` holds typed, immutable contracts for scaling intents. arbora applies these contracts when it admits a scaling intent. The contracts cover scale units, pools, workload classes, controllers, lease fences and lifecycle records. Each unit has exactly one replica writer. The package also holds a scale evaluator and a resource-pool placement evaluator. The engine (EG-DECISION-ENGINE) decides how far to scale. These modules validate and apply that decision. Child requirements deliver this row. | The child requirements' tests under `tests/fleet/scaling/` prove this row.
    requirementARBORA-CAPACITYVERIFIEDNo recorded commit/test evidence
    ARBORA-CAPACITY-R750.750
    Scale authority validation
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Scale authority validation.** `scaling_authority.py` refuses two replica writers for one unit. It refuses dependency cycles and headroom beyond the replica bounds. It refuses stale unit revisions, replica counts out of range and offline failure domains. It refuses failed or simulated execution states without evidence. It refuses a lease fence that changes between lifecycle records. | `tests/fleet/scaling/test_scaling_authority_contract.py` asserts each refusal by name.
    requirementARBORA-CAPACITYVERIFIED43b17c4d919c
    tests/fleet/scaling/test_scaling_authority_contract.py:21
    ARBORA-CAPACITY-R750.751
    Authenticated bounded signal reads
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Authenticated bounded signal reads.** `scaling_signal_authority.py` reads scaling signals through one bound provider. The provider rejects samples outside the scope, from another source, stale samples and replayed samples. Pagination stays pinned to one snapshot digest. A missing batch never reads as zero. Samples never enter the graph projection. | `tests/fleet/scaling/test_scaling_signal_authority.py` asserts each rejection.
    requirementARBORA-CAPACITYVERIFIED43b17c4d919c
    tests/fleet/scaling/test_scaling_signal_authority.py:22
    ARBORA-CAPACITY-R750.752
    Idempotent scale-intent reconciliation
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Idempotent scale-intent reconciliation.** `scaling_intent_reconciler.py` persists an intent before it calls the actuator. A duplicate delivery replays the recorded result and makes no second call. Crash recovery never actuates a recorded result twice. A retry keeps the execution key and takes a newer fenced lease. A changed target or revision under the same key fails closed. A dry run never calls the actuator. A denied intent needs an audited break-glass approval before actuation. | `tests/fleet/scaling/test_scaling_intent_reconciler.py` uses an in-memory ledger and an injected clock.
    requirementARBORA-CAPACITYVERIFIED43b17c4d919c
    tests/fleet/scaling/test_scaling_intent_reconciler.py:25
    ARBORA-CAPACITY-R750.753
    Service-surface scale evaluator
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Service-surface scale evaluator.** `service_scale_units.py` returns one deterministic decision per scale unit. The inputs are signal, capacity, quota, continuity and load-safety observations. Stale or missing evidence blocks scaling. An exhausted provider quota, saturated engine axes, active sessions and overload also block scaling. | `tests/fleet/scaling/test_service_scale_units.py` asserts each blocking reason.
    requirementARBORA-CAPACITYVERIFIED43b17c4d919c
    tests/fleet/scaling/test_service_scale_units.py:31
    ARBORA-CAPACITY-R750.754
    Attested resource-pool placement
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Attested resource-pool placement.** `resource_pool_authority.py` places a requirement only on a fresh, attested pool. The known capabilities of that pool must satisfy the requirement. Unknown, unverified or stale capability gives a denial with a named reason. The result does not depend on pool order. | `tests/fleet/scaling/test_resource_pool_authority.py` asserts each denial reason.
    requirementARBORA-CAPACITYVERIFIED43b17c4d919c
    tests/fleet/scaling/test_resource_pool_authority.py:27
    ARBORA-CAPACITY-R750.755
    Engine-native reservation and development-lane transport
    Definition — ARBORA-CAPACITY / ARBORA-CAPACITY — Adaptive capacity controlCanonical requirement and verification source
    **Engine-native reservation and development-lane transport.** `resource_reservation.py` and `development_lane.py` expose only the typed synchronous engine operations. They refuse an async client. They refuse an engine that does not advertise the operation. They refuse a status result larger than the requested limit. | `tests/fleet/scaling/test_resource_reservation.py` asserts each refusal.
    requirementARBORA-CAPACITYVERIFIED43b17c4d919c
    tests/fleet/scaling/test_resource_reservation.py:14
    ARBORA-ACP
    ARBORA-ACP — Conversational ACP gateway session projection and policy
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-ACP-R001
    Conversational ACP gateway session admission and policy
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Conversational ACP gateway session admission and policy.** Arbora admits an ACP session only for a verified principal from the existing identity path, binds the session immutably to that principal/tenant/scope snapshot, enforces configured idle and absolute expiry limits, and returns one typed `chat_adapter_unavailable` refusal for admission and messages whenever the agent-utilities chat adapter is absent or unreachable, without a local reply or REST fallback. Split into `ARBORA-ACP-R001.1` (the arbora-owned typed session-policy model and admission/refusal check) with the transport wiring to the real ACP endpoint and the identical REST-path projection check remaining open under the parent until `ARBORA-ACP-R001.2`'s dependency is satisfied. | Unit and integration tests cover admission refusal for missing/invalid credentials, immutable binding, idle-expired refusal, absolute-expired refusal, the typed adapter-unavailable refusal on both admission and message, identical principal/tenant/scope projection against the REST path, and a status/doctor read that reports adapter and limit state without secrets.
    requirementARBORA-ACPSPECIFIED9a79acee8b6c
    c2a6ab839fd3
    ARBORA-ACP-R001.1
    Typed ACP session-policy model and fail-closed admission check
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Typed ACP session-policy model and fail-closed admission check.** arbora defines the typed `PrincipalContext`/`AcpSessionPolicy`/`AcpSessionSnapshot` model and an `AcpSessionAdmission` that admits only a verified principal, binds the session immutably, enforces idle/absolute expiry, and refuses with a distinct `chat_adapter_unavailable` reason — on both admission and message — whenever the caller-supplied chat-adapter probe reports unavailable, with no transport wired yet. | Proven by unit tests asserting unauthenticated refusal, immutable principal binding, idle- and absolute-expiry refusal, and the dedicated `chat_adapter_unavailable` refusal on both admission and message.
    requirementARBORA-ACPVERIFIED9a79acee8b6c
    c2a6ab839fd3
    tests/acp/test_session_policy.py:31
    tests/acp/test_session_policy.py:71
    ARBORA-ACP-R001.3
    Model
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Model.** Arbora defines `CodingSessionRequest` (workspace root, declared client capabilities), `WorkspaceGrant` (root, capability, standing flag) and `CodingSessionAdmitted` as frozen types. They live in new `arbora/acp/coding_session.py`, beside `AcpSessionSnapshot` at `arbora/acp/session_policy.py:68`. The snapshot gains no mutable field. Client capabilities use the ACP names: `fs/read_text_file`, `fs/write_text_file`, `terminal/create`, `terminal/output`, `terminal/wait_for_exit`, `terminal/kill`, `session/request_permission`. | `tests/acp/test_coding_session.py` asserts the types are frozen, reject an empty root, and reject an undeclared capability name.
    requirementARBORA-ACPVERIFIEDfa860a640a8d
    tests/acp/test_coding_session.py:34
    ARBORA-ACP-R001.4
    Behavior
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Behavior.** `CodingSessionAdmission.admit` extends `AcpSessionAdmission.admit` (`arbora/acp/session_policy.py:101`). That function lacks any workspace-root or capability input. Named defaults: `trusted_root_rule` admits a root only when it matches a configured trusted-root entry. `permission_rule` requires `session/request_permission` for `fs/write_text_file` and every `terminal/*` request. A matching standing grant skips that request. Reads pass. Arbora records each grant on the session. | `tests/acp/test_coding_session_behavior.py` asserts a trusted root is admitted, a read passes, a write needs permission, and a standing grant skips the prompt.
    requirementARBORA-ACPSPECIFIEDNo recorded commit/test evidence
    ARBORA-ACP-R001.5
    Wiring
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Wiring.** The existing implementation is `AcpSessionAdmission` at `arbora/acp/session_policy.py:89`. No production caller reaches it today, since only `tests/acp/test_session_policy.py` constructs it. This child creates the call site: a new `register_acp_routes(app, prefix)` in `arbora/acp/routes.py` handles the `session/new` wire method. `arbora/gateway/graph_api.py:368` registers it beside `register_dashboard_routes`, and `arbora/webui_host/webui_co_service.py:77` calls that function. The route resolves the principal through the existing identity path. It forwards each client-capability request over the same connection to the client. | `tests/acp/test_acp_routes_wiring.py` asserts the app exposes the ACP route after `register_graph_routes` and that `session/new` calls `CodingSessionAdmission.admit`.
    requirementARBORA-ACPSPECIFIEDNo recorded commit/test evidence
    ARBORA-ACP-R001.6
    Refusal
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Refusal.** `CodingSessionAdmission` refuses with typed reasons added to `AcpRefusalReason` (`arbora/acp/session_policy.py:21`). `untrusted_root` applies at `session/new`. `capability_not_declared` applies to a request outside the declared set. `permission_denied` applies when the client rejects `session/request_permission`. `client_disconnected` applies when no client is connected. Each refusal returns before any forwarded request. | `tests/acp/test_coding_session_refusal.py` asserts each reason arrives as the typed refusal, with no forwarded request.
    requirementARBORA-ACPSPECIFIEDNo recorded commit/test evidence
    ARBORA-ACP-R001.7
    Evidence
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Evidence.** Each admission and each forwarded capability request emits one trace record. Fields: session ID, principal ID, tenant, workspace root, capability name, permission outcome (`standing`, `granted`, `denied`) and refusal reason. The record carries no file content and no command output. It uses the existing emitter in `arbora/observability`. | `tests/acp/test_coding_session_evidence.py` asserts the record fields for an admit, a granted write and a denied command, and the absence of file content.
    requirementARBORA-ACPSPECIFIEDNo recorded commit/test evidence
    ARBORA-ACP-R001.8
    Hot-path proof
    Definition — ARBORA-ACP / ARBORA-ACP — Conversational ACP gateway session projection and policyCanonical requirement and verification source
    **Hot-path proof.** The entry point is the ACP wire method `session/new` served by `arbora/acp/routes.py`. The test `tests/acp/test_coding_session_hot_path.py` opens a session with a temporary trusted root. The agent then requests `fs/read_text_file` and `fs/write_text_file`. The read passes and the write waits for `session/request_permission`. An untrusted root is refused at `session/new` with `untrusted_root`. | `tests/acp/test_coding_session_hot_path.py` runs against a fake connected client and the registered route, and asserts the three observations.
    requirementARBORA-ACPSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET
    ARBORA-DATA-MARKET — Schema context, source admission, and finance projection
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R001
    Durable, deduplicated flip alert delivery
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Durable, deduplicated flip alert delivery.** arbora subscribes durably to the finance flip event topic and delivers alerts to configured notification channels, deduplicating by tenant, event ID, and subscriber so a restart cannot cause a duplicate user-visible alert. An alert never authorizes an order or changes a portfolio. | Proven by a restart/redelivery test confirming at-least-once transport with idempotent, deduplicated delivery.
    requirementARBORA-DATA-MARKETLANDEDe61c0e3df8b7
    ARBORA-DATA-MARKET-R002
    Scheduled finance backfill, scan, and explanation jobs
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Scheduled finance backfill, scan, and explanation jobs.** arbora schedules finance backfill, scan, and flip-explanation jobs through its existing scheduler, recording each schedule's tenant, owner, authorized action, timezone, trigger, idempotency key, and last run, so a daylight-saving transition or replay cannot duplicate an effect. The explanation itself is produced by the agent workflow and must cite its exact calculation inputs. | Proven by a scheduler test crossing a daylight-saving transition and a replay test confirming no duplicate job execution.
    requirementARBORA-DATA-MARKETLANDED57391db3828f
    ARBORA-DATA-MARKET-R003
    Server-side finance and markets reads and paper order submission
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Server-side finance and markets reads and paper order submission.** arbora serves tenant-scoped market and finance reads, and paper order submission, through arbora/api/ops/finance.py and markets.py, with the market read logic ported server-side into arbora/finance/markets.py. Each read requires the finance:read grant. If tenant or account binding is unverified, return a typed unavailable result before any provider call. Paper order submission requires a tenant-bound account and the finance:paper-trade grant. | Acceptance: two-tenant tests must confirm zero cross-tenant reads. A negative test must confirm unverified account binding returns unavailable before any provider call.
    requirementARBORA-DATA-MARKETSPECIFIED57391db3828f
    b1ee0584dbba
    ARBORA-DATA-MARKET-R004
    One-at-a-time application admission with rollback
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **One-at-a-time application admission with rollback.** arbora admits one named application and its data source into the shared data plane at a time, using a dry-run plan, an idempotency key, explicit approval, health and parity probes, and a rollback fence. An application's existing ingest connector is retired only after the admitted source is healthy, parity checks pass, and the retirement is approved. | Proven by a restart/fault test demonstrating a failed admission rolls back without retiring the prior connector.
    requirementARBORA-DATA-MARKETLANDED33622be01de7
    fd761d59a171
    ARBORA-DATA-MARKET-R005
    schema_context query surface for tables and ontology mappings
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **schema_context query surface for tables and ontology mappings.** arbora serves authenticated `schema_context` over REST and MCP. Callers can request definitions, joins, ontology class mapping, owning application, or change impact. The response labels unverified and inferred relationships as proposals, not approved facts. When the engine lacks `schema_context` or an approved source catalog snapshot, Arbora returns typed unavailable. It does not fabricate an answer. | Proven by contract tests covering each intent (definition, joins, ontology, owner, impact) and a negative test for an unsupported source returning a typed unavailable result.
    requirementARBORA-DATA-MARKETLANDED0a1beb2aae13
    44ba09589820
    8a7010bd6592
    ARBORA-DATA-MARKET-R006
    Recurring DCA plans with deterministic, non-duplicating proposals
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Recurring DCA plans with deterministic, non-duplicating proposals.** arbora stores a recurring dollar-cost-averaging plan's owner, tenant, symbol, account binding, decimal amount and currency, timezone, recurrence rule, bounds, pause state, and paper or live mode, and produces one durable proposal per due occurrence with a key derived from the plan revision so replay or clock drift cannot create a duplicate. Paper mode executes only under the paper grant and lease; live mode stays proposal-only until a human approves the exact preview and a connector consumes a write-back lease through the governed path in AU-CONTEXT-R006. A missed or failed contribution is reported, never silently skipped or doubled. | Proven by a replay and clock-drift test asserting exactly one proposal per occurrence, and a fault test confirming a missed contribution is reported rather than silently dropped.
    requirementARBORA-DATA-MARKETLANDED35385208a619
    e61c0e3df8b7
    ARBORA-DATA-MARKET-R007
    Confirmed order and position changes
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Confirmed order and position changes.** Require explicit confirmation before an order or position effect. Consume the SDK-GOVERNED-WRITEBACK-R001.1 through R001.6 signature-verification contract for wallet operations. EG owns authorization; Arbora serves authenticated confirmation and preserves its decision. Keep wallet operations unavailable until the producer and all durable bindings are implemented. ARBORA-DATA-MARKET-R003 owns paper submission; ARBORA-OPS-R017.2 owns subject ownership. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R007.1
    Model
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Model.** OrderChange and PositionChange bind exact intent. WalletOperation imports SDK WalletBusinessIntent and WalletExecutionEnvelope. Proof and confirmation metadata remain outside business parameters. The plan defines the exact immutable projection; never embed WalletProofRequest inside hashed intent. Bind authenticated caller tenant and actor, account, network, wallet, operation and exact change-set identity. Read-only models at arbora/finance/markets.py:34 do not implement this contract. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R007.2
    Behavior
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Behavior.** Prepare immutable intent and require explicit confirmation under `confirm_before_commit`. `plan_digest` means `params_digest({"intent": WalletBusinessIntent})`. Sign after confirmation; adding proof cannot change that digest. Consume the authenticated SDK proof result unchanged and match every binding before dispatch. A valid signature is insufficient without EG authorization, account entitlement and durable effect reservation. Use the existing effect key for retries; never create another nonce or approval store. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R007.3
    Wiring
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Wiring.** Register the new operations through arbora/api/ops/registry_factory.py with Confirm.PLAN. Reuse `_effect` at arbora/api/invoke/pipeline.py:218 and `bind_plan` at line 230. The operation handler must invoke the admitted connector SDK proof and governed apply composition before any provider effect. The shared WalletExecutionEnvelope extension must separate proof before plan hashing, validation, audit and reservation. HTTP and MCP lack this extension. No order or wallet operation is reachable today. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R007.4
    Refusal
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Refusal.** Return CONFIRMATION_REQUIRED for absent confirmation and PLAN_MISMATCH for intent tampering. Return POLICY_DENIED for invalid proof and UNAVAILABLE for absent verifier, envelope, trust or durable binding authority. Preserve the SDK typed reason in redacted error details. No refused request reaches provider mutation; an uncertain prior effect enters reconciliation instead of blind retry. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R007.5
    Evidence
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Evidence.** Record request, tenant, actor, plan and confirmation in the existing audit record. Join EG authorization, proof digest, signer, trust revision and effect receipt. Preserve the SDK verification outcome unchanged. Never log raw signatures, private keys or reusable proof bodies. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R007.6
    Hot-path proof
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Hot-path proof.** `tests/integration/test_order_confirmation.py::test_wallet_proof_confirmation_and_replay` enters the served operation at POST /api/v1/ops/{op_id} and its MCP twin. Use the real SDK verifier, synthetic keys, durable graph authority and a controlled provider. Serve prepare, confirm, sign and execute; proof insertion preserves the intent digest and yields one effect. Missing confirmation, altered account/network/payload, revoked key, expiry and unavailable producer yield none. Concurrent retries and restart read the same effect receipt without another mutation. | Served acceptance in tests/integration/test_order_confirmation.py; runtime proof remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R003.1
    Market list/search/get
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Market list/search/get.** Define read-only `markets.list`, `markets.search`, and `markets.get` on `finance:read`. List/search accept `limit` (default 50, 1–100), optional opaque cursor, and only `event_id`, `status`, `starts_at_from`, `starts_at_to`, `ends_at_from`, and `ends_at_to`; search also requires the bounded `query` defined in plan.md. Get accepts only `market_id`. Search matches case-sensitive NFC substrings in `question` or outcome `name`. Sort by `starts_at` ascending with nulls last, then `market_id` ascending. | Served tests cover exact filters, query bounds, stable ordering, get-by-ID, and zero effect calls.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R003.2
    Event list/search/get
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Event list/search/get.** Define read-only `events.list`, `events.search`, and `events.get` on `finance:read`. List/search accept `limit` (default 50, 1–100), optional opaque cursor, and only `status`, `starts_at_from`, `starts_at_to`, `ends_at_from`, and `ends_at_to`; search also requires the bounded `query` defined in plan.md. Get accepts only `event_id`. Search matches case-sensitive NFC substrings in `title` or `description`. Sort by `starts_at` ascending with nulls last, then `event_id` ascending. | Served tests cover exact filters, query bounds, stable ordering, get-by-ID, and zero effect calls.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R003.3
    Order list/search/get
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Order list/search/get.** Define read-only `orders.list`, `orders.search`, and `orders.get` on `finance:read`, bound to the caller's resolved tenant/account. List/search accept `limit` (default 50, 1–100), optional opaque cursor, and only `market_id`, `status`, `side` (`buy` or `sell`), `created_at_from`, and `created_at_to`; search also requires the bounded `query` defined in plan.md. Get accepts only `order_id`. Search matches case-sensitive NFC substrings in `order_id`, `market_id`, or `outcome`. Sort by `created_at` descending with nulls last, then `order_id` ascending. | Served tests cover all three bindings, account scoping, deterministic ordering, and zero mutation calls.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R003.4
    Stable JSON projections
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Stable JSON projections.** Define closed version-1 `MarketPageV1`/`MarketGetV1`, `EventPageV1`/`EventGetV1`, and `OrderPageV1`/`OrderGetV1` envelopes with typed `MarketItemV1`, `EventItemV1`, and `OrderItemV1` records. `plan.md` defines exact keys, nullability, metadata, decimal, identifier, and cursor rules. Preserve provider `source`, `as_of`, `session`, currency/unit, freshness, and provenance; never calculate or fabricate missing source metadata. Decimal values are strings. Serialize nullable fields as explicit null. Use deterministic keys. Bind cursors to tenant, account, filters, sort, and snapshot. Omit provider-only extras. | Contract tests pin exact keys/types, nullable fields, metadata, decimal/time encodings, filters, pagination, and normalized REST/MCP JSON.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R003.5
    Authority before provider calls
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Authority before provider calls.** All nine bindings require `finance:read`. Handlers resolve authenticated tenant membership and proof of the account binding before constructing provider requests. They derive tenant and account from authority and reject caller-selected identity. If binding is missing or mismatched, Arbora returns typed unavailable before dispatch. R010 maps scope denials; inaccessible IDs are nonrevealing. Preserve parent R003 and ARBORA-OPS-R017.1. EG must add `finance:read` to its scope catalog before Arbora registers these operations. | Served two-tenant cases prove denials and malformed authority make zero provider calls and reveal no cross-tenant record.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-DATA-MARKET-R003.6
    Producer port, registration, and read/effect separation
    Definition — ARBORA-DATA-MARKET / ARBORA-DATA-MARKET — Schema context, source admission, and finance projectionCanonical requirement and verification source
    **Producer port, registration, and read/effect separation.** Define `FinanceReadPortV1` in `arbora/finance/markets.py` with typed `list_markets`, `search_markets`, `get_market`, `list_events`, `search_events`, `get_event`, `list_orders`, `search_orders`, and `get_order` methods. Existing `MarketProvider.market_read` is only a single-symbol read and does not implement this port. Bind it as `finance_read_port`; register handlers from `arbora/api/ops/finance.py::operations` through `arbora/api/ops/registry_factory.py::get_registry`. REST uses `NativeGatewayApplication.mount_rest_routes` → `create_api_application` → `POST /api/v1/ops/{op_id}` after contract admission. MCP uses `register_intent_surface` on the streamable HTTP `/mcp` route; JSON-RPC `tools/call` invokes tool `ask` with `op` and `params`. The current process has not activated these API/MCP compositions, and the legacy MCP registrar remains in use, so no serving is claimed. Read handlers require only `finance:read` and cannot reserve leases or invoke submission. Paper submission keeps its separate `finance:paper-trade`, tenant/account, lease, receipt, and ARBORA-OPS-R017.2 ownership requirements. | `tests/mcp_server/test_data_market_reads_served.py` must exercise both real routes, shared provider dispatch, denial before calls, and read/effect isolation; existing paper-submit acceptance remains required.
    requirementARBORA-DATA-MARKETSPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE
    ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rollout
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R001
    Dependency-ordered, digest-verified release promotion
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **Dependency-ordered, digest-verified release promotion.** Arbora validates digest-pinned candidate images in a dedicated Kubernetes test namespace before promoting them, and performs its dependency-ordered pushes to each repository in sequence, checking that repository's continuous-integration result before advancing to the next. | An integration test against a fixture dependency graph confirms the rollout stops before the next stage when a predecessor's digest or CI result is missing.
    requirementARBORA-RELEASELANDEDeacc29a1952e
    ARBORA-RELEASE-R002
    Local Kubernetes validation gates every push
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **Local Kubernetes validation gates every push.** Arbora runs local Kubernetes validation in a dedicated test namespace as part of release qualification, and the release process refuses to push or deploy until the repository's local gates report green. | A negative integration test confirms a push is blocked while a local gate is failing and proceeds once all local gates report green.
    requirementARBORA-RELEASEVERIFIED03ec8432da14
    f3f45f5e2d1b
    tests/deployment/test_local_gates.py:15
    tests/deployment/test_local_gates.py:28
    tests/deployment/test_local_gates.py:41
    tests/deployment/test_local_gates.py:47
    tests/deployment/test_local_gates.py:59
    ARBORA-RELEASE-R003
    Exit-criteria matrix maps readiness to tests
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **Exit-criteria matrix maps readiness to tests.** Arbora maintains an exit-criteria matrix mapping each release-readiness obligation to an executable test, including ingestion receipts, proofs over SPARQL and natural-language queries, one complete multi-agent orchestration graph, connector certification, one write-back receipt, a browser-and-identity-provider login probe, and a typed-abstention response to an agent-capability question. | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see `ARBORA-RELEASE-R003.1` onward (split 2026-10-09, net-new: no exit-criteria model existed).
    requirementARBORA-RELEASESPECIFIED03ec8432da14
    7db4c4a5d87c
    ARBORA-RELEASE-R003.1
    Exit-criteria matrix registry and audit mechanism (arbora side, against the currently pinned epistemic-graph)
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **Exit-criteria matrix registry and audit mechanism (arbora side, against the currently pinned epistemic-graph).** Arbora defines the exit-criteria matrix as a typed registry of obligation -> test-node-id rows and an audit function a test-suite audit runs against pytest's collected node IDs; an unregistered or uncollected obligation audits as missing, never a silent pass. | A unit test confirms the audit function marks a row satisfied when its test node ID is present among collected test IDs and missing when it is absent.
    requirementARBORA-RELEASEVERIFIED03ec8432da14
    7db4c4a5d87c
    tests/deployment/test_exit_criteria.py:10
    tests/deployment/test_exit_criteria.py:27
    tests/deployment/test_exit_criteria.py:42
    ARBORA-RELEASE-R003.2
    Full exit-criteria matrix closes green across all seven obligations
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **Full exit-criteria matrix closes green across all seven obligations.** Each of the seven obligation rows (ingestion receipts, SPARQL/natural-language query proofs, the multi-agent orchestration graph, connector certification, the write-back receipt, the browser-and-identity-provider login probe, and the typed-abstention response) is registered against a real, currently-passing cross-repo test once the epistemic-graph v2.28 release (the 44-PR integration audit it is gated on) lands, since several obligations exercise epistemic-graph capabilities this repository cannot certify against a release that has not been cut. | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test.
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R003.3
    SPARQL and natural-language query-proof rows
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **SPARQL and natural-language query-proof rows.** Child slice of `ARBORA-RELEASE-R003` (see tasks.md). | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see ARBORA-RELEASE-R003.1 onward (split 2026-10-09, net-new: no exit-criteria model existed)
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R003.4
    multi-agent orchestration-graph row
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **multi-agent orchestration-graph row.** Child slice of `ARBORA-RELEASE-R003` (see tasks.md). | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see ARBORA-RELEASE-R003.1 onward (split 2026-10-09, net-new: no exit-criteria model existed)
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R003.5
    connector-certification row
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **connector-certification row.** Child slice of `ARBORA-RELEASE-R003` (see tasks.md). | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see ARBORA-RELEASE-R003.1 onward (split 2026-10-09, net-new: no exit-criteria model existed)
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R003.6
    write-back receipt row
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **write-back receipt row.** Child slice of `ARBORA-RELEASE-R003` (see tasks.md). | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see ARBORA-RELEASE-R003.1 onward (split 2026-10-09, net-new: no exit-criteria model existed)
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R003.7
    browser-and-identity-provider login probe row
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **browser-and-identity-provider login probe row.** Child slice of `ARBORA-RELEASE-R003` (see tasks.md). | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see ARBORA-RELEASE-R003.1 onward (split 2026-10-09, net-new: no exit-criteria model existed)
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-RELEASE-R003.8
    typed-abstention response row
    Definition — ARBORA-RELEASE / ARBORA-RELEASE — Dependency-ordered, digest-pinned Arbora rolloutCanonical requirement and verification source
    **typed-abstention response row.** Child slice of `ARBORA-RELEASE-R003` (see tasks.md). | A test-suite audit confirms every row of the exit-criteria matrix resolves to a passing automated test. Rollup; see ARBORA-RELEASE-R003.1 onward (split 2026-10-09, net-new: no exit-criteria model existed)
    requirementARBORA-RELEASESPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET
    ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reload
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R001
    Typed pack publisher replaces placeholder ContentPack
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Typed pack publisher replaces placeholder ContentPack.** arbora publishes fleet content packs using the engine-generated SQL record types instead of the placeholder `ContentPack` structure, so SQL and market-data connector items carry real typed schemas when they are added to the catalog. | Integration test asserts published packs use the generated types and that no code path constructs the placeholder `ContentPack`.
    requirementARBORA-FLEETVERIFIED18038a22a875
    223bee6a0edd
    8df218e2f742
    tests/test_connector_pack_typed_publisher.py:29
    tests/test_connector_pack_typed_publisher.py:51
    tests/test_connector_pack_typed_publisher.py:65
    ARBORA-FLEET-R002
    Tool schema fingerprints recomputed from served schemas (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Tool schema fingerprints recomputed from served schemas (rollup).** Every fleet tool pin's schema fingerprint is computed from the tool's actual served schema rather than an empty placeholder. Catalog entries reflect real input and output shapes fleet-wide. Delivered through its child requirements, producer first. | An automated check re-certifies each pin against its live served schema and fails on any empty-schema fingerprint.
    requirementARBORA-FLEETSPECIFIED0f346a4d0e4a
    ARBORA-FLEET-R002.1
    Per-tool schema fingerprint computed from the served schema
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Per-tool schema fingerprint computed from the served schema.** `arbora/fleet/catalog_items.py` defines `compute_schema_fingerprint()`, a pure SHA-256 digest of a canonicalized schema that refuses an empty mapping, and `CatalogItem.schema_fingerprint`; `items_from_child_probe`'s tool rows populate it from the probed tool's real `inputSchema` through `_probed_item`, leaving it unset rather than empty for an unprobed schema or a non-tool item. No fleet-wide re-certification check yet (`ARBORA-FLEET-R002.2`, not yet specified). | `tests/fleet/test_schema_fingerprint.py` covers a stable digest, sensitivity to the served schema's content, refusal of an empty schema, population for a probed tool, and no fingerprint for an unprobed schema or a non-tool kind.
    requirementARBORA-FLEETVERIFIED0f346a4d0e4a
    223bee6a0edd
    tests/fleet/test_schema_fingerprint.py:27
    tests/fleet/test_schema_fingerprint.py:36
    tests/fleet/test_schema_fingerprint.py:42
    tests/fleet/test_schema_fingerprint.py:48
    tests/fleet/test_schema_fingerprint.py:57
    ARBORA-FLEET-R002.2
    Remaining scope of ARBORA-FLEET-R002 (slice .2): Tool schema fingerprints recomputed from served schemas (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Remaining scope of ARBORA-FLEET-R002 (slice .2): Tool schema fingerprints recomputed from served schemas (rollup).** Child slice of `ARBORA-FLEET-R002` (see tasks.md). | An automated check re-certifies each pin against its live served schema and fails on any empty-schema fingerprint
    requirementARBORA-FLEETLANDED0f346a4d0e4a
    ARBORA-FLEET-R003
    D18 write-back exposed only as a typed, previewed operation (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **D18 write-back exposed only as a typed, previewed operation (rollup).** arbora exposes the D18 write-back capability solely as a typed, idempotent, previewed registry operation rather than an unguarded native child tool, and the writable connector fleet continues to function correctly across a service restart. Delivered through its child requirements, producer first. | A restart/fault test confirms write-back idempotency and typed preview gating survive a service restart.
    requirementARBORA-FLEETSPECIFIED67b1b9ab916e
    ARBORA-FLEET-R003.1
    Typed write-back preview model and its refusal rule
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Typed write-back preview model and its refusal rule.** `arbora/api/ops/write_back.py` defines `WriteBackPreviewRequest`/`WriteBackPreviewResult` and `preview_write_back()`, which never applies a write and refuses a blank idempotency key, so D18 write-back cannot be reached as an unguarded native child tool. No registry binding yet (`ARBORA-FLEET-R003.2`, not yet specified). | `tests/api/test_write_back_preview.py` covers a successful preview, the blank-idempotency-key refusal, and that the result never marks the write as applied.
    requirementARBORA-FLEETVERIFIED67b1b9ab916e
    e80df3dcad62
    f2d7ec520ab7
    tests/api/test_write_back_models.py:120
    tests/api/test_write_back_models.py:19
    tests/api/test_write_back_models.py:31
    tests/api/test_write_back_models.py:46
    tests/api/test_write_back_models.py:60
    ARBORA-FLEET-R003.2
    Write-back registered as a typed, gated registry operation, not a native child tool
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Write-back registered as a typed, gated registry operation, not a native child tool.** `arbora/api/ops/write_back.py` registers `fleet.write_back.preview` and `fleet.write_back.commit` as typed `OpSpec` entries. They consume the models of `ARBORA-FLEET-R003.1`. They are wired into `arbora/api/ops/registry_factory.py`'s registry. The pipeline rejects `commit` unless it matches a prior `preview`'s idempotency key. No native child tool exposes write-back directly. | `tests/api/test_write_back_ops.py` covers preview-then-commit and an idempotent replayed commit returning the original receipt. It also covers rejection of a commit with no matching preview or a mismatched key.
    requirementARBORA-FLEETLANDEDf2d7ec520ab7
    ARBORA-FLEET-R004
    Pack annotations carry capability, digest, modality, cost, latency
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Pack annotations carry capability, digest, modality, cost, latency.** Every fleet pack item's catalog entry carries its capability, schema digest, modality, cost and latency annotations, populated across the whole fleet rather than a subset. | A catalog audit test confirms all required annotation fields are present and non-empty for every pack item fleet-wide.
    requirementARBORA-FLEETVERIFIED0aba0c33acd0
    f2a3173e9a84
    tests/fleet/test_catalog_items_pack_annotations.py:28
    tests/fleet/test_catalog_items_pack_annotations.py:45
    tests/fleet/test_catalog_items_pack_annotations.py:63
    tests/fleet/test_catalog_items_pack_annotations.py:71
    ARBORA-FLEET-R005
    A2A task routing with typed work-item and lease operations (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **A2A task routing with typed work-item and lease operations (rollup).** arbora routes inbound A2A tasks through typed `GetWorkItem` and `ListWorkItems` operations. It exposes capability-based agent search. It issues single-use, provenance-tracked control leases for assigned work. The multiplexer exposes only the subset of tools reachable through this task-routing assembly. Delivered through its child requirements, producer first. | Native library tests cover work-item retrieval, listing, capability search, and control-lease issuance and consumption.
    requirementARBORA-FLEETSPECIFIED3b404ee3ecf8
    ARBORA-FLEET-R005.1
    Typed WorkItem view, the GetWorkItem/ListWorkItems producer
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Typed WorkItem view, the GetWorkItem/ListWorkItems producer.** `arbora/a2a/work_items.py` defines a frozen `WorkItemView` and projects it. The projection reads the same durable work-item record fields `WorkItemA2AAuthority` already writes (`kind`, `tenant`, `created_by`, `metadata`, the `workitem:orchestrator:` id), The view refuses a record missing or blanking a required identity field for a single get. It drops (not fails) a malformed record for a listing. No `GetWorkItem`/`ListWorkItems` operation, capability search, or control lease yet (`ARBORA-FLEET-R005.2`+, not yet specified). | `tests/a2a/test_work_items.py` covers correct projection, optional-field defaults, missing or blank fields, and non-mapping metadata refusals. It also proves listing drops malformed records while preserving order.
    requirementARBORA-FLEETVERIFIED3b404ee3ecf8
    f2a3173e9a84
    tests/a2a/test_work_items.py:31
    tests/a2a/test_work_items.py:45
    tests/a2a/test_work_items.py:59
    tests/a2a/test_work_items.py:67
    tests/a2a/test_work_items.py:75
    ARBORA-FLEET-R005.2
    Remaining scope of ARBORA-FLEET-R005 (slice .2): A2A task routing with typed work-item and lease operations (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Remaining scope of ARBORA-FLEET-R005 (slice .2): A2A task routing with typed work-item and lease operations (rollup).** Child slice of `ARBORA-FLEET-R005` (see tasks.md). | Native library tests cover work-item retrieval, listing, capability search, and control-lease issuance and consumption
    requirementARBORA-FLEETLANDED3b404ee3ecf8
    ARBORA-FLEET-R006
    Multiplexer skill and prompt harvest path removed
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Multiplexer skill and prompt harvest path removed.** The multiplexer no longer harvests or statically hydrates skills and prompts at startup. That code path and its boot-time ingestion are removed once the resident-tool catalog serves the same capability. | A package/runtime audit confirms no skill or prompt harvest or hydration code remains in the shipped package.
    requirementARBORA-FLEETSPECIFIED67b1b9ab916e
    ARBORA-FLEET-R007
    Bridge upgraded to FastMCP 4 (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Bridge upgraded to FastMCP 4 (rollup).** arbora's MCP bridge declares and runs on FastMCP 4, using its native tool, prompt, resource, template and Skills-over-MCP capabilities within a single composed server loop. Delivered through its child requirements, producer first, one child per owning repo/root since the bridge instance is constructed outside arbora. | See the child requirements' verification.
    requirementARBORA-FLEETSPECIFIED67b1b9ab916e
    ARBORA-FLEET-R008
    RUM, security-audit and CI/CD feeds join the catalog (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **RUM, security-audit and CI/CD feeds join the catalog (rollup).** arbora adds real-user-monitoring, security-audit and CI/CD event connectors as catalog items, exposing only approved, sanitized data through the same operation registry and tenant boundary as its other feeds. Delivered through its child requirements, producer first. | Integration test confirms each new feed's data passes sanitization and tenant-boundary checks before it appears in the registry.
    requirementARBORA-FLEETSPECIFIED67b1b9ab916e
    ARBORA-FLEET-R008.1
    Typed feed-event model per feed kind
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Typed feed-event model per feed kind.** `arbora/fleet/feeds.py` defines `FeedEvent`/`FeedEventRejected` and `rum_event()`/`security_audit_event()`/`cicd_event()`, each refusing an unsanitized payload or a missing tenant before a feed event can exist. No live connector ingestion yet (`ARBORA-FLEET-R008.2`, not yet specified). | `tests/fleet/test_feeds.py` covers construction of each feed kind, the unsanitized-payload refusal, and the missing-tenant refusal.
    requirementARBORA-FLEETVERIFIED67b1b9ab916e
    f2a3173e9a84
    tests/fleet/test_feeds.py:15
    tests/fleet/test_feeds.py:23
    tests/fleet/test_feeds.py:31
    tests/fleet/test_feeds.py:37
    tests/fleet/test_feeds.py:44
    ARBORA-FLEET-R008.2
    Live feed ingestion wired into the catalog
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Live feed ingestion wired into the catalog.** Real RUM, security-audit and CI/CD connector ingestion produces `ARBORA-FLEET-R008.1` feed events and passes them through `connector_items()`/`_pack_annotations()` into the operation registry and tenant-boundary check, so each feed's data appears in the catalog only once sanitized and tenant-scoped. | Integration test confirms each new feed's data passes sanitization and tenant-boundary checks before it appears in the registry.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R009
    Run admission evaluates, commits and publishes with capacity control
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Run admission evaluates, commits and publishes with capacity control.** arbora's run admission in `arbora/a2a/routing.py`, `arbora/a2a/composition.py` and `control_plane/runs/admission.py` evaluates a candidate run, commits it with synthesis evidence, and publishes it only after an all-or-nothing capacity acquisition. A denied acquisition allows exactly one re-decision, and a stopped run releases its held capacity. Split across its 3 code roots (exceeds the 2-code-root threshold): `ARBORA-FLEET-R009.1` delivers the capacity primitive; `ARBORA-FLEET-R009.2` wires evaluate/commit/publish in `arbora/a2a/routing.py` and `arbora/a2a/composition.py` through it. | Rollup: both children deliver.
    requirementARBORA-FLEETLANDED58ee1a06a392
    67b1b9ab916e
    c77ede8726fa
    ARBORA-FLEET-R009.1
    Capacity acquisition is all-or-nothing with one re-decision
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Capacity acquisition is all-or-nothing with one re-decision.** `arbora/control_plane/runs/admission.py` gains a capacity primitive: a candidate run acquires every requested resource unit or none at all; the first denial consumes that run's single re-decision and returns a retry signal instead of failing, a second denial for the same run fails closed, and releasing a run (stop, or a reset after denial) returns every unit it held and restores its re-decision budget. | Unit test drives the primitive through grant, partial-unavailability no-op, denial-then-one-redecision, a second denial failing closed, and release restoring both capacity and the redecision budget.
    requirementARBORA-FLEETVERIFIED58ee1a06a392
    c77ede8726fa
    tests/control_plane/admission/test_capacity_acquisition.py:13
    tests/control_plane/admission/test_capacity_acquisition.py:23
    tests/control_plane/admission/test_capacity_acquisition.py:35
    tests/control_plane/admission/test_capacity_acquisition.py:47
    tests/control_plane/admission/test_capacity_acquisition.py:60
    ARBORA-FLEET-R009.2
    Routing and composition publish only through acquired capacity
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Routing and composition publish only through acquired capacity.** `arbora/a2a/routing.py` and `arbora/a2a/composition.py` evaluate a candidate run, commit it with synthesis evidence, and call the `ARBORA-FLEET-R009.1` primitive before publishing; a denial surfaces the single re-decision to the caller and a stopped run releases its hold. | Integration test drives a candidate run end to end through evaluate, commit, capacity grant/re-decision, and publish, plus stop releasing capacity.
    requirementARBORA-FLEETLANDED58ee1a06a392
    c77ede8726fa
    ARBORA-FLEET-R009.3
    Run admission publishes with all-or-nothing capacity control
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Run admission publishes with all-or-nothing capacity control.** `control_plane/runs/admission.py` publishes a `ARBORA-FLEET-R009.2`-committed run only after an all-or-nothing capacity acquisition, allows a denied acquisition exactly one re-decision, and releases held capacity when the run stops. | Integration test drives admission through grant, a single re-decision on denial, and capacity release on stop.
    requirementARBORA-FLEETLANDED58ee1a06a392
    ARBORA-FLEET-R003.3
    Write-back idempotency and preview gating survive a service restart
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Write-back idempotency and preview gating survive a service restart.** A restart/fault test exercises `fleet.write_back.preview`/`fleet.write_back.commit` (`ARBORA-FLEET-R003.2`) across a simulated service restart and a faulted child call, closing `ARBORA-FLEET-R003`'s original acceptance criterion. | `tests/fleet/test_write_back_restart.py` restarts the registry/service state mid-sequence and confirms a replayed commit returns the original receipt rather than double-applying, and a faulted child call leaves no partial write-back state.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R006.1
    Harvest call-site inventory, the removal baseline
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Harvest call-site inventory, the removal baseline.** `tests/fleet/test_harvest_inventory.py` enumerates every harvest-named entry point in `arbora/fleet/multiplexer.py` (`_harvest_deadline`, `_harvest_error_reason`, `_harvest_resource_bodies` and its call sites in `_probe_protocol_families`/`_probe_skills`/`_probe_prompts`, and `_harvest_probe_results`) and pins today's call-site count as the baseline `ARBORA-FLEET-R006.2`-`.5` must reduce. No removal in this child. | `tests/fleet/test_harvest_inventory.py` passes against current `main` and fails if a harvest-named symbol or call site is added or removed without updating the pinned baseline.
    requirementARBORA-FLEETVERIFIED031958c74eb8
    a94c87aa090e
    tests/fleet/test_harvest_inventory.py:105
    tests/fleet/test_harvest_inventory.py:116
    ARBORA-FLEET-R006.2
    Skill/prompt body-harvest cutover for an already-admitted child
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Skill/prompt body-harvest cutover for an already-admitted child.** `_probe_skills` and `_probe_prompts` (`arbora/fleet/multiplexer.py`) stop calling `_harvest_resource_bodies` for a mounted child server already covered by the resident local-skill catalog (`arbora/fleet/local_skill_catalog.py`'s `build_local_skill_catalog`), keeping the fleet-harvest fallback only for a child server that catalog does not yet admit, consuming `ARBORA-FLEET-R006.1`'s baseline. | A multiplexer test confirms an admitted child's skills/prompts resolve through the resident catalog with no `_harvest_resource_bodies` call, while a non-admitted child still falls back to the existing harvest path.
    requirementARBORA-FLEETVERIFIED031958c74eb8
    1db599dcf40c
    a94c87aa090e
    tests/fleet/test_fleet_r006_2_local_catalog_cutover.py:125
    tests/fleet/test_fleet_r006_2_local_catalog_cutover.py:33
    tests/fleet/test_fleet_r006_2_local_catalog_cutover.py:68
    tests/fleet/test_fleet_r006_2_local_catalog_cutover.py:91
    ARBORA-FLEET-R006.3
    Dead harvest helpers removed (rollup over `ARBORA-FLEET-R006.3.1`-`.4`)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Dead harvest helpers removed (rollup over `ARBORA-FLEET-R006.3.1`-`.4`).** `ARBORA-FLEET-R006.2` deliberately kept the live-harvest fallback for a child the resident catalog does not admit, so `_harvest_resource_bodies` and its helpers are not yet dead; they are removed in four ordered steps once no caller is left. | `ARBORA-FLEET-R006.3.1`-`.4` are all delivered and `_harvest_resource_bodies`, `_harvest_deadline`, `_harvest_error_reason`, `_SKILL_HARVEST_SPEC` and `_PROMPT_HARVEST_SPEC` no longer exist in `arbora/fleet/multiplexer.py`.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R006.3.1
    `_probe_protocol_families` harvest calls routed through the cutover helper
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **`_probe_protocol_families` harvest calls routed through the cutover helper.** The two direct `_harvest_resource_bodies` calls in `_probe_protocol_families` (`arbora/fleet/multiplexer.py`) are replaced by `_resolve_via_local_catalog_or_harvest`, leaving that helper the single `_harvest_resource_bodies` call site. | `tests/fleet/test_harvest_inventory.py` pins `_probe_protocol_families` at zero direct `_harvest_resource_bodies` call sites and `_resolve_via_local_catalog_or_harvest` at one; an admitted child's skills resolve with no wire read.
    requirementARBORA-FLEETVERIFIEDddb10c07995e
    tests/fleet/test_harvest_inventory.py:128
    tests/fleet/test_harvest_inventory.py:135
    ARBORA-FLEET-R006.3.2
    Non-admitted fallback and `_harvest_resource_bodies` deleted
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Non-admitted fallback and `_harvest_resource_bodies` deleted.** Once every mounted fleet child is admitted by the resident catalog (`arbora/fleet/local_skill_catalog.py`; admitting the remaining children is a prerequisite and may need an `agent-utilities` or per-agent package change), the fallback branch of `_resolve_via_local_catalog_or_harvest` and `_harvest_resource_bodies` are deleted. | The inventory test confirms `_harvest_resource_bodies` no longer exists and the skill/prompt discovery tests still pass.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R006.3.3
    Deadline and error-reason helpers deleted
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Deadline and error-reason helpers deleted.** `_harvest_deadline`, `_HARVEST_DEADLINE_SHARE` and `_harvest_error_reason` are deleted from `arbora/fleet/multiplexer.py` after `ARBORA-FLEET-R006.3.2` leaves them without a caller. | The inventory test confirms these symbols no longer exist.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R006.3.4
    Harvest specs deleted
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Harvest specs deleted.** `_SKILL_HARVEST_SPEC`, `_PROMPT_HARVEST_SPEC` and the harvest-only budget constants are deleted, and `_probe_resource_family` keeps only the kind and body-field data it still needs, after `ARBORA-FLEET-R006.3.3`. | The inventory test confirms the two spec symbols no longer exist and `_probe_skills`/`_probe_prompts` tests still pass.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R006.4
    Residual `_harvest`-named symbol renamed off the removed path
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Residual `_harvest`-named symbol renamed off the removed path.** `_harvest_probe_results` (`arbora/fleet/multiplexer.py`) is renamed to `_settled_probe_results` and its docstring/call sites updated, since it folds generic per-server probe-task results rather than skill/prompt body harvest and must not be mistaken for the path removed in `ARBORA-FLEET-R006.3`. | A grep-based test confirms no `_harvest`-named symbol remains in `arbora/fleet/multiplexer.py` except in historical comments/log strings, and `probe_catalog`'s existing tests still pass under the new name.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R006.5
    Closing audit: no harvest or hydration code remains
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Closing audit: no harvest or hydration code remains.** A package/runtime audit confirms no skill or prompt harvest or boot-time hydration code remains in the shipped `arbora` package, closing `ARBORA-FLEET-R006`'s original acceptance criterion. | `tests/fleet/test_no_harvest_remains.py`, built on `ARBORA-FLEET-R006.1`'s inventory, asserts the pinned baseline count is now zero for skill/prompt harvest and hydration call sites.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R007.1
    agent-connector-sdk's FastMCP instance gains native prompt/resource/template registration (cross-repo, owner: agent-connector-sdk)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **agent-connector-sdk's FastMCP instance gains native prompt/resource/template registration (cross-repo, owner: agent-connector-sdk).** `agent_connector_sdk/mcp/server.py`'s `create_mcp_server()` registers at least one native `.prompt()` and one native `.resource()`/`.resource_template()` on its constructed `FastMCP[Any]` instance alongside its existing `.tool()`/Skills-over-MCP registrations. | A protocol test in agent-connector-sdk confirms `create_mcp_server()`'s served instance answers a native prompt list, a resource read and a resource-template list.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R007.2
    agent-utilities' arbora bridge surface gains native prompt/resource/template registration (cross-repo, owner: agent-utilities)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **agent-utilities' arbora bridge surface gains native prompt/resource/template registration (cross-repo, owner: agent-utilities).** `agent_utilities/mcp/arbora_surface.py`'s `register_arbora_surface()` and its backing `FastMCP("arbora-backing")` instance register native prompts, resources and resource templates (not only tools, consuming `ARBORA-FLEET-R007.1`'s pattern) onto the single composed server loop handed to arbora. | A protocol test in agent-utilities confirms `register_arbora_surface()`'s backing instance exposes native prompts/resources/templates alongside `arbora_registrars()`'s tools.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R007.3
    arbora's served bridge exercises native prompts, resources and templates end to end
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **arbora's served bridge exercises native prompts, resources and templates end to end.** arbora's bootstrap (`arbora/mcp_server/server.py`) mounts the single composed server loop built from `ARBORA-FLEET-R007.1`/`ARBORA-FLEET-R007.2` and serves its native tools, prompts, resources, resource templates and Skills-over-MCP together, closing `ARBORA-FLEET-R007`'s original acceptance criterion. | `tests/mcp/test_fastmcp4_native.py` exercises FastMCP 4 native tools, prompts, resources, templates and Skills-over-MCP against the served bridge.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R011
    Registry core computes a canonical digest and authorized find
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Registry core computes a canonical digest and authorized find.** `arbora/api/registry/` defines `OpSpec`, its enums, and the `Registry` type with a canonical serialization and a `registry_digest` that identifies the active generation, and `find` evaluates caller authorization at lookup time rather than deferring it. | `tests/api/test_registry.py` covers canonical-form stability, digest computation, and authorized-versus-denied `find` results.
    requirementARBORA-FLEETLANDED4b83c69e2b41
    ARBORA-FLEET-R012
    EG-direct binding generator with reviewed exclusions
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **EG-direct binding generator with reviewed exclusions.** `arbora/api/registry/eg_binding.py` generates one registry operation for each wire-callable engine method. `eg_exclusions.yaml` lists each method that is left out. Each exclusion records a replacement or an internal-only reason. Every method has a generated operation or a reviewed exclusion. | `tests/api/test_eg_binding.py` asserts full method coverage by generated bindings plus documented exclusions.
    requirementARBORA-FLEETVERIFIED4b83c69e2b41
    68e31b75248a
    f651a834b0db
    tests/api/test_eg_binding.py:133
    tests/api/test_eg_binding.py:204
    tests/api/test_eg_binding.py:88
    ARBORA-FLEET-R013
    MCP projection exposes the six verbs with typed schemas
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **MCP projection exposes the six verbs with typed schemas.** `arbora/api/mcp/verbs.py`, `discovery.py` and `resources.py` project the registry as the six intent verbs produced by `make_verb`, each with a typed input schema, a `find` operation returning typed schemas, `arbora://` resources, and the active registry digest embedded in server instructions. | `tests/api/test_mcp_verbs.py` validates verb schemas, `find` output, resource URIs, and the embedded digest.
    requirementARBORA-FLEETLANDED6b63aeb7ba03
    ea736715b7fb
    ARBORA-FLEET-R014
    Resolver ranks catalog items with partitioned feedback
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Resolver ranks catalog items with partitioned feedback.** `arbora/api/mcp/resolve.py` ranks catalog items using lexical and semantic matching over generated descriptors, an exponential moving average of tenant- and policy-partitioned outcome feedback, and a bounded result cache. Natural-language queries produce a preview rather than an executed mutation, and `ask` falls back to a natural-language `query.nl` call under `query:nl` (never `query.uql` under `query:unified`) when no direct match is found. | `tests/api/test_resolve.py` covers ranking, partitioned feedback, cache bounds, and the NL-to-preview and `ask` fallback paths.
    requirementARBORA-FLEETVERIFIED43db6b7ac49b
    a2f74cb9621d
    tests/api/test_resolve.py:114
    tests/api/test_resolve.py:161
    tests/api/test_resolve.py:170
    ARBORA-FLEET-R015
    Typed operations cover agents, browser and fleet calls
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Typed operations cover agents, browser and fleet calls.** `arbora/api/ops/agents.py`, `browser.py` and `fleet.py` implement typed operations for agent/A2A tasks, reasoning calls, browser actions and fleet calls, where `fleet.call`'s effect classification is derived from the target item's own annotations. `arbora/fleet/gateway_ops.py` wraps resolution and mounting of catalog tools for these operations to call through. | Integration tests exercise each operation family and confirm `fleet.call` effect classification matches the invoked item's annotation.
    requirementARBORA-FLEETLANDED68e31b75248a
    e1d37ca10ef7
    ARBORA-FLEET-R016
    Automated gates catch API surface and compatibility drift
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Automated gates catch API surface and compatibility drift.** `scripts/check_api_surface.py` and `scripts/check_api_compat.py` run as pre-commit hooks that detect drift in the registry's public API surface and backward compatibility, covering the full gate set defined for this specification. | `tests/api/test_gates_*.py` exercises each gate against both a compliant and a drifted fixture registry.
    requirementARBORA-FLEETVERIFIEDba0aa6a11b4a
    tests/api/test_gates_cli.py:27
    tests/api/test_gates_cli.py:39
    tests/api/test_gates_cli.py:61
    tests/api/test_gates_cli.py:76
    ARBORA-FLEET-R017
    Authority-parity oracle validates principal, operation and surface
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Authority-parity oracle validates principal, operation and surface.** `tests/api/authority_matrix.yaml` defines the expected authorization outcome for each principal, operation and serving-surface combination, and `tests/api/test_authority_parity.py` asserts the registry's actual authorization decisions match that matrix exactly. | `tests/api/test_authority_parity.py` runs the full principal-by-operation-by-surface matrix and fails on any mismatch.
    requirementARBORA-FLEETLANDEDba0aa6a11b4a
    ARBORA-FLEET-R018
    Multiplexer exposes four resident fleet tools over one catalog
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Multiplexer exposes four resident fleet tools over one catalog.** `api/ops/fleet.py` and `arbora/fleet/{gateway_ops,catalog_items,session_loads}.py` implement `find_tools` (with `browse=true` replacing a separate catalog listing), `load_tools`, `unload_tools` and `multiplexer_status` over a single catalog filtered per caller, covering fleet tools, prompts, resources, resource templates, agent skills and connector items. Each caller's loaded-tool set defaults to a 64-item cap (hard cap 256) with optional least-recently-used eviction and a one-hour idle expiry, and each loaded tool's body invokes `fleet.call` using the caller's own delegated credential. | Scoped integration tests confirm cap enforcement, LRU eviction, idle expiry, and that invocation always carries the caller's delegated credential.
    requirementARBORA-FLEETLANDEDe1d37ca10ef7
    ARBORA-FLEET-R019
    Eunomia narrows authority at discover, load and call
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Eunomia narrows authority at discover, load and call.** `arbora/api/policy/` applies Eunomia as a narrowing-only policy step in the discover, load and call path, after scope and principal-rule checks and before the deputy and confirmation steps reach the engine; scope filtering always applies even when Eunomia is disabled, and an enabled-but-unreachable Eunomia fails the request closed rather than open. A deployment with no policy configured runs Eunomia off by default, a local deployment ships a default policy with it on, and an external deployment runs it on; `deployment/doctor.py` warns when it is off. | Policy integration tests cover all three default modes plus the fail-closed-on-unreachable and never-unfiltered-when-off cases.
    requirementARBORA-FLEETSPECIFIED269c409c5415
    ARBORA-FLEET-R021
    Fleet capability checks require exact scopes, deny unknown tools
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Fleet capability checks require exact scopes, deny unknown tools.** `_require_fleet_capability` requires the exact fleet scope for the requested action and does not accept a broader `admin` or `kg:admin` grant in its place, and it enforces the same check for local stdio connections as for any other transport. `tool_dispatchable` denies any unrecognized native host tool by default instead of allowing it, and the served MCP surface always runs an Eunomia policy filter rather than serving unfiltered. | Tests cover both the previously over-broad path (now denied) and the correctly scoped path (now allowed), plus a served-surface check that Eunomia middleware is active.
    requirementARBORA-FLEETSPECIFIED18038a22a875
    2c70abad2b68
    336f9faf3f21
    444cedaf2b6d
    e7a32f572005
    ARBORA-FLEET-R022
    Catalog reconciliation re-ingests via durable replay
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Catalog reconciliation re-ingests via durable replay.** arbora reconciles its served MCP catalog against the engine's durable event log, re-ingesting changed tools, prompts, resources and skills by replaying ordered delta receipts keyed by tenant, generation, sequence and item ID so replays are idempotent. | Integration test replays a delta sequence twice and confirms the resulting catalog state is identical.
    requirementARBORA-FLEETLANDED1a8d280ab981
    PA-12
    Catalog reload rejects invalid candidates, proves replica convergence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Catalog reload rejects invalid candidates, proves replica convergence.** Fleet catalog reload rejects duplicate, malformed, stale, missing, deleted or digest-mismatched candidate assets without publishing a partial generation, and multi-replica convergence is observed by generation and digest so a replica unable to reach the active generation reports degraded rather than serving a mixed catalog. | Negative-case tests cover each invalid-candidate condition, and a multi-replica integration test confirms convergence reporting.
    requirementARBORA-FLEETLANDED1a8d280ab981
    ARBORA-FLEET-R023
    Connector count pins stay consistent across the fleet
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Connector count pins stay consistent across the fleet.** Every fleet connector count reference — the compatibility matrix, the bundle-catalog schema, the check scripts, `ontology.lock`, the federated IRI, and `genesis.yaml` — reflects the same current total connector count, with no site lagging behind an actual fleet change. Delivered through its child requirements, producer first. | A check script scans all count-pin sites and fails if any of them disagrees with the live connector count.
    requirementARBORA-FLEETLANDED667a206c800e
    ARBORA-FLEET-R023.1
    Pure connector count-pin comparison (producer)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Pure connector count-pin comparison (producer).** `arbora/fleet/connector_count_pins.py` defines typed `CountPinSite` and `ConnectorCountMismatch`, and a pure `check_connector_count_pins()` that reports every site whose declared count disagrees with a given live count. `scripts/check_connector_count_pins.py` is the real CLI entry point: it parses `--site name=location=declared_count` arguments, runs the comparison, and exits non-zero on any mismatch. Wiring the fleet's actual count-pin sites (the compatibility matrix, the bundle-catalog schema, `ontology.lock`, the federated IRI) is cross-repo/AU-owned follow-up, not done here. | `tests/test_check_connector_count_pins.py` covers agreement, a flagged mismatch, a deliberate-mismatch fixture run through the real CLI (non-zero exit, mismatch on stderr), and a malformed `--site` argument.
    requirementARBORA-FLEETLANDED667a206c800e
    ARBORA-FLEET-R024
    Fleet reconciliation, scaling and deploy watch are served by Arbora
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Fleet reconciliation, scaling and deploy watch are served by Arbora.** Arbora owns the fleet reconciler, autoscaler, scaling authority and deploy-watch behavior that previously sat beside the agent runner in the agent runtime's `orchestration/` package. They run as Arbora services behind typed operations with the same caller verification, policy filter and audit as other fleet operations, and the agent runtime keeps only the agent runner and planning code and reaches fleet behavior through those operations. | Parity tests reproduce the prior reconcile, scale-up, scale-down and deploy-watch decisions through the Arbora operations, negative tests refuse an unauthorized caller, and a census shows the agent runtime no longer ships these modules.
    requirementARBORA-FLEETSPECIFIEDc2d8c8ce46b8
    PA-12.1
    Catalog reload rejects invalid candidates
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Catalog reload rejects invalid candidates.** `FleetCatalogReader`/`FleetCatalogIntegrityError` fail closed on duplicate, malformed, stale, missing, deleted or digest-mismatched candidate assets without publishing a partial generation. | Negative-case tests cover cross-tenant, no-longer-current, unresolved provenance, content-revision mismatch and cyclic-cursor conditions.
    requirementARBORA-FLEETVERIFIED1a8d280ab981
    tests/test_fleet_catalog_reader.py:211
    tests/test_fleet_catalog_reader.py:223
    tests/test_fleet_catalog_reader.py:234
    tests/test_fleet_catalog_reader.py:251
    tests/test_fleet_catalog_reader.py:262
    PA-12.2
    Multi-replica convergence is observed by generation and digest
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Multi-replica convergence is observed by generation and digest.** A replica unable to reach the active generation+digest reports degraded rather than serving a mixed catalog. No generation/replica concept exists yet in `arbora/fleet/catalog_reader.py`. | A multi-replica integration test confirms convergence reporting.
    requirementARBORA-FLEETLANDED1a8d280ab981
    ARBORA-FLEET-R024.1
    Deploy-watch verdict is a typed Arbora operation
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Deploy-watch verdict is a typed Arbora operation.** Arbora owns the deploy-watch verdict decision (the success/failed/unobserved reduction over a probe sequence) that previously sat in the agent runtime's `orchestration/deploy_watch.py`, served as a typed operation (`fleet.deploy_watch.evaluate`) behind the same caller verification and policy filter as other fleet operations. | Parity tests reproduce the prior success/failed/unobserved verdict rule through the operation, and a negative test refuses a caller lacking the required scope.
    requirementARBORA-FLEETLANDEDc2d8c8ce46b8
    ARBORA-FLEET-R024.2
    Remaining fleet reconciler, autoscaler, scaling-authority and deploy-watch scheduling behavior is served by Arbora
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Remaining fleet reconciler, autoscaler, scaling-authority and deploy-watch scheduling behavior is served by Arbora.** Arbora owns the fleet reconciler, autoscaler, scaling authority, and the deploy-watch scheduling/rollback-dispatch behavior (beyond the R024.1 verdict rule) that previously sat beside the agent runner in the agent runtime's `orchestration/` package, each as a typed, wired-in operation with the same caller verification, policy filter and audit as other fleet operations. | Parity tests reproduce the prior reconcile, scale-up, scale-down and deploy-watch-dispatch decisions through the Arbora operations, and negative tests refuse an unauthorized caller for each.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.3
    Agent runtime no longer ships the superseded fleet modules (cross-repo)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Agent runtime no longer ships the superseded fleet modules (cross-repo).** The agent runtime keeps only the agent runner and planning code and reaches fleet reconciliation, autoscaling, scaling authority and deploy watch through the Arbora operations from `ARBORA-FLEET-R024.1`/`ARBORA-FLEET-R024.2`, with the superseded `orchestration/` modules removed. | A census shows the agent runtime no longer ships the reconciler/autoscaler/scaling-authority/deploy-watch modules.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.750
    Fail-closed fleet health evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Fail-closed fleet health evidence.** `arbora/fleet/health.py` collects one typed `fleet.health.v1` snapshot. The caller injects a reader for the control store, the goal authority and the worker registry. An authority this release does not serve (no reader, or a reader that raises `AuthorityNotServed`) reports `not_served`: it is not applicable and does not gate readiness. A failed read reports `unavailable` and never becomes an empty result. Readiness needs every served authority `healthy` (a rollup of `healthy` or `not_served`). Autoscaling and convergence need every authority served and `healthy`. Diagnostics hold the exception type only. The gateway fleet routes use this collector. | `tests/fleet/test_health.py` asserts the healthy rollup, a failed authority, an unserved authority that leaves readiness set, and secret-free diagnostics.
    requirementARBORA-FLEETVERIFIED62c0320da4f9
    tests/fleet/test_health.py:19
    ARBORA-FLEET-R025
    Skills from every installed package, and an always-offered core pack, join the find/load path
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Skills from every installed package, and an always-offered core pack, join the find/load path.** arbora serves skills from its own package. It also serves skills from each installed package that declares the `agent_connector_sdk.skill_providers` entry point. `arbora.core.providers` discovers those packages (`ARBORA-HOST-R001.10`). The fleet harvest adds its skills too. All of them use the same catalog and the `find_tools`, `discover_tools` and `list_catalog` path. A short core-pack list is served without a search query. A locally served skill takes precedence over a fleet-harvested skill of the same name. Arbora reports an unreadable skill and a core-pack name that no installed package provides. It never drops them silently. | `tests/fleet/test_local_skill_discovery.py` ranks a local skill with fleet tools and lists local skills without a query.
    requirementARBORA-FLEETVERIFIED3f7190f32493
    d16472d4df1d
    tests/fleet/test_local_skill_discovery.py:145
    tests/fleet/test_local_skill_discovery.py:32
    ARBORA-FLEET-R029
    The intent tools are the only MCP surface
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **The intent tools are the only MCP surface.** arbora serves the six intent tools and two MCP Apps launchers from the agent-utilities contract. `find` searches, lists and reports fleet status. `act` calls fleet tools, browser control, A2A and RLM operations. `manage` mounts and releases fleet servers. arbora registers no fleet meta-tool and no per-session visibility middleware. This requirement supersedes the four resident tools in ARBORA-FLEET-R018 and ARBORA-FLEET-R020. | Served-surface tests list exactly the intent tools. Fleet tests reach find, call, load and status through the intent tools.
    requirementARBORA-FLEETLANDED1a8d280ab981
    d2b070392ec9
    db8d44259c3d
    ARBORA-FLEET-R026
    The catalog admits each server on its own
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **The catalog admits each server on its own.** The catalog reader skips a live registration without a current `mcp_server` component. It logs a warning and records the server name. `multiplexer_status` reports the names as `unadmitted_servers`. Boot never fails for this state. Receipt, revision, pin, content, duplicate and page-bound faults stay fatal. | `tests/test_fleet_catalog_reader.py` proves the reader skips and reports a bare registration. The existing fail-closed cases still raise. A multiplexer test reads `unadmitted_servers` from status.
    requirementARBORA-FLEETLANDED619d25ac8e69
    d9015e6d6cda
    ARBORA-FLEET-R027
    Arbora onboards every configured fleet server
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Arbora onboards every configured fleet server.** One idempotent pass reads the enabled streamable-HTTP servers from the MCP config. The pass registers each server and captures its catalog through the connector SDK. It attests the catalog with EG and imports the pack. One server's failure leaves the others unaffected. `arbora-production-ops onboard-fleet` runs a full pass and exits non-zero on any failure. Boot runs the pass on a background thread. A pass fault never blocks or stops serving. | `tests/fleet/test_fleet_onboarding.py` covers config filtering, a fresh-store pass, a failing server, an admitted server, a registry outage, a missing child credential, the CLI and a failing boot pass.
    requirementARBORA-FLEETSPECIFIED5edd6cc9a3d7
    619d25ac8e69
    bbc73cd1532d
    be2026dd4ebf
    d9015e6d6cda
    ARBORA-FLEET-R028
    Arbora renews every registration before its lease lapses
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Arbora renews every registration before its lease lapses.** Each pass re-registers each fleet and self-served lease that expires within six hours. Each renewal window uses its own idempotency key. A self-served registration renews at the configured served URL, else at its live URL. The boot thread repeats the pass every 30 minutes. A pass that admits a new server refreshes the multiplexer catalog when no child session runs. | `tests/fleet/test_fleet_onboarding.py` covers lapsing, fresh and absent leases, windowed keys, self-served renewal, the pass schedule and the refresh rule.
    requirementARBORA-FLEETLANDED619d25ac8e69
    d9015e6d6cda
    ARBORA-FLEET-R030
    Fleet onboarding registers connector access contracts unapproved
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Fleet onboarding registers connector access contracts unapproved.** After a pack import, onboarding parses each `ontology://` resource with the SDK access-contract parser. It registers one `SourceConnection` per source and one unapproved `VirtualMapping` per contract. An unapproved mapping serves no reads. A missing SDK parser skips contracts without failure. A repeated pass adds no duplicate mapping. | `tests/fleet/test_fleet_access_contracts.py` covers registration, the unapproved state, idempotency and the missing parser.
    requirementARBORA-FLEETLANDED7e0cc536c81a
    9095a5cefabe
    f2284b64b6b3
    ARBORA-FLEET-R031
    `find` ranks catalog-admitted tools when a live probe cannot answer
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **`find` ranks catalog-admitted tools when a live probe cannot answer.** `discover_tools` reads each admitted server's `tool`-kind components straight off the installed EG catalog snapshot (`MCPMultiplexer._catalog_tool_probe_info`), with no live probe, and ranks them when that server's live probe errored. The live probe stays the freshness refresh; the server still appears in `unavailable` so a real probe failure is never hidden, and a live answer is never shadowed by the snapshot. | `tests/fleet/test_catalog_tool_fallback.py` covers a timed-out server ranking its catalog-sourced tools as stale while still reported `unavailable`, an empty snapshot, and a live answer taking precedence over the snapshot.
    requirementARBORA-FLEETLANDEDd43ff2da921f
    ARBORA-FLEET-R032
    Gateway widget fetches run under a bound service actor
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Gateway widget fetches run under a bound service actor.** `arbora/gateway/aggregator.py` mints the gateway's own verified process actor (the same `acquire_process_identity_token` → `mint_actor_from_token_sync` → `mint_graph_session` authority `arbora/gateway/daemon.py::mint_process_identity` already mints for the host daemon) and binds it with `use_actor`/`use_session` around each widget fetch dispatched to the thread pool, propagating the bound context across the executor boundary instead of losing it to a plain `ThreadPoolExecutor` thread. | Every widget fetch reaches the fleet multiplexer with the gateway's service actor bound (context propagated across the worker-thread boundary), and no fetch fails with a missing process context.
    requirementARBORA-FLEETVERIFIEDf4812c0aa389
    tests/gateway/test_aggregator.py:159
    ARBORA-FLEET-R033
    Fleet-catalog `servers` read owned by arbora
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Fleet-catalog `servers` read owned by arbora.** Rollup of `ARBORA-FLEET-R033.1` and `.2`; unblocks `AU-BOUNDARY-R001.4.2.2`. | All child rows are verified.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R033.1
    Define the typed fleet-catalog `servers` reader
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Define the typed fleet-catalog `servers` reader.** Add `FleetCatalogServersReader` in `arbora/gateway/` returning typed server records scoped by tenant and principal, replacing the catalog read of AU `gateway/registry_api.py` used by `kg_server.py`. Unblocks `AU-BOUNDARY-R001.4.2.2`. | A test lists only servers visible to the calling tenant and principal.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R033.2
    Add refusal tests for the `servers` reader
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Add refusal tests for the `servers` reader.** Missing principal, cross-tenant and unauthorized reads are refused with typed errors. Unblocks `AU-BOUNDARY-R001.4.2.2`. | Tests cover each refusal and confirm no records leak.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034
    Skills and SI workflows are admitted before they run (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Skills and SI workflows are admitted before they run (rollup).** The host must audit each skill for unsafe instructions and tools. It must admit a workflow only with one owner, structured inputs, mapped data flows and a tool inventory. | All child rows are verified.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.1
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Add `SkillAuditReport` (findings, severity, policy limit) and `WorkflowAdmissionRecord` (owner, inputs schema, data flows, tool inventory) in arbora/fleet/admission_models.py. | tests/fleet/test_admission_models.py checks required fields.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.2
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** The default `skill_audit_policy` must scan skill text and declared tools and fail a skill when findings exceed a configured severity count. The default `workflow_admission_policy` must require all four workflow fields. Each default is replaceable by name. | Unit tests in tests/fleet/test_admission_models.py cover pass and fail cases.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.3
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** Call both policies in `invoke` at arbora/api/invoke/pipeline.py:810 before `_confirmation_gate`, for any operation that loads a skill or starts a workflow. The production caller is the served route at arbora/api/http/routes.py:127. This row creates the call site. | tests/fleet/test_admission_wiring.py asserts the policies run before the effect.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.4
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** The pipeline must return `OpError("SKILL_AUDIT_FAILED")` or `OpError("WORKFLOW_NOT_ADMITTED")`, naming the missing field or the exceeded limit. | Refusal tests in tests/fleet/test_admission_wiring.py.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.5
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** The outcome trace must record the audit report digest, the policy name and the missing fields. | A trace test in tests/fleet/test_admission_wiring.py.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.6
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** The served route at arbora/api/http/routes.py enters `invoke` (entry point: the served invoke operation), passes the wired policies, and the test observes refusal of an unsafe skill and of an ownerless workflow, then admission of a complete one. | tests/fleet/test_admission_hot_path.py passes.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.7
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Bind certification to skill identity/version, dependency digests, model endpoint revision, system prompt digest and producer attestation. Bind workflow admission to tenant, caller, workflow declaration, every tool schema and current grant revision. | Typed fixtures reject missing bindings and dependency cycles.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.8
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Certify atomic dependencies through the configured local model before composed workflows. EG selects and scores; Arbora validates attestations. Admit every bound tool against the trusted workflow declaration and caller grant before any tool executes. | A stale dependency or one denied tool prevents all workflow calls.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.9
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** Extend invoke at arbora/api/invoke/pipeline.py:810 before confirmation and dispatch. Reuse arbora/api/ops/agents.py:97 operations and the served MCP intent projection. This row creates the certification and workflow admission call sites. | Served agents.run reaches the admission gate before AU execution.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.10
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** Return CERTIFICATION_REQUIRED, CERTIFICATION_STALE, WORKFLOW_NOT_ADMITTED or PRODUCER_UNAVAILABLE. Generated plans cannot enlarge EG policy. Recheck grant, declaration and schema revisions before each dispatch. | Unknown tools, cyclic dependencies and revoked grants produce no new effects.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.11
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** Record ordered certification receipts, dependency identities, model and prompt revisions, workflow snapshot digest and authoritative decision references. Exclude prompt bodies and credentials. | Independent trace reads prove atomic-before-composed ordering and exact tool binding.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.12
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** Entry point agents.run through REST and MCP must exercise local-model certification, workflow admission and actual tool execution. Specify tests/fleet/test_certified_workflow_served.py with allowed, denied and stale cases. | Observe the configured model request and zero denied backend calls.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.4
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Define ProvisionRequest, ProvisionResult and FleetCapacityProof as described in plan.md. Preserve image digest, OS, runtime, tenant, instance identity, budget and idempotency binding. | Typed nested request/result round trips preserve every allocation boundary.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.5
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Validate the declared platform matrix and acquire bounded capacity before allocation. Reuse EG decisions and aggregation; collect durable results from real instances. Replay returns the same allocation receipt. | Observe at least 200 concurrent instances and independent durable results under the declared budget.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.6
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** Reuse arbora/control_plane/runs/admission.py:108 NativeWorkItemAdmissionProtocol and arbora/control_plane/runs/capacity.py:53 CapacityLedger. Extend arbora/api/ops/agents.py:97 through invoke. This row creates the served provisioning adapter call site. | The served operation reaches the approved SDK provisioner and returned-result consumer.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.7
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** Reject unsupported platform/image, denied grant, stale decision, exceeded budget and changed replay bodies before allocation. Unknown allocation outcomes require reconciliation; never repeat an uncertain effect. | No denied allocation occurs; partial failures retain actual resource identities for cleanup.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.8
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** Record requested, admitted, started, completed and failed instance identities, peak concurrency, budget consumption, timestamps and result receipts. Preserve EG aggregation operation/version and input receipt identities. | Counters reconcile with independent runtime and durable result observations.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.9
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** Entry point agents.run must exercise real disposable provisioners in tests/fleet/test_provisioned_capacity_served.py. Cover every declared matrix row, 200 concurrent instances, refusal, replay, interruption and aggregate result reads. | Mock allocations and smaller extrapolated runs cannot establish capacity.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.3
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Define VersionedDefinition with kind, producer identity, semantic version, nested schema, schema digest, body digest and compatibility receipt. Tools retain input/output shapes; prompts retain typed role, instruction, context and example sections. | Fixtures parse nested definitions and reject missing versions or unknown required fields.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.4
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Gate candidate publication on producer schema validity and compatibility with the admitted version. Same-version content changes refuse. Breaking changes require a new major version and explicit re-admission. | Compatible updates publish atomically; incompatible evolution leaves the prior generation active.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.5
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** Extend arbora/fleet/catalog_items.py:208 compute_schema_fingerprint and arbora/fleet/onboarding.py:236 FleetOnboarding.onboard before import. Preserve EG prompt authority and SDK tool schema ownership. | Real served catalog probes provide both schema versions and verified producer receipts.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.6
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** Return DEFINITION_VERSION_REQUIRED, SCHEMA_INVALID, SCHEMA_INCOMPATIBLE or PRODUCER_UNAVAILABLE before catalog visibility. Host parsing cannot certify absent producer evolution semantics. | Missing or contradictory producer evidence never permits a generation swap.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.7
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** Record old/new definition versions, schema/body digests, producer revision, compatibility decision and catalog generation. Preserve tenant and source provenance. | Receipt reads identify exactly which definition each admitted workflow consumed.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.8
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** Entry point served catalog reload in tests/fleet/test_versioned_definitions_served.py admits a compatible nested update. Breaking updates, forged receipts and stale workflow schemas refuse before execution. | MCP and REST expose the same complete admitted generation.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.1
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Bind IntegratedProvisionReceipt to discovery generation, EG skill identity/version, distribution decision, admission receipt, provisioned instance and durable result. Reuse typed work-item projections from R005. | All phases retain one tenant, run identity and exact skill digest.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.2
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Discover authorized domain capabilities, consume EG distribution decisions, provision real agents and attach the graph-ingested skill version. The agent must use that exact identity during execution. | Independent graph and agent observations agree before a successful completion claim.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.3
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** Reuse arbora/fleet/onboarding.py:236 FleetOnboarding.onboard and arbora/api/ops/agents.py:97 operations. Connect the admitted work-item route to provisioning and result evidence. This row creates the integrated acceptance call site. | One served request traverses discovery, distribution, provisioning and ingested skill consumption.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.4
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** Deny missing skills, unavailable producers, incompatible schemas, cross-tenant receipts and unapproved tools. Stop before affected dispatch; retain known partial allocation state without claiming rollback. | Denied discovery returns no protected identity; no unauthorized agent or tool effect occurs.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.5
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** Correlate catalog generation, graph read receipt, distribution decision, instance identity, model trace and result receipt. Read graph state independently after ingestion and agent execution. | The evidence proves graph identity consumption rather than matching copied skill text.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.6
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** Entry point agents.run through real MCP and REST in tests/fleet/test_discovery_distribution_provisioning.py must execute the whole sequence. Include denial, unavailable producer, restart and duplicate delivery. | Separate helper tests cannot satisfy integrated acceptance.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R019.1
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Workflow admission also applies R034.7 through R034.12 through the same narrowing policy boundary. No separate host identity authority is introduced. | The served integrated tests cover this consumer dependency.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R021.1
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Every workflow tool requires the declaration and grant binding in R034.7 through R034.12 before the first call. Revalidate before later calls. | The served integrated tests cover this consumer dependency.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R005.3
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** Integrated work-item distribution and provisioning use R027.1 through R027.6. Preserve EG work-item identity, control lease and returned-result authority. | The served integrated tests cover this consumer dependency.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R019.2
    Original policy contract
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Original policy contract.** Apply narrowing-only policy at discover, load and call after exact scope and principal checks. Policy precedes deputy and confirmation steps. Disabled policy still filters by scope and principal. With no configured policy, default to off. Local deployments ship the default policy enabled; external deployments enable it. deployment/doctor.py warns when policy is off. An enabled but unreachable policy service fails closed at discover, load and call. An explicit policy denial cannot become an allow. | Exercise every phase with allowed and denied callers while policy is enabled and disabled. No denied call reaches the engine. Cover all three deployment modes and assert the doctor warning for off mode. For each phase, compare an allowed decision, denied decision and unavailable service. Refused discovery leaks no item; refused loading or calling produces no effect.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R021.2
    Original fleet authority contract
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Original fleet authority contract.** Require the exact fleet scope for each action through _require_fleet_capability. Neither admin nor kg:admin substitutes for that scope. Local stdio enforces the same rule as network transports. tool_dispatchable denies every unrecognized native host tool. The served MCP surface applies the existing policy filter before visibility and dispatch. | Exercise correctly scoped and over-broad callers for each action on stdio and network transports. Only the exact authorized scope permits the action. Unknown native names refuse. Start the actual MCP surface and prove policy middleware filters discovery and execution for denied callers.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R027.7
    Original fleet onboarding contract
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Original fleet onboarding contract.** One pass selects every enabled streamable-HTTP server from MCP config. It registers each server, captures its catalog through SDK, attests with EG and imports the pack. Repeated onboarding is idempotent and handles admitted servers without duplicate imports. A failing server leaves the others unaffected. Registry outages and missing child credentials produce explicit per-server failure outcomes. arbora-production-ops onboard-fleet runs one complete pass, reports each server and exits non-zero when any server fails. Boot starts the same onboarding pass on a background thread. A pass failure never blocks or stops serving. | A fresh-store pass covers multiple enabled servers. Disabled servers and other transports are excluded. Each eligible server has registration, capture, attestation and import evidence. Repeat a pass and observe no duplicate imports. Mix failing and healthy servers, then exercise registry outage and missing credentials. Preserve successful server outcomes. Invoke the real CLI for successful and mixed-result passes. Assert complete server reporting and the required exit status. Start the actual serving composition with a failing boot pass. Observe the failure report while MCP requests still complete.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.4
    Original writable-fleet acceptance residual
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Original writable-fleet acceptance residual.** Model: The original R003 contract covers every admitted writable connector, not just repository files. Behavior: Preserve typed registry exposure, preview gating, deterministic replay and correct fleet behavior across service restart. Wiring: Retain R003.1 through R003.3 and their original acceptance; extend the served fleet fixture. Refusal: No unguarded native tool, missing preview or mismatched effect key may produce a write. Evidence: Restart and fault each admitted writable profile. Observe original receipts without duplicate effects and no partial protocol state. Missing previews and mismatched keys must prevent writes. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_original_fleet_restart`. Restart and fault each admitted writable profile. Observe original receipts without duplicate effects and no partial protocol state. Missing previews and mismatched keys must prevent writes.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.5
    Complete repository request binding
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Complete repository request binding.** Model: RepositoryWriteBackParams carries the full SDK RepositorySourceEffectRequest and a trusted connector-binding digest. Behavior: Keep every SDK field, including exact bytes, immutable base, actor, approval and effect key, inside the confirmed projection. Wiring: Extend the existing write-back operation schemas with the closed repository profile defined in plan.md. Refusal: Unknown fields, changed bindings and request.intent differing from durable.desired_patch["repository_effect"] refuse. Evidence: Round-trip seeded byte fixtures through HTTP and MCP. Compare canonical projections and refuse each independently altered field. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_request_binding`. Round-trip seeded byte fixtures through HTTP and MCP. Compare canonical projections and refuse each independently altered field.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.6
    Trusted composition through shared invoke
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Trusted composition through shared invoke.** Model: An admitted binding identifies the connector, source instance, repository, operation schema and existing execution authority. Behavior: Resolve it from trusted configuration and route both operations through the existing invoke checks. Wiring: Extend write_back.py and registry_factory.py; compose the admitted SDK operation through the existing fleet gateway and executor. Refusal: Missing producer, changed configuration or unavailable replay authority returns a typed refusal before provider mutation. Evidence: A served request reaches the real admitted connector once. Unbound configuration and direct native bypass attempts reach it zero times. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_trusted_composition`. A served request reaches the real admitted connector once. Unbound configuration and direct native bypass attempts reach it zero times.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.7
    Preview and approval bind the commit operation
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Preview and approval bind the commit operation.** Model: The existing plan binds the commit operation, full parameters, caller, tenant, policy and registry revision. Behavior: Require the SDK dry-run and recorded approval for the same canonical change set before commit. Wiring: Reuse bind_plan and the existing confirmation, audit and reservation path under ARBORA-OPS-R009. Refusal: A preview-operation lease, expired plan, changed payload or unbound approval cannot authorize commit. Evidence: One exact approved preview commits. Each binding change, invalid lease and missing required step-up produces zero provider mutations. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_commit_binding`. One exact approved preview commits. Each binding change, invalid lease and missing required step-up produces zero provider mutations.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.8
    Served effect and independent readback evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Served effect and independent readback evidence.** Model: The result carries the actual SDK RepositorySourceEffectReceipt, request digest and receipt digest. Behavior: Return success only for a bound durable attempt with an actual immutable revision and matching independent readback. Wiring: Project SDK R004.8 through R004.10 and R004.12 results through the served operation response. Refusal: An echoed effect key, applied flag, fabricated revision or unbound receipt cannot establish success. Evidence: Serve preview, approval and commit against a disposable provider. Independently read its revision and durable graph attempt. An echoed flag or unbound receipt must refuse success. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_actual_effect_readback`. Serve preview, approval and commit against a disposable provider. Independently read its revision and durable graph attempt. An echoed flag or unbound receipt must refuse success.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.9
    Zero-effect refusal parity
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Zero-effect refusal parity.** Model: The negative matrix binds each changed request or denied authority to the observed provider call count. Behavior: Apply existing principal, scope, policy, subject-read, plan, approval and audit rules identically across HTTP and MCP. Wiring: Use the shared invoke error envelope and SDK refusal semantics; retain original engine and fleet error provenance. Refusal: Reject missing approval, stale base, path escape, changed bytes and denied scope before mutation. Post-effect uncertainty never means rollback. Evidence: Observe zero denied mutations on both surfaces. Inject readback failure after an effect and observe uncertainty without another write. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_refusal_parity`. Observe zero denied mutations on both surfaces. Inject readback failure after an effect and observe uncertainty without another write.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R003.10
    Durable replay across host and connector restart
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Durable replay across host and connector restart.** Model: The host plan and reservation bind the original SDK effect key, request and durable receipt. Behavior: Recover the same proven result after restart; reconcile uncertain effects without blind reapply. Wiring: Use the existing qualified effect coordinator with SDK R004.2 and R004.11 through shared invoke. Refusal: A consumed plan alone cannot prove completion; conflicting replay, lost receipts and unavailable causal lookup cannot trigger another mutation. Evidence: Race identical calls and crash at each effect boundary. Restart both processes and prove one effect or a truthful unresolved result. | Proposed test: `tests/fleet/test_repository_source_effect_served.py::test_restart_replay`. Race identical calls and crash at each effect boundary. Restart both processes and prove one effect or a truthful unresolved result.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R035
    Authenticated schema preflight for OpenAPI operation aliases
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Authenticated schema preflight for OpenAPI operation aliases.** Before invoking a schema-bound alias, Arbora reads its SDK manifest and complete ordered fragments over the same authority-admitted MCP session. It reconstructs the canonical document with the public SDK. It checks both schema hashes and exact equality with the admitted input/output schemas. It binds the manifest alias and operation to the requested action. Revalidate caller delegation, child generation, catalog revision and tool mapping before each resource read and final call. Missing, stale, invalid, incomplete, oversized or mismatched disclosure refuses before invocation. Schema-bound aliases are not automatically retried after uncertain outcomes; existing MCP confirmation and effect handling remain authoritative. | `tests/fleet/test_multiplexer_schema_disclosure.py` covers complete reconstruction, stale/incomplete/mismatched refusal, missing output-schema refusal, authority/session/catalog binding, OAuth session reuse and no write replay. These fixture tests do not establish live-provider or deployment evidence.
    requirementARBORA-FLEETVERIFIED1cf004ee454e
    1e55e62acb2a
    35fbba91b24b
    61c7f230ec1e
    763701d591a8
    tests/fleet/test_multiplexer_boundary.py:275
    tests/fleet/test_multiplexer_boundary.py:283
    tests/fleet/test_multiplexer_boundary.py:296
    tests/fleet/test_multiplexer_dynamic_gateway.py:1842
    tests/fleet/test_multiplexer_dynamic_gateway.py:1859
    ARBORA-FLEET-R024.10
    AU:29 Arbora definition slice
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **AU:29 Arbora definition slice.** AU:29 cross-owner slice. Residual: SDK allocation/reconciliation producer API with actual instance receipts, unknown-result handling and replay fencing. Binding from the AU sandbox port through the hosted agents.run operation to that producer Arbora minimum action:. Define only the missing SDK allocation/reconciliation contract and exact consumer binding; preserve the existing host matrix and refusal definitions. Acceptance must cross the served agents.run route into real disposable adapters. With unsupported combinations producing zero allocation and uncertain outcomes never blindly retried. Producer/consumer boundary: AU direct sandbox port -> Arbora agents.run/invoke -> arbora/control_plane/runs/admission.py. NativeWorkItemAdmissionProtocol and capacity.py CapacityLedger -> SDK provisioner (producer operation/module not defined) -> runtime allocation receipt -> Arbora returned-result consumer. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `AU-CONTROL-R021, AU-CONTROL-R038, AU-CONTROL-R038.1, AU-CONTROL-R038.2, AU-CONTROL-R038.3, AU-CONTROL-R038.4, AU-CONTROL-R038.5, AU-CONTROL-R038.6, AU-CONTROL-R039, AU-CONTROL-R039.1, AU-CONTROL-R039.2, AU-CONTROL-R039.3, AU-CONTROL-R039.4, AU-CONTROL-R039.5, AU-CONTROL-R039.6, AU-CONTROL-R041, AU-CONTROL-R041.1, AU-CONTROL-R041.2, AU-CONTROL-R041.3, AU-CONTROL-R041.4, AU-CONTROL-R041.5, AU-CONTROL-R041.6, ARBORA-FLEET-R024.4, ARBORA-FLEET-R024.5, ARBORA-FLEET-R024.6, ARBORA-FLEET-R024.7, ARBORA-FLEET-R024.8, ARBORA-FLEET-R024.9`. Source record SHA-256: `49df21c60c947240d4f02b1424b1de29183f10a69c76bd885f19d13e7237061c`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, arbora/specs/fleet-catalog-and-tools/plan.md:150#sha256=8fe992c0172fe99e82885d398c4490c00643801df8b64db82dafe2dd235a9223, arbora/specs/fleet-catalog-and-tools/plan.md:151#sha256=33a792338bd6baa69fca00bcf7ac8202fe029911eb5f9b83a9244ddb29926b1f, arbora/specs/fleet-catalog-and-tools/plan.md:152#sha256=3862f89efb1ead7c8a8684e6204def414d615207f4fff79ef30cfa66b00f4e95, arbora/specs/fleet-catalog-and-tools/plan.md:153#sha256=6a4c23b6a961588e9a6ed00a06813b6d584a607bc2668e7f2d94d1739055752b, arbora/specs/fleet-catalog-and-tools/plan.md:154#sha256=0c9a2ad707136387a8088a0d003599eff6614e46b7b27ea461249a1a7d235790, arbora/specs/fleet-catalog-and-tools/plan.md:155#sha256=40538332c2a8ed9e1e71533cd87dec249b62697786ae302d55115d10bdf256f8, arbora/specs/fleet-catalog-and-tools/plan.md:156#sha256=3752c6301423554e39f0d762f2e9aed78cf4247f061639641df3e7575f95c181, arbora/specs/fleet-catalog-and-tools/plan.md:157#sha256=8ec92bc0ae2191f7f6d7716eb898154322122194a2739dbcbf1d1a82bd1b6d02, arbora/specs/fleet-catalog-and-tools/plan.md:158#sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, arbora/specs/fleet-catalog-and-tools/plan.md:159#sha256=000bafff0b1df418ca2a05537925f6e57b8d1e1654b3d4eb998197ce6d6e43fb, arbora/specs/fleet-catalog-and-tools/plan.md:160#sha256=5cce45243da01c4af746641382ca6c84ac7a73cf291c51779fd47cb28cf1699a, arbora/specs/fleet-catalog-and-tools/plan.md:161#sha256=d0aacbb14d48d0923d26d8efdb45e159b41f3ddb8f1ee160477565222eaa774c, arbora/specs/fleet-catalog-and-tools/plan.md:162#sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, arbora/specs/fleet-catalog-and-tools/plan.md:163#sha256=9bbb969aee819a16737ffdba1d15ebdb3541c3773144dc09df2663797111b334, arbora/specs/fleet-catalog-and-tools/plan.md:164#sha256=4da1ec6f47782090102dc16bda978efb5655fbf2ddce0f84ecf1faf79a930f2d, arbora/specs/fleet-catalog-and-tools/plan.md:165#sha256=4b665287c64ea278c7b9b29be6549b9b20f6cbca908c6f0c480794f17beaf60f, arbora/specs/fleet-catalog-and-tools/plan.md:166#sha256=5736970e981605d0675fa3a2825712560785082e58af6229d834e9c107314aa6, arbora/specs/fleet-catalog-and-tools/plan.md:167#sha256=887fc0aced120fc3763f3e8f6d06f7eb989937812afe1539e93a2c27f20f53f3, arbora/specs/fleet-catalog-and-tools/plan.md:168#sha256=3ae24c1a63f728e4336597f14282e88401359ed438638cf17b59e0e41343f810, arbora/specs/fleet-catalog-and-tools/plan.md:169#sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, arbora/specs/fleet-catalog-and-tools/plan.md:170#sha256=1d1d6723ad8b0c2d94691135886fb6bfd6772b57ba751c4435204ff796f4548e, arbora/specs/fleet-catalog-and-tools/plan.md:171#sha256=308a3420a69c828fafc2381d64c4acd7b23a6ce6c7e944b0dbf4e1e83e946993, arbora/specs/fleet-catalog-and-tools/plan.md:172#sha256=77a31d59a69f081e6b8f97303ae58eadc1b5c0e87416333177f56204ae107d98, arbora/specs/fleet-catalog-and-tools/plan.md:173#sha256=ef68c4a84ec4424b847382c5b9fbc1ddee34d560abc4e7bffa372ee4cb720943, arbora/specs/fleet-catalog-and-tools/plan.md:174#sha256=4f01f77b17d1907a0baf9642db8cde70e04a5e51d489ebe6fbc9ba706797441f, arbora/specs/fleet-catalog-and-tools/plan.md:175#sha256=c11fc8d2e1fd526ab00f3cb36b1672086dbc4b9b48a1923de014e5220bd0514d, arbora/specs/fleet-catalog-and-tools/plan.md:176#sha256=57b64cc7c260f47db959b048a7c867a71f9e8798fcb64d144cce5a0473806968, arbora/specs/fleet-catalog-and-tools/requirements.md:89#sha256=2b8dadeef0c0cd61f4437ca5899360ae99208ad363f409f2930816543fea8b04, arbora/specs/fleet-catalog-and-tools/requirements.md:90#sha256=ad310fd6727a224c24b128721a9095f620c5e8ca87bc3342c3cf06b3fb046676, arbora/specs/fleet-catalog-and-tools/requirements.md:91#sha256=5c976b8e84f7c83b5f14d0974a64b8a2370a32cd395c2480adeef40b9b511a7b, arbora/specs/fleet-catalog-and-tools/requirements.md:92#sha256=ae533aa48c60bf84a766f91c2f39ef890cc0b5d4cff541d36b3a293bf1b9639f, arbora/specs/fleet-catalog-and-tools/requirements.md:93#sha256=8bf49a7de9c909fc5be29beeedd19e5a2b21ecade2a00da409fc667c0c465fa8, arbora/specs/fleet-catalog-and-tools/requirements.md:94#sha256=c3ded92adffb8f82c5ce532c1e9a8f91b034496642757e48f24f95d346ea5ecf, agent-utilities/specs/agent-control-plane/requirements.md:26#sha256=643e7a1f961e5b313cbafb9cbf8b85873f33be7463c17736870cf1c6e9dd6848`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/15`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `AU-CONTROL-R021, AU-CONTROL-R038, AU-CONTROL-R038.1, AU-CONTROL-R038.2, AU-CONTROL-R038.3, AU-CONTROL-R038.4, AU-CONTROL-R038.5, AU-CONTROL-R038.6, AU-CONTROL-R039, AU-CONTROL-R039.1, AU-CONTROL-R039.2, AU-CONTROL-R039.3, AU-CONTROL-R039.4, AU-CONTROL-R039.5, AU-CONTROL-R039.6, AU-CONTROL-R041, AU-CONTROL-R041.1, AU-CONTROL-R041.2, AU-CONTROL-R041.3, AU-CONTROL-R041.4, AU-CONTROL-R041.5, AU-CONTROL-R041.6, ARBORA-FLEET-R024.4, ARBORA-FLEET-R024.5, ARBORA-FLEET-R024.6, ARBORA-FLEET-R024.7, ARBORA-FLEET-R024.8, ARBORA-FLEET-R024.9`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, arbora/specs/fleet-catalog-and-tools/plan.md:150#sha256=8fe992c0172fe99e82885d398c4490c00643801df8b64db82dafe2dd235a9223, arbora/specs/fleet-catalog-and-tools/plan.md:151#sha256=33a792338bd6baa69fca00bcf7ac8202fe029911eb5f9b83a9244ddb29926b1f, arbora/specs/fleet-catalog-and-tools/plan.md:152#sha256=3862f89efb1ead7c8a8684e6204def414d615207f4fff79ef30cfa66b00f4e95, arbora/specs/fleet-catalog-and-tools/plan.md:153#sha256=6a4c23b6a961588e9a6ed00a06813b6d584a607bc2668e7f2d94d1739055752b, arbora/specs/fleet-catalog-and-tools/plan.md:154#sha256=0c9a2ad707136387a8088a0d003599eff6614e46b7b27ea461249a1a7d235790, arbora/specs/fleet-catalog-and-tools/plan.md:155#sha256=40538332c2a8ed9e1e71533cd87dec249b62697786ae302d55115d10bdf256f8, arbora/specs/fleet-catalog-and-tools/plan.md:156#sha256=3752c6301423554e39f0d762f2e9aed78cf4247f061639641df3e7575f95c181, arbora/specs/fleet-catalog-and-tools/plan.md:157#sha256=8ec92bc0ae2191f7f6d7716eb898154322122194a2739dbcbf1d1a82bd1b6d02, arbora/specs/fleet-catalog-and-tools/plan.md:158#sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, arbora/specs/fleet-catalog-and-tools/plan.md:159#sha256=000bafff0b1df418ca2a05537925f6e57b8d1e1654b3d4eb998197ce6d6e43fb, arbora/specs/fleet-catalog-and-tools/plan.md:160#sha256=5cce45243da01c4af746641382ca6c84ac7a73cf291c51779fd47cb28cf1699a, arbora/specs/fleet-catalog-and-tools/plan.md:161#sha256=d0aacbb14d48d0923d26d8efdb45e159b41f3ddb8f1ee160477565222eaa774c, arbora/specs/fleet-catalog-and-tools/plan.md:162#sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, arbora/specs/fleet-catalog-and-tools/plan.md:163#sha256=9bbb969aee819a16737ffdba1d15ebdb3541c3773144dc09df2663797111b334, arbora/specs/fleet-catalog-and-tools/plan.md:164#sha256=4da1ec6f47782090102dc16bda978efb5655fbf2ddce0f84ecf1faf79a930f2d, arbora/specs/fleet-catalog-and-tools/plan.md:165#sha256=4b665287c64ea278c7b9b29be6549b9b20f6cbca908c6f0c480794f17beaf60f, arbora/specs/fleet-catalog-and-tools/plan.md:166#sha256=5736970e981605d0675fa3a2825712560785082e58af6229d834e9c107314aa6, arbora/specs/fleet-catalog-and-tools/plan.md:167#sha256=887fc0aced120fc3763f3e8f6d06f7eb989937812afe1539e93a2c27f20f53f3, arbora/specs/fleet-catalog-and-tools/plan.md:168#sha256=3ae24c1a63f728e4336597f14282e88401359ed438638cf17b59e0e41343f810, arbora/specs/fleet-catalog-and-tools/plan.md:169#sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, arbora/specs/fleet-catalog-and-tools/plan.md:170#sha256=1d1d6723ad8b0c2d94691135886fb6bfd6772b57ba751c4435204ff796f4548e, arbora/specs/fleet-catalog-and-tools/plan.md:171#sha256=308a3420a69c828fafc2381d64c4acd7b23a6ce6c7e944b0dbf4e1e83e946993, arbora/specs/fleet-catalog-and-tools/plan.md:172#sha256=77a31d59a69f081e6b8f97303ae58eadc1b5c0e87416333177f56204ae107d98, arbora/specs/fleet-catalog-and-tools/plan.md:173#sha256=ef68c4a84ec4424b847382c5b9fbc1ddee34d560abc4e7bffa372ee4cb720943, arbora/specs/fleet-catalog-and-tools/plan.md:174#sha256=4f01f77b17d1907a0baf9642db8cde70e04a5e51d489ebe6fbc9ba706797441f, arbora/specs/fleet-catalog-and-tools/plan.md:175#sha256=c11fc8d2e1fd526ab00f3cb36b1672086dbc4b9b48a1923de014e5220bd0514d, arbora/specs/fleet-catalog-and-tools/plan.md:176#sha256=57b64cc7c260f47db959b048a7c867a71f9e8798fcb64d144cce5a0473806968, arbora/specs/fleet-catalog-and-tools/requirements.md:89#sha256=2b8dadeef0c0cd61f4437ca5899360ae99208ad363f409f2930816543fea8b04, arbora/specs/fleet-catalog-and-tools/requirements.md:90#sha256=ad310fd6727a224c24b128721a9095f620c5e8ca87bc3342c3cf06b3fb046676, arbora/specs/fleet-catalog-and-tools/requirements.md:91#sha256=5c976b8e84f7c83b5f14d0974a64b8a2370a32cd395c2480adeef40b9b511a7b, arbora/specs/fleet-catalog-and-tools/requirements.md:92#sha256=ae533aa48c60bf84a766f91c2f39ef890cc0b5d4cff541d36b3a293bf1b9639f, arbora/specs/fleet-catalog-and-tools/requirements.md:93#sha256=8bf49a7de9c909fc5be29beeedd19e5a2b21ecade2a00da409fc667c0c465fa8, arbora/specs/fleet-catalog-and-tools/requirements.md:94#sha256=c3ded92adffb8f82c5ce532c1e9a8f91b034496642757e48f24f95d346ea5ecf, agent-utilities/specs/agent-control-plane/requirements.md:26#sha256=643e7a1f961e5b313cbafb9cbf8b85873f33be7463c17736870cf1c6e9dd6848`. This definition does not assert these tests have run.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R024.11
    AU:30 Arbora definition slice
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **AU:30 Arbora definition slice.** AU:30 cross-owner slice. Residual: The selected AggregationOp lacks binding to AU FanoutResult and real fleet receipts. No generated public operation/version, result schema, consumer call, or independent served readback is named. Host plan line 207 explicitly preserves this producer gap. Arbora minimum action: Retain only the aggregation-interface residual. Bind existing EG aggregation to AU/Arbora result receipts with operation/version/schema/caller/readback evidence. Do not add another 200-instance definition or aggregation policy. Producer/consumer boundary: EG decompose_task selects AggregationOp; AU _fork_fanout returns FanoutResult; Arbora agents.run collects durable instance receipts. Applying aggregation to those receipts lacks the named public producer/consumer contract. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `AU-CONTROL-R043, AU-CONTROL-R043.1, AU-CONTROL-R043.2, AU-CONTROL-R043.3, AU-CONTROL-R043.4, AU-CONTROL-R043.5, AU-CONTROL-R043.6, AU-CONTROL-R007, AU-CONTROL-R018, AU-HARNESS-R026, AU-HARNESS-R026.1, AU-HARNESS-R026.2, AU-HARNESS-R026.3, AU-HARNESS-R026.4, AU-HARNESS-R026.5, AU-HARNESS-R026.6, AU-HARNESS-R026.7, ARBORA-FLEET-R024.4, ARBORA-FLEET-R024.5, ARBORA-FLEET-R024.6, ARBORA-FLEET-R024.7, ARBORA-FLEET-R024.8, ARBORA-FLEET-R024.9`. Source record SHA-256: `8f2ff3030a71d67b20cd19301f0ed8cef75e975403595cec4060abf9fa8952c1`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, agent-utilities/specs/agent-control-plane/requirements.md:12#sha256=ccedbc80e3c3d981854ae5c31f76f63b7c8bdd27af501dcb4546b988294e851c, agent-utilities/specs/agent-control-plane/requirements.md:100#sha256=ee88348e7504497509d3f035e319bb34ab65fbfe0d860d1b2828417bbd6f0ed1, agent-utilities/specs/agent-control-plane/requirements.md:101#sha256=d3d01e99903b7c42070d019b6133df2f74078b01a9ab3e12dc167ced500c0cd9, arbora/specs/fleet-catalog-and-tools/requirements.md:90#sha256=ad310fd6727a224c24b128721a9095f620c5e8ca87bc3342c3cf06b3fb046676, arbora/specs/fleet-catalog-and-tools/requirements.md:92#sha256=ae533aa48c60bf84a766f91c2f39ef890cc0b5d4cff541d36b3a293bf1b9639f, arbora/specs/fleet-catalog-and-tools/requirements.md:93#sha256=8bf49a7de9c909fc5be29beeedd19e5a2b21ecade2a00da409fc667c0c465fa8, arbora/specs/fleet-catalog-and-tools/requirements.md:94#sha256=c3ded92adffb8f82c5ce532c1e9a8f91b034496642757e48f24f95d346ea5ecf, epistemic-graph/specs/decision-engine/requirements.md:280#sha256=c6863f3a208df505d64ef6a9c672fdc04f8061b1c361c224d1d45d5f87d50fc8, epistemic-graph/specs/decision-engine/requirements.md:282#sha256=ab6257664369433a509277ad01a474bb8e769c04693cdf99f6861c9ff45b9a02, arbora/specs/fleet-catalog-and-tools/plan.md:130#sha256=9c3a9be68e50c3395f82c3ee14554891b0bd19d1419fd5f372a0a4da5764ae7f, arbora/specs/fleet-catalog-and-tools/plan.md:131#sha256=72edacadb577797544a01534a7f49b9fe046ec1d65022572185586e3782aeff4, arbora/specs/fleet-catalog-and-tools/plan.md:132#sha256=3349bd2a7f486086dd14ec9c28b56f35c742daf2dd5cc43f1557ed7b5414358e, arbora/specs/fleet-catalog-and-tools/plan.md:133#sha256=c1af0b78233d5d23d72e347020553eaae486f681f5f41aa107c0ed8ddcf43e58, arbora/specs/fleet-catalog-and-tools/plan.md:207#sha256=cacec740ca546d9ab6b818b7986359edfa4d6f51277c453f51df5d3e44b1e2ff, arbora/specs/fleet-catalog-and-tools/plan.md:209#sha256=11b9626ad9b27e25d0ec1ef636320de5062d7c731e681876b8c59ee98688df3d, arbora/specs/fleet-catalog-and-tools/plan.md:211#sha256=feb0279ce1d92bc3120ecee04c588483c42eb4ec5999d1f3d7a95639cb66d849, arbora/specs/fleet-catalog-and-tools/plan.md:212#sha256=1d54719777ef43536e0077eb5f2f3bda89a34f57e1b08c96e013e09171d2f67b, arbora/specs/fleet-catalog-and-tools/plan.md:213#sha256=9d21c74d67b683ba1dd44587115fbee059259366a352998a86d9808abd62c0ef, arbora/specs/fleet-catalog-and-tools/plan.md:219#sha256=57a10a4bba1bac9b9b05cd0722cdf1f4773c4374a797885b9bc540fe38401ab6, arbora/specs/fleet-catalog-and-tools/plan.md:220#sha256=2a1eba0606487abcef074148bb979a01b3289614c514f8b027ccb148c780a4ba`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/16`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `AU-CONTROL-R043, AU-CONTROL-R043.1, AU-CONTROL-R043.2, AU-CONTROL-R043.3, AU-CONTROL-R043.4, AU-CONTROL-R043.5, AU-CONTROL-R043.6, AU-CONTROL-R007, AU-CONTROL-R018, AU-HARNESS-R026, AU-HARNESS-R026.1, AU-HARNESS-R026.2, AU-HARNESS-R026.3, AU-HARNESS-R026.4, AU-HARNESS-R026.5, AU-HARNESS-R026.6, AU-HARNESS-R026.7, ARBORA-FLEET-R024.4, ARBORA-FLEET-R024.5, ARBORA-FLEET-R024.6, ARBORA-FLEET-R024.7, ARBORA-FLEET-R024.8, ARBORA-FLEET-R024.9`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, agent-utilities/specs/agent-control-plane/requirements.md:12#sha256=ccedbc80e3c3d981854ae5c31f76f63b7c8bdd27af501dcb4546b988294e851c, agent-utilities/specs/agent-control-plane/requirements.md:100#sha256=ee88348e7504497509d3f035e319bb34ab65fbfe0d860d1b2828417bbd6f0ed1, agent-utilities/specs/agent-control-plane/requirements.md:101#sha256=d3d01e99903b7c42070d019b6133df2f74078b01a9ab3e12dc167ced500c0cd9, arbora/specs/fleet-catalog-and-tools/requirements.md:90#sha256=ad310fd6727a224c24b128721a9095f620c5e8ca87bc3342c3cf06b3fb046676, arbora/specs/fleet-catalog-and-tools/requirements.md:92#sha256=ae533aa48c60bf84a766f91c2f39ef890cc0b5d4cff541d36b3a293bf1b9639f, arbora/specs/fleet-catalog-and-tools/requirements.md:93#sha256=8bf49a7de9c909fc5be29beeedd19e5a2b21ecade2a00da409fc667c0c465fa8, arbora/specs/fleet-catalog-and-tools/requirements.md:94#sha256=c3ded92adffb8f82c5ce532c1e9a8f91b034496642757e48f24f95d346ea5ecf, epistemic-graph/specs/decision-engine/requirements.md:280#sha256=c6863f3a208df505d64ef6a9c672fdc04f8061b1c361c224d1d45d5f87d50fc8, epistemic-graph/specs/decision-engine/requirements.md:282#sha256=ab6257664369433a509277ad01a474bb8e769c04693cdf99f6861c9ff45b9a02, arbora/specs/fleet-catalog-and-tools/plan.md:130#sha256=9c3a9be68e50c3395f82c3ee14554891b0bd19d1419fd5f372a0a4da5764ae7f, arbora/specs/fleet-catalog-and-tools/plan.md:131#sha256=72edacadb577797544a01534a7f49b9fe046ec1d65022572185586e3782aeff4, arbora/specs/fleet-catalog-and-tools/plan.md:132#sha256=3349bd2a7f486086dd14ec9c28b56f35c742daf2dd5cc43f1557ed7b5414358e, arbora/specs/fleet-catalog-and-tools/plan.md:133#sha256=c1af0b78233d5d23d72e347020553eaae486f681f5f41aa107c0ed8ddcf43e58, arbora/specs/fleet-catalog-and-tools/plan.md:207#sha256=cacec740ca546d9ab6b818b7986359edfa4d6f51277c453f51df5d3e44b1e2ff, arbora/specs/fleet-catalog-and-tools/plan.md:209#sha256=11b9626ad9b27e25d0ec1ef636320de5062d7c731e681876b8c59ee98688df3d, arbora/specs/fleet-catalog-and-tools/plan.md:211#sha256=feb0279ce1d92bc3120ecee04c588483c42eb4ec5999d1f3d7a95639cb66d849, arbora/specs/fleet-catalog-and-tools/plan.md:212#sha256=1d54719777ef43536e0077eb5f2f3bda89a34f57e1b08c96e013e09171d2f67b, arbora/specs/fleet-catalog-and-tools/plan.md:213#sha256=9d21c74d67b683ba1dd44587115fbee059259366a352998a86d9808abd62c0ef, arbora/specs/fleet-catalog-and-tools/plan.md:219#sha256=57a10a4bba1bac9b9b05cd0722cdf1f4773c4374a797885b9bc540fe38401ab6, arbora/specs/fleet-catalog-and-tools/plan.md:220#sha256=2a1eba0606487abcef074148bb979a01b3289614c514f8b027ccb148c780a4ba`. This definition does not assert these tests have run.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R002.9
    AU:52 Arbora definition slice
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **AU:52 Arbora definition slice.** AU:52 cross-owner slice. Residual: EG prompt and SDK tool producer-specific compatibility/evolution decisions and exact receipts remain unbound to host admission. Declared contract-version pin equality and source-ingest drift classification do not define nested incremental producer compatibility. Arbora minimum action: Define or link only the missing producer-specific evolution/compatibility and receipt contracts, then bind R002.5 consumption. Preserve existing host parsing, version-conflict and breaking-change refusal rules. Producer/consumer boundary: EG prompt authority and SDK tool schema authority -> Arbora compute_schema_fingerprint/FleetOnboarding.onboard -> versioned. Catalog publication; missing producer decision/receipt semantics are explicit. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `AU-HARNESS-R011, ARBORA-FLEET-R002.1, SDK-CONNECTOR-CONTROL-R003, ARBORA-FLEET-R002.3, ARBORA-FLEET-R002.4, ARBORA-FLEET-R002.5, ARBORA-FLEET-R002.6, ARBORA-FLEET-R002.7, ARBORA-FLEET-R002.8`. Source record SHA-256: `e03b25156a4f84d27c4afba63d0cd9e526b549b5905994a53664d193416d048c`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, arbora/specs/fleet-catalog-and-tools/requirements.md:95#sha256=db0fa3fa0b8129adf0e47cedf251d23a4c1cefc8042c3ac0ce21e7f3bb4d4a18, arbora/specs/fleet-catalog-and-tools/requirements.md:96#sha256=23d0b06d0f5a5db82f6838576ae49df3ade434e07265b9fd59b668da21ee7fe5, arbora/specs/fleet-catalog-and-tools/requirements.md:97#sha256=43163d5f0ef5eecbf19d9746730b79dab2989926997bfae90551106cfdee5072, arbora/specs/fleet-catalog-and-tools/requirements.md:98#sha256=8adc75979cdeeb5df9df597b4bd56f6830450dd66c15b44046f4b8636ba1cc3b, agent-connector-sdk/specs/SDK-CONNECTOR-CONTROL/requirements.md:7#sha256=8cc97e7070b51629df4f13ac354b3b7185851f9d8dac025d84b2355f6e8c4e73, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:40#sha256=a909288fc0cb3efe0ce849be7b743333bf57d3259fab9a7afaa71c3af17836fb, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:90#sha256=e7a4994bdd6f87d858ad1f0425f24bf17a37858cacf8ff7a17402710367ec0bc`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/20`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `AU-HARNESS-R011, ARBORA-FLEET-R002.1, SDK-CONNECTOR-CONTROL-R003, ARBORA-FLEET-R002.3, ARBORA-FLEET-R002.4, ARBORA-FLEET-R002.5, ARBORA-FLEET-R002.6, ARBORA-FLEET-R002.7, ARBORA-FLEET-R002.8`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, arbora/specs/fleet-catalog-and-tools/requirements.md:95#sha256=db0fa3fa0b8129adf0e47cedf251d23a4c1cefc8042c3ac0ce21e7f3bb4d4a18, arbora/specs/fleet-catalog-and-tools/requirements.md:96#sha256=23d0b06d0f5a5db82f6838576ae49df3ade434e07265b9fd59b668da21ee7fe5, arbora/specs/fleet-catalog-and-tools/requirements.md:97#sha256=43163d5f0ef5eecbf19d9746730b79dab2989926997bfae90551106cfdee5072, arbora/specs/fleet-catalog-and-tools/requirements.md:98#sha256=8adc75979cdeeb5df9df597b4bd56f6830450dd66c15b44046f4b8636ba1cc3b, agent-connector-sdk/specs/SDK-CONNECTOR-CONTROL/requirements.md:7#sha256=8cc97e7070b51629df4f13ac354b3b7185851f9d8dac025d84b2355f6e8c4e73, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:40#sha256=a909288fc0cb3efe0ce849be7b743333bf57d3259fab9a7afaa71c3af17836fb, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:90#sha256=e7a4994bdd6f87d858ad1f0425f24bf17a37858cacf8ff7a17402710367ec0bc`. This definition does not assert these tests have run.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.13
    AU:98 Arbora definition slice
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **AU:98 Arbora definition slice.** AU:98 cross-owner slice. Residual: Skill upgrades preserve consuming-code compatibility; refuse breaking changes without declared migration. Arbora minimum action: Extend skill admission with previous/new consumer contract evidence and declared migration identity. Refuse an incompatible upgrade lacking migration before effects. Test compatible upgrade, breaking upgrade without migration and declared migration; require no compatibility wrapper. Producer/consumer boundary: Arbora R034.9 attaches skill/workflow certification to invoke before dispatch and EG provides selection/scoring. Neither side has a skill upgrade compatibility/migration receipt. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `none assigned in this packet`. Source record SHA-256: `531cb0ba1accd9e88833249fb253a9f5f7a3c1a911f653b3c9a5bfc42341f978`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, arbora/specs/fleet-catalog-and-tools/requirements.md:86#sha256=afdf1896106cee19135cc6b876362db14f84cf7dd619395dcd028b5207824aa7, arbora/specs/fleet-catalog-and-tools/requirements.md:83#sha256=9150856bf410b027f2982e1fa01999a597beeaead7b2663f54b7c2c997ce85bd, arbora/specs/fleet-catalog-and-tools/requirements.md:84#sha256=ea3d8a899ec58f50cb4164ff3cf4c55d3bb58ca68bac754804b7cf8ead075a81`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/27`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `none assigned in this packet`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, arbora/specs/fleet-catalog-and-tools/requirements.md:86#sha256=afdf1896106cee19135cc6b876362db14f84cf7dd619395dcd028b5207824aa7, arbora/specs/fleet-catalog-and-tools/requirements.md:83#sha256=9150856bf410b027f2982e1fa01999a597beeaead7b2663f54b7c2c997ce85bd, arbora/specs/fleet-catalog-and-tools/requirements.md:84#sha256=ea3d8a899ec58f50cb4164ff3cf4c55d3bb58ca68bac754804b7cf8ead075a81`. This definition does not assert these tests have run.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R034.14
    ARBORA:8 Arbora definition slice
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **ARBORA:8 Arbora definition slice.** ARBORA:8 cross-owner slice. Residual: Reviewed producer requirements define neither the EG certification decision/attestation producer nor the qualified AU orchestration consumer. Arbora prerequisite rules cannot provide those missing producer contracts. Arbora minimum action: Define the minimal EG certification producer and AU orchestration consumer with existing R034 identity bindings. Then link them into R034.7-.12. Retain no-effect refusal and do not add host scoring authority. Producer/consumer boundary: EG selection/scoring/attestation -> AU configured-local-model orchestration -> Arbora invoke/agents.run attestation validation. Exact producer operations and receipts remain unbound. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-FLEET-R034.7, ARBORA-FLEET-R034.8, ARBORA-FLEET-R034.9, ARBORA-FLEET-R034.10, ARBORA-FLEET-R034.11, ARBORA-FLEET-R034.12`. Source record SHA-256: `5df3f5a45d486aeba5765a31b6c6283637adf2bd8ce63a87938eddd28b90f082`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:8, arbora/specs/fleet-catalog-and-tools/requirements.md:88#sha256=91b9cc728ad6b131157c7cf10a596469a77e83fd550f1eb59d50820715473df5, arbora/specs/fleet-catalog-and-tools/requirements.md:83#sha256=9150856bf410b027f2982e1fa01999a597beeaead7b2663f54b7c2c997ce85bd, arbora/specs/fleet-catalog-and-tools/requirements.md:84#sha256=ea3d8a899ec58f50cb4164ff3cf4c55d3bb58ca68bac754804b7cf8ead075a81, arbora/specs/fleet-catalog-and-tools/requirements.md:85#sha256=a89a31e12cbcbbe9ca8322df97e586e7ebfffb17de36a6f36c0ef676e0236e2a`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/34`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-FLEET-R034.7, ARBORA-FLEET-R034.8, ARBORA-FLEET-R034.9, ARBORA-FLEET-R034.10, ARBORA-FLEET-R034.11, ARBORA-FLEET-R034.12`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:8, arbora/specs/fleet-catalog-and-tools/requirements.md:88#sha256=91b9cc728ad6b131157c7cf10a596469a77e83fd550f1eb59d50820715473df5, arbora/specs/fleet-catalog-and-tools/requirements.md:83#sha256=9150856bf410b027f2982e1fa01999a597beeaead7b2663f54b7c2c997ce85bd, arbora/specs/fleet-catalog-and-tools/requirements.md:84#sha256=ea3d8a899ec58f50cb4164ff3cf4c55d3bb58ca68bac754804b7cf8ead075a81, arbora/specs/fleet-catalog-and-tools/requirements.md:85#sha256=a89a31e12cbcbbe9ca8322df97e586e7ebfffb17de36a6f36c0ef676e0236e2a`. This definition does not assert these tests have run.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036
    The connector contract is established on first connect (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **The connector contract is established on first connect (rollup).** On first connect and on each `notifications/resources/list_changed`, the multiplexer reads the connector contract resources. They are `manifest://connector`, the ontology pack and the seed graph. arbora sends only changed resources to the engine. The engine imports ontologies (`EG-TYPED-PACKS-R103`) and seed graphs (`EG-TYPED-PACKS-R104`). arbora holds no validation rule. Children `.1` to `.6` deliver it. | See each child.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036.1
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Add `ConnectContract{connector, manifest_digest, ontology_digests, seed_digest, observed_at}` in `arbora/fleet/connect_contract.py`. Each digest is SHA-256 over the resource body. The record keeps the last digests per connector. Proving test: `tests/fleet/test_connect_contract.py::test_contract_record_round_trips`. | A round trip keeps every field and refuses a blank connector.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036.2
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** The multiplexer reads the contract resources and compares each digest with the last record. It sends each changed ontology to `ImportOntology` and a changed seed graph to the seed import. An unchanged resource sends nothing. Repeated `list_changed` events within 2 s coalesce into one pass. Proving test: `tests/fleet/test_connect_contract.py::test_only_changed_resources_import`. | A second connect with one changed resource sends one import.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036.3
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** The pass attaches in `onboard` at `arbora/fleet/onboarding.py:236`, after `capture` at line 254. The resource change subscription of the multiplexer client session triggers the same `onboard` pass. Proving test: `tests/fleet/test_connect_contract.py::test_list_changed_reaches_onboard`. | A served connect and a `list_changed` event both reach `onboard`.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036.4
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** A connector without a seed resource must onboard without a seed and record `seed_absent`. An engine refusal must mark the connector `contract_rejected`, and arbora must admit none of its tools. A resource over 8 MiB must refuse with `CONTRACT_RESOURCE_TOO_LARGE` before any engine call. Proving test: `tests/fleet/test_connect_contract.py::test_contract_refusals`. | Each case records its reason, and a rejected connector serves no tools.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036.5
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** The onboarding record must carry each resource digest and the engine receipt for each import. `find` status must report the contract state per connector. Proving test: `tests/fleet/test_connect_contract.py::test_status_reports_contract`. | The status read shows the digests and the engine receipts.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R036.6
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** The entry point is a real connector process over MCP. The test connects it, changes its seed graph and emits `list_changed`. A served engine query must read the new catalog objects. Proving test: `tests/fleet/test_connect_contract_served.py::test_first_connect_and_list_changed_reimport_only_changed`. | The first connect imports all resources, and the change imports only the seed graph.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037
    Tools load per job from the engine answer (rollup)
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Tools load per job from the engine answer (rollup).** A harness asks arbora what a job needs. arbora asks the engine for the load set (`EG-DECISION-ENGINE-R176`). arbora lazily loads only the answered tools into the caller session. It returns the answered skills and local agent starts. arbora computes no ranking. The session cap of `ARBORA-FLEET-R018` still applies. Children `.1` to `.6` deliver it. | See each child.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037.1
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** Add `JobLoadRequest{job_text, required_capabilities}` and `JobLoadResult{loaded, over_cap, skills, agent_starts, decision_id}` in `arbora/fleet/job_loads.py`. Proving test: `tests/fleet/test_job_loads.py::test_job_load_round_trips`. | A round trip keeps every field and refuses an empty request.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037.2
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** `find` with a job sends one load-set question to the engine. arbora loads the answered tools in answer order until the session cap. It reports the rest as `over_cap`. It loads nothing that the answer omits. Proving test: `tests/fleet/test_job_loads.py::test_loads_only_answered_tools`. | A 300-tool fleet loads only the answered tools.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037.3
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** The `find` verb (`arbora/api/mcp/verbs.py:18`) routes a job request to `find_tools` (`arbora/fleet/multiplexer_ops.py:150`). It loads through `load_tools` at `arbora/fleet/multiplexer_ops.py:245`. Agent starts dispatch through the existing `act` delegation path. Proving test: `tests/fleet/test_job_loads.py::test_find_job_reaches_load_tools`. | A served `find` with a job reaches `load_tools`.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037.4
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** An engine abstention must load nothing and return the abstention reason. An unreachable engine must return `decision_unavailable`. arbora must not fall back to its own ranking. Proving test: `tests/fleet/test_job_loads.py::test_job_load_refusals`. | Each case loads no tool and returns its reason.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037.5
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** The result must carry the engine decision id and one premise reference per loaded tool. Proving test: `tests/fleet/test_job_loads.py::test_result_cites_decision`. | Each loaded tool names its decision premise.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R037.6
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** The entry point is the served `find` intent tool over MCP. The test connects three fixture connectors with 300 tools and asks for a web search job. Proving test: `tests/fleet/test_job_loads_served.py::test_find_job_lazily_loads_answered_tools`. | The session lists only the answered search tools, and `tools/list_changed` fires once.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R038
    One protocol stack with one implementation per role
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **One protocol stack with one implementation per role.** MCP and A2A each have a serving role and a consuming role. arbora owns MCP serving, A2A serving and the multiplexer MCP client. The SDK owns connector client transports and connector server scaffolding. A second implementation of one role is a defect. The role table is in `plan.md`. | An import-graph test fails when a arbora module implements a connector transport or connector server scaffolding.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039
    Domain pack reads compose engine methods
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Domain pack reads compose engine methods.** A served read operation returns a domain pack for the human-resources, legal, medical or government domain. It composes `eg.storage.ConnectorPack`, `eg.reasoning.OntologyInspect` and `eg.reasoning.ShaclValidate`. Consumer: the legal, human-resources, medical and government skills. The operation holds no pack model, no store and no validator. The pack definition is `EG-TYPED-PACKS-R097`. Children `.1` to `.6` cover model, behavior, wiring, refusal, evidence and hot-path proof. | See each child.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039.1
    Model
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Model.** The operation declares one request, `{domain, version}`, and one result, `{pack_digest, classes, enumerations, shapes_verdict}`. It declares no other data structure. | A contract test lists the request and the result and fails on an extra field.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039.2
    Behavior
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Behavior.** The operation reads the pack through `ConnectorPack`, lists its classes through `OntologyInspect` and checks them through `ShaclValidate`. It returns the engine results unchanged. It adds no ranking and no cache. | A fixture test compares the result with the three engine responses.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039.3
    Wiring
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Wiring.** The registry serves the operation as an intent tool. A skill calls it and holds no copy of the pack. | A wiring test shows the served tool reaches the three engine methods.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039.4
    Refusal
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Refusal.** The operation refuses an unknown domain or version with the engine code. It refuses a caller outside the tenant. It never falls back to a local pack. | One refusal test per case asserts the stable code.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039.5
    Evidence
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Evidence.** The result carries the pack digest and the engine request ids of the three calls. | A test reads the digest and ids from the result.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-FLEET-R039.6
    Hot-path proof
    Definition — ARBORA-FLEET / ARBORA-FLEET — Fleet catalog, intent tools, and policy safe reloadCanonical requirement and verification source
    **Hot-path proof.** The test calls the served tool over MCP for each of the four domains. The added latency over the three engine calls is at most 5 ms at p99. | `tests/fleet/test_domain_pack_served.py::test_domain_pack_read_composes_engine_methods`.
    requirementARBORA-FLEETSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST
    ARBORA-HOST — Arbora host composition and ownership boundary
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R001
    Cross-repository composition boundary assignment
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Cross-repository composition boundary assignment.** Arbora composes its runtime gateway on top of boundary contracts in which the graph engine owns ontology, SHACL and durable graph records, the connector SDK owns connector transport, and the agent runtime exposes only its public agent control-plane API; the web UI consumes this composed boundary rather than any internal package. | An import-boundary census confirms each dependency is reached only through its published public API, enforced as a continuous-integration check.
    requirementARBORA-HOSTSPECIFIED9760bef27075
    ARBORA-HOST-R001.1
    Arbora owns the MCP, REST and API serving code that agent-utilities 3.0.0 drops
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora owns the MCP, REST and API serving code that agent-utilities 3.0.0 drops.** The agent runtime keeps only the harness. Arbora holds the served MCP backing surface in `arbora/mcp_server/backing/` (graph tools, server factory, tasks extension, intent contract, remote OAuth broker, client credentials). It holds the control-plane contracts and the single session port in `arbora/api/contracts/`. It holds WebUI contact and voice delegation in `arbora/webui_host/`. Arbora imports no agent runtime `mcp`, `gateway`, `server` or `api` module and requires `agent-utilities>=3.0.0,<4.0.0`. Child slice of `ARBORA-HOST-R001`. | `tests/test_package_layout.py::test_arbora_imports_no_au_serving_packages` finds no such import under `arbora/`.
    requirementARBORA-HOSTVERIFIED4eb2b408bd93
    tests/test_package_layout.py:120
    ARBORA-HOST-R001.2
    Arbora registers the harness host bindings at startup
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora registers the harness host bindings at startup.** The `arbora` MCP entry point registers three bindings with `agent_utilities.host_ports`. The native toolset provider serves its operations through the governed `_execute_tool` path. The fleet catalog provider maps each server to its public prefix and URL from the served multiplexer. The session keepalive factory renews the session. Shutdown clears the bindings. Without them the harness fails closed. Child slice of `ARBORA-HOST-R001`. | `tests/mcp_server/test_harness_host.py` proves fail-closed before registration, bound tools, fleet and keepalive after it, and cleared bindings after shutdown.
    requirementARBORA-HOSTVERIFIED9e7f6499d96f
    tests/mcp_server/test_harness_host.py:109
    tests/mcp_server/test_harness_host.py:141
    tests/mcp_server/test_harness_host.py:29
    tests/mcp_server/test_harness_host.py:37
    tests/mcp_server/test_harness_host.py:76
    ARBORA-HOST-R001.2.1
    Arbora binds the run-loop providers at startup
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora binds the run-loop providers at startup.** `bind_run_ports()` registers a run decision provider, a model provider and a run event sink with `agent_utilities.host_ports`. The engine serves no run-plan decision, so the decision provider returns the harness default plan over the Arbora model registry. The model provider builds an OpenAI-compatible model for a registry endpoint. The event sink writes each run event to the engine as a `RunEvent` node. `AgentRunPort` adapts the harness `AgentRunExecutor` to the Arbora agent execution port. A run without a model fails closed. Child slice of `ARBORA-HOST-R001.2`. | `tests/test_agent_runs.py` runs an agent through `AgentRunPort` with a fake model and checks the persisted run events. It also checks the registry model and the fail-closed run.
    requirementARBORA-HOSTVERIFIED25e15e2108e1
    tests/test_agent_runs.py:42
    tests/test_agent_runs.py:60
    tests/test_agent_runs.py:77
    ARBORA-HOST-R001.2.2
    A served agents.run call runs end to end
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **A served agents.run call runs end to end.** The invoke pipeline admits the call and dispatches it to the A2A service. The A2A WorkItem authority admits one engine WorkItem through `arbora.work_items` and leases it. The harness `AgentRunExecutor` runs the agent, and the authority commits the outcome to the WorkItem. The run events reach the engine as `RunEvent` nodes. The idempotency key derives the task id, so the A2A authority owns replay for `agents.run`. Every `InvokeServices` that registers `agents.run` declares that owner. The served `arbora` factory runs an A2A `message/send` the same way. Child slice of `ARBORA-HOST-R001.2`. | `tests/test_agents_run_end_to_end.py` invokes `agents.run` with a fake model and a fake engine client. It also boots the served factory and posts `message/send` to `/a2a`. Each test checks the completed task, the committed outcome and the persisted run events.
    requirementARBORA-HOSTVERIFIEDcc6349408a14
    d3d50ac5d766
    tests/test_agents_run_end_to_end.py:117
    tests/test_agents_run_end_to_end.py:164
    ARBORA-HOST-R001.2.3
    The served process mounts the operation-invoke API
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **The served process mounts the operation-invoke API.** When `GRAPH_SERVICE_ENDPOINTS` names an engine, `mcp_server()` mints the process authority first and composes one `HostedInvocation`. The composition joins the generated registry and the bootstrap client factories over one engine client pool. It adds the control-lease plan store, the policy gate and a schema validator over the engine contract schemas. The web UI host calls `POST /api/v1/ops/<op_id>` on that API. `fleet.call` refuses until the served root composes the governed fleet operations. Child slice of `ARBORA-HOST-R001.2`. | `tests/test_served_operation_api.py` mounts the composed API the way the web UI co-service does. It calls `agents.run`, `query.uql` and `eg.graph.GetNodesByLabel` over HTTP and checks each value the web UI parses, and finds no `memory.*` operation. It also lists the served MCP intent verbs and runs `find`.
    requirementARBORA-HOSTVERIFIED192099593cdd
    tests/test_served_operation_api.py:175
    tests/test_served_operation_api.py:217
    ARBORA-HOST-R001.3
    Arbora ships the surface client as its generated client
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora ships the surface client as its generated client.** The typed REST client for the surface front ends is the generated client wheel that `scripts/gen_api.py` emits from the served registry. Arbora ships no hand-written gateway client. The stable application API facade lives in `arbora.api.contracts`. Child slice of `ARBORA-HOST-R001`. | `tests/deployment/test_generated_client_wheel.py` builds the generated client wheel and checks its contents.
    requirementARBORA-HOSTVERIFIED9e7f6499d96f
    tests/deployment/test_generated_client_wheel.py:16
    ARBORA-HOST-R001.4
    Provider plugin entry-point groups use the connector SDK namespace
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Provider plugin entry-point groups use the connector SDK namespace.** Arbora declares its bundled skills under `agent_connector_sdk.skill_providers` and its docs name the `agent_connector_sdk.*_providers` groups; it declares no `agent_utilities.*_providers` group. Child slice of `ARBORA-HOST-R001`. | `tests/deployment/test_arbora_deploy_artifacts.py` asserts the `agent_connector_sdk.skill_providers` entry-point group in `pyproject.toml`.
    requirementARBORA-HOSTVERIFIED9e7f6499d96f
    tests/deployment/test_arbora_deploy_artifacts.py:103
    ARBORA-HOST-R001.5
    The moved serving code keeps its tests and runs on FastMCP 4
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **The moved serving code keeps its tests and runs on FastMCP 4.** The tests of the MCP, API and gateway modules that Arbora took over live under `tests/mcp_server/backing/`, `tests/api/contracts/` and `tests/gateway/`. They import the Arbora paths. Arbora declares `fastmcp>=4` itself. Child slice of `ARBORA-HOST-R001`. | `tests/test_package_layout.py::test_arbora_declares_and_runs_fastmcp_4` checks the declared floor and the installed major version.
    requirementARBORA-HOSTVERIFIED9e7f6499d96f
    tests/test_package_layout.py:136
    ARBORA-HOST-R001.6
    Arbora publishes its operation registry as versioned data
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora publishes its operation registry as versioned data.** `arbora/mcp_server/arbora_operations.json` holds the schema version, digest, intent verbs, operations, tool verbs and supported features. `python -m arbora.mcp_server.operation_registry --write` generates it from the served tool specs. The harness skill validation reads this document. Child slice of `ARBORA-HOST-R001`. | `tests/mcp_server/test_operation_registry.py` proves the packaged document is current, names exactly the served operations and loads through the harness reader.
    requirementARBORA-HOSTVERIFIED9e7f6499d96f
    tests/mcp_server/test_operation_registry.py:11
    tests/mcp_server/test_operation_registry.py:17
    ARBORA-HOST-R001.8
    Gate G-26: the served MCP surface is wired to epistemic-graph
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Gate G-26: the served MCP surface is wired to epistemic-graph.** Every served `engine_<domain>` family resolves to an installed epistemic-graph client class. Every served method is an EG coroutine. `graph_query scope=uql` dispatches to the engine's `uql` method. Only the epistemic-graph planner plans natural-language queries (`nl_query`, `graph_ask`, `ask_data`). Each tool calls `QueryClient.nl_query` through the governed `engine_query` dispatch under `kg:read`. Arbora imports no local NL planner. Arbora refuses options that the engine planner cannot honor with `invalid_request`. Replaces agent-utilities certification gate G-26. Child slice of `ARBORA-HOST-R001`. | `tests/mcp_server/test_engine_wiring_gate.py` passes against the installed epistemic-graph, including the proof that each NL tool reaches only `engine_query.nl_query`.
    requirementARBORA-HOSTVERIFIED3f7190f32493
    9e7f6499d96f
    tests/mcp_server/test_engine_wiring_gate.py:115
    tests/mcp_server/test_engine_wiring_gate.py:22
    tests/mcp_server/test_engine_wiring_gate.py:34
    tests/mcp_server/test_engine_wiring_gate.py:44
    tests/mcp_server/test_engine_wiring_gate.py:65
    ARBORA-HOST-R001.9
    The tiny profile serves the graph with zero containers
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **The tiny profile serves the graph with zero containers.** Arbora and the embedded engine run with no message broker, relational store or remote graph store. Children `.1` and `.2` cover the import footprint and the served graph. Child slice of `ARBORA-HOST-R001`. | See each child.
    requirementARBORA-HOSTSPECIFIED9e7f6499d96f
    tests/deployment/test_small_profile_footprint.py:33
    ARBORA-HOST-R001.9.1
    The served surface imports no external-service driver
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **The served surface imports no external-service driver.** A cold import of the gateway routes and the MCP server entry loads no broker client. It also loads no relational, labelled-property or remote RDF store client. Child slice of `ARBORA-HOST-R001.9`. | `tests/deployment/test_small_profile_footprint.py` checks the loaded modules in a clean interpreter.
    requirementARBORA-HOSTSPECIFIEDtests/deployment/test_small_profile_footprint.py:34
    ARBORA-HOST-R001.9.2
    The tiny profile serves the graph with zero containers
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **The tiny profile serves the graph with zero containers.** Arbora and the embedded engine cold-boot and serve graph reads and writes through the gateway routes with no external service. Child slice of `ARBORA-HOST-R001.9`. | A gateway test writes and reads one node against the embedded engine with no external service configured.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R001.10
    Arbora owns provider discovery over the connector SDK groups
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora owns provider discovery over the connector SDK groups.** `arbora.core.providers` discovers skill, prompt, ontology, source-connector and other data providers from the `agent_connector_sdk.<x>_providers` entry-point groups only, without importing provider code. It rejects ambiguous, unowned, linked or unrecorded provider assets. It refuses any `agent_utilities.*_providers` group. Arbora imports no `agent_utilities.core.providers`. The bounded-manifest and managed-generation primitives remain the harness install-tree contract. Child slice of `ARBORA-HOST-R001`. | `tests/core/test_providers.py` covers SDK-only groups, non-importing owned discovery, unsafe-target refusal, duplicate-owner refusal, skill and prompt resolution, and the import ban.
    requirementARBORA-HOSTVERIFIED3f7190f32493
    tests/core/test_providers.py:24
    ARBORA-HOST-R002
    Graph engine client exposes the session/discovery surface
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Graph engine client exposes the session/discovery surface.** The engine client exposes session, engine, source-sync, shard-topology, fleet-catalog, and discovery-authority methods. Arbora gateway and fleet modules call those methods directly. Moving these modules from the agent runtime must not create another implementation. | A contract test checks the installed client before migration. It confirms every required method exists and is callable.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R003
    Web UI rename cutover across Arbora
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Web UI rename cutover across Arbora.** Arbora's import sites, web UI package extra, preflight checks, and browser-control tests and docs reference the renamed package. The extra resolves from the package index. The release workflow checks out no web UI source. | A focused test run and the offline lock check confirm every reference resolves against the renamed package.
    requirementARBORA-HOSTVERIFIED15bc1fd4c49e
    4ca77fbff9e3
    6dda5ac3548c
    tests/architecture/test_webui_rename_references.py:13
    ARBORA-HOST-R004
    Single gateway implementation under arbora/gateway
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Single gateway implementation under arbora/gateway.** Arbora retains one gateway implementation under `arbora/gateway/`, incorporating any behavior unique to the agent runtime's duplicate gateway package once that duplicate is removed, reconciling the `schemas/graph_core` and `ontology_api` modules against their counterparts, and dropping the `arbora-daemon` console script and the `gateway-widgets` package extra. | A package-layout test confirms no duplicate gateway implementation remains and the retired script and extra are absent.
    requirementARBORA-HOSTLANDED45283d0137b9
    f37f67d33d37
    ARBORA-HOST-R005
    arbora.mcp_server.runtime serves retired MCP actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **arbora.mcp_server.runtime serves retired MCP actions.** `arbora/mcp_server/runtime.py` serves every MCP action that the legacy agent-runtime MCP host provided. An approved action-to-operation mapping verifies each action. This applies once the legacy host is retired. | A parity test maps each served MCP operation to the approved registry. It confirms no action is dropped without a recorded mapping.
    requirementARBORA-HOSTSPECIFIED4ca77fbff9e3
    ARBORA-HOST-R005.1
    Landed: the typed approved-mapping model
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Landed: the typed approved-mapping model.** `arbora/mcp_server/legacy_action_mapping.py` defines `APPROVED_ACTION_MAPPING`, `build_approved_action_mapping` and `validate_served_actions` (construction-time duplicate refusal, lookup-time unmapped-action refusal). `runtime.py` defines `served_legacy_actions_within_approved_mapping` over this table, but nothing calls it against the actual served MCP operation list yet. | Proven today by `tests/mcp_server/test_legacy_action_mapping.py`.
    requirementARBORA-HOSTVERIFIEDc7eda638d959
    tests/mcp_server/test_legacy_action_mapping.py:17
    tests/mcp_server/test_legacy_action_mapping.py:28
    tests/mcp_server/test_legacy_action_mapping.py:35
    ARBORA-HOST-R005.2
    Parity test proves no served action is dropped
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Parity test proves no served action is dropped.** Rollup: the approved table covers six of the legacy host's actions; a parity test over the legacy host's full action surface fails today, so the table is extended per action family (`.2.1`-`.2.7`) and the parity test lands last (`.2.8`). Child slice of `ARBORA-HOST-R005`. | Satisfied when all `ARBORA-HOST-R005.2.n` children are verified.
    requirementARBORA-HOSTSPECIFIEDc7eda638d959
    ARBORA-HOST-R005.2.1
    Approved mapping for the analyze action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the analyze action family.** Add an approved `ActionOperationMapping` entry for every legacy `graph_analyze` MCP action and REST twin. Include `code_context`, `explain`, `process_writeback`, `blast_radius`, and `call_graph`. List remaining actions too. Name each Arbora registry operation, or record that none exists yet. Child slice of `ARBORA-HOST-R005.2`. | Tests assert every family action appears in `APPROVED_ACTION_MAPPING`. They also assert each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.1.1
    Add arbora operation for code navigation actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for code navigation actions.** Gap: no registry operation serves legacy `code_context`, `explain`, `call_graph`, `routes`; add the operation(s) under `arbora/api/ops/` and never invent an id before it exists. Child slice of `ARBORA-HOST-R005.2.1`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.1.2
    Add arbora operation for impact actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for impact actions.** Gap: no registry operation serves legacy `blast_radius`, `change_coupling`; add it under `arbora/api/ops/`. Child slice of `ARBORA-HOST-R005.2.1`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.1.3
    Add arbora operation for `similar_code` and the remaining `graph_analyze` actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for `similar_code` and the remaining `graph_analyze` actions.** No registry operation serves `similar_code` or other unlisted `graph_analyze` REST twins. Enumerate these legacy actions, then add operation(s). Child slice of `ARBORA-HOST-R005.2.1`. | Satisfied when an operation exists in the registry and an ID-bound test proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.1.4
    Add arbora operation for `process_writeback`
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for `process_writeback`.** Gap: no registry operation serves legacy `process_writeback` (the current table maps it to a non-registry id); add the operation and remap. Child slice of `ARBORA-HOST-R005.2.1`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.1.5
    Approve the analyze mappings
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approve the analyze mappings.** Replace analyze entries in `APPROVED_ACTION_MAPPING` with real operation IDs from the children above. This covers the whole family under `ARBORA-HOST-R005.2.1`. | An ID-bound test checks each listed action in `APPROVED_ACTION_MAPPING`. It confirms every mapped ID exists in `{op.id for op in operations()}` from `arbora/api/ops/*.py`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.2
    Approved mapping for the configure action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the configure action family.** Add an approved `ActionOperationMapping` entry for every legacy MCP action of `graph_configure`, `graph_config` and secret/hook/vault-sync actions, each naming the Arbora registry operation that serves it, or record that none exists as a gap to build. Child slice of `ARBORA-HOST-R005.2`. | A test asserts every legacy action of the family appears in `APPROVED_ACTION_MAPPING` and that each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3
    Approved mapping for the ingest action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the ingest action family.** Add an approved `ActionOperationMapping` entry for every legacy MCP action of `graph_ingest`, `graph_jobs` and knowledge-pack/corpus/materialize actions, each naming the Arbora registry operation that serves it, or record that none exists as a gap to build. Child slice of `ARBORA-HOST-R005.2`. | A test asserts every legacy action of the family appears in `APPROVED_ACTION_MAPPING` and that each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.1
    Map `sync` to `ingest.sources.sync`
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Map `sync` to `ingest.sources.sync`.** The only legacy ingest action with an existing registry operation: add `ActionOperationMapping("sync", "ingest.sources.sync")` with a bound resolution test. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the mapping is in the table and a bound test proves the id resolves.
    requirementARBORA-HOSTVERIFIED567a2b417ed7
    tests/mcp_server/test_legacy_action_mapping_ingest_sync.py:11
    ARBORA-HOST-R005.2.3.2
    Add arbora operation for ingest submission actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for ingest submission actions.** Gap: no registry operation serves legacy `ingest`, `ingest_url`, `ingest_knowledge_pack`, `fact_extract`, `distill`; add the operation(s) and remap the existing non-registry `ingest_knowledge_pack` entry. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.3
    Add arbora operation for `corpus`
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for `corpus`.** Gap: no registry operation serves this legacy action. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.4
    Add arbora operation for job lifecycle actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for job lifecycle actions.** Gap: no registry operation serves legacy `jobs`, `job_status`, `cancel`, `clear`, `prioritize`. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.5
    Add arbora operation for `rebuild_indexes` and `observe`
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for `rebuild_indexes` and `observe`.** Gap: no registry operation serves these legacy actions. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.6
    Add arbora operation for `materialize` and `materialize_source`
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for `materialize` and `materialize_source`.** Gap: no registry operation serves these legacy actions. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.7
    Add arbora operation for `reflect` and `agent_toolkit`
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add arbora operation for `reflect` and `agent_toolkit`.** Gap: no registry operation serves these legacy actions. Child slice of `ARBORA-HOST-R005.2.3`. | Satisfied when the operation exists in the registry and a test bound to this ID proves it resolves.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.3.8
    Approve the ingest mappings
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approve the ingest mappings.** Extend `APPROVED_ACTION_MAPPING` with every ingest action using the real ids from the children above, then the whole family is covered. Child slice of `ARBORA-HOST-R005.2.3`. | A test bound to this ID asserts the listed actions appear in `APPROVED_ACTION_MAPPING` and that each mapped operation id is in `{op.id for op in operations()}` from `arbora/api/ops/*.py`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.4
    Approved mapping for the query-memory action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the query-memory action family.** Add an approved `ActionOperationMapping` entry for every legacy MCP action of `graph_query`, `graph_memory` and `graph_write` memory/recall/SDD actions, each naming the Arbora registry operation that serves it, or record that none exists as a gap to build. Child slice of `ARBORA-HOST-R005.2`. | A test asserts every legacy action of the family appears in `APPROVED_ACTION_MAPPING` and that each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.5
    Approved mapping for the orchestrate action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the orchestrate action family.** Add an approved `ActionOperationMapping` entry for every legacy MCP action of `graph_orchestrate`, `graph_loops`, `graph_agents`, `graph_goals` and `graph_evolution` actions, each naming the Arbora registry operation that serves it, or record that none exists as a gap to build. Child slice of `ARBORA-HOST-R005.2`. | A test asserts every legacy action of the family appears in `APPROVED_ACTION_MAPPING` and that each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.6
    Approved mapping for the mine-learn action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the mine-learn action family.** Add an approved `ActionOperationMapping` entry for every legacy MCP action of `graph_mine`, `graph_mine_deep`, `graph_learn` and `graph_evaluate` actions, each naming the Arbora registry operation that serves it, or record that none exists as a gap to build. Child slice of `ARBORA-HOST-R005.2`. | A test asserts every legacy action of the family appears in `APPROVED_ACTION_MAPPING` and that each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.7
    Approved mapping for the governance-ops action family
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Approved mapping for the governance-ops action family.** Add an approved `ActionOperationMapping` entry for every legacy MCP action of the remaining legacy tool families (`graph_audit`, `graph_governance`, `graph_compliance`, `graph_bus`, `graph_message`, `graph_ontology`, `graph_incident` and others), each naming the Arbora registry operation that serves it, or record that none exists as a gap to build. Child slice of `ARBORA-HOST-R005.2`. | A test asserts every legacy action of the family appears in `APPROVED_ACTION_MAPPING` and that each mapped operation resolves in the Arbora registry.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R005.2.8
    Parity test over the full legacy action surface
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Parity test over the full legacy action surface.** Add the parity test enumerating every action the legacy agent-runtime MCP host registers and asserting each is in `APPROVED_ACTION_MAPPING` with a resolvable operation; depends on `.2.1`-`.2.7`. Child slice of `ARBORA-HOST-R005.2`. | The parity test fails when any legacy action is removed from the mapping or its operation stops resolving.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R006
    arbora.fleet is the sole multiplexer and host owner
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **arbora.fleet is the sole multiplexer and host owner.** Arbora's `arbora/fleet/` package is the sole multiplexer implementation and additionally hosts the OAuth broker, task-extension, principal, harness-server, middleware, skill-coverage and environment-drift-check modules that only Arbora imports. | A package-layout test confirms the duplicate multiplexer no longer exists outside `arbora/fleet/` and each moved module resolves only through Arbora imports.
    requirementARBORA-HOSTSPECIFIED97b844e615b7
    ARBORA-HOST-R007
    Agent runtime imported only through its public API
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Agent runtime imported only through its public API.** Arbora imports the agent runtime exclusively through `agent_utilities.api`, with every other import site rewired to a Arbora-owned module or the connector SDK's public interface, and `arbora/tests/test_package_layout.py` enforces this as an `agent_utilities.api`-only fence. | The package-layout test fails on any import of an agent-runtime module outside `agent_utilities.api` and passes once the rewiring is complete.
    requirementARBORA-HOSTSPECIFIEDc467b28d2385
    ARBORA-HOST-R007.1
    Landed: none of the fence exists yet
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Landed: none of the fence exists yet.** `arbora/tests/test_package_layout.py` does not exist; `arbora/mcp_server/runtime.py` and other modules still import `agent_utilities.core.config`, `agent_utilities.security.*`, `agent_utilities.messaging.*`, `agent_utilities.usage.*` and `agent_utilities.observability.*` directly rather than through `agent_utilities.api`. | No test exists today; confirmed by `git grep -n "^from agent_utilities\." arbora/`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2
    Add the import-fence test (rollup of `ARBORA-HOST-R007.2.1` to `ARBORA-HOST-R007.2.69`)
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add the import-fence test (rollup of `ARBORA-HOST-R007.2.1` to `ARBORA-HOST-R007.2.69`).** Add `arbora/tests/test_package_layout.py`, asserting via an import census over `arbora/` that no module imports `agent_utilities` except through `agent_utilities.api` (an initial allowlist of today's known violations is acceptable so the test lands green, shrinking as each site is rewired). | `arbora/tests/test_package_layout.py` exists, runs under `uv run pytest`, and fails if a new non-`agent_utilities.api` import is added outside the allowlist.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.1
    Rewire `arbora/a2a/authority.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/a2a/authority.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/a2a/authority.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.2
    Rewire `arbora/a2a/routing.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/a2a/routing.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/a2a/routing.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.3
    Rewire `arbora/access/service.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/access/service.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/access/service.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.4
    Rewire `arbora/agent_host/__init__.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/agent_host/__init__.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/agent_host/__init__.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.5
    Rewire `arbora/api/http/auth.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/api/http/auth.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/api/http/auth.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.6
    Rewire `arbora/api/mcp/serving.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/api/mcp/serving.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/api/mcp/serving.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.7
    Rewire `arbora/api/ops/access.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/api/ops/access.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/api/ops/access.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.8
    Rewire `arbora/api/policy/pdp_remote.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/api/policy/pdp_remote.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/api/policy/pdp_remote.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.9
    Rewire `arbora/browser_control/browser_control_binding.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_binding.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_binding.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.10
    Rewire `arbora/browser_control/browser_control_dispatch.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_dispatch.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_dispatch.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.11
    Rewire `arbora/browser_control/browser_control_durability.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_durability.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_durability.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.12
    Rewire `arbora/browser_control/browser_control_outcome.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_outcome.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_outcome.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.13
    Rewire `arbora/browser_control/browser_control_policy.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_policy.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_policy.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.14
    Rewire `arbora/browser_control/browser_control_provenance.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_provenance.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_provenance.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.15
    Rewire `arbora/browser_control/browser_control_service.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_service.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_service.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.16
    Rewire `arbora/browser_control/browser_control_state.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/browser_control_state.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/browser_control_state.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.17
    Rewire `arbora/browser_control/trace_bundle.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/browser_control/trace_bundle.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/browser_control/trace_bundle.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.18
    Rewire `arbora/deployment/cli.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/cli.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/cli.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.19
    Rewire `arbora/deployment/config_generator.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/config_generator.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/config_generator.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.20
    Rewire `arbora/deployment/doctor_certification.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/doctor_certification.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/doctor_certification.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.21
    Rewire `arbora/deployment/doctor_coverage.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/doctor_coverage.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/doctor_coverage.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.22
    Rewire `arbora/deployment/doctor_lakehouse.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/doctor_lakehouse.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/doctor_lakehouse.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.23
    Rewire `arbora/deployment/doctor_observability.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/doctor_observability.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/doctor_observability.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.24
    Rewire `arbora/deployment/doctor.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/doctor.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/doctor.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.25
    Rewire `arbora/deployment/genesis_environments.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/genesis_environments.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/genesis_environments.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.26
    Rewire `arbora/deployment/preflight.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/preflight.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/preflight.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.27
    Rewire `arbora/deployment/production_ops.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/production_ops.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/production_ops.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.28
    Rewire `arbora/deployment/release_canary.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/release_canary.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/release_canary.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.29
    Rewire `arbora/deployment/release_candidate.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/release_candidate.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/release_candidate.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.30
    Rewire `arbora/deployment/self_deploy.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/deployment/self_deploy.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/deployment/self_deploy.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.31
    Rewire `arbora/fleet/access_contracts.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/fleet/access_contracts.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/fleet/access_contracts.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.32
    Rewire `arbora/fleet/child_resilience.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/fleet/child_resilience.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/fleet/child_resilience.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.33
    Rewire `arbora/fleet/gateway_ops.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/fleet/gateway_ops.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/fleet/gateway_ops.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.34
    Rewire `arbora/fleet/local_skill_catalog.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/fleet/local_skill_catalog.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/fleet/local_skill_catalog.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.35
    Rewire `arbora/fleet/multiplexer.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/fleet/multiplexer.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/fleet/multiplexer.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.36
    Rewire `arbora/fleet/onboarding.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/fleet/onboarding.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/fleet/onboarding.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.37
    Rewire `arbora/gateway/aggregator.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/aggregator.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/aggregator.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.38
    Rewire `arbora/gateway/config.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/config.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/config.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.39
    Rewire `arbora/gateway/daemon.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/daemon.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/daemon.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.40
    Rewire `arbora/gateway/dashboard_api.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/dashboard_api.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/dashboard_api.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.41
    Rewire `arbora/gateway/fleet_events.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/fleet_events.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/fleet_events.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.42
    Rewire `arbora/gateway/fleet.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/fleet.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/fleet.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.43
    Rewire `arbora/gateway/graph_api.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/graph_api.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/graph_api.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.44
    Rewire `arbora/gateway/rate_limit.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/rate_limit.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/rate_limit.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.45
    Rewire `arbora/gateway/remote_oauth_api.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/remote_oauth_api.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/remote_oauth_api.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.46
    Rewire `arbora/gateway/schemas/graph_core.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/schemas/graph_core.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/schemas/graph_core.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.47
    Rewire `arbora/gateway/usage_api.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/usage_api.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/usage_api.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.48
    Rewire `arbora/gateway/widgets/base.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/widgets/base.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/widgets/base.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.49
    Rewire `arbora/gateway/widgets/ollama.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/widgets/ollama.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/widgets/ollama.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.50
    Rewire `arbora/gateway/widgets/vector_db.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/gateway/widgets/vector_db.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/gateway/widgets/vector_db.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.51
    Rewire `arbora/mcp_server/bootstrap.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/mcp_server/bootstrap.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/mcp_server/bootstrap.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.52
    Rewire `arbora/mcp_server/composition.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/mcp_server/composition.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/mcp_server/composition.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.53
    Rewire `arbora/mcp_server/decide_wiring.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/mcp_server/decide_wiring.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/mcp_server/decide_wiring.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.54
    Rewire `arbora/mcp_server/runtime.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/mcp_server/runtime.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/mcp_server/runtime.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.55
    Rewire `arbora/mcp_server/server.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/mcp_server/server.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/mcp_server/server.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.56
    Rewire `arbora/messaging/alert_intake.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/alert_intake.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/alert_intake.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.57
    Rewire `arbora/messaging/backends/mattermost.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/backends/mattermost.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/backends/mattermost.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.58
    Rewire `arbora/messaging/backends/telegram.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/backends/telegram.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/backends/telegram.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.59
    Rewire `arbora/messaging/governed_send.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/governed_send.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/governed_send.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.60
    Rewire `arbora/messaging/lease.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/lease.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/lease.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.61
    Rewire `arbora/messaging/polling.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/polling.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/polling.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.62
    Rewire `arbora/messaging/reach.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/reach.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/reach.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.63
    Rewire `arbora/messaging/registry.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/registry.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/registry.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.64
    Rewire `arbora/messaging/router.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/router.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/router.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.65
    Rewire `arbora/messaging/service.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/messaging/service.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/messaging/service.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.66
    Rewire `arbora/observability/gateway_health.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/observability/gateway_health.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/observability/gateway_health.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.67
    Rewire `arbora/semantic_content.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/semantic_content.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/semantic_content.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.68
    Rewire `arbora/webui_host/webui_co_service.py` off agent-runtime internals
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Rewire `arbora/webui_host/webui_co_service.py` off agent-runtime internals.** Child slice of `ARBORA-HOST-R007.2`. Every `agent_utilities` import in `arbora/webui_host/webui_co_service.py` other than `agent_utilities.api` is rewired to a Arbora-owned module, the connector SDK public interface, or `agent_utilities.api`; no allowlist entry. | A focused test for the module passes and a grep of the module shows no `agent_utilities` import outside `agent_utilities.api`.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R007.2.69
    Add the `agent_utilities.api`-only import-fence test
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add the `agent_utilities.api`-only import-fence test.** Final child of `ARBORA-HOST-R007.2`, blocked until `ARBORA-HOST-R007.2.1` to `ARBORA-HOST-R007.2.68` land. `tests/test_package_layout.py` walks every `arbora/**/*.py` AST and fails on any `agent_utilities` import other than `agent_utilities.api`, with no allowlist or baseline. | The fence test passes against the rewired tree and fails when a non-api `agent_utilities` import is injected into a fixture module.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008
    Arbora hosts its own boundary modules
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora hosts its own boundary modules.** Arbora hosts its own security request-identity, error-surface, browser-auth and security-policy-middleware modules with their conformance tests; its own gateway and runtime health and metrics observability; its own profile-guard, install, release-channel, live-mount-guard, paths, workspace and config-admin core modules; its own hook-installer, agent-manager-dashboard, release-catalog and gateway-client modules; and its own connection-registry and engine-discovery modules under `arbora.fleet`. | A package-layout census confirms these modules are imported only from their Arbora location and the agent runtime no longer declares equivalents.
    requirementARBORA-HOSTSPECIFIED776ceb15e7ba
    a04f32a44865
    a727c1536f27
    b0cd6a8f01de
    d3ef338ca1e3
    ARBORA-HOST-R009
    Arbora hosts the agent HTTP server and A2A endpoints
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora hosts the agent HTTP server and A2A endpoints.** Arbora hosts the agent HTTP server under `arbora/a2a/` and `arbora/webui_host/`, including the A2A, A2A-config and A2A-graph-skill protocol modules migrated from the agent runtime; the duplicate broker and its separate task store are not ported, since durable task state has a single owner. The editor-facing Agent Client Protocol is provided by the agent runtime's harness integration, so Arbora carries no ACP adapter of its own and mounts that implementation where a deployment exposes it. | Route and task-lifecycle tests cover the hosted A2A endpoints, and a source check confirms Arbora contains no separate ACP adapter implementation.
    requirementARBORA-HOSTSPECIFIEDe5efd4f0ca33
    ARBORA-HOST-R010
    Arbora owns hosting/deployment configuration settings
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora owns hosting/deployment configuration settings.** Arbora owns the hosting and deployment configuration settings split out of the agent runtime's monolithic configuration module, while connector base settings move to the connector SDK's own configuration module and agent/model settings remain with the agent runtime. | A configuration-schema test confirms Arbora resolves its hosting and deployment settings from its own module. It must not import the agent runtime's configuration internals.
    requirementARBORA-HOSTSPECIFIED396d8307596f
    afc93c497524
    tests/deployment/test_host_config.py:32
    tests/deployment/test_host_config.py:43
    ARBORA-HOST-R011
    Arbora serves the messaging channel and routing layer
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora serves the messaging channel and routing layer.** Arbora serves the messaging channel adapters, listener, service, daemon, polling, reaper and host routing for the agent bus, while the graph engine remains the sole authority for durable message append, reads, cursors, dead letters and depth. Superseded-by: the supervision-lifecycle detail (states, transitions, health-gated start, restart backoff bounds, stop/drain, typed degraded state for a missing adapter) is specified in [`ARBORA-MESSAGING-001`](../messaging-channel-supervision/spec.md) (`ARBORA-MESSAGING-R001`–`R005`); this row's broader ownership claim is kept. | A served test exercises a messaging action through Arbora and confirms the graph engine records the durable result exactly once.
    requirementARBORA-HOSTLANDED63a66f60915a
    afefd425c905
    bc2b6941077e
    c467b28d2385
    ARBORA-HOST-R012
    Component registry carries Arbora and SDK boundary entries
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Component registry carries Arbora and SDK boundary entries.** Arbora publishes boundary seed entries for itself and the connector SDK in the architecture component registry. Each names its owning modules and public import surface. | A registry-completeness check confirms Arbora and the connector SDK each have a registry entry with no coverage gap.
    requirementARBORA-HOSTLANDED9760bef27075
    d75db1ea42e8
    e278fafd4073
    ARBORA-HOST-R013
    Front ends import only public Arbora/agent-runtime surfaces
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Front ends import only public Arbora/agent-runtime surfaces.** Arbora's web UI package imports the agent runtime only through `agent_utilities.api`, directly from Arbora, or from the graph engine's client library, with no import of an agent-runtime-internal module. | A package-layout test on the web UI package fails on any import outside these allowed surfaces.
    requirementARBORA-HOSTLANDED4ca77fbff9e3
    ARBORA-HOST-R014
    Agent runtime split into connector SDK, Arbora and engine
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Agent runtime split into connector SDK, Arbora and engine.** The former runtime is split into three repositories: connector SDK, Arbora, and graph engine. Each repository publishes an installable package. Arbora depends on the others only through public APIs. | Arbora's dependency manifest pins those published packages. It does not use paths into the former combined source tree.
    requirementARBORA-HOSTLANDED0062797e3c37
    91c0d96adb17
    f8d31551067c
    ARBORA-HOST-R015
    Layered agent capability model with a harness abstraction
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Layered agent capability model with a harness abstraction.** Arbora defines a layered agent-capability model, from its lowest to its highest defined layer, implemented over the graph engine, together with a harness abstraction that lets a given layer run under different execution environments. | A conformance test suite exercises each defined layer through the harness abstraction and confirms its expected behavior boundary.
    requirementARBORA-HOSTLANDED1f575184e8da
    ARBORA-HOST-R016
    main branch includes the published dependency composition
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **main branch includes the published dependency composition.** Arbora's default branch history includes the published composition of the graph engine, connector SDK and agent runtime dependencies, so later changes build on that composition rather than reverting behind it. | A git ancestry check in continuous integration confirms the published composition commit remains reachable from the default branch.
    requirementARBORA-HOSTLANDED20f773df9ddd
    ARBORA-HOST-R017
    Browser inventory lists native Arbora tools
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Browser inventory lists native Arbora tools.** The WebUI inventory helper lists the native `arbora` server from its registered tool surface. It never probes `arbora` as a catalog child. | `tests/webui_host/test_native_mcp_delegation.py` lists the registered native tools and fails when a child probe runs.
    requirementARBORA-HOSTLANDED3b2c6ac9d864
    a4928a7047e1
    ARBORA-HOST-R018
    Browser catalog reads run under the process authority
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Browser catalog reads run under the process authority.** The enhanced catalog binds the Arbora process session for each engine read. Its receipts name that process context. A failed read logs its cause before the masked 503. | `tests/gateway/test_enhanced_catalog_api.py` proves the read runs inside the process scope and logs the denial cause.
    requirementARBORA-HOSTLANDED3b2c6ac9d864
    a4928a7047e1
    ARBORA-HOST-R019
    Arbora serves the service dashboard surface the web UI composes
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora serves the service dashboard surface the web UI composes.** Arbora mounts `/api/dashboard/*` and the `/ws/dashboard` stream through its gateway route registrar. The routes run behind the same identity and web UI authorization middleware as other `/api` routes. The stream sends a snapshot, then periodic updates, and honors a `subscribe` message. | A route-mount test confirms `/api/dashboard/full`, `/health`, `/daemon/status`, `/daemon/shards` and `/ws/dashboard`. A stream test confirms snapshot, update and subscription scoping.
    requirementARBORA-HOSTLANDED975596a67ed0
    a504e36c3c7c
    ARBORA-HOST-R020
    Serving start installs the decide consumers
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Serving start installs the decide consumers.** Arbora installs the library-bound assembler, the task planner and the cross-source report at serving start. The assembler and planner bind the bootstrap session's engine client. The cross-source report binds the fleet virtual catalog and an engine SPARQL ontology provider. A missing input logs a reason and skips that consumer. A fault never stops serving. | `tests/mcp_server/test_decide_wiring.py` proves all three installs with fakes. It proves each guarded skip.
    requirementARBORA-HOSTLANDED91c0d96adb17
    c4e7f7197b78
    d7eb02776c45
    e96c8e3a5360
    ARBORA-HOST-R021
    Serving start binds the assembler's commit and publish providers and installs the topology asker
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Serving start binds the assembler's commit and publish providers and installs the topology asker.** Arbora mints an `AgentLibraryMutationContext` from the verified bootstrap session's identity and tenant, and binds it as the assembler's `commit_context` and `publish_context` (AU `agent_utilities.decide.consumers.assembly`, mapping to EG's `DecisionCommit` and `AgentGraph.publish`, EG-DECISION-ENGINE-R047/R051). Serving start also installs the topology asker over the published reference templates, the same way it installs the task planner. A missing input logs a reason and skips that consumer. | `tests/mcp_server/test_decide_wiring.py` proves the topology asker installs alongside the planner, and proves a solved assembly commits and publishes through a fake engine client that records each call.
    requirementARBORA-HOSTLANDED117301017944
    e67f069a9ed4
    ARBORA-HOST-R022
    Serving start binds the task planner's capability-search, guardrail and workflow lookups
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Serving start binds the task planner's capability-search, guardrail and workflow lookups.** Arbora binds the planner's `capability_search` to the served EG agent-card search, `guardrail_source` to one side-effect-free AU action-policy verdict per planned task, and `workflows` to the registered graph-workflow store's semantic match over the planned tasks (AU `agent_utilities.decide.consumers.task_planner`, `agent_utilities.layers.clients.AgentClient`, `agent_utilities.orchestration.action_policy`, `agent_utilities.knowledge_graph.workflow_store`). A missing input logs a reason and skips that consumer. | `tests/mcp_server/test_decide_wiring.py` proves the three lookups are bound at serving start, and proves a planned task gets non-empty assembled agent skills and tools with a fake capability source populating its reuse metadata.
    requirementARBORA-HOSTSPECIFIEDaf5f5c292007
    e67f069a9ed4
    ARBORA-HOST-R023
    Arbora serves its eight-tool MCP intent surface from its own operation registry
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Arbora serves its eight-tool MCP intent surface from its own operation registry.** `arbora/api/mcp` serves eight tools: `ask`, `find`, `why`, `write`, `act`, `manage`, `graph_task_progress_app`, and `graph_trace_waterfall_app`. The agent runtime serves no MCP tools. It supplies only the library registrar Arbora uses for both app launchers. Arbora includes ranking and its deterministic tie-break. It merges fleet discovery into `find` and routes fleet child calls through `act`. Natural-language `ask` falls back only when no registry operation matches, using the visible registered `query.nl` operation under `query:nl` through the shared invocation pipeline. No synthetic descriptor or direct fallback callable grants an alternate path. | Tests register a real `FastMCP` surface and compare all eight names. Another test dispatches through the policy/Eunomia invocation pipeline. A third proves the `ask` fallback runs only when no operation matches.
    requirementARBORA-HOSTSPECIFIED51529da8abe6
    c39349d16c53
    e28e54dd74e5
    tests/api/test_mcp_serving.py:236
    ARBORA-HOST-R024
    `arbora.mcp_server.server` registers Arbora's own intent surface, not the agent runtime's
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **`arbora.mcp_server.server` registers Arbora's own intent surface, not the agent runtime's.** Serving start calls `arbora.api.mcp.serving.register_intent_surface` instead of the agent runtime's `agent_utilities.mcp.arbora_surface.register_arbora_surface`/backing-server path. | `python3 scripts/check_wiring.py unreachable` lists fewer unreached `arbora.api.{mcp,invoke,ops,policy}` modules after this change than before it; the exact before/after counts are recorded as PR evidence.
    requirementARBORA-HOSTVERIFIED2646511870e7
    ab0d4bed45c4
    c39349d16c53
    d5f69ae59c75
    tests/test_real_boot.py:537
    tests/test_real_boot.py:567
    ARBORA-HOST-R025
    The agent runtime's MCP serving stack is removed
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **The agent runtime's MCP serving stack is removed.** Once `ARBORA-HOST-R024` lands, the agent runtime deletes `agent_utilities/mcp/tools/intent_tools.py`, `agent_utilities/mcp/arbora_surface.py`, and the `kg_server` MCP serving entry point that only Arbora called; the library functions those modules called (the harness, the control plane and the KG clients) are retained and stay reachable from Arbora's own registry operations. | A grep-based import census over Arbora confirms no remaining import of the deleted modules, and the agent runtime's test suite passes with them absent.
    requirementARBORA-HOSTLANDEDc39349d16c53
    ARBORA-HOST-R026
    Durable A2A task persistence in the arbora agent host
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Durable A2A task persistence in the arbora agent host.** Rollup of `ARBORA-HOST-R026.1` to `.5`; unblocks `AU-BOUNDARY-R015.2`. | All child rows are verified.
    requirementARBORA-HOSTSPECIFIED8d1bc46ecbdb
    ARBORA-HOST-R026.1
    Define the typed A2A task-store port
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Define the typed A2A task-store port.** Add `A2ATaskStore` Protocol (get, put, list, cancel by tenant and principal) in `arbora/a2a/task_store.py`. Unblocks `AU-BOUNDARY-R015.2` (replaces AU `protocols/a2a_epistemic.py`). | A type-check test confirms a fake store satisfies the Protocol.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R026.2
    Implement the engine-backed A2A task store
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Implement the engine-backed A2A task store.** Add `EngineA2ATaskStore` implementing `A2ATaskStore` over the public engine client, with no second task store. Unblocks `AU-BOUNDARY-R015.2`. | A focused test persists and reloads a task through a stubbed engine client.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R026.3
    Wire the hosted A2A app to the task store, fail-closed when absent
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Wire the hosted A2A app to the task store, fail-closed when absent.** The hosted A2A app in `arbora/a2a/` takes the `A2ATaskStore` at composition and refuses task methods with a typed error when none is bound. Unblocks `AU-BOUNDARY-R015.2`. | A test confirms task submit is refused with no store and succeeds with one.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R026.4
    Add the doctor check for A2A task persistence
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add the doctor check for A2A task persistence.** Add a arbora doctor check `a2a_persistence` reporting whether the task store is bound and durable, replacing AU's check of the same name. Unblocks `AU-BOUNDARY-R015.2`. | A doctor test reports failure with no store and pass with the engine-backed store.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R026.5
    Point the `g34-a2a` certification gate at arbora tests
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Point the `g34-a2a` certification gate at arbora tests.** The `g34-a2a` gate runs arbora `tests/a2a/` task-persistence tests instead of AU's. Unblocks `AU-BOUNDARY-R015.2`. | The gate definition names arbora test paths and passes on main.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R027
    Loopback OIDC authority for skill certification
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Loopback OIDC authority for skill certification.** Rollup of `ARBORA-HOST-R027.1` to `.3`; unblocks `AU-BOUNDARY-R002.3.1`. | All child rows are verified.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R027.1
    Add the loopback OIDC authority owner module for skill certification
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add the loopback OIDC authority owner module for skill certification.** Add `arbora/certification/oidc.py` serving loopback-only OIDC discovery, JWKS and token endpoint, replacing AU `deployment/certification_oidc.py`. Unblocks `AU-BOUNDARY-R002.3.1`. | A test confirms discovery and JWKS respond on loopback and the module refuses a non-loopback bind.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R027.2
    Add the loopback OIDC authority test fixture
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add the loopback OIDC authority test fixture.** Add a pytest fixture in `tests/certification/conftest.py` that starts and stops the authority and mints a signed token. Unblocks `AU-BOUNDARY-R002.3.1`. | A test uses the fixture to mint a token that verifies against the served JWKS.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R027.3
    Add the loopback OIDC authority script
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Add the loopback OIDC authority script.** Add `scripts/certification_oidc.py` launching the owner module for skill certification runs. Unblocks `AU-BOUNDARY-R002.3.1`. | The script starts, serves discovery, and exits cleanly on signal in a test.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R028
    Bump the pinned agent-utilities source for the new `agent_utilities.api.*` export modules
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Bump the pinned agent-utilities source for the new `agent_utilities.api.*` export modules.** Advance the agent-utilities ref in `.github/workflows/release.yml` and the uv sources and lock so `persistence_privacy`, `orchestration`, `work_durability`, `agent_dispatch`, `trace_ontology`, `action_policy` and `elevation` import. Unblocks `ARBORA-HOST-R007.2.1`, `ARBORA-HOST-R007.2.2` and `ARBORA-HOST-R007.2.3`. | A test imports each of the seven `agent_utilities.api` modules and the lock and release pins name one ref.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R029
    Tenant-bound native desktop actions
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Tenant-bound native desktop actions.** Require a verified caller's tenant-bound sandbox grant. Background click, type, and verification cannot capture or change cursor/focus. Attach through `arbora/api/invoke/pipeline.py:invoke` and `arbora/api/invoke/executor.py:BoundOperationRuntime.dispatch` (line 273). `OperationRuntime.dispatch` is only a protocol. The SDK native-desktop port/provider contract is missing. Keep this capability unavailable until that owner contract is published. | Future acceptance: `tests/api/test_agent_browser_ops.py::test_native_desktop_actions_require_verified_grant_without_focus_capture`. Compose the runtime and invoke through the real pipeline and `BoundOperationRuntime.dispatch`. Verify valid grants reach the provider with request-bound verification. Missing, revoked, or cross-tenant grants must refuse before provider calls. Confirm cursor and focus remain unchanged. The proposed test has not run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R030
    Run-bound visual state
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Run-bound visual state.** Preserve source/frame/revision provenance for each typed observation within a run. Bind reusable perception state to identity, tenant scope, lifetime, invalidation, and retention rules. Later spatial steps consume prior state. Stale or cross-tenant state refuses before dispatch. Attach at `arbora/api/invoke/pipeline.py:invoke` and real `arbora/api/invoke/executor.py:BoundOperationRuntime.dispatch` (line 273); `OperationRuntime.dispatch` is only a protocol. The SDK observation producer and EG state/context contracts remain unassigned. Do not add a local state store. | Future acceptance: `tests/api/test_agent_browser_ops.py::test_visual_state_is_run_source_and_tenant_bound`. Compose the runtime and traverse the real pipeline and `BoundOperationRuntime.dispatch`. Verify sequential reuse within one run and source/frame/revision provenance. Verify invalidation after expiry or source change. Cross-tenant or stale state must refuse before dispatch. The proposed test has not run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R031
    Coding-agent discovery and sandbox handoff
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Coding-agent discovery and sandbox handoff.** Discover coding agents on `PATH`. Apply the EG-selected skill transformation through the AU harness. Render generated artifacts only in the WebUI sandboxed frame. Arbora owns the host/admission boundary at `arbora/mcp_server/server.py:mcp_server`. EG, AU, and WebUI producer/consumer contracts remain unbound. Keep the complete flow unavailable until those owner ports are published. | Future acceptance: `tests/mcp_server/test_composition.py::test_coding_agent_flow_uses_owner_ports_and_sandbox`. Verify discovery identifies the selected executable. Verify the AU harness receives the EG-selected transformation. Verify WebUI renders only generated artifacts in its sandbox. Missing owner contracts or unavailable executables must refuse without dispatch or rendering. The proposed test has not run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.1
    Preserve configuration ownership
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Preserve configuration ownership.** Model: Hosting and deployment settings retain their current owner. Behavior: Preserve every original R010 boundary, including connector and model configuration ownership. Wiring: Reuse `arbora/core/config_admin.py:51`; import only public owner contracts. Refusal: No runtime configuration internals may become a host dependency. Evidence: Retain the original configuration-schema acceptance alongside the new startup cases. | The original R010 schema test remains required. A forbidden private import fails the boundary check.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.2
    Declare every consumed environment name
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Declare every consumed environment name.** Model: `HostEnvironmentManifest` contains version, component, source revision and uniquely named declarations. Behavior: Each declaration records type, required condition, default, sensitivity and consuming call sites. Include indirect library reads. Wiring: Extend the existing configuration loader; compose public SDK and agent-runtime declarations without copying their settings. Refusal: Undeclared reads, conflicting declarations and unavailable enabled-component manifests prevent startup. Evidence: Record the manifest digest and missing declaration names without values. | A census matches all consumed names to declarations. Inject a dynamic undeclared read and require a named startup refusal.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.3
    Validate before any service starts
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Validate before any service starts.** Model: `HostStartupConfiguration` binds the manifest digest, selected components and resolved typed settings. Behavior: Resolve existing configuration precedence once, then validate every enabled component before opening listeners or starting children. Wiring: Attach validation before `runtime._build_server` in `arbora/mcp_server/server.py:164`. Refusal: Missing required or malformed values refuse with component, variable name and reason; never include the value. Evidence: Record the configuration digest and zero listener, child-process and deployment effects on refusal. | The real launcher accepts valid configuration. Missing values, malformed ports and unknown profiles produce named refusals before any start.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.4
    Keep conditional configuration precise
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Keep conditional configuration precise.** Model: Declarations distinguish required, optional and conditionally required values. Behavior: Validate enabled dependencies and explicit defaults. An unrelated disabled component does not require credentials. Wiring: Use the selected component plan and the existing configuration resolver; no ambient environment grants authority. Refusal: An unresolved condition or invalid default refuses rather than silently choosing another profile. Evidence: Record each selected condition and default identifier without secret material. | Enable and disable a controlled component. Its missing credential refuses only when required; an invalid default always refuses.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.5
    Bind environment guidance to declarations
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Bind environment guidance to declarations.** Model: A declaration digest binds the server configuration example and both transport examples. Behavior: Generate example names from the same manifest; document defaults and required conditions with secret placeholders. Wiring: Use ARBORA-DEPLOY-R010 guidance checks for the skill, README and documentation. Refusal: A consumed name missing from configuration or examples fails conformance. Evidence: Record manifest and example digests, never live configuration. | Parse both documented transport configurations and compare their names with the manifest. Inject an omitted name and require failure.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.6
    Prove startup validation through the launcher
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Prove startup validation through the launcher.** Model: An isolated process fixture records sockets, child starts and safe diagnostics. Behavior: Exercise real startup with valid settings and every refusal class before accepting traffic. Wiring: Proposed `tests/host/test_launch_configuration_served.py` invokes the installed Arbora launcher with controlled dependencies. Refusal: A helper-only test cannot establish startup ordering or complete consumed-name coverage. Evidence: Bind source revision, manifest digest, process exit, observation counts and redacted diagnostics. | Repeat valid and invalid runs after restart. A refused start starts zero children and opens zero listeners; valid startup serves a probe.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1
    Preserve every boundary module
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Preserve every boundary module.** Model: The original parent remains the complete contract. Behavior: Preserve all R008 security, gateway, observability, core, installer, dashboard, catalog, registry and discovery ownership obligations. Wiring: Use the original package-layout census across every module named by R008. Refusal: New child evidence cannot replace any original acceptance obligation. Evidence: Retain the original parent receipts and require its complete acceptance. | The original census proves every named module has its Arbora owner and no agent-runtime equivalent remains.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.2
    Detect installed harnesses without effects
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Detect installed harnesses without effects.** Model: `HarnessInstallation` binds adapter ID, supported version, detected executable, configuration root and detection evidence. Behavior: Inspect supported local installation markers before preparing any tool, instruction or hook change. Wiring: Extend `deployment/cli.py:134` and its existing registration path; generic detection adapters are missing. Refusal: Ambiguous roots, unsupported versions and unknown adapters refuse; an absent harness creates no files. Evidence: Return the detected set and reasoned refusals without private file contents. | Run the installer against mixed present, absent and malformed harness fixtures. Absent roots and existing unrelated bytes remain unchanged.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.3
    Bind exact harness configuration changes
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Bind exact harness configuration changes.** Model: `HarnessConfigurationChange` binds detected installation, before digest, proposed digest, managed keys and authorized destination. Behavior: Prepare tool entries, instruction sections and supported pre-tool hooks for each detected harness. Wiring: Reuse the existing registration command; add versioned format adapters behind the same installer boundary. Refusal: An unsupported hook capability is reported explicitly. It never causes a fabricated hook or another harness format. Evidence: The reviewable change lists each supported artifact and each unsupported capability. | Invoke the installer for a supported fixture and parse all three artifacts. An unsupported hook reports its limitation without a hook file.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.4
    Apply harness edits without overwriting unrelated content
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Apply harness edits without overwriting unrelated content.** Model: Each managed artifact retains its original digest and configuration ownership marker. Behavior: Validate every destination before mutation; conditionally replace only the reviewed managed sections. Repeated identical installation changes no bytes. Wiring: The Arbora installer owns local configuration edits; governed remote source changes remain SDK effects. Refusal: Changed bases, symlink escapes, malformed configuration and conflicting keys refuse before replacing that artifact. Evidence: Record actual before and after digests, including partial outcomes after an interrupted multi-file application. | Seed unrelated keys and instructions. Check preservation, idempotence, stale-base refusal and recovery without falsely reporting all artifacts installed.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.5
    Prove detected-harness installation
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Prove detected-harness installation.** Model: An isolated home contains two supported installations and one absent harness. Behavior: Run the actual installer, then use each harness configuration parser and controlled hook invocation. Wiring: Proposed `tests/deployment/test_harness_install_served.py` enters the installed configuration command. Refusal: Helper-only detection and successful file writes do not prove valid tool entries or executable hook configuration. Evidence: Record detected versions, parsed configuration, hook observations and untouched-file digests. | Discover the configured MCP tool through a real client. Prove valid instructions and hook dispatch; absent harnesses receive zero writes.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.1
    Preserve hosted protocols and task authority
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Preserve hosted protocols and task authority.** Model: The original parent remains the complete contract. Behavior: Retain HTTP and all original A2A protocol migration, task-lifecycle and externally owned ACP obligations. Add no broker or task store. Wiring: Keep the original route and task-lifecycle tests plus the ACP source census. Refusal: New child evidence cannot replace any original acceptance obligation. Evidence: Retain the original parent receipts and require its complete acceptance. | The complete original R009 acceptance remains required alongside terminal start and log acceptance.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.7
    Select terminal web or combined start
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Select terminal web or combined start.** Model: `HostLaunchRequest` carries schema version, workspace, interface selection and log-view preference. Behavior: `--terminal` selects terminal mode; `--web` selects web mode; both select both. Keep existing behavior when neither appears. Wiring: Extend `agent_host/__init__.py:192` and the owning start parser; a public terminal-client adapter is a prerequisite. Refusal: Unknown modes, missing requested clients and invalid workspace bindings refuse before host startup. No `--cli` alias is introduced. Evidence: Record selected interfaces, host instance, workspace binding and actual client readiness. Additional binding: Resolve the effective web_logs boolean before the authenticated R009.5 handoff to run_host_terminal and HostLogReader.read under TUI-RUNTIME-R002.2 through R002.4. Bind host, workspace, tenant and principal. Disabled logs and every web-only case make zero TUI reads without disabling the host sink. Missing runtime preference binding cannot claim log readiness. | Start terminal, web and both through the real command. Observe the requested clients only; missing terminal support yields a typed refusal.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.7.1
    Check injected startup admission
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Check injected startup admission.** Require an explicit host.start grant and a trusted owner attestation binding the exact GraphSession to current SessionState. Bind workspace, interfaces, preference, configuration digest, policy and expiry. Default missing owners deny. | Controlled owners admit matching facts. Mismatches, expiry and revocation refuse before graph construction or listeners. Successful admission still refuses absent client composition.
    requirementARBORA-HOSTVERIFIEDaee6cfa29204
    tests/agent_host/test_start_admission.py:105
    tests/agent_host/test_start_admission.py:118
    tests/agent_host/test_start_admission.py:150
    tests/agent_host/test_start_admission.py:161
    tests/agent_host/test_start_admission.py:176
    ARBORA-HOST-R010.7.2
    Wire admitted interface startup
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Wire admitted interface startup.** Connect the checked start context to terminal and WebUI factories sharing the admitted authority. Preserve the original command selection and readiness acceptance. | Real terminal, web and combined launches expose only requested clients. Missing clients refuse before startup.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.7.2.1
    Bind actual declarative startup inputs
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Bind actual declarative startup inputs.** Compare a canonical digest of actual builder, listener and metadata inputs before admission owners run. Refuse supplied runtime objects and unused hosting arguments on this path. | Deterministic input changes refuse with zero owner or startup calls; mapping order preserves the digest.
    requirementARBORA-HOSTVERIFIED906170980099
    tests/agent_host/test_start_admission.py:254
    tests/agent_host/test_start_admission.py:295
    tests/agent_host/test_start_admission.py:321
    tests/agent_host/test_start_admission.py:337
    tests/agent_host/test_start_admission.py:344
    ARBORA-HOST-R010.7.2.2
    Complete admitted client composition
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Complete admitted client composition.** Bind supplied runtime configuration through its trusted owner and connect terminal/WebUI factories. | Real clients share admitted authority and preserve readiness, ownership and command selection.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.2
    Run terminal-mode HTTP in a supervised background thread
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Run terminal-mode HTTP in a supervised background thread.** Model: `HostLaunchReceipt` binds host instance, checked session, HTTP endpoint and selected client interfaces. Behavior: Terminal mode keeps HTTP serving in a background thread while the terminal client owns foreground interaction. Wiring: Reuse `CoServiceSupervisor.start_service` and `run_web_ui`; adapt `create_agent_server` instead of creating another host lifecycle. Refusal: Failed binding, absent authority or duplicate host identity refuses startup; never start another engine or multiplexer. Evidence: Record thread identity, readiness probe and the single shared authority identity. | During foreground terminal interaction, probe real HTTP and observe a distinct serving thread with exactly one engine authority.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.3
    Project scoped workspace logs
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Project scoped workspace logs.** Model: `HostLogRecord` binds host, workspace, tenant, request, sequence, timestamp, severity and redacted message. Behavior: Write host logs to `agent_data/logs/server.log` below the authorized workspace. Keep terminal rendering and stdio protocol output clean. Wiring: Attach bounded logging before the background service starts. Pass only tenant-exclusive descriptor contents or an authenticated tenant-filtered stream/reference to the terminal adapter. Never expose a shared log descriptor. Refusal: Path escape, another tenant, unsafe file ownership and unreadable required logging destinations refuse without leaking records. Evidence: Record safe log-reference identity, rotation generation and delivery gaps; never credentials or raw request bodies. | Serve a request and read its correlated record from the workspace log. Two tenants sharing one workspace receive only their own records. Forged references and shared descriptors refuse; injected secrets remain absent.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.4
    Bound log delivery and shutdown
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Bound log delivery and shutdown.** Model: Log references include generation and sequence; start receipts include lifecycle ownership. Behavior: Rotate bounded files, report overwritten ranges, drain on exit and stop only resources owned by this start. Wiring: Extend `CoServiceSupervisor` shutdown and the existing HTTP stop event; keep one MCP owner loop. Refusal: A stalled reader cannot block serving. Missing retained history returns an explicit gap instead of fabricated continuity. Evidence: Record last retained sequence, stopped thread identity and surviving reused-resource identity. | Overflow a bounded fixture, reconnect its reader, and require a gap. Terminal exit stops the owned HTTP thread and preserves reused services.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.4.1
    Bound owned supervisor shutdown
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Bound owned supervisor shutdown.** Stop one named service without signaling siblings. Apply one monotonic deadline to all-service shutdown and retain live handles for retry. This prerequisite does not establish terminal startup, sink draining or restart recovery. | Real loopback HTTP remains reachable on a borrowed sibling after targeted stop. Stalled threads consume one total deadline and cleanup succeeds on retry.
    requirementARBORA-HOSTVERIFIED6fa7e9832d48
    tests/mcp_server/test_co_service_supervisor.py:106
    tests/mcp_server/test_co_service_supervisor.py:56
    tests/mcp_server/test_co_service_supervisor.py:75
    ARBORA-HOST-R009.4.2
    Integrate delivery and terminal shutdown
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Integrate delivery and terminal shutdown.** Bind launch ownership to the supervisor and required sink. Preserve generation and sequence, report rotation gaps, drain on exit and stop only owned resources. Keep the existing MCP owner loop. | The production terminal exit stops its HTTP thread and drains the sink. Reused services survive. Overflow and reconnect report missing retained history as a gap.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.5
    Publish the terminal log-consumer handoff
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Publish the terminal log-consumer handoff.** Model: `HostLaunchReceipt` carries the authorized log reference, endpoint and workspace binding for one terminal client. Behavior: The terminal client must combine agent interaction and host log viewing through its public interface. Wiring: Require an exact agent-terminal-ui owning requirement and adapter before claiming the complete user journey. Refusal: Unavailable client rendering refuses the requested capability; a host log file alone cannot establish unified terminal viewing. Evidence: Bind host records to actual client observations without implementing terminal widgets in Arbora. Additional binding: Require the authenticated effective HostLaunchReceipt.web_logs boolean, bound to host, workspace, tenant, principal and session with generation and expiry. Wire agent_terminal_ui.app.run_host_terminal and agent_terminal_ui.client.HostLogReader.read under TUI-RUNTIME-R002.2 through R002.5. Missing runtime fields or consumer exports remain prerequisites; invalid or disabled handoffs cause zero reads while preserving agent interaction and the required redacted sink. | A real terminal client shows a correlated HTTP request log during an interaction. Missing client support leaves this journey unfulfilled.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.6
    Prove start and logs through real processes
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Prove start and logs through real processes.** Model: A disposable workspace and controlled terminal client observe host processes, threads and logs. Behavior: Exercise each selected interface, HTTP request, log rotation, restart and clean termination. Wiring: Proposed `tests/host/test_terminal_host_served.py` invokes the real agent host and its public client adapter. Refusal: Missing client contracts or successful helper calls do not establish the complete served journey. Evidence: Record actual endpoint responses, thread IDs, workspace digests, log sequences and engine start counts. Additional binding: Enter run_host_terminal and HostLogReader.read under TUI-RUNTIME-R002.6. Exercise terminal, web and both with authenticated web_logs true and false. Only terminal/both with true may read. Missing preference, reader or authority and changed scope cause zero reads; agent interaction and the required host sink remain available. Bind producer and consumer revisions in future evidence. | Combined mode serves HTTP while the terminal receives scoped logs. Denied workspace and missing client cases have zero unauthorized starts.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R006.1
    Preserve the sole multiplexer owner
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Preserve the sole multiplexer owner.** Model: The original parent remains the complete contract. Behavior: Retain every original R006 ownership clause, including all additional hosted modules and the absence of duplicate multiplexers. Wiring: Reuse the original package-layout test and the single serving lifecycle. Refusal: New child evidence cannot replace any original acceptance obligation. Evidence: Retain the original parent receipts and require its complete acceptance. | The original full module census passes; transport conformance alone cannot establish module ownership.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R006.2
    Use one standard transport scaffold
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Use one standard transport scaffold.** Model: `HostTransportConfiguration` declares stdio or streamable HTTP with explicit host, port and security settings. Behavior: Serve both modes through the same Arbora entrypoint and one multiplexer; reject unsupported arguments consistently. Wiring: Reuse `mcp_server/server.py:164` and `runtime._build_server:2208`; retire private factory coupling under existing R007 obligations. Refusal: Invalid transport or missing required network identity refuses before serving. Diagnostic output never corrupts stdio frames. Evidence: Record transport, schema generation, registered tool digest and one multiplexer instance. | A real MCP client initializes both modes and calls one admitted operation. Malformed options and unauthorized HTTP requests refuse.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R023.1
    Preserve the entire intent surface
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Preserve the entire intent surface.** Model: The original parent remains the complete contract. Behavior: Keep all eight original tools, ranking tie-breaks, fleet discovery and calls, fallback behavior and public registrar ownership. Wiring: Reuse the original FastMCP parity, invoke-policy and natural-language fallback acceptance. Refusal: New child evidence cannot replace any original acceptance obligation. Evidence: Retain the original parent receipts and require its complete acceptance. | All original R023 cases remain required, including the unmatched-operation fallback and registry ownership boundaries.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R023.2
    Prove transport parity on the served surface
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Prove transport parity on the served surface.** Model: The same registry generation binds both transport sessions and their tool schemas. Behavior: Compare normalized tool names and schemas, then dispatch through the existing invocation pipeline. Wiring: Use the real `arbora.api.mcp` registration from the production server for both clients. Refusal: A missing intent tool, divergent schema or bypassed policy fails conformance. Evidence: Record both served catalogs and positive and negative invocation receipts. | Both transports expose the same eight tools. Each permits one scoped call and refuses an unauthorized call before downstream effects.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R023.3
    AU:20 Arbora definition slice
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **AU:20 Arbora definition slice.** AU:20 primary-owner slice. Residual: No explicit complete binding was established for analogy search, blast radius, memory recall. Ontology validation and design operations to existing EG methods with the no-new-engine-code constraint. Generic mappings that may record a gap do not prove this clause. Arbora minimum action: Extend the existing HOST mapping with the five named capability-to-existing-EG-method-to-served-operation bindings and the reuse constraint. Retain R023 transport/refusal obligations. Do not create replacement engine implementations. Producer/consumer boundary: Existing EG public capabilities -> Arbora operation registry -> MCP intent transport; AU legacy action mappings identify migration obligations. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-HOST-R005.2.1.2, ARBORA-HOST-R023`. Source record SHA-256: `c49d11e763cfc99efbd0cd5492045295f7295ec848651bbe80f2ee24f25d5cf9`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:20, arbora/specs/host-composition-boundary/requirements.md:14#sha256=2bc29c46a44297cfe9623f780dc3ae54db9b7c525748d8cc2aded60bed7cdf20, arbora/specs/host-composition-boundary/requirements.md:121#sha256=914c1d23cf28f73bca43d0cbee99730e22743301c4e2b8381e7a22d38503741c, arbora/specs/host-composition-boundary/requirements.md:155#sha256=ff22277268b4b8429f8e0dd4a9066776cdfe5278a49828434f8cfdab451e4037, arbora/specs/host-composition-boundary/requirements.md:156#sha256=6226d4570cececdc1a610dc01aa0398d41a8ad28e442fd3be471f19272b416dd`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/0`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-HOST-R005.2.1.2, ARBORA-HOST-R023`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:20, arbora/specs/host-composition-boundary/requirements.md:14#sha256=2bc29c46a44297cfe9623f780dc3ae54db9b7c525748d8cc2aded60bed7cdf20, arbora/specs/host-composition-boundary/requirements.md:121#sha256=914c1d23cf28f73bca43d0cbee99730e22743301c4e2b8381e7a22d38503741c, arbora/specs/host-composition-boundary/requirements.md:155#sha256=ff22277268b4b8429f8e0dd4a9066776cdfe5278a49828434f8cfdab451e4037, arbora/specs/host-composition-boundary/requirements.md:156#sha256=6226d4570cececdc1a610dc01aa0398d41a8ad28e442fd3be471f19272b416dd`. This definition does not assert these tests have run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.6
    AU:96 Arbora definition slice
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **AU:96 Arbora definition slice.** AU:96 primary-owner slice. Residual: The installer skill entry and supported IDE/agent target set are not explicitly bound. So every supported target cannot yet be accounted for. Arbora minimum action: Bind the existing installer contract to its skill/command and supported IDE/agent target/version matrix. Require per-target configuration, parser, and client proof. Do not duplicate R008.2-.5. Producer/consumer boundary: Arbora deployment/cli.py registration -> versioned harness adapters -> client configuration/parser. Plan lines 68-85 extend this command with install-harnesses. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-HOST-R008.3, ARBORA-HOST-R008.5`. Source record SHA-256: `40a2468c82402f222fcf76bdd83bc1afb606f81c2442fc96221dfa8881ffb2e9`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:96, arbora/specs/host-composition-boundary/requirements.md:145#sha256=3654330f43b95dd38a9809238121fe34d48130eb383e7f83929eee598f7f5398, arbora/specs/host-composition-boundary/requirements.md:143#sha256=2cd3ee11b0ea3308f4d0aca26ec46f9fe70d9505d583cb535e80377e7e8cd8f4`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/5`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-HOST-R008.3, ARBORA-HOST-R008.5`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:96, arbora/specs/host-composition-boundary/requirements.md:145#sha256=3654330f43b95dd38a9809238121fe34d48130eb383e7f83929eee598f7f5398, arbora/specs/host-composition-boundary/requirements.md:143#sha256=2cd3ee11b0ea3308f4d0aca26ec46f9fe70d9505d583cb535e80377e7e8cd8f4`. This definition does not assert these tests have run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R026.6
    AU:112 Arbora definition slice
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **AU:112 Arbora definition slice.** AU:112 primary-owner slice. Residual: Primary-session-channel unavailability triggering A2A team coordination, plus graph-discoverable team records binding persisted task status and team members. Is not defined. Agent Library membership is not team membership. Arbora minimum action: Define the unavailable-channel fallback and team/member/task-status graph projection using existing A2A task persistence and library primitives. Require discovery and restart acceptance. Producer/consumer boundary: AU coordinator -> Arbora A2A host/A2ATaskStore -> EG durable task state and Agent Library projection. Fallback and team-record projection contracts are missing. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `EG-ORCH-VOCAB-R003, AU-CONTROL-R027`. Source record SHA-256: `ba4906ae3da7d4a15704dbf7546a89500b613855c8c4a9c4e30a8f62e43a5b84`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:112, agent-utilities/specs/agent-control-plane/requirements.md:32#sha256=52694293669bb6f229065e32204d4a00d544a5e3633f5313ebe51ae771443888, epistemic-graph/specs/orchestration-vocabulary/requirements.md:22#sha256=37112be5a2998ea8246961b0085ae9a23dc798ed4182cae44e50ccfce42a1333, epistemic-graph/specs/orchestration-vocabulary/requirements.md:23#sha256=0ef7100b2937a8592623a9885583404e19c4f2a9edee58c0c2241946f1bcb413, arbora/specs/host-composition-boundary/requirements.md:124#sha256=77f8745793fe05072b57f163e71479afdbde059cb7f3e13b24f9967a8b6fa00b`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/6`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `EG-ORCH-VOCAB-R003, AU-CONTROL-R027`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:112, agent-utilities/specs/agent-control-plane/requirements.md:32#sha256=52694293669bb6f229065e32204d4a00d544a5e3633f5313ebe51ae771443888, epistemic-graph/specs/orchestration-vocabulary/requirements.md:22#sha256=37112be5a2998ea8246961b0085ae9a23dc798ed4182cae44e50ccfce42a1333, epistemic-graph/specs/orchestration-vocabulary/requirements.md:23#sha256=0ef7100b2937a8592623a9885583404e19c4f2a9edee58c0c2241946f1bcb413, arbora/specs/host-composition-boundary/requirements.md:124#sha256=77f8745793fe05072b57f163e71479afdbde059cb7f3e13b24f9967a8b6fa00b`. This definition does not assert these tests have run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R022.1
    AU:97 Arbora definition slice
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **AU:97 Arbora definition slice.** AU:97 cross-owner slice. Residual: Workflow registration lifecycle, lazy engine initialization on first use and invocation through that registry. Arbora minimum action: Extend the workflow registry owner with registration/read identity and first-use engine initialization. Then require registry-resolved invocation through the existing host/AU path. Test no eager initialization, one first-use initialization, registered invocation and unknown-workflow refusal. Producer/consumer boundary: Preserve ARBORA-HOST-R022 workflow_store semantic match and AU-CONTROL-R037.5 graph_orchestrate -> `execute_workflow`. Registration and lazy initialization contracts/edges remain absent. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-HOST-R022, AU-CONTROL-R037`. Source record SHA-256: `f73767d1a3fdba29a702254ed1db2c9904158b6136f6f4b38a3c9a0d3e4fcb03`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, agent-utilities/specs/agent-control-plane/requirements.md:61#sha256=c9ca88ac1ff33130b2caa173750be1216a1e7810286020716678e8afa0a4bd45, arbora/specs/host-composition-boundary/requirements.md:120#sha256=68c8f3db0255314462979c5a1b67ce7fd6936008f85490d8c3f110a52f6d21cd`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/26`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-HOST-R022, AU-CONTROL-R037`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, agent-utilities/specs/agent-control-plane/requirements.md:61#sha256=c9ca88ac1ff33130b2caa173750be1216a1e7810286020716678e8afa0a4bd45, arbora/specs/host-composition-boundary/requirements.md:120#sha256=68c8f3db0255314462979c5a1b67ce7fd6936008f85490d8c3f110a52f6d21cd`. This definition does not assert these tests have run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.8
    ARBORA:9 Arbora definition slice
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **ARBORA:9 Arbora definition slice.** ARBORA:9 cross-owner slice. Residual: Exact public SDK and AU component environment-manifest producer definitions/operations are missing in the reviewed owner requirements. The host schema does not establish declarations for every enabled external component. Arbora minimum action: Define public versioned SDK/AU declaration exports covering enabled-component and indirect reads. Then link existing R010 census/startup tests to them. Preserve owner boundaries and secret-free diagnostics. Producer/consumer boundary: SDK/AU public declaration producers -> HostEnvironmentManifest -> Arbora configuration loader -> launcher startup validation; producer contracts remain undefined. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-HOST-R010.1, ARBORA-HOST-R010.2, ARBORA-HOST-R010.3, ARBORA-HOST-R010.4, ARBORA-HOST-R010.5, ARBORA-HOST-R010.6`. Source record SHA-256: `cfd8f1270b5ec1f19d8c78f50e5a833695573763a691584e8c74d8fa5f1cb225`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:9, arbora/specs/host-composition-boundary/requirements.md:136#sha256=77164ef7706ee3876b3011adcbae8fcb565b0e742d5ef8a9692fa062974fcdcd, arbora/specs/host-composition-boundary/requirements.md:137#sha256=e08340bc3097811ea44231a896a19b44d212617853bdf22c45fa3d50178cc3ca, arbora/specs/host-composition-boundary/requirements.md:139#sha256=43468ceaff9866f8f82decf9ac81f671787e1c63a3da68567f1e18c83150b76e, arbora/specs/host-composition-boundary/requirements.md:140#sha256=5c5986a1218fd3dd30f33fb4f423a00d04a624f9c1faa1becbba1227f7012852`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/35`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-HOST-R010.1, ARBORA-HOST-R010.2, ARBORA-HOST-R010.3, ARBORA-HOST-R010.4, ARBORA-HOST-R010.5, ARBORA-HOST-R010.6`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:9, arbora/specs/host-composition-boundary/requirements.md:136#sha256=77164ef7706ee3876b3011adcbae8fcb565b0e742d5ef8a9692fa062974fcdcd, arbora/specs/host-composition-boundary/requirements.md:137#sha256=e08340bc3097811ea44231a896a19b44d212617853bdf22c45fa3d50178cc3ca, arbora/specs/host-composition-boundary/requirements.md:139#sha256=43468ceaff9866f8f82decf9ac81f671787e1c63a3da68567f1e18c83150b76e, arbora/specs/host-composition-boundary/requirements.md:140#sha256=5c5986a1218fd3dd30f33fb4f423a00d04a624f9c1faa1becbba1227f7012852`. This definition does not assert these tests have run.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R032
    Remote workbench compatibility manifest and admission
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Remote workbench compatibility manifest and admission.** Define `workbench.compatibility.get` and `workbench.extensions.admit` with closed `WorkbenchCompatibilityV1` and `ExtensionAdmissionV1` schemas. Publish editor protocol/version, supported extension IDs/version ranges/capabilities, keybinding profiles, workspace and session identity. Focus/reserved shortcut rules, and explicit admission outcome. Bind to the existing embedded editor/context bridge and normal Arbora operation registry. Preserve the AU-owned ACP boundary and do not create another editor or Arbora ACP implementation. Require authenticated workspace/session scope before admission; refuse incompatible protocol/extensions or cross-workspace access without exposing credentials. Consumer counterpart: `WEBUI-APPS-R001.4`, agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`. | A real served browser tests a declared extension and shortcut, focus rules, reserved shortcuts, and incompatible extension refusal. It also tests denied cross-workspace access and confirms that credentials do not leak. This is a Arbora host contract; editor rendering and ACP execution remain with their owners.
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R010.9
    Refuse unsupported client interfaces before host effects
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Refuse unsupported client interfaces before host effects.** The connector host rejects enabled terminal, web or log options with client_unavailable. Reject non-boolean options with invalid_launch. Refuse before workspace initialization, graph construction or listener startup. Omitted and false options preserve ordinary HTTP hosting. This row covers refusal only. R009.2 through R009.6 and R010.7 retain their full served acceptance. | Sentinel tests observe zero constructor and listener calls for refused options. Default HTTP cases reach the existing server.
    requirementARBORA-HOSTVERIFIED21bf942e9389
    c18b2c507267
    tests/agent_host/test_interface_refusal.py:3
    ARBORA-HOST-R009.7
    Injected host log authority
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Injected host log authority.** Resolve current identity through SessionAuthority and exact workspace grants through trusted composition. Deny absent owners. Bind opaque references to current session, tenant, principal, workspace, host, grant revision and expiry. Revalidate before and after each bounded source read. Wire the optional adapter into the existing host. | Controlled HTTP tests prove successful reads, isolation, expiry, revocation, mismatches and zero unauthorized source calls. This does not prove deployed grants or the full sink and terminal journey.
    requirementARBORA-HOSTVERIFIED22534d1e5448
    cdd77f05d30b
    e30aad028a40
    tests/agent_host/test_log_access.py:2
    ARBORA-HOST-R009.8
    Production host log sink
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Production host log sink.** Compose an owner-only rotating sink with authenticated host request recording and private tenant projections. Redact before writing. Reject unsafe links and modes. Keep the sink active independently of terminal preference. | Real filesystem and HTTP tests prove rotation, redaction, refusal and tenant isolation using controlled identity grants. Full terminal and restart acceptance remain pending.
    requirementARBORA-HOSTVERIFIED191af7948d99
    tests/agent_host/test_log_sink.py:2
    tests/agent_host/test_log_sink_terminal.py:6
    ARBORA-HOST-R009.8.1
    Admit exact source generations
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Admit exact source generations.** Extend the existing workspace grant with a bounded immutable set of explicit source host IDs. Empty sets deny. Bind handles and cursors to that set. Refresh grants before and after source reads. Preserve original record host identity. | HTTP tests prove generation refusal, change invalidation and fresh admission. This does not prove durable restart replay.
    requirementARBORA-HOSTVERIFIED34077185335e
    ee476c64b37f
    tests/agent_host/test_log_access.py:442
    tests/agent_host/test_log_access.py:457
    tests/agent_host/test_log_access.py:484
    tests/agent_host/test_log_sink.py:225
    ARBORA-HOST-R009.8.2
    Retain restart acceptance
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Retain restart acceptance.** Durable source replay must preserve original generation, sequence, request and time. Require integrity-bound tenant cursors and explicit retention gaps. | Real restart and rotation acceptance remains required.
    requirementARBORA-HOSTVERIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R009.8.2.1
    Replay retained host files after restart
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Replay retained host files after restart.** Reuse the owner-only rotating log files. Validate bounded records and preserve source host, sequence, request, timestamp and severity. Bind a durable resume cursor to tenant, workspace, exact generation set and record position with a private persisted integrity key. Fresh session and generation admission is required after restart. Missing cursor anchors refuse with an explicit retention gap. | Real file close/reopen and HTTP fixtures resume authorized history, reject changed grants and forged cursors, and report rotated-away positions. No production grant issuer is supplied.
    requirementARBORA-HOSTVERIFIED80f6b7b53f91
    c7208d7d3822
    tests/agent_host/test_log_replay.py:2
    ARBORA-HOST-R009.8.2.2
    Complete consumer metadata presentation
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Complete consumer metadata presentation.** Carry original record metadata through a versioned consumer contract and render retained-history gaps in both clients. | Real Python and native clients prove metadata and restart-gap presentation; message-only version one remains insufficient evidence.
    requirementARBORA-HOSTVERIFIEDceaa3da1bbcc
    tests/agent_host/test_log_metadata.py:2
    tests/agent_host/test_log_sink_terminal.py:60
    ARBORA-HOST-R008.1000
    Startup bindings for messaging, A2A and readiness
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Startup bindings for messaging, A2A and readiness.** The composition root binds the messaging host ports, mounts the SDK A2A application for the fleet agent and binds the readiness probes before it serves. | `tests/test_host_bindings.py`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1001
    Model
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Model.** `SendDecision` holds the admission result of one send. The fleet agent is one agent whose only toolset is the `find` and `act` intent tools, so it reaches the multiplexer. | `tests/test_host_bindings.py::test_send_gate_admits_only_a_session_with_a_send_scope`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1002
    Behavior
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Behavior.** The turn handler runs one turn on the fleet agent. The action gate admits a send only for a verified session with a send scope. The outbound mirror writes one `OutboundMessage` node for each sent message. The runtime signal goes to the bounded signal buffer. | `tests/test_host_bindings.py::test_outbound_mirror_records_one_node_per_message`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1003
    Wiring
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Wiring.** `mcp_server()` calls `bind_messaging_ports()` and `bind_health_probes()`. The tool surface registration calls `mount_sdk_a2a()`, which mounts the admitted A2A application at `/a2a/agent` and runs its task manager through a server extension. | `tests/test_host_bindings.py::test_bind_messaging_ports_binds_all_four_ports`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1004
    Refusal
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Refusal.** The action gate denies a send without a verified session or without a send scope. An A2A request without verified authority gets status 401 before the application runs. An unbound readiness probe makes the process not ready. | `tests/observability/test_runtime_health.py::test_unbound_mandatory_probes_make_the_process_not_ready`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1005
    Evidence
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Evidence.** Tests use fakes for the engine and the session. They check the gate table, the port bindings, the mirror and the A2A path prefix. | `tests/test_host_bindings.py::test_prefixed_app_strips_the_mount_path`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1006
    Hosted observability, ecosystem and deployment modules
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Hosted observability, ecosystem and deployment modules.** Arbora hosts the run correlation context, the gateway metrics and the runtime health core. It hosts the trace export setup, the trace records and the error-detail sink. It hosts the ARD registry, its federation and its signing. It hosts the hook installer, the profile guard, the mount guard and the asset readers. It hosts the source catalogue. None of these modules imports the agent harness. | `tests/observability/test_correlation.py`, `tests/observability/test_telemetry.py`, `tests/observability/test_trace_records.py`, `tests/ecosystem/test_ard.py`, `tests/ecosystem/test_hook_installer.py`, `tests/deployment/test_guards.py`, `tests/ingest/test_source_catalog.py`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1007
    Behavior
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Behavior.** Correlation headers carry one run id, the session, the priority and the caller identity across processes. A health probe that errors or hangs reports unhealthy with its reason. | `tests/observability/test_runtime_health.py::test_a_failing_probe_is_unhealthy_with_its_reason`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-HOST-R008.1008
    Refusal
    Definition — ARBORA-HOST / ARBORA-HOST — Arbora host composition and ownership boundaryCanonical requirement and verification source
    **Refusal.** Arbora refuses a cleartext Langfuse host outside loopback. The asset reader refuses an asset over its size bound or with duplicate JSON keys. | `tests/deployment/test_guards.py::test_json_reader_rejects_duplicate_keys`
    requirementARBORA-HOSTSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS
    ARBORA-OPS — Hosted API and intent operations
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R001
    Native MCP/REST facade with A2A unary operations then streaming
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Native MCP/REST facade with A2A unary operations then streaming.** Arbora provides a native MCP and REST host. It fronts the engine and agent-utilities services. It first exposes unary A2A operations: card, send, get, list, and cancel. It then adds durable streaming to those same handlers. | Integration tests exercise the A2A unary endpoints against a fixture engine, followed by a separate test proving durable streaming delivery.
    requirementARBORA-OPSLANDEDdeb2b45bf83d
    ARBORA-OPS-R002
    Scoped A2A task routing and fleet tool exposure
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Scoped A2A task routing and fleet tool exposure.** Arbora routes inbound A2A tasks to the correct operation handler and exposes, through its assembled multiplexer, only the caller-authorized subset of fleet tools, including typed work-item retrieval and listing bound by control leases and read classifications. | Integration tests assert inbound A2A tasks resolve to the correct handler and that multiplexer tool listings are filtered per caller.
    requirementARBORA-OPSLANDED20f773df9ddd
    ARBORA-OPS-R003
    Remove multiplexer skill/prompt harvest path
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Remove multiplexer skill/prompt harvest path.** Arbora removes the multiplexer's legacy skill and prompt harvesting and static hydration code path. Arbora sources skills and prompts only through the fleet discovery surface. | A regression test confirms the retired harvest module is absent and unimportable at runtime.
    requirementARBORA-OPSVERIFIEDdeb2b45bf83d
    tests/fleet/test_no_duplicate_skill_prompt_harvest.py:59
    ARBORA-OPS-R004
    FastMCP 4 bridge for the MCP server
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **FastMCP 4 bridge for the MCP server.** The Arbora MCP bridge declares and runs on FastMCP 4. It provides native WebMCP support and a single consolidated event loop. Its own probes already exercise this version. | A semantic test suite plus a live probe confirm the deployed bridge reports FastMCP 4.
    requirementARBORA-OPSVERIFIEDa7947166d00a
    b5bf4ba58902
    tests/deployment/test_release_canary.py:61
    tests/deployment/test_release_canary.py:92
    ARBORA-OPS-R005
    Stable auth error codes from the engine contract
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Stable auth error codes from the engine contract.** Arbora consumes the engine's packaged error-code contract. This includes the stable AUTH_TENANT_MISMATCH, AUTH_AUDIENCE_MISMATCH, and AUTH_POLICY_VERSION_MISMATCH codes. Arbora refuses to start if the installed contract is missing or inconsistent with its generated bindings. | A contract test fails closed when the packaged engine error contract is absent or mismatched against the generated bindings.
    requirementARBORA-OPSVERIFIED100d015ca012
    b5bf4ba58902
    tests/api/test_contract_admission.py:120
    tests/api/test_contract_admission.py:70
    tests/api/test_errors.py:285
    ARBORA-OPS-R006
    Consume the engine's packaged wire-callable contract
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Consume the engine's packaged wire-callable contract.** Arbora reads the installed engine package's contract files for methods, errors, scopes, and JSON schemas. It binds operations only for engine methods marked wire-callable in that contract. | A package-contract test confirms the generated registry excludes any method not marked wire-callable in the installed engine contract.
    requirementARBORA-OPSVERIFIED100d015ca012
    97061e59c412
    tests/api/test_eg_binding.py:190
    ARBORA-OPS-R007
    Immutable operation registry with digest and authorization
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Immutable operation registry with digest and authorization.** Arbora defines one immutable OpSpec registry with typed enums for verb, surface, effect, and scope, producing a canonical form and a stable SHA-256 registry digest, and evaluates per-call authorization at find time. | Unit tests in tests/api/test_registry.py cover canonical-form stability, digest reproducibility, and authorized-evaluation outcomes.
    requirementARBORA-OPSVERIFIED4b83c69e2b41
    97061e59c412
    tests/api/test_api_registry.py:110
    tests/api/test_api_registry.py:63
    ARBORA-OPS-R009
    Single invoke pipeline for authority, effect, and audit
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Single invoke pipeline for authority, effect, and audit.** Arbora funnels every MCP, HTTP, A2A, and fleet call through one invoke pipeline that enforces surface, principal rule, exact scopes, policy, and subject-read checks in order, executes service-bound operations through a dedicated executor, gates destructive effects behind a single-use plan reference bound to the operation and policy revision, and requires console step-up with fresh authentication before admin or human-approval effects complete. | Integration tests exercise allow, deny, plan-expiry, and step-up paths through the invoke pipeline.
    requirementARBORA-OPSSPECIFIED5cd1a427c6a1
    97061e59c412
    deb2b45bf83d
    tests/a2a/test_eg_dispatch.py:39
    tests/api/test_invoke_bootstrap.py:161
    tests/api/test_invoke_contract.py:238
    tests/api/test_invoke_governance.py:193
    tests/api/test_invoke_governance.py:250
    ARBORA-OPS-R010
    Closed error enum and one response envelope
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Closed error enum and one response envelope.** Arbora defines a closed error-code enum, including UNAUTHENTICATED, UNKNOWN_OP, SCOPE_REQUIRED, and POLICY_DENIED, with a generated engine-error mapping. It converts every surface's response through one shared to_envelope function. | Unit tests check envelope shape and error-code mapping, and a generator diff check compares output against the packaged engine contract.
    requirementARBORA-OPSLANDED4b83c69e2b41
    ARBORA-OPS-R011
    Six resident MCP verbs with typed discovery
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Six resident MCP verbs with typed discovery.** Arbora implements the six resident MCP verbs (find, ask, why, write, act, manage) through a shared verb constructor with typed input schemas, exposes registry entries as arbora:// resources, and includes the registry digest in the server's published instructions. | Unit tests in tests/api/test_mcp_verbs.py cover verb schema validation, resource listing, and digest presence.
    requirementARBORA-OPSLANDED6b63aeb7ba03
    ea736715b7fb
    ARBORA-OPS-R012
    Bounded resolver for natural-language operation lookup
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Bounded resolver for natural-language operation lookup.** Arbora resolves natural-language and partial queries to registry operations using combined lexical and semantic ranking over generated descriptors, a tenant- and policy-partitioned outcome moving average, and a bounded result cache, falling any unmatched ask call back to a read-only natural-language query preview rather than a direct mutation. | Unit tests in tests/api/test_resolve.py cover ranking order, cache bounds, and the preview-only fallback behavior.
    requirementARBORA-OPSVERIFIED43db6b7ac49b
    deb2b45bf83d
    tests/api/test_resolve.py:103
    tests/api/test_resolve.py:42
    tests/api/test_resolve.py:54
    tests/api/test_resolve.py:64
    tests/api/test_resolve.py:73
    ARBORA-OPS-R013
    Generated HTTP API for every registry operation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Generated HTTP API for every registry operation.** Arbora exposes each registry operation at POST /api/v1/ops/{op_id}. It also exposes generated resource routes on a dedicated sub-application. The sub-application has an authentication dependency and CSRF protection for cookie sessions. It also has cursor pagination, idempotency-key handling, and discovery endpoints for the registry and OpenAPI document. | Integration tests in tests/api/test_http_*.py cover routing, authentication, CSRF enforcement, and pagination and idempotency behavior.
    requirementARBORA-OPSVERIFIED1fb96633563e
    a974d10c5d0c
    ea736715b7fb
    tests/api/test_http_projection.py:188
    tests/api/test_http_projection.py:288
    tests/api/test_http_projection.py:326
    tests/api/test_http_projection.py:91
    ARBORA-OPS-R014
    Identity self-service and admin operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Identity self-service and admin operations.** Arbora exposes identity operations. They cover self-service and admin management of users, sessions, API keys, service accounts, roles and groups. They also cover identity-provider configuration with dry-run, policy and mode transitions, issuer rotation, audit export and verification, and SCIM client management. Mutations require identity:admin scope and fresh console step-up. | Integration tests exercise each identity operation and confirm scope and step-up enforcement on admin mutations.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R015
    Access elevation, approval, and lease operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Access elevation, approval, and lease operations.** Arbora exposes access operations for elevation requests, approval and denial, lease listing, authorization checks, and policy explanation. One consolidated access service governs these operations. Every surface receives identical outcomes. The service enforces a no-self-approval rule. | Integration tests confirm consistent allow/deny outcomes across surfaces and reject a self-approval attempt.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R016
    Capacity status and throttle mode operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Capacity status and throttle mode operations.** Arbora exposes capacity status, cell update, and throttle status/mode operations backed by a read/config facade over the capacity controller, restricting throttle mode changes to the bounded observe/enforce enum under admin scope. | Integration tests confirm capacity reads match the underlying capacity cell and that a denied update leaves throttle state unchanged.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R017
    Finance and markets operations with tenant isolation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Finance and markets operations with tenant isolation.** Arbora exposes finance and markets operations, executing market reads server-side through the service executor under the finance:read scope, and gating position and paper-trading actions behind caller and subject ownership checks so no caller can see another tenant's account data. Delivered as the rollup of `ARBORA-OPS-R017.1` through `ARBORA-OPS-R017.2`. | Integration tests, including a negative cross-tenant case, confirm market reads and paper/position actions respect per-caller account binding.
    requirementARBORA-OPSLANDEDNo recorded commit/test evidence
    ARBORA-OPS-R017.1
    Tenant-scoped market reads under finance:read
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Tenant-scoped market reads under finance:read.** Arbora executes market reads server-side through the service executor under the finance:read scope, refusing with zero provider calls on a missing or mismatched tenant/account binding. | Tests confirm a matching binding reaches the provider and a missing or cross-tenant binding refuses before any provider call.
    requirementARBORA-OPSVERIFIED64a0c091b354
    tests/finance/test_markets.py:34
    tests/finance/test_markets.py:68
    ARBORA-OPS-R017.2
    Position and paper-trading actions with subject ownership checks
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Position and paper-trading actions with subject ownership checks.** Arbora gates position and paper-trading actions behind caller and subject ownership checks. The engine's subject-ownership contract supplies those checks. No caller can act on another tenant's account. Blocked on the epistemic-graph v2.28 subject-ownership contract (not yet pinnable; current pin is `epistemic-graph>=2.27.0,<3.0.0`). | An integration test confirms paper/position actions respect per-caller subject ownership once the v2.28 contract is pinned. It includes a negative cross-tenant case.
    requirementARBORA-OPSLANDED64a0c091b354
    ARBORA-OPS-R018
    Query, search, ontology, and analytics operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Query, search, ontology, and analytics operations.** Arbora exposes query (uql, sparql, sql, sql_schema), search, indexes, ontology, and analytics.series operations. They execute caller-bound engine queries without a separate local ontology store or SQL string interpolation. Delivered as the rollup of `ARBORA-OPS-R018.1` through `ARBORA-OPS-R018.2`. | Integration tests confirm each query/search/ontology/analytics operation reaches the engine and honors tenant and budget limits.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R018.1
    Sparql, sql_schema, and ontology operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Sparql, sql_schema, and ontology operations.** Arbora exposes SPARQL and sql_schema query routes. It also exposes ontology operations. These cover value/property types, interfaces, schema graph/summary, lint, generate, validate, load, export, and catalogue. The routes use the engine. They require neither a separate local ontology store nor SQL string interpolation. | Tests confirm the sparql and sql_schema routes and the ontology operation surface reach the engine.
    requirementARBORA-OPSLANDED64a0c091b354
    ARBORA-OPS-R018.2
    Uql, sql, search, indexes, and analytics.series operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Uql, sql, search, indexes, and analytics.series operations.** Arbora exposes uql and sql query operations, search, indexes, and analytics.series operations. They execute caller-bound engine queries and honor tenant and budget limits. | Integration tests confirm each operation reaches the engine and honors tenant and budget limits.
    requirementARBORA-OPSSPECIFIED64a0c091b354
    ARBORA-OPS-R018.2.1
    Distinct caller-bound query contracts
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Distinct caller-bound query contracts.** `query.uql` binds EG `Uql` under `query:unified`, using the provider inner request-parameter schema. `query.nl` binds EG `NlQuery` under `query:nl`, accepts text only, and obtains its graph from the current verified caller session. Both preserve provider result and refusal contracts. Missing NL feature/planner refuses at the provider; there is no local planner, scope substitution, or automatic grant. | Binding, resolver and dispatch regressions prove distinct scopes, strict inputs, caller graph binding, and provider refusal propagation without deterministic fallback.
    requirementARBORA-OPSVERIFIED3ea22258010e
    51529da8abe6
    a2f74cb9621d
    tests/api/test_query_ops.py:57
    ARBORA-OPS-R018.2.2
    Remaining query, SQL, search, indexes and analytics serving acceptance
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Remaining query, SQL, search, indexes and analytics serving acceptance.** Compose provider schema validation. Qualify caller-bound queries, tenant and budget limits, and unavailable NL planner refusal through served transports. Retain the remaining SQL, search, indexes and analytics.series implementation and acceptance from R018.2. R018.2.1 declaration/dispatcher tests do not qualify this runtime behavior. | Served integration tests prove all R018.2 operations reach the real engine and enforce tenant, scope and budget limits. An unavailable planner refuses without fallback.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R019
    Federation source registration and sharing operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Federation source registration and sharing operations.** Arbora exposes federation.sources operations for register, list, get, share, unshare, and probe. Registration and sharing are governed writes. Probe results redact credentials. Delivered as the rollup of `ARBORA-OPS-R019.1` through `ARBORA-OPS-R019.2`. | Integration tests confirm only the owner and grantees see a shared source. They confirm revocation blocks a subsequent probe.
    requirementARBORA-OPSLANDEDNo recorded commit/test evidence
    ARBORA-OPS-R019.1
    Federation source register, list, get, and probe
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Federation source register, list, get, and probe.** Arbora exposes federation.sources register, list, get, and probe. Registration is a governed write. Probe results redact credentials. | Integration tests confirm registration is a governed write and that probe results redact credentials.
    requirementARBORA-OPSLANDED64a0c091b354
    ARBORA-OPS-R019.2
    Federation source share and unshare
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Federation source share and unshare.** Arbora exposes federation.sources share and unshare as governed writes. Only the owner and grantees can see a shared source. Revoking access blocks the next probe. | Integration tests confirm only the owner and grantees see a shared source. They confirm revocation blocks a subsequent probe.
    requirementARBORA-OPSLANDED64a0c091b354
    ARBORA-OPS-R020
    Ingest operations through a typed SDK runner facade
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Ingest operations through a typed SDK runner facade.** Arbora exposes ingest operations for repository indexing, source sync, pack and job management, drift listing and repair with approval, and embedding admission and re-embedding, calling the ingestion SDK only through a typed runner facade and returning a typed UNAVAILABLE error when that runner is not composed. Delivered as the rollup of `ARBORA-OPS-R020.1` through `ARBORA-OPS-R020.5`. | Integration tests confirm sync returns a durable job receipt and that an absent runner fails closed with UNAVAILABLE.
    requirementARBORA-OPSLANDEDe990e195ab42
    ARBORA-OPS-R020.1
    Typed ingest runner port and the source-sync entry point
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Typed ingest runner port and the source-sync entry point.** Arbora defines one typed port for all ingestion SDK calls. It exposes ingest.sources.sync. If no runner is composed, it fails closed with UNAVAILABLE. | A test proves a durable job receipt on success and a typed UNAVAILABLE refusal when the runner is absent.
    requirementARBORA-OPSVERIFIED4b69b27f1d76
    5ffd23ca7883
    822f55d5835d
    a974d10c5d0c
    cc90ee37583f
    tests/api/test_ingest_ops.py:116
    tests/api/test_ingest_ops.py:97
    ARBORA-OPS-R020.2
    Repository indexing and source inventory operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Repository indexing and source inventory operations.** Arbora exposes `ingest.repositories.index` and `ingest.sources.{list,status}` through the same typed runner port. | Integration tests confirm each operation reaches the runner and fails closed with `UNAVAILABLE` when the runner is absent.
    requirementARBORA-OPSVERIFIED4b69b27f1d76
    5ffd23ca7883
    822f55d5835d
    a974d10c5d0c
    cc90ee37583f
    tests/api/test_ingest_ops.py:138
    tests/api/test_ingest_ops.py:154
    tests/api/test_ingest_ops.py:168
    tests/api/test_ingest_ops.py:181
    tests/api/test_ingest_ops.py:191
    ARBORA-OPS-R020.3
    Pack and job management operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Pack and job management operations.** Arbora exposes `ingest.packs.*` and `ingest.jobs.*` through the same typed runner port. | Integration tests confirm pack and job operations reach the runner and report durable job state.
    requirementARBORA-OPSVERIFIED822f55d5835d
    ARBORA-OPS-R020.3.1
    Missing ingest.packs.* and ingest.jobs.* ops
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Missing ingest.packs.* and ingest.jobs.* ops.** This row rolls up ARBORA-OPS-R020.3.1.1 through ARBORA-OPS-R020.3.1.2. No ingest.packs.* or ingest.jobs.* operation exists through the typed runner port. | Integration tests confirm ingest.packs.* and ingest.jobs.* reach the runner and report durable job state. They also confirm UNAVAILABLE when the runner is absent.
    requirementARBORA-OPSVERIFIED16c9b2bddda3
    ARBORA-OPS-R020.3.1.1
    `ingest.packs.list` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`ingest.packs.list` op.** Arbora exposes `ingest.packs.list` as a read operation through the typed ingest runner port, listing this tenant's ingestion packs. | Tests confirm the operation reaches the runner with the caller's tenant and declares the existing `ingest:read` scope. They also require fail-closed `UNAVAILABLE` when the runner is absent.
    requirementARBORA-OPSVERIFIED16c9b2bddda3
    tests/api/test_ingest_ops.py:228
    tests/api/test_ingest_ops.py:240
    tests/api/test_ingest_ops.py:249
    ARBORA-OPS-R020.3.1.2
    `ingest.jobs.status` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`ingest.jobs.status` op.** Arbora exposes `ingest.jobs.status` as a read operation through the typed ingest runner port. It reports the state of one durable job. Depends on `ARBORA-OPS-R020.3.1.1` for the shared pack/job port conventions. | Tests confirm the op reaches the runner, reports durable job state and declares `ingest:read`. It fails closed with `UNAVAILABLE` when the runner is absent.
    requirementARBORA-OPSVERIFIED634a344fade7
    tests/api/test_ingest_ops.py:256
    tests/api/test_ingest_ops.py:266
    tests/api/test_ingest_ops.py:275
    ARBORA-OPS-R020.4
    Drift listing and repair-with-approval operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Drift listing and repair-with-approval operations.** Arbora exposes `ingest.drift.{list,get,repair_propose,repair_approve}`, gating repair behind an approval reference. | Integration tests confirm drift repair previews and audits its effect before applying it.
    requirementARBORA-OPSLANDED822f55d5835d
    ARBORA-OPS-R020.5
    Embedding admission and re-embedding operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Embedding admission and re-embedding operations.** Arbora exposes `ingest.embedding.{admit,reembed}` through the same typed runner port. | Integration tests confirm embedding operations reach the runner and report durable job state.
    requirementARBORA-OPSLANDED822f55d5835d
    ARBORA-OPS-R021
    Decision, retrieval, and policy operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Decision, retrieval, and policy operations.** Arbora exposes decide, retrieval, context, freshness, policy, and swarm read operations while restricting decision-commit actions to the service executor, so no caller can materialize an agent decision using only a human-scoped token. | Integration tests confirm decision commits are service-only and that provenance is attached to each result.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.1
    Decide operations (service-executed) — decide slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Decide operations (service-executed) — decide slice.** Implements the decide portion of `ARBORA-OPS-R021`: `decide.*` operations that evaluate and commit agent decisions, routing the commit path through the service executor only (never the caller-bound path) and attaching provenance to each result. | A test confirms a human-scoped caller cannot invoke the commit path directly and that every decide result carries provenance.
    requirementARBORA-OPSLANDED1ded59edd1a6
    ARBORA-OPS-R021.2
    Retrieval, context, and freshness read operations — retrieval slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Retrieval, context, and freshness read operations — retrieval slice.** Delivered as the rollup of `ARBORA-OPS-R021.2.1` through `ARBORA-OPS-R021.2.2`. Implements the retrieval portion of `ARBORA-OPS-R021`: `retrieval.*` read operations, including context-budgeted retrieval and freshness checks. These execute caller-bound engine queries without a local cache substitute. | A test confirms a retrieval call reaches the engine under the caller's own authority and respects a context budget.
    requirementARBORA-OPSSPECIFIEDe78a5e5b701e
    ARBORA-OPS-R021.2.1
    `retrieval.search` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`retrieval.search` op.** Arbora exposes `retrieval.search` as a read operation through a typed retriever port. It returns context-budgeted hits under the caller's own tenant. It fails closed with `UNAVAILABLE` when the port is not composed. | Tests confirm the op reaches the retriever with the caller's tenant and truncates hits to the context budget. They verify the existing `memory:read` scope and a closed failure with `UNAVAILABLE` when the retriever is absent.
    requirementARBORA-OPSSPECIFIEDe78a5e5b701e
    tests/api/test_retrieval_ops.py:43
    tests/api/test_retrieval_ops.py:58
    ARBORA-OPS-R021.2.2
    `retrieval.freshness` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`retrieval.freshness` op.** Arbora exposes `retrieval.freshness` as a read operation through the same typed retriever port. It reports freshness of the caller's retrieval sources. Depends on `ARBORA-OPS-R021.2.1` for the shared retriever port. | Tests confirm the op reaches the retriever with the caller's tenant and is read-only. They verify a closed failure with `UNAVAILABLE` when the retriever is absent.
    requirementARBORA-OPSVERIFIEDf6f2177ab1e0
    tests/api/test_retrieval_ops.py:68
    tests/api/test_retrieval_ops.py:81
    ARBORA-OPS-R021.3
    Policy and swarm read operations — policy slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Policy and swarm read operations — policy slice.** Implements the policy portion of `ARBORA-OPS-R021`: `policy.*` and `swarm.*` read operations surfacing the active policy state and swarm topology to an authorized caller. | A test confirms policy and swarm reads are caller-scoped and read-only.
    requirementARBORA-OPSLANDEDcc90ee37583f
    ARBORA-OPS-R021.4
    Run read operations — runs slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Run read operations — runs slice.** Delivered as the rollup of `ARBORA-OPS-R021.4.1` through `ARBORA-OPS-R021.4.6`. Implements the run-observation portion of `ARBORA-OPS-R021`: the `runs.metrics` and `runs.get` read operations. They read the engine under the caller's own authority and hold no local aggregate. | A test confirms both operations reach the engine reader with the caller's tenant. They fail closed with `UNAVAILABLE` when the reader is absent.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.4.1
    RunTraceReader port
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **RunTraceReader port.** Model: `RunTraceReader` in `arbora/api/ops/runs.py` (planned). Behavior: The existing service binding must expose typed asynchronous `get` and `metrics` reads. Wiring: The invoke pipeline must pass verified caller authority to both methods. Refusal: An absent reader must return `UNAVAILABLE` before dispatch. | Evidence: planned `tests/api/test_runs_ops.py::test_run_trace_reader_is_runtime_checkable_protocol` plus the served cases in test-spec.md.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.4.2
    Engine adapter
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Engine adapter.** Model: Validated trace and decision projections under `EG-ORCH-VOCAB-R009.15` through `.17`. Behavior: The adapter must preserve engine values and caller scope through published engine client reads. Wiring: The composition root must bind the adapter to `run_trace_reader`. Refusal: Missing wire methods must return `UNAVAILABLE`; another tenant must read as absent. | Evidence: planned `tests/api/test_runs_ops.py::test_adapter_calls_engine_wire_method` plus the served cases in test-spec.md.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.4.3
    Aggregate models
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Aggregate models.** Model: `RunMetricsParams` and `RunMetricsOutcome` in `arbora/api/ops/runs.py` (planned). Behavior: Metrics must preserve each engine query grouping and zero-solved abstention. Wiring: The operation must validate the engine outcome before returning it. Refusal: Unknown fields, negative costs, invalid windows and non-finite numbers must refuse. | Evidence: planned `tests/api/test_runs_ops.py::test_run_metrics_models_reject_unknown_fields` plus the served cases in test-spec.md.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.4.4
    Aggregate operation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Aggregate operation.** Model: Separate query results defined by `EG-ORCH-VOCAB-R010.1` through `.5`. Behavior: `runs.metrics` must return engine aggregates without local arithmetic. Wiring: `handle_runs_metrics` must use `build_read_op`, verb `ASK`, and existing `telemetry:read`. Refusal: Denied scope must prevent engine dispatch; zero solved tasks must not produce zero cost. | Evidence: planned `tests/api/test_runs_ops.py::test_runs_metrics_passes_engine_values_through` plus the served cases in test-spec.md.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.4.5
    Per-run operation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Per-run operation.** Model: `RunSummary` in `arbora/api/ops/runs.py` (planned), selected by `run_id`. Behavior: `runs.get` must return the field projection and snapshot contract below. Wiring: `handle_runs_get` must use `build_read_op` and existing `kg:read`. Refusal: Unknown runs and other tenants must be indistinguishable; missing fields must remain unavailable. | Evidence: planned `tests/api/test_runs_ops.py::test_runs_get_returns_termination_context_and_applied_config` plus the served cases in test-spec.md.
    requirementARBORA-OPSVERIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.4.5.1
    Current-plan read boundary
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Current-plan read boundary.** Model: `PlanItem`, `CurrentPlanSnapshot` and `CurrentPlanRead` in `arbora/api/ops/runs.py`. Each model refuses unknown fields and cannot change. A snapshot holds the run ID, a revision of zero or more, UTC observation and expiry times, and ordered items. Each item has a status of `pending`, `in_progress` or `done`. An available empty plan differs from an unavailable read. Behavior: `runs.current_plan` reads the plan of one run through the injected `current_plan_reader` port. It passes the verified caller tenant and principal to the port. Arbora stores no plan and does not rebuild a plan from stored messages. Wiring: `handle_runs_current_plan` uses `build_read_op` and the existing `kg:read` scope. `arbora/api/ops/registry_factory.py` lists `runs`. `runs.get` reuses `read_current_plan` for its `current_plan` field. Refusal: An absent port, an unknown run and a run of another caller return the same unavailable read with no items. A malformed result, a result for a different run, a future observation time or an expired snapshot also return unavailable. Parameters cannot supply caller authority. | `tests/api/test_runs_ops.py` covers caller forwarding, item order, the absent port, malformed parameters, malformed snapshots and each fail-closed projection.
    requirementARBORA-OPSVERIFIED663cc8cad940
    tests/api/test_runs_ops.py:20
    ARBORA-OPS-R021.4.6
    Registration and served proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Registration and served proof.** Model: Registry, OpenAPI and client artifacts generated under `ARBORA-OPS-R025`. Behavior: REST and MCP must reach the same reader through the registered operation pipeline. Wiring: `arbora/api/ops/registry_factory.py` must list `runs`; the host must bind its reader. Refusal: Unsupported operations and denied callers must produce typed refusals without engine calls. | Evidence: planned `tests/api/test_runs_ops.py::test_runs_ops_registered_with_existing_scopes` plus the served cases in test-spec.md.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022
    Work and evolution loop operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Work and evolution loop operations.** Arbora exposes work-item and offer operations plus evolution loop, schedule, and proposal operations, with its daemon acting only as a status/run/pause facade while durable loop state remains owned by the underlying service. | Integration tests confirm run/pause requires the loops:control scope, reads require loops:read, and a repeated run stays idempotent.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.1
    Work-item and offer operations — work slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Work-item and offer operations — work slice.** Implements the work slice of ARBORA-OPS-R022. It exposes work.* operations for work-item and offer reads and writes. The same control leases bind them as fleet-facing listings. | A test confirms a work-item write requires the declared scope and that offers are visible only to their bound principal.
    requirementARBORA-OPSLANDEDc4cc3e21b439
    ARBORA-OPS-R022.2
    Evolution loop, schedule, and proposal operations — evolution slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Evolution loop, schedule, and proposal operations — evolution slice.** Implements the evolution slice of ARBORA-OPS-R022. It exposes evolution.* operations for loop status/run/pause, schedules, and proposals. The daemon is only a facade. The owner service retains durable loop state. | A test confirms run/pause requires the `loops:control` scope, reads require `loops:read`, and a repeated run stays idempotent.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.2.1
    evolution.loops.status operation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **evolution.loops.status operation.** Arbora exposes evolution.loops.status as a read through a typed evolution runner port. It reports one loop's state. The owner service retains durable loop state. This is a child of ARBORA-OPS-R022.2 and rolls up .1 through .5. **Blocked:** The engine scope registry in contract/scopes.json must register loops:read. The registry factory rejects unregistered scopes at arbora/api/ops/registry_factory.py:72-76. Do not substitute work:read. | Tests confirm the op reaches the runner with the caller's tenant and declares loops:read. They also require fail-closed UNAVAILABLE when the runner is absent.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.2.2
    `evolution.schedules.list` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`evolution.schedules.list` op.** Read operation listing this tenant's loop schedules through the evolution runner port. Depends on `ARBORA-OPS-R022.2.1` for the port. | Tests confirm the op reaches the runner with the caller's tenant and fails closed with `UNAVAILABLE`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.2.3
    `evolution.proposals.list` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`evolution.proposals.list` op.** Read operation listing this tenant's evolution proposals through the evolution runner port. Depends on `ARBORA-OPS-R022.2.1`. | Tests confirm the op reaches the runner with the caller's tenant and fails closed with `UNAVAILABLE`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.2.4
    `evolution.loops.run` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`evolution.loops.run` op.** Write operation requesting one loop run, idempotency-key required, requiring `loops:control`. Depends on `ARBORA-OPS-R022.2.1`; may need the engine scope registry (epistemic-graph). | Tests confirm `loops:control` is required and a repeated run with the same key stays idempotent.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.2.5
    `evolution.loops.pause` op
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **`evolution.loops.pause` op.** Write operation pausing one loop, requiring `loops:control`. Depends on `ARBORA-OPS-R022.2.4`. | Tests confirm `loops:control` is required and the pause is idempotent.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R023
    Agent, browser, RLM, and fleet call operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Agent, browser, RLM, and fleet call operations.** Arbora exposes agent, A2A task, RLM, browser, and fleet operations, including fleet.call, deriving each loaded tool's effect classification from its annotation so every call still passes through the invoke pipeline rather than bypassing it. | Integration tests confirm every loaded fleet tool call reaches the invoke pipeline and no direct child dispatch bypasses it.
    requirementARBORA-OPSLANDEDe1d37ca10ef7
    ARBORA-OPS-R024
    Telemetry, security, usage, and admin operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Telemetry, security, usage, and admin operations.** Arbora exposes telemetry, security, usage, memory, and graph operations. Operational actions include doctor, config, backup, restore, and tenants. The engine supplies usage data. Destructive backup, restore, and tenant actions require console step-up and a durable audit record. | Integration tests reject plain confirmation for backup, restore, and tenant actions. They require step-up and audit.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.1
    Telemetry operations — telemetry slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Telemetry operations — telemetry slice.** Implements the telemetry portion of `ARBORA-OPS-R024`: `telemetry.*` operations bound to the engine's tenant-scoped telemetry method. | A test confirms a telemetry read is tenant-scoped and reaches the engine.
    requirementARBORA-OPSSPECIFIED4b69b27f1d76
    ARBORA-OPS-R024.2
    Security operations — security slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Security operations — security slice.** Implements the security portion of `ARBORA-OPS-R024`: `security.*` operations surfacing the current security posture to an authorized caller. | A test confirms a security read requires its declared scope.
    requirementARBORA-OPSLANDED4b69b27f1d76
    ARBORA-OPS-R024.3
    Usage operations — usage slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Usage operations — usage slice.** Implements the usage portion of `ARBORA-OPS-R024`: `usage.*` operations sourcing usage data from the engine rather than a local counter. | A test confirms a usage read reaches the engine and reflects tenant-scoped data.
    requirementARBORA-OPSLANDED4b69b27f1d76
    ARBORA-OPS-R024.4
    Memory operations — memory slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Memory operations — memory slice.** Implements the memory portion of `ARBORA-OPS-R024`: `memory.*` operations over the engine's served memory method, bound by the caller's own authority. Until the engine serves that method, the served registry carries no `memory.*` operation. A client then sees the operation as absent, not refused. | A test confirms a memory read/write is scoped to the caller's own tenant. Until then, a test confirms the served API answers `memory.read` as an unknown operation.
    requirementARBORA-OPSSPECIFIED383897ed5238
    5ffd23ca7883
    8d1bc46ecbdb
    94724be32c28
    tests/api/test_registry_factory.py:326
    ARBORA-OPS-R024.4.1
    Versioned memory port
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Versioned memory port.** Model: the versioned memory contract in plan.md. Behavior: Reuse generated `EG-DURABLE-KERNEL-R085.1` requests and tagged outcomes through the existing memory service binding. Wiring: Extend `MemoryStore` in `arbora/api/ops/memory.py`; preserve the existing generic read/write contract. Refusal: Unavailable generated methods must refuse without a local memory fallback. | Evidence: planned `tests/api/test_memory_files_served.py::test_models_and_port_preserve_tagged_outcomes`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.4.2
    Snapshot reads and listing
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Snapshot reads and listing.** Model: the versioned memory contract in plan.md. Behavior: Serve `memory.files.read` and `memory.files.list` through `ReadMemorySnapshot` and `ListMemorySnapshots`. Wiring: Extend `operations()` in `arbora/api/ops/memory.py:90` using `EG-DURABLE-KERNEL-R085.2` and `.4`. Refusal: Expired or wrong-scope cursors must refuse; responses must reveal no hidden counts or identifiers. | Evidence: planned `tests/api/test_memory_files_served.py::test_read_list_preserve_scope_and_cursor`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.4.3
    Versioned saves and conflicts
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Versioned saves and conflicts.** Model: the versioned memory contract in plan.md. Behavior: Serve `memory.files.save` through `SyncMemorySnapshot` submit or resolve under `EG-DURABLE-KERNEL-R085.3`. Wiring: The existing service executor must forward the generated precondition, bytes, digest and request identity. Refusal: Stale authorized saves must retain both versions; refused saves must contain no accepted-head fields. | Evidence: planned `tests/api/test_memory_files_served.py::test_competing_saves_preserve_both_versions`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.4.4
    Hosted materialization
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Hosted materialization.** Model: the versioned memory contract in plan.md. Behavior: Write hosted projections and acknowledge the exact EG head and observation generation under `EG-DURABLE-KERNEL-R085.6`. Wiring: Bind the host materializer beside `build_operation_runtime` in `arbora/api/invoke/bootstrap.py:167`. Refusal: Failed file writes must not acknowledge; delayed acknowledgments must not clear newer observations or conflicts. | Evidence: planned `tests/api/test_memory_files_served.py::test_materialization_ack_checks_generation`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.4.5
    Authority and replay
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Authority and replay.** Model: the versioned memory contract in plan.md. Behavior: Use `ARBORA-OPS-R009` and `ARBORA-OPS-R013` with `EG-DURABLE-KERNEL-R085.5` for every request and replay. Wiring: `invoke` in `arbora/api/invoke/pipeline.py:810` must authorize before engine or hosted-file access. Refusal: Denied existing, absent and creation requests must be indistinguishable; changed-body replay must have no effects. | Evidence: planned `tests/api/test_memory_files_served.py::test_authority_and_replay_are_non_disclosing`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.4.6
    Registration and served proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Registration and served proof.** Model: the versioned memory contract in plan.md. Behavior: Register the three file operations and generate their schemas under `ARBORA-OPS-R025`. Wiring: `registry_factory.py` already registers memory; real HTTP and MCP calls must traverse invoke and durable EG dispatch. Refusal: Missing producer contracts must remain unavailable; no test may replace the host, gateway or engine transport. | Evidence: planned `tests/api/test_memory_files_served.py::test_complete_served_memory_file_journey`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.5
    Operational admin operations — admin slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Operational admin operations — admin slice.** Implements the operational-admin (doctor, config, backup, restore, tenants) portion of `ARBORA-OPS-R024`: `ops.*` operations requiring destructive backup, restore, and tenant actions to pass console step-up with a durable audit record. Graph, query, search, and ontology administration are out of scope for this slice; Arbora's host-composition cutover lane owns them as `ARBORA-HOST-R026.x`. | A test confirms backup, restore, and tenant actions cannot complete from a plain confirmation and require step-up plus audit.
    requirementARBORA-OPSLANDED8d1bc46ecbdb
    ARBORA-OPS-R025
    Generated registry, OpenAPI, and client artifacts
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Generated registry, OpenAPI, and client artifacts.** Arbora's generator script reads the packaged engine contract. It regenerates the operation registry, descriptors, OpenAPI document, engine-error module, and Python and TypeScript clients. Output is reproducible under its generated-artifact directories. | A generator diff/drift test confirms regenerated artifacts match the committed output for a pinned engine contract.
    requirementARBORA-OPSVERIFIED4b83c69e2b41
    ARBORA-OPS-R025.1
    Generated Python invocation boundary
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Generated Python invocation boundary.** The existing generator emits a client that checks operation membership before transport. It requires the response registry digest to match its generated registry for success and refusal envelopes. Matching envelopes pass through unchanged. This child does not establish packaged artifacts or complete R025 generation. | Generated-code tests prove unknown operations make zero calls, mismatched or absent digests refuse, and matching success/refusal data is preserved.
    requirementARBORA-OPSVERIFIED144fd029bf2e
    tests/api/test_gen_api.py:266
    tests/api/test_gen_api.py:288
    tests/api/test_gen_api.py:303
    ARBORA-OPS-R025.2
    Remaining generated artifact acceptance
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Remaining generated artifact acceptance.** Retain all R025 requirements after the Python invocation boundary. Generate registry, descriptors, OpenAPI, engine errors and both clients from a compatible pinned packaged engine contract. Include required registry data in the distribution. | A deterministic regeneration/drift test and installed-wheel consumer test prove complete artifacts. R025.1 fixture tests alone cannot close this row.
    requirementARBORA-OPSVERIFIED43c5e4b631cb
    a247b168fa98
    tests/api/test_gen_api.py:320
    tests/api/test_gen_api.py:470
    tests/deployment/test_generated_client_wheel.py:15
    tests/deployment/test_generated_client_wheel.py:27
    ARBORA-OPS-R026
    API surface and compatibility drift gates
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **API surface and compatibility drift gates.** Arbora enforces its API-surface and backward-compatibility drift gates as pre-commit hooks, each backed by a dedicated test. | Unit tests for each drift gate confirm it fails when its drift is introduced. The pre-commit hook runs them on every commit.
    requirementARBORA-OPSVERIFIED4b9d181069e4
    ARBORA-OPS-R026.1
    API-surface drift gate — api-surface slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **API-surface drift gate — api-surface slice.** This implements the api-surface portion of `ARBORA-OPS-R026`. A pre-commit hook fails if generated registry operation IDs, HTTP routes, or MCP verbs change without a reviewed baseline update. | A dedicated unit test confirms failure when an operation is added, removed, or changes public shape without a baseline update.
    requirementARBORA-OPSVERIFIED4b9d181069e4
    tests/api/test_surface_drift_gate.py:22
    tests/api/test_surface_drift_gate.py:31
    tests/api/test_surface_drift_gate.py:41
    tests/api/test_surface_drift_gate.py:50
    tests/api/test_surface_drift_gate.py:67
    ARBORA-OPS-R026.2
    Backward-compatibility drift gate — backward-compat slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Backward-compatibility drift gate — backward-compat slice.** Implements the backward-compat portion of `ARBORA-OPS-R026`: a pre-commit hook that fails when a previously published operation is removed or has a required field narrowed in an incompatible way. | A dedicated unit test confirms the gate fails when a previously published operation's compatible shape is broken.
    requirementARBORA-OPSVERIFIED4b9d181069e4
    tests/api/test_backward_compat_drift_gate.py:42
    tests/api/test_backward_compat_drift_gate.py:51
    tests/api/test_backward_compat_drift_gate.py:60
    tests/api/test_backward_compat_drift_gate.py:70
    tests/api/test_backward_compat_drift_gate.py:79
    ARBORA-OPS-R027
    Authority-parity test across principals and surfaces
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Authority-parity test across principals and surfaces.** Arbora maintains an authority matrix fixture covering every principal kind, operation, and surface combination, and a parity test asserting the generated registry enforces identical allow/deny outcomes against it. | The authority-parity test suite runs against the authority matrix fixture and passes with no mismatches.
    requirementARBORA-OPSVERIFIED4b9d181069e4
    tests/api/test_authority_parity.py:114
    tests/api/test_authority_parity.py:120
    ARBORA-OPS-R028
    Exported domain scope classes
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Exported domain scope classes.** Arbora defines and exports its domain scope classes, including finance:read, fleet:read, fleet:control, loops:read, loops:control, ops:read, and ops:admin, for consumption by the engine's scope registry. | Unit tests confirm each exported scope triple matches its declared class and is consumed without duplication.
    requirementARBORA-OPSLANDED4b83c69e2b41
    b47b39eac0ae
    ARBORA-OPS-R029
    Single resident-tool server cutover
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Single resident-tool server cutover.** Arbora's server factory registers only the six resident MCP verbs plus find_tools, load_tools, unload_tools, and multiplexer_status. It mounts the generated /api/v1 sub-application and an explicit protocol-route table. The same change removes retired granular tool registrars, hand-written action-tool routes, and legacy fleet routes. | A boot/integration test checks the running server exposes exactly the resident tool set and mounted routes. It confirms retired modules are absent.
    requirementARBORA-OPSVERIFIED5bc24c262ef0
    tests/api/test_resident_tool_surface.py:33
    tests/api/test_resident_tool_surface.py:43
    tests/api/test_resident_tool_surface.py:56
    ARBORA-OPS-R030
    Accurate MCP server and API documentation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Accurate MCP server and API documentation.** Arbora keeps its MCP server, API, and status documentation accurate to the live six-verb MCP surface. It also documents the generated HTTP API. The docs replace outdated tool-count or endpoint descriptions. | A documentation-accuracy check confirms the documented verb and tool counts match the live registry.
    requirementARBORA-OPSVERIFIED5bc24c262ef0
    tests/docs/test_mcp_server_doc_accuracy.py:24
    tests/docs/test_mcp_server_doc_accuracy.py:38
    ARBORA-OPS-R031
    Published tool-to-operation parity inventory
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Published tool-to-operation parity inventory.** Arbora publishes a complete parity inventory mapping every former hosted intent verb and tool to its destination operation or a documented intentional drop, so that a consuming agent project can remove its legacy intent-tool definitions only once that inventory and its generated client are published. | A parity-inventory test confirms full coverage of former tool names against the published mapping.
    requirementARBORA-OPSVERIFIED5bc24c262ef0
    ARBORA-OPS-R031.1
    Fleet meta-tool parity mapping — resident fleet slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Fleet meta-tool parity mapping — resident fleet slice.** Implements the resident-fleet-tool slice of `ARBORA-OPS-R031`: Arbora publishes, in docs, the parity mapping from each of its four resident fleet meta-tools (`find_tools`, `load_tools`, `unload_tools`, `multiplexer_status`) to its destination operation. | A parity-inventory test confirms the published mapping's keys and values match the live `FLEET_OPERATIONS` registry exactly.
    requirementARBORA-OPSVERIFIED5bc24c262ef0
    tests/api/test_fleet_tool_parity_inventory.py:33
    tests/api/test_fleet_tool_parity_inventory.py:42
    ARBORA-OPS-R032
    Identity dependency inversion via ports
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Identity dependency inversion via ports.** Arbora's webui_host, webui_co_service, and mcp_server modules depend only on the Protocol and DTO definitions in arbora.identity.ports, with the concrete identity runtime constructed once in the serving composition root and injected into each. | A static dependency-graph check confirms each module imports only arbora.identity.ports and not the concrete identity implementation.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.1
    Static identity-ports import boundary
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Static identity-ports import boundary.** Arbora enforces, as a standing regression guard, that its webui_host and mcp_server modules import only arbora.identity.ports and never the concrete identity runtime (arbora.identity.engine or any other arbora.identity submodule). | A static dependency-graph check over every module under arbora/webui_host and arbora/mcp_server confirms no import of a arbora.identity submodule other than arbora.identity.ports.
    requirementARBORA-OPSVERIFIEDb97b75e763ed
    tests/architecture/test_identity_ports_boundary.py:51
    ARBORA-OPS-R032.2
    Injected composition root for identity ports
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Injected composition root for identity ports.** Arbora constructs the concrete identity runtime once in the serving composition root. The root injects it into webui_host, webui_co_service, and mcp_server. It uses only arbora.identity.ports Protocol and DTO types. | An integration test confirms each module receives its identity capability only via an injected arbora.identity.ports object, never by importing the concrete runtime directly.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.1
    Identity runtime constructor in the composition root
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Identity runtime constructor in the composition root.** Arbora has one composition-root function that constructs the concrete identity runtime once and returns it typed only as arbora.identity.ports Protocol objects (CredentialAuthority, SessionAuthority). Edits arbora/identity and the composition root only, not arbora/api/ops/registry_factory.py. | A unit test confirms port-typed results and one runtime construction per root call. Missing authoritative facts cause IdentityUnavailable.
    requirementARBORA-OPSVERIFIED3dc5a3607868
    tests/identity/test_identity_composition.py:32
    tests/identity/test_identity_composition.py:52
    tests/identity/test_identity_composition.py:62
    ARBORA-OPS-R032.2.2
    Inject identity ports into mcp_server
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Inject identity ports into mcp_server.** arbora.mcp_server receives its identity capability as an injected arbora.identity.ports object supplied by the composition root. Depends on ARBORA-OPS-R032.2.1 and on the arbora/api/ops/identity.py and registry_factory.py registration from PR #176 (deliver-ops-r014). | A test confirms mcp_server accepts only a ports-typed object and refuses to start without one.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.3
    Inject identity ports into webui_host and webui_co_service (rollup)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Inject identity ports into webui_host and webui_co_service (rollup).** arbora.webui_host and arbora.webui_host.webui_co_service (compose_web_application) receive their identity capability as an injected arbora.identity.ports object supplied by the composition root. Rollup of ARBORA-OPS-R032.2.3.1 and ARBORA-OPS-R032.2.3.2. Depends on ARBORA-OPS-R032.2.1. | Both children are delivered and their bound tests pass.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.3.1
    compose_web_application requires injected identity ports
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **compose_web_application requires injected identity ports.** arbora.webui_host.webui_co_service.compose_web_application takes an `IdentityPorts` argument from arbora.identity.composition and raises a typed refusal when it is absent or not ports-typed; it imports no arbora.identity submodule other than ports/composition types. Edits webui_co_service.py only. Depends on ARBORA-OPS-R032.2.1. | A test confirms compose_web_application accepts only an IdentityPorts object and refuses to compose without one.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.3.2
    Thread identity ports through run_web_ui and the webui_host package (rollup)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Thread identity ports through run_web_ui and the webui_host package (rollup).** run_web_ui and arbora.webui_host receive the composition root's IdentityPorts and bind them into the application composer passed to the WebUI factory; arbora.mcp_server.composition passes the ports when starting the agent-webui co-service. Rollup of ARBORA-OPS-R032.2.3.2.1 and ARBORA-OPS-R032.2.3.2.2. Depends on ARBORA-OPS-R032.2.3.1 and ARBORA-OPS-R032.2.2. | Both children are delivered and their bound tests pass.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.3.2.1
    run_web_ui accepts and binds identity ports
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **run_web_ui accepts and binds identity ports.** `run_web_ui` requires an `IdentityPorts` argument. It refuses to start if the argument is absent or not ports-typed. It binds the ports into the composer passed to the WebUI factory using `functools.partial` over `compose_web_application`. Deliver this with `ARBORA-OPS-R032.2.3.1`; the composer cannot require ports while `run_web_ui` passes it bare. Edit only `webui_co_service.py` and existing webui_host tests. Depends on `ARBORA-OPS-R032.2.3.1`. | A test confirms refusal without ports. It verifies supplied ports bind the composer passed to the WebUI factory.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.3.2.2
    Supply identity ports from mcp_server composition to the agent-webui start call
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Supply identity ports from mcp_server composition to the agent-webui start call.** `arbora.mcp_server.composition.start_composed_services` receives `IdentityPorts` from the composition root. It passes them to the agent-WebUI co-service start call. No production identity runtime exists yet. `build_identity_ports` has only test callers, so inject the runtime required by `ARBORA-OPS-R032.2.2`. Depends on `ARBORA-OPS-R032.2.3.2.1` and `ARBORA-OPS-R032.2.2`. | A test confirms the supervisor start call supplies the ports.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R032.2.4
    Integration test of single injected identity runtime
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Integration test of single injected identity runtime.** An integration test builds the composition root once and confirms mcp_server, webui_host, and webui_co_service all receive the same ports-typed identity object and none imports the concrete runtime. Depends on ARBORA-OPS-R032.2.2 and ARBORA-OPS-R032.2.3. | The integration test passes against the real composition root.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R033
    Dynamic multiplexer discovery, load, and call
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Dynamic multiplexer discovery, load, and call.** Arbora implements find_tools (with browse=true replacing the former catalog listing), load_tools, unload_tools, and multiplexer_status over one per-caller-filtered catalog spanning fleet tools, prompts, resources, skills, and connector items, enforcing a default load cap of 64 (hard maximum 256), one-hour idle expiry, opt-in LRU eviction, and routing every loaded tool's body through a fleet call with the caller's delegated credential. | Integration tests confirm the load cap, idle expiry, and that each loaded tool call is dispatched through the fleet-call path rather than directly.
    requirementARBORA-OPSLANDEDb9141334e1ba
    ARBORA-OPS-R034
    Eunomia narrowing-only policy enforcement
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Eunomia narrowing-only policy enforcement.** Arbora applies its policy engine as a narrowing-only step at discovery, load, and every call, always leaving exact-scope filtering in place when policy is off, failing closed when policy is enabled but unreachable, defaulting to on for local and external deployments and off only for the none deployment mode, with its doctor check warning when policy is disabled. | Integration tests cover the off, on, and unreachable policy states, and a doctor-check test confirms the warning fires when policy is off.
    requirementARBORA-OPSLANDED4b83c69e2b41
    ARBORA-OPS-R035
    Multiplexer registration reduced to four resident tools
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Multiplexer registration reduced to four resident tools.** Arbora replaces its multiplexer's meta-tool registration with the four resident tools (find_tools, load_tools, unload_tools, multiplexer_status), and narrows its session-visibility middleware to routing list and call requests only, no longer making authorization decisions itself. | An integration test confirms the middleware denies nothing on its own and that authorization is enforced solely by the invoke pipeline.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R035.1
    Four-tool meta-registration and routing-only visibility, unit-bound
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Four-tool meta-registration and routing-only visibility, unit-bound.** Arbora's prepared multiplexer registration module defines exactly the four resident fleet meta-tools (find_tools, load_tools, unload_tools, multiplexer_status), and its GovernedSessionVisibility middleware only routes the list-tools candidate set (resident names plus the caller's currently loaded items), raising no denial of its own. | A test confirms FLEET_OPERATIONS is exactly the four named tools and that GovernedSessionVisibility.on_list_tools filters a candidate tool list to resident-plus-loaded without raising.
    requirementARBORA-OPSVERIFIEDb97b75e763ed
    tests/api/mcp/test_registration_governed_visibility.py:27
    tests/api/mcp/test_registration_governed_visibility.py:58
    ARBORA-OPS-R035.2
    Registration wired into the live server
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Registration wired into the live server.** Arbora's server factory calls register_mcp_tools during startup composition so the four-resident-tool surface and GovernedSessionVisibility middleware are active on the running server, not only in isolated unit scope. | A boot/integration test confirms the running server's live MCP surface and middleware chain match the prepared registration module.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R036
    Pre-dispatch audit reservation for governed effects
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Pre-dispatch audit reservation for governed effects.** Before any governed write or admin effect, Arbora reserves a tenant-scoped, idempotent pending audit record through the engine's audit-append operation using verified service claims, links the eventual outcome back to that reservation, and refuses dispatch when the operation has no declared audit class or the durable audit writer is unavailable. | Integration tests confirm a missing audit class or unreachable audit writer blocks dispatch and that a completed effect links to its reservation.
    requirementARBORA-OPSLANDEDa9025191159e
    ARBORA-OPS-R037
    Native first-party A2A facade
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Native first-party A2A facade.** Arbora exposes a first-party, natively hosted A2A facade rather than proxying through an external bridge, serving card, send, get, list, and cancel operations directly from its own server process. | Integration tests exercise the native A2A endpoints without any external bridge dependency.
    requirementARBORA-OPSVERIFIED20f773df9ddd
    d53165c2e72c
    tests/a2a/test_application.py:68
    tests/a2a/test_application.py:90
    ARBORA-OPS-R038
    Generated OpenAPI served through Swagger UI
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Generated OpenAPI served through Swagger UI.** Arbora generates an OpenAPI document from its operation registry and serves it through a browsable Swagger UI page. | An integration test confirms the served OpenAPI document matches the generated registry and renders through the Swagger UI endpoint.
    requirementARBORA-OPSLANDED1fb96633563e
    ea736715b7fb
    f13ce20b05dc
    ARBORA-OPS-R039
    Dashboard route parity (replaces AU-BOUNDARY-R001.2, commit 0eb67c99c)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Dashboard route parity (replaces AU-BOUNDARY-R001.2, commit 0eb67c99c).** Every route of the deleted dashboard router is served by arbora with the same capability split and refusals. Already provided; this row adds proof only. | tests/gateway/test_dashboard_route_census.py passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.1
    Add one test in tests/gateway/test_dashboard_route_census.py asserting the served dashboard router exposes all 15 old method and path pairs
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_dashboard_route_census.py asserting the served dashboard router exposes all 15 old method and path pairs. | The test fails when a route is removed.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.2
    Add one test in tests/gateway/test_dashboard_api.py asserting read-capability callers get 403 on PUT /layout, POST /daemon/start, POST /hydrate and POST /hydrate/{source}, while API-key callers pass
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_dashboard_api.py asserting read-capability callers get 403 on PUT /layout, POST /daemon/start, POST /hydrate and POST /hydrate/{source}, while API-key callers pass. | The test passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.3
    Add one test in tests/gateway/test_dashboard_api.py asserting GET /health returns 200 without a capability and sets Cache-Control no-store
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_dashboard_api.py asserting GET /health returns 200 without a capability and sets Cache-Control no-store. | The test passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.4
    Add one test in tests/gateway/test_dashboard_api.py asserting a malformed hydrate source returns 422 and an unknown service id returns 404
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_dashboard_api.py asserting a malformed hydrate source returns 422 and an unknown service id returns 404. | The test passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.5
    Add one test in tests/gateway/test_dashboard_api.py pinning the key set returned by GET /daemon/status and POST /daemon/start against `arbora.gateway.daemon.daemon_status`, compared with the old keys role, threads, jobs and queue depth
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_dashboard_api.py pinning the key set returned by GET /daemon/status and POST /daemon/start against `arbora.gateway.daemon.daemon_status`, compared with the old keys role, threads, jobs and queue depth. | The test passes and fails when a key is dropped.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.6
    Replace the `agent_utilities.knowledge_graph.core.shard_topology` import in arbora/gateway/dashboard_api.py `daemon_shards` with the engine client shard-topology method, after a contract test in tests/gateway/test_dashboard_api.py shows the installed client exposes it (`ARBORA-HOST-R002`). BLOCKED on the engine client owner if the method is absent
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Replace the `agent_utilities.knowledge_graph.core.shard_topology` import in arbora/gateway/dashboard_api.py `daemon_shards` with the engine client shard-topology method, after a contract test in tests/gateway/test_dashboard_api.py shows the installed client exposes it (`ARBORA-HOST-R002`). BLOCKED on the engine client owner if the method is absent. | tests/gateway/test_dashboard_api.py: response unchanged, no AU knowledge_graph import in the module.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.7
    Replace `_active_engine` and `_hydration_manager` in arbora/gateway/dashboard_api.py with the engine client source-sync methods. Keep 500 on no engine, 400 on `ValueError` and 422 on a malformed source
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Replace `_active_engine` and `_hydration_manager` in arbora/gateway/dashboard_api.py with the engine client source-sync methods. Keep 500 on no engine, 400 on `ValueError` and 422 on a malformed source. | tests/gateway/test_dashboard_api.py: the four refusal codes and the status shape are unchanged.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.8
    Add one test in tests/gateway/test_registry.py asserting GET /widgets returns every widget type of the deleted registry module map except `genius_agent`, with the same field set
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_registry.py asserting GET /widgets returns every widget type of the deleted registry module map except `genius_agent`, with the same field set. | The test passes against the list recorded in the test.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R039.9
    Replace the `agent_utilities.core.config` and `agent_utilities.security.identity` imports in `_dashboard_capabilities` in arbora/gateway/dashboard_api.py with a public `agent_utilities.api` capability resolver. Cross-repo prerequisite (owner: agent-utilities): export it under `AU-BOUNDARY-R013`
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Replace the `agent_utilities.core.config` and `agent_utilities.security.identity` imports in `_dashboard_capabilities` in arbora/gateway/dashboard_api.py with a public `agent_utilities.api` capability resolver. Cross-repo prerequisite (owner: agent-utilities): export it under `AU-BOUNDARY-R013`. | tests/gateway/test_dashboard_api.py: 403 cases unchanged; an import census shows no AU-internal import.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040
    Live Artifacts routes (replaces AU-BOUNDARY-R001.3, commit 902f906ca)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Live Artifacts routes (replaces AU-BOUNDARY-R001.3, commit 902f906ca).** arbora serves create, get and refresh for Live Artifacts over the agent-utilities store. To build. | The artifact tests below pass and the routes are mounted by the host.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.1
    Cross-repo prerequisite (owner: agent-utilities)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Cross-repo prerequisite (owner: agent-utilities).** Export the Live Artifact store getter, artifact model, refresh service and bounded-JSON error through a public agent_utilities.api module. | An agent-utilities test imports each name from the public module.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.2
    Add one typed model: create-artifact request in arbora/gateway/artifacts_api.py, rejecting empty template and oversize data
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one typed model: create-artifact request in arbora/gateway/artifacts_api.py, rejecting empty template and oversize data. | Refusal tests in tests/gateway/test_artifacts_api.py.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.3
    Add one port: artifact store and refresh ports plus a resolver callable type in arbora/gateway/ports.py
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one port: artifact store and refresh ports plus a resolver callable type in arbora/gateway/ports.py. | tests/gateway/test_ports.py checks the ports are protocols.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.4
    Add one route: POST /api/artifacts, returning id and rendered output, 400 on a bounded-JSON error
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one route: POST /api/artifacts, returning id and rendered output, 400 on a bounded-JSON error. | test_artifacts_api.py create and refusal cases.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.5
    Add one route: GET /api/artifacts/{artifact_id}, 404 when absent
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one route: GET /api/artifacts/{artifact_id}, 404 when absent. | test_artifacts_api.py get and 404 cases.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.6
    Add one route: POST /api/artifacts/{artifact_id}/refresh with inline data or resolver, 404 when absent, prior render preserved on failure
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one route: POST /api/artifacts/{artifact_id}/refresh with inline data or resolver, 404 when absent, prior render preserved on failure. | test_artifacts_api.py refresh, 404 and failure cases.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.7
    Wire one call site: a register function in arbora/gateway/artifacts_api.py called where the host mounts the graph and usage routes, reusing `_require_dashboard_read` on GET and `_require_dashboard_write` on POST from arbora/gateway/dashboard_api.py (capabilities, not engine scopes; decision D3)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Wire one call site: a register function in arbora/gateway/artifacts_api.py called where the host mounts the graph and usage routes, reusing `_require_dashboard_read` on GET and `_require_dashboard_write` on POST from arbora/gateway/dashboard_api.py (capabilities, not engine scopes; decision D3). | tests/gateway/test_artifacts_route_mount.py asserts the routes and the 403 cases.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.8
    Wire one function: pass the exported `kg_source_resolver` (row ARBORA-OPS-R040.1) as the artifacts register function's resolver argument in arbora/gateway/artifacts_api.py; no arbora re-derivation code. Without it the default preserve-prior-data resolver is used
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Wire one function: pass the exported `kg_source_resolver` (row ARBORA-OPS-R040.1) as the artifacts register function's resolver argument in arbora/gateway/artifacts_api.py; no arbora re-derivation code. Without it the default preserve-prior-data resolver is used. | test_artifacts_api.py resolver cases with a fake resolver.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.9
    Cross-repo prerequisite (owner: agent-utilities): add the proposed `AU-BOUNDARY-R013.<n>` row of plan.md D4 to specs/au-boundary-deconstruction/requirements.md. It is the concrete form of ARBORA-OPS-R040.1
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Cross-repo prerequisite (owner: agent-utilities): add the proposed `AU-BOUNDARY-R013.<n>` row of plan.md D4 to specs/au-boundary-deconstruction/requirements.md. It is the concrete form of ARBORA-OPS-R040.1. | The agent-utilities row exists and ARBORA-OPS-R040.1 cites its ID.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R040.10
    Add one test in tests/gateway/test_artifacts_route_mount.py asserting a caller without gateway:read gets 403 on GET and a caller with only gateway:read gets 403 on both POST routes, while API-key callers pass
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_artifacts_route_mount.py asserting a caller without gateway:read gets 403 on GET and a caller with only gateway:read gets 403 on both POST routes, while API-key callers pass. | The test passes (decision D3).
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R041
    Agent summary widget dropped (replaces AU-BOUNDARY-R001.7, commit 7717d2e62)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Agent summary widget dropped (replaces AU-BOUNDARY-R001.7, commit 7717d2e62).** The widget is intentionally not carried over because it returned constant data. | The gate test passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R041.1
    Add one test in tests/gateway/test_registry.py asserting genius_agent is absent from the widget registry and no fixed-value widget is registered
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    Add one test in tests/gateway/test_registry.py asserting genius_agent is absent from the widget registry and no fixed-value widget is registered. | The test passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042
    Served operations screen untrusted content and redact secrets (rollup)
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Served operations screen untrusted content and redact secrets (rollup).** The host must screen fetched content before a run reads it, bound each request, and redact secrets from each response. | All child rows are verified.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042.1
    Model
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Model.** Add `ContentScreenVerdict` (closed values `clean`, `flagged`, `quarantined`), `ScreenFinding` (class, span, rule id) and `ContentOrigin` (`trusted`, `open_web`) in arbora/api/invoke/screening.py. | tests/api/test_content_screening.py checks the closed value sets.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042.2
    Behavior
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Behavior.** The default `default_screen_rules` must strip or flag hidden, rendered or markup-embedded instructions and tag each finding with one attack class (perception, reasoning, memory, action, multi-agent, overseer). The default `default_output_redactor` must mask secret values. Each default is replaceable by name. | Unit tests in tests/api/test_content_screening.py cover each class and a masked secret.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042.3
    Wiring
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Wiring.** Call the screen and the redactor inside `invoke` at arbora/api/invoke/pipeline.py:810. The screen must run on open-web content before the effect, and the redactor on the result before it returns. The production caller is the served route at arbora/api/http/routes.py:127. This row creates the call site. | tests/api/test_content_screening.py asserts the call order through `invoke`.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042.4
    Refusal
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Refusal.** `invoke` must return `OpError("CONTENT_QUARANTINED")` for quarantined content. It must refuse a long-term memory write from unscreened open-web content with reason `UNSCREENED_MEMORY_WRITE`. An oversize request keeps the body-size refusal at arbora/api/http/routes.py:42. | Refusal tests in tests/api/test_content_screening.py.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042.5
    Evidence
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Evidence.** The operation trace must record the verdict, finding classes, rule ids and redaction count. It must not record the matched text. | A trace test in tests/api/test_content_screening.py asserts the fields and the absence of secret text.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R042.6
    Hot-path proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Hot-path proof.** The served route at arbora/api/http/routes.py enters `invoke` (entry point: the served invoke operation), passes the wired screen, and the test observes a quarantined refusal for planted hidden instructions and a masked secret in a clean response. | tests/gateway/test_content_screening_hot_path.py passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050
    Policy lifecycle operations that guard plans
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Policy lifecycle operations that guard plans.** Arbora serves operations that turn a constitution into policy entities. Policy entities change only through approved operations: create, update or retire. Arbora refuses a plan that violates an active policy. The engine decides violation under EG-DECISION-ENGINE-R001. Policy semantics and decision verdicts belong to EG-DECISION-ENGINE-R001; the harness only applies engine decisions. | The hot-path proof row passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.1
    Model
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Model.** Add `PolicyEntity`, `ConstitutionSource` and `PolicyChange` to arbora/api/ops/policy.py. The `change` field takes the closed set create, update, retire. Existing `PolicyVersion` at arbora/control_plane/policy/models.py:203 lacks a constitution link and a retired state. | tests/api/test_policy_models.py covers field validation and the closed set.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.2
    Behavior
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Behavior.** Submit constitution clauses through a public engine policy-decision port under EG-DECISION-ENGINE-R001; Arbora projects the returned PolicyEntity references and never interprets clauses locally. Reuse `PolicyAuthority.publish` at arbora/control_plane/policy/repository.py:117 for approved operation publication. The engine adapter is new wiring and must remain unavailable until its producer contract is published. A retired policy must stay resolvable by version. | tests/api/test_policy_convert.py asserts one entity per clause and stable digests.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.3
    Wiring
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Wiring.** Register `policy.create`, `policy.update` and `policy.retire` with `Confirm.PLAN` beside `handle_policy_read` at arbora/api/ops/policy.py:36. Attach plan admission in `_policy` at arbora/api/invoke/pipeline.py:198. `PolicyAuthority.authorize` at arbora/control_plane/policy/repository.py:179 has no production caller today. This row binds the new EG-backed policy service at `build_operation_runtime` (`arbora/api/invoke/bootstrap.py:167`) and calls it from `_base_authority` at arbora/api/invoke/pipeline.py:208; no Arbora policy evaluator substitutes for a missing producer. | tests/api/test_policy_wiring.py sends an authenticated served request through the composition root and shared invoke to the EG-backed service; an absent producer refuses with zero effects.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.4
    Refusal
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Refusal.** Refuse a policy change without a verified approval with `POLICY_DENIED`. Refuse a plan that violates an active policy with `POLICY_DENIED` and the policy reference. Return `POLICY_UNAVAILABLE` when the engine decision is unreachable. | tests/api/test_policy_refusal.py covers all three refusals with zero effects.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.5
    Evidence
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Evidence.** Emit the policy reference, version digest, approval reference and outcome. Write them on the audit record of each change and each refused plan. | tests/api/test_policy_evidence.py reads the audit record fields.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.6
    Hot-path proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Hot-path proof.** Entry point: the served operation `policy.create` over POST /api/v1/ops/{op_id}. Then submit a plan through the invoke pipeline. Integration test tests/integration/test_policy_plan_guard.py creates a policy with approval and observes the refusal of a violating plan. | The integration test passes through shared invoke and the named producer port; missing producer contracts remain typed unavailable, never local policy substitutes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051
    Scoped security-evaluation operation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Scoped security-evaluation operation.** Arbora serves a security-evaluation operation. It accepts a natural-language goal. EG selects the attack/transform/scorer composition from its declared catalog and returns scoring verdicts. AU executes the selected probes. Arbora authorizes transport, exposes findings and refuses targets outside the verified authorized scope [arXiv:2605.04019]. EG-DECISION-ENGINE-R138 owns attack/transform/scorer records, scorer selection and probe verdicts; EG-DECISION-ENGINE-R001 owns decisions. AU executes the engine-selected probes only. | The hot-path proof row passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051.1
    Model
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Model.** Add `EvaluationGoal`, `EvaluationCatalog`, `EvaluationScope` and `Finding` models in new arbora/api/ops/security_eval.py. The search found nothing with these terms. `SecurityPolicyMiddleware` at arbora/security/security_policy_middleware.py:52 only detects jailbreak patterns on input. | tests/api/test_security_eval_models.py covers the models.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051.2
    Behavior
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Behavior.** Request engine catalog selection under EG-DECISION-ENGINE-R001 and scorer selection/verdicts under EG-DECISION-ENGINE-R138. Enforce the engine-provided probe cap (named default 50) and runtime quota under EG-DECISION-ENGINE-R133; AU executes probes and submits results. Arbora validates scope and transports the request without local composition or scoring. Producer adapters are new wiring and unavailable until their public contracts exist. | tests/api/test_security_eval_select.py asserts only declared catalog entries appear.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051.3
    Wiring
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Wiring.** Register `security.evaluate` beside the security read operations in arbora/api/ops/security.py and list it in arbora/api/ops/registry_factory.py. No production caller exists today. This row creates the call site, reached from `_effect` at arbora/api/invoke/pipeline.py:218. | tests/api/test_security_eval_wiring.py asserts the registry lists the operation.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051.4
    Refusal
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Refusal.** Refuse a target outside the caller's verified authorized target scope with `SUBJECT_ACCESS_DENIED` before any attack runs. Refuse a goal that selects no catalog entry with `INVALID_ARGUMENT`. | tests/api/test_security_eval_refusal.py asserts zero runs started.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051.5
    Evidence
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Evidence.** Emit the goal digest, selected catalog entries, target and scope references and finding count. Write them on the audit record. | tests/api/test_security_eval_evidence.py reads the record fields.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R051.6
    Hot-path proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Hot-path proof.** Entry point: the served operation `security.evaluate` over POST /api/v1/ops/{op_id}. Integration test tests/integration/test_security_evaluate.py runs an in-scope target and observes findings. It then runs an out-of-scope target and observes the refusal. | The integration test passes through shared invoke and the named producer port; missing producer contracts remain typed unavailable, never local policy substitutes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052
    Authorization-segmented virtual schema projections
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Authorization-segmented virtual schema projections.** Arbora segments knowledge-graph query results by authorization boundary. It exposes the segments as virtual schema projections. A caller sees only the projections that its scope covers. The engine owns segmentation under EG-IDENTITY-R001 and EG-FEDERATED-QUERY-R001. ARBORA-DATA-MARKET-R005 owns the schema_context surface. | The hot-path proof row passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052.1
    Model
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Model.** Add `SchemaProjection` with fields boundary, scope, tables and mapping reference in new arbora/api/ops/projections.py. Existing `build_read_op` at arbora/api/ops/_common.py:106 and the caller-filtered projection at arbora/api/http/openapi.py:1 lack a result-level projection type. | tests/api/test_projection_models.py covers the fields.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052.2
    Behavior
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Behavior.** Return the projections that the caller's verified grants cover, through the named default `scope_covers`. The engine supplies the boundary labels. Arbora must not infer them. | tests/api/test_projection_scope.py asserts exact-cover and partial-cover cases.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052.3
    Wiring
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Wiring.** Register `query.projections` using `build_read_op` at arbora/api/ops/_common.py:106 beside the query operations. No production caller exists today. This row creates the call site, reached from `build_operation_runtime` at arbora/api/invoke/bootstrap.py:167. | tests/api/test_projection_wiring.py asserts the registry lists the operation.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052.4
    Refusal
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Refusal.** Return `SUBJECT_ACCESS_DENIED` when no projection is covered. Return `UNAVAILABLE` when the engine returns no boundary labels. Uncovered projections must not appear directly or indirectly in caller-visible responses, counts or traces, including refusal details and caller-readable audit views. | tests/api/test_projection_refusal.py covers both refusals and excludes hidden-projection counts from every caller-visible surface.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052.5
    Evidence
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Evidence.** Record the caller scope and returned projection references in the audit record. A withheld count may be recorded only in a separately authorized operator audit. The denied caller must never read it through the response, traces or any audit view. | tests/api/test_projection_evidence.py proves an authorized operator can read the withheld count. The denied caller cannot access that field or its audit record.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R052.6
    Hot-path proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Hot-path proof.** Entry point: the served operation `query.projections` over POST /api/v1/ops/{op_id}. Integration test tests/integration/test_projection_scope.py calls it with two scopes and observes different projection sets. Holding caller-visible projections fixed, vary only hidden projections and assert identical caller-visible response contents, counts, refusal details and trace fields. Attempt operator-audit reads as the denied caller and assert refusal without count leakage; a separately authorized operator can read the withheld count. | The integration test passes through shared invoke and the named producer port; missing producer contracts remain typed unavailable, never local policy substitutes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053
    Bounded interaction space
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Bounded interaction space.** Arbora serves an operation that returns a bounded interaction space, not ranked snippets. The space holds a corpus boundary of documents. The boundary is the union of top-K results of multi-query lexical search. Each query gets one working directory. The space documents object properties and navigation commands [arXiv:2606.06880]. The engine owns ranking under EG-FEDERATED-QUERY-R001. EG-DECISION-ENGINE-R029 owns retrieval-plan decisions and EG-DECISION-ENGINE-R137 owns context budgets; AU executes the engine-directed exploration. SDK-CONNECTOR-CONTROL-R005 owns connector source submission. ARBORA-OPS-R021.2 owns `retrieval.search`. | The hot-path proof row passes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.1
    Model
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Model.** Add `InteractionSpace`, `CorpusBoundary` and `QueryDirectory` models in arbora/api/ops/retrieval.py. The existing `Retriever` port at arbora/api/ops/retrieval.py:60 returns hits only. It lacks a directory layout and property documentation. | tests/api/test_interaction_space_models.py covers the models.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.2
    Behavior
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Behavior.** Project the engine-selected boundary as the union of top-K query hits, using engine-provided limits (named defaults K=20 and query cap=8). Arbora renders one directory per query and documents object properties; EG owns retrieval/context decisions, and AU executes exploration. | tests/api/test_interaction_space_build.py asserts union, caps and directory names.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.3
    Wiring
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Wiring.** Register `retrieval.space` beside `handle_retrieval_search` at arbora/api/ops/retrieval.py:77. It reuses `GovernedRetriever.retrieve` at arbora/control_plane/retrieval/service.py:61. No production constructor of `GovernedRetriever` exists today. This row constructs and binds the EG-backed retrieval service in `build_operation_runtime` at arbora/api/invoke/bootstrap.py:167. It connects its public engine client. Registry registration alone does not prove wiring. | tests/api/test_interaction_space_wiring.py sends a served authenticated request through shared invoke and the composed EG-backed retriever, and checks typed refusal when its producer is missing.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.4
    Refusal
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Refusal.** Refuse a request above the document cap with `LOAD_CAP_EXCEEDED`. Refuse an empty query list with `INVALID_ARGUMENT`. Return `UNAVAILABLE` when the retriever is not composed. | tests/api/test_interaction_space_refusal.py covers all three.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.5
    Evidence
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Evidence.** Emit the query count, boundary size, per-query hit count and context budget used. Write them on the audit record. | tests/api/test_interaction_space_evidence.py reads the fields.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.6
    Hot-path proof
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Hot-path proof.** Entry point: the served operation `retrieval.space` over POST /api/v1/ops/{op_id}. Integration test tests/integration/test_retrieval_space.py runs two queries and observes the boundary and two directories. | The integration test passes through shared invoke and the named producer port; missing producer contracts remain typed unavailable, never local policy substitutes.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R054
    Technique-bound benchmark adoption
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Technique-bound benchmark adoption.** Require `AU-INTEGRATION-R014` to publish a producer operation and receipt contract. Bind paged cache, prefix reuse, fused kernels, quantized cache, and expert dispatch to the exact model/configuration, measured gain or non-regression, and activation decision. `arbora/api/ops/agents.py:handle_rlm` serves `rlm.benchmark`, not AU serving-technique evidence. After the AU contract exists, attach a separate Arbora projection through `arbora/api/ops/registry_factory.py:get_registry` and `arbora/api/invoke/pipeline.py:invoke`. Keep activation unavailable until then. | Future acceptance: `tests/api/test_agent_browser_ops.py::test_benchmark_activation_requires_technique_bound_evidence`. Verify all five technique identities bind to the model/configuration and measured result. Verify missing, mismatched, or regressing evidence refuses activation with no serving effect. No threshold is invented. The proposed test has not run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R055
    Run-bound process remediation
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Run-bound process remediation.** Require liveness evidence naming the run and process. Distinguish zombie/hung detection from ordinary progress. Arbora may expose a proposal only. Termination requires explicit approval bound to the same run and process; quota is not authority. Attach through `arbora/api/ops/registry_factory.py:get_registry` and `arbora/api/invoke/pipeline.py:invoke`. The AU liveness detector and proposal operation remain unspecified. Keep reads and remediation unavailable until that contract is published. | Future acceptance: `tests/api/test_ops_admin_ops.py::test_process_remediation_requires_run_bound_approval`. Verify run/process identity and proposal-only behavior before approval. Verify one authorized application after approval. Missing, stale, or mismatched evidence must refuse with zero process effects. The proposed test has not run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R056
    Source-bound changeset review
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Source-bound changeset review.** Bind each review result to the exact source changeset. Require evidence-backed findings for injection, authorization bypass, data exposure, cryptography, and business-logic flaws. Include a declared low-impact false-positive filter. Project only an owner-produced verdict through `arbora/api/ops/registry_factory.py:get_registry` and `arbora/api/invoke/pipeline.py:invoke`. `arbora/api/ops/decide.py:handle_decide_commit` owns `decide.commit`, not review. The EG/AU review operation and evidence contract remain unspecified, so no review is served. | Future acceptance: `tests/api/test_decide_ops.py::test_changeset_review_binds_revision_classes_and_findings`. Verify every finding references the same diff/source revision. Verify impact filtering preserves evidence. Missing or mismatched owner verdicts must refuse without a review claim. The proposed test has not run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R057
    Stable prompt serialization and difference oracle
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Stable prompt serialization and difference oracle.** Define deterministic JSON for the Pydantic disk representation and a semantic difference oracle. The current Arbora tree has no `RepositoryWriteBackParams` or served repository-writeback handler. If those contracts justify an operation, attach it through `arbora/api/ops/registry_factory.py:get_registry` and `arbora/api/invoke/pipeline.py:invoke`. Do so only after EG `R094.2/.3/.5/.7` and SDK source-effect/receipt contracts are published. Keep the operation unavailable until then. | Future acceptance: `tests/api/test_write_back_models.py::test_prompt_json_roundtrip_and_difference_oracle_is_stable`. Verify stable round-trip serialization, semantic equivalence, true semantic changes, and existing source-effect refusals. The proposed test has not run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R058
    Authorized table-browser projection
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Authorized table-browser projection.** Reuse the read-only `arbora/gateway/schema_context_api.py:register_schema_context_routes` and `arbora/gateway/schema_context_service.py:get_schema_context` attachment. Bind only owner-authorized table data. WebUI table-control/statistics requirements and EG producer bindings remain unassigned. Keep data unavailable until those contracts are published. Define no table mutation or statistics projection here. | Future acceptance: `tests/gateway/test_schema_context_api.py::test_table_browser_projection_requires_owner_binding`. Verify authorized data and denied scope. Verify missing producer and zero calls/effects on refusal. Add a served WebUI consumer acceptance after the owner contract is assigned. The proposed test has not run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R061
    Indexed token and cost projection
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Indexed token and cost projection.** Model: UsageQueryV1 accepts a bounded time window. It also accepts model, project, and agent filters with grouping. It accepts currency, bounded page size, and a snapshot cursor. Derive tenant scope only from the verified caller. UsageProjectionV1 preserves four disjoint EG counters: uncached input, cached input, nonreasoning output, and reasoning output. Preserve producer-derived input and output totals. Include amount, currency, minor unit, accounting revision, pinned PriceTableV1 revision, and currency revision. Also include source coverage, index watermark, cursor, and latency-profile metadata. That metadata carries producer profile revision, p95 bound and units, measurement boundary, workload, indexed dataset size, and data/index/cache-policy revisions. Apply exact-rational aggregation per final group and category. Round half-even once after each final aggregation. Keep unknown attribution, price, or currency explicitly unknown with a reason and coverage. Never convert unknown values to zero. Keep currencies separate unless EG supplies a pinned FX revision. Behavior: Map to RunTraceUsageQueryV1 under EG-ORCH-VOCAB-R010.101. Arbora forwards producer aggregates and performs no token or cost arithmetic. Bind the producer p95 profile at 500 ms. Measure from authenticated-handler entry through serialized response. Use 1,000,000 indexed traces, 32 readers, and 1,000 fixed-window queries. Bind data, index, and cache-policy revisions. Reject caller-selected replacement bounds. Wiring: Extend arbora/api/ops/usage.py beside usage.read with a distinct usage.index.query and typed EG reader. Use build_read_op with existing usage:read. Register through the existing registry factory and shared invoke path. WebUI counterpart: WEBUI-APPS-R004.8.1-.6 via ObservabilityView.tsx. Preserve ARBORA-OPS-R021.4.3/.4 runs.metrics grouping. Preserve zero-solved abstention and cost-per-solved-task semantics. usage.read context peaks and budgets are not total usage. Refusal: Authorize and bind tenant before EG dispatch. Denied or foreign scope, stale cursors, and revision mismatches expose no rows. Treat stale profile, watermark, or currency revisions as refusals. Missing, nonfinite, nonpositive, or exceeded latency evidence returns typed UNAVAILABLE without usage aggregates. Unknown attribution, price, or currency stays unknown with its reason and coverage. Never use zero or calculate mixed-currency totals. Evidence: A served browser query reconciles each grouping against an independent EG ledger. Record the bound, units, boundary, workload, measured p95, and data/index/cache revisions. This definition claims no implemented operation or served receipt. | Planned served acceptance checks four exact counters and producer totals. It covers rational aggregation, half-even rounding, pinned PriceTableV1, minor units, revisions, coverage, watermark, cursor, pagination, unknown-value reasons, denied scope, stale revisions, and absent, invalid, or exceeded latency evidence.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R063
    Retrieval evaluation and authorized context projection
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Retrieval evaluation and authorized context projection.** Model: RetrievalEvaluationQueryV1 binds corpus/revision/digest, relevance-label-set/revision/digest, query-set ID/revision/digest, evaluator revision, and k from 1 through 1000. It requires at least two registered algorithm IDs, versions, and settings digests. RetrievalComparisonV1 preserves producer numerator, denominator, metric, and input/result digests. For hits_at_k, the denominator is the complete identically labeled query set. The numerator counts queries with at least one relevant result in top k. RetrievalContextV1 preserves document/revision/digest and half-open UTF-8 byte offsets into original stored text. Every result carries query/index/authorization revisions and an opaque snapshot-bound cursor. Limit each response to 100 spans and each span to 8 KiB. Behavior: Forward EG-DECISION-ENGINE-R100.100 DecisionEval RetrievalRankingSubmit/RetrievalRankingV1 and Method::RetrievalContextSearch/RetrievalContextSearchV1. All algorithms share the corpus, complete label-set revision/digest, query-set ID/revision/digest, evaluator revision, k, and query inputs. Pin each algorithm's settings digest to its own registered configuration and preserve it in the result. Arbora never computes hits_at_k or treats local RRF as relevance truth. If indexing normalizes text, preserve a separate NFC digest and producer index digest. Validate the normalized-to-original byte map. Public offsets still address the stored-text digest and original bytes. Wiring: Extend arbora/api/ops/retrieval.py with typed retrieval.evaluation.compare and retrieval.context.search models and producer ports. Use build_read_op, memory:read, registry_factory, and shared invoke. WebUI counterpart: WEBUI-APPS-R001.1.1-.6 via src/components/table-explorer/TryItPanel.tsx and its generated Arbora client. Refusal: Denied scope refuses before dispatch. Missing labels, an incomplete query set, or a zero denominator refuses. Mismatched corpus, labels, evaluator, or query inputs refuse. Missing or mismatched per-algorithm settings digests refuse against that algorithm's registered configuration. Stale cursor/revisions, invalid offsets/maps, and over-limit spans return typed refusals. Refusals expose no partial metrics, protected counts, or offsets. Evidence: A served fixed-corpus test compares two registered algorithms against an independent hits_at_k ledger. Use the same complete labeled query set and pinned evaluator revision. Composed/decomposed Unicode and multibyte cases prove byte slicing against original stored text. Escape hostile source before highlighting. Preserve the original byte spans. Refusal cases cover missing labels, stale/cross-tenant state, bad maps/offsets, and bounds. This definition claims no implemented operation or served receipt. | Planned served acceptance checks identical inputs, metric numerator/denominator meanings, and result digests. It verifies original-text UTF-8 spans, NFC digest, validated mapping, cursor binding, and limits. It tests escaping hostile source before highlighting. It covers authenticated, stale, missing-label, zero-denominator, invalid-map, and refusal cases.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R024.1.1
    AU:62 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **AU:62 Arbora definition slice.** AU:62 primary-owner slice. Residual: combined platform-wide OpenTelemetry export, Prometheus export and structured JSON logging contract; opt-in native tracing backend activation. Selection and failure policy; aggregated signal detection linked to governed improvement proposals Arbora minimum action: Assign host telemetry. Activation/export to Arbora, connector instrumentation/transport to SDK and signal interpretation/proposal decisions to EG. Define exact formats, backend opt-in and proposal route with served export/readback and disabled/refused cases. Retain AU as emitter only. Producer/consumer boundary: AU default runtime capabilities and fleet instrumentation. Planned graph/tool span call sites feed the EG trace sink/BehaviourObservation, then Arbora telemetry.* read. A native backend selector and signal-to-improvement proposal route are not specified. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `AU-HARNESS-R024, EG-DECISION-ENGINE-R072, EG-DECISION-ENGINE-R125, ARBORA-OPS-R024.1`. Source record SHA-256: `33d4094e13a9495a18bd96ef13eead8fd9f7a3329a9b4bdc7dae593c0cbc77eb`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, epistemic-graph/specs/decision-engine/requirements.md:108#sha256=68781c902c5f626c2d03a20bb56b3b089deecae2ca1d188a3254b46678df2838, epistemic-graph/specs/decision-engine/requirements.md:109#sha256=de1a7850fa8d4c304f6a9bc1e60a58c9f0c7b5999065d9c24536e9efb89fa3bb, epistemic-graph/specs/decision-engine/requirements.md:216#sha256=a086df1a12ee777df04d6821dbf3e1fd0dbbef9ba913819ae48845355a749de1, arbora/specs/host-composition-boundary/plan.md:30#sha256=c9603705b9effe06c165ef12261887881a8195a0e319074bd02b7b0c973d637b, arbora/specs/hosted-api-operations/requirements.md:62#sha256=4f634d3780209eef02df6f7b814234f3c84f1d2a429d51158d47f1014368028a, agent-utilities/specs/harness-evolution/requirements.md:125#sha256=283e9be2609f71397b08e55e5960966e76a1b338d4c25904fb49b8a073a23001, agent-utilities/specs/harness-evolution/requirements.md:126#sha256=579bb8b23676bfeb8ccc59721017ce35807334835d2f2cd3e7c34669894f411d, agent-utilities/specs/harness-evolution/requirements.md:127#sha256=bbcce6fe5bbbf092d19c62c4d950d2aefe179b02f54c99787d56257b95d21828, agent-utilities/specs/harness-evolution/requirements.md:128#sha256=44ff52c0a8e197e4589651b907c8058a5522c4a2d9ae34f3a3d822d099be1611, agent-utilities/specs/harness-evolution/requirements.md:129#sha256=4d076320e9f5b7b71d8ea35ce974ca741514857b7ff7fa34bc1bd3df5eb59280, agent-utilities/specs/harness-evolution/requirements.md:130#sha256=2af680b8904c94372f39b1b3d78c125b4e338962879e8581d028b5cf5e317f80, agent-utilities/specs/harness-evolution/requirements.md:131#sha256=20b74358c9698761d1be32f49362999f17a9bb12452b384daae86439df119f11, agent-utilities/specs/harness-evolution/requirements.md:132#sha256=53c59abd59f6c8217da494fda6914927775d15e6771b74b5e730b42a7ea9d843`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/3`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `AU-HARNESS-R024, EG-DECISION-ENGINE-R072, EG-DECISION-ENGINE-R125, ARBORA-OPS-R024.1`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, epistemic-graph/specs/decision-engine/requirements.md:108#sha256=68781c902c5f626c2d03a20bb56b3b089deecae2ca1d188a3254b46678df2838, epistemic-graph/specs/decision-engine/requirements.md:109#sha256=de1a7850fa8d4c304f6a9bc1e60a58c9f0c7b5999065d9c24536e9efb89fa3bb, epistemic-graph/specs/decision-engine/requirements.md:216#sha256=a086df1a12ee777df04d6821dbf3e1fd0dbbef9ba913819ae48845355a749de1, arbora/specs/host-composition-boundary/plan.md:30#sha256=c9603705b9effe06c165ef12261887881a8195a0e319074bd02b7b0c973d637b, arbora/specs/hosted-api-operations/requirements.md:62#sha256=4f634d3780209eef02df6f7b814234f3c84f1d2a429d51158d47f1014368028a, agent-utilities/specs/harness-evolution/requirements.md:125#sha256=283e9be2609f71397b08e55e5960966e76a1b338d4c25904fb49b8a073a23001, agent-utilities/specs/harness-evolution/requirements.md:126#sha256=579bb8b23676bfeb8ccc59721017ce35807334835d2f2cd3e7c34669894f411d, agent-utilities/specs/harness-evolution/requirements.md:127#sha256=bbcce6fe5bbbf092d19c62c4d950d2aefe179b02f54c99787d56257b95d21828, agent-utilities/specs/harness-evolution/requirements.md:128#sha256=44ff52c0a8e197e4589651b907c8058a5522c4a2d9ae34f3a3d822d099be1611, agent-utilities/specs/harness-evolution/requirements.md:129#sha256=4d076320e9f5b7b71d8ea35ce974ca741514857b7ff7fa34bc1bd3df5eb59280, agent-utilities/specs/harness-evolution/requirements.md:130#sha256=2af680b8904c94372f39b1b3d78c125b4e338962879e8581d028b5cf5e317f80, agent-utilities/specs/harness-evolution/requirements.md:131#sha256=20b74358c9698761d1be32f49362999f17a9bb12452b384daae86439df119f11, agent-utilities/specs/harness-evolution/requirements.md:132#sha256=53c59abd59f6c8217da494fda6914927775d15e6771b74b5e730b42a7ea9d843`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R014.1
    AU:95 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **AU:95 Arbora definition slice.** AU:95 primary-owner slice. Residual: The reviewed matches do not define a shared provider interface for service and log operations across supported operating systems. Arbora minimum action: Define the shared typed service/log interface. List supported operating systems and map each operation to its native tooling with parity/refusal acceptance criteria in. Existing owner specs. Producer/consumer boundary: Arbora host-management consumer -> SDK provider interface -> supported operating-system service/log adapters. This is the required boundary, not a verified existing call path. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `none assigned in this packet`. Source record SHA-256: `90cd42367355a820345b8a129845920591a3e2e124de958afa49c8ffdd4fbd0e`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:95, arbora/specs/hosted-api-operations/requirements.md:33#sha256=640c929055bc4d47314520e8ad4780754355583330b4a8bf26dfc81c943db249, arbora/specs/hosted-api-operations/requirements.md:18#sha256=8e936f3951b29728842a652daf987e88bfc3e336e58df05920fd7ada20d2ba8e, agent-utilities/specs/agent-control-plane/requirements.md:5#sha256=2b9ea29650e8902ebd479598d718e15357149496d86724511cb6421b56a94a0f, epistemic-graph/specs/decision-engine/requirements.md:82#sha256=1c1999787a130f6c2e81e54ecc54064dfb149a443644939a6bd8185b06118f97`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/4`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `none assigned in this packet`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:95, arbora/specs/hosted-api-operations/requirements.md:33#sha256=640c929055bc4d47314520e8ad4780754355583330b4a8bf26dfc81c943db249, arbora/specs/hosted-api-operations/requirements.md:18#sha256=8e936f3951b29728842a652daf987e88bfc3e336e58df05920fd7ada20d2ba8e, agent-utilities/specs/agent-control-plane/requirements.md:5#sha256=2b9ea29650e8902ebd479598d718e15357149496d86724511cb6421b56a94a0f, epistemic-graph/specs/decision-engine/requirements.md:82#sha256=1c1999787a130f6c2e81e54ecc54064dfb149a443644939a6bd8185b06118f97`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.3
    AU:41 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **AU:41 Arbora definition slice.** AU:41 cross-owner slice. Residual: the exact six-hour durable paper job and missed/retried run semantics. Per-paper summary and relevance score against BOTH platform goals and existing graph content. Explicit value/admission threshold that selects paper content/claims for EG ingestion. Distinct from proposal admission Arbora minimum action: Define the scheduled job and EG-owned relevance/admission contract. Then link SDK fetch/ingest receipts to each approved run. Require a served six-hour-clock fixture, dedupe/restart, relevance exclusions and durable selected-claim receipts. Do not use proposal publication as ingestion proof. Producer/consumer boundary: Arbora evolution schedule facade -> owning durable scheduler (specific six-hour job missing) -> SDK provider. Tools/runner.worker -> McpToolSourceAdapter.extract -> generated SourceIngest. AU study_compare/admit consume EG verdicts; study_intake explicitly stores locator/digest and forbids copying the body. So it is not the missing selected-content ingestion producer. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `SDK-SOURCE-INGEST-R005, SDK-SOURCE-INGEST-R005.1, SDK-SOURCE-INGEST-R005.2, SDK-SOURCE-INGEST-R005.3, SDK-SOURCE-INGEST-R005.4, SDK-SOURCE-INGEST-R005.5, SDK-SOURCE-INGEST-R005.6, AU-HARNESS-R019, AU-HARNESS-R019.1, AU-HARNESS-R019.2, AU-HARNESS-R019.3, AU-HARNESS-R019.4, AU-HARNESS-R019.5, AU-HARNESS-R019.6, AU-HARNESS-R019.7, AU-HARNESS-R019.8, AU-HARNESS-R019.9, AU-HARNESS-R019.10, AU-HARNESS-R019.11, AU-HARNESS-R019.12, AU-INTEGRATION-R022, ARBORA-OPS-R022, ARBORA-OPS-R022.1, ARBORA-OPS-R022.2, ARBORA-OPS-R022.2.1, ARBORA-OPS-R022.2.2, ARBORA-OPS-R022.2.3, ARBORA-OPS-R022.2.4, ARBORA-OPS-R022.2.5`. Source record SHA-256: `8c69b66d62c833b4da482e38a51efa624c3e3fc924d6fd6d3e2ef114378a8527`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, arbora/specs/hosted-api-operations/requirements.md:54#sha256=d8c69732119b9efd110bc34158c3782be3ac3914844a8564936c35fe22dcbe9f, arbora/specs/hosted-api-operations/requirements.md:55#sha256=44c3ad638e12350e6fe73a655035a083f2c25d36131778469c43d3c2eb06ce8d, arbora/specs/hosted-api-operations/requirements.md:56#sha256=b203871faa89f38d2cd13102fe1cb4d5e4e734d1e8f774af2b9d604f5c513db7, arbora/specs/hosted-api-operations/requirements.md:57#sha256=42459bd7420c8fdbf7cc60f54270ad0963dbc4b14296a6a5c5dd2eb70c0d0151, arbora/specs/hosted-api-operations/requirements.md:58#sha256=951c86d4839a7606a1e5167a9d60f76f41ef8e370c6ce3013f272f09b07dd173, arbora/specs/hosted-api-operations/requirements.md:59#sha256=1d35ac03b38b3a95e5e549207b4f6a162a2f51b408465c6bb4fb7f7551a81db1, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:9#sha256=f6d94debdbb42e057cfee8695a8e966995d97c89a6e1c3dc2231526d26d9c0ea, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:10#sha256=69f387c80a40bcbd9cf6b70146369b4c6b5f3d6c29a97cac877b682cc0682c52, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:11#sha256=2ed1afa41c9047b9934339edd8392d3788cc5fa680e738f6bdc74d6cb548e954, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:12#sha256=bc1ee535bc1e35792a22eb83dbb19e7aed481b3ccb2bb6c62a0662e3addd343d, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:13#sha256=50914a51f916217350b621e51d74be1faf45e9508bf204f2381adf53cff2e21f, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:14#sha256=0a9eaa55e6a32fb1a0dfe081e8438d2a38c25e18ee9831c5d768a4c7b41b4e29, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:15#sha256=52f2cfe67e8569ca58747b2ee1122f6cb141864b7873ce17be4e809ac4b54dd1, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:87#sha256=fcc7546cd4f02886ab91637944516673592df5e6ca479c5ba95095b33c2ebcf5, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:88#sha256=f2c3733a3455af35d163dc5135ce5abed3c45f028fba26fa9f38f2dcf15cc98c, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:89#sha256=063b0267d85d85c6d6f385dd991a5e0f175667ce4ac71bbd545a1dd0e6fceca2, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:90#sha256=3a12cbdab1fdd6f87980b4a8fe0b7a83fd91a5cb2a51cbc29747402a6af3d5d8, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:91#sha256=f42f20c28d9e8144b4b42ea1f8aaab926de2049e8baa8985b90896cd28e320cf, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:92#sha256=39535bd4d3917d5a4fef260753fbc4d1b4ac2cd96565cc62042562c3957d301d, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:98#sha256=7de9c5ec586b6c5ccfd8b5e0fca8560a9ac838c98cf062b7c62f1fbdc339a883, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:99#sha256=2b0bcb5943d5b6d81289b94cce41041614bc6a0b48e52ffbed730d364e7b09df, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:100#sha256=f01b5a242debf96ebf6807098eca0f99c0b40fc9c099c6256093041ed8ccb961, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:101#sha256=75462f1fb86e05f3d20789607f4328a0dcae9e58a48ba8a7cc0c5bc4aea439ef, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:102#sha256=5c51652288c886aaafb0508f6dbf9dc341782e35420931d91198330745aebd5b, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:103#sha256=3ee760d7979531e9bffb1ac5000efbb83d95cea760dcc2858a6988a68b74db61, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:109#sha256=536efcbc2ef4bb6b10d9a98b55a426ce15714667b1a3fb48274f81cc109426f5, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:110#sha256=060fbfbeee2381b829f2eae191b13e207cd4e0638614bf083a94c98d2d07326c, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:111#sha256=473ef97020feaa26f5b0c187a20927f5c0f494fc41e7623b2d35250f80432450, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:112#sha256=317a9259e61b918aa0613f3e5f930e19c0b88cda2f2d49b98dfaed3c557d5d45, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:113#sha256=5d5ff53b1ced9c99caab9fb2a7db5b8077004529cf2a7f12268735f046c14f3f, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:114#sha256=8156161d12158f9abae0220d7dd1c71ca4507a541d593882a3191a0f0b20577b, agent-utilities/specs/au-integration-reliability/requirements.md:28#sha256=39b6562dd71932de65a9932e503ec4de7751a7d4be0290dd4ed3c6e6652aea99, agent-utilities/specs/harness-evolution/requirements.md:78#sha256=2120d55236f5a2a34eaf8935326377dd202d8643d661a95e39bf13868fb1cf59, agent-utilities/specs/harness-evolution/requirements.md:79#sha256=a8a7c4a61a0b0315de5cb294eef886621d6a919fa32bc09227101ecd8c42c63f, agent-utilities/specs/harness-evolution/requirements.md:80#sha256=05c42e4beed57e532283525e61957f003c35de84cb58a3506b8f537cb3c54ba6, agent-utilities/specs/harness-evolution/requirements.md:81#sha256=ffbfda6a61b94b4435bbcd37510c9234c7fb8ccc2de58604c39dcf6a2bd19dc3, agent-utilities/specs/harness-evolution/requirements.md:82#sha256=f7ef7e6ef3f5b93aa4294dbb1371a21f1cf29ae7ec62c739a11deec7782d45c5, agent-utilities/specs/harness-evolution/requirements.md:83#sha256=ee4cd7755f8396f563e9ed33c5c5871daca2d42d4b1adc15403cb817bdd730eb, agent-utilities/specs/harness-evolution/requirements.md:84#sha256=1c927a677f7b84879703c0c1239477462cb2ffd3a21212ff3c49fbf8a4905cca, agent-utilities/specs/harness-evolution/requirements.md:85#sha256=d78a3c773ac3dc764fc56c8e833b019fc52edf78df8c6dfe30cb35aefc00c857, agent-utilities/specs/harness-evolution/requirements.md:86#sha256=9980f6739ed10aefaf5a5e973d3fec51866ccf8d851ad1be56a5f5bed3e87bc3, agent-utilities/specs/harness-evolution/requirements.md:87#sha256=ea7d9534b77169253c6c5e2bf32b269dc53e2def9559875e3e533344e9501463, agent-utilities/specs/harness-evolution/requirements.md:88#sha256=a5e27b14b1c6db7169c943e03e1ca82efe27d051cc6eb874589a70646df5bb1a, agent-utilities/specs/harness-evolution/requirements.md:89#sha256=645fb034990cf006ef3d9e5c8db0b5bdf2a2f7e4bb9f8d987267d999cd05b9fe, agent-utilities/specs/harness-evolution/requirements.md:90#sha256=a3c86d310180d2daf9536f3ae912e6958c08f057c98ed5aa8842325a9e89db71`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/18`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `SDK-SOURCE-INGEST-R005, SDK-SOURCE-INGEST-R005.1, SDK-SOURCE-INGEST-R005.2, SDK-SOURCE-INGEST-R005.3, SDK-SOURCE-INGEST-R005.4, SDK-SOURCE-INGEST-R005.5, SDK-SOURCE-INGEST-R005.6, AU-HARNESS-R019, AU-HARNESS-R019.1, AU-HARNESS-R019.2, AU-HARNESS-R019.3, AU-HARNESS-R019.4, AU-HARNESS-R019.5, AU-HARNESS-R019.6, AU-HARNESS-R019.7, AU-HARNESS-R019.8, AU-HARNESS-R019.9, AU-HARNESS-R019.10, AU-HARNESS-R019.11, AU-HARNESS-R019.12, AU-INTEGRATION-R022, ARBORA-OPS-R022, ARBORA-OPS-R022.1, ARBORA-OPS-R022.2, ARBORA-OPS-R022.2.1, ARBORA-OPS-R022.2.2, ARBORA-OPS-R022.2.3, ARBORA-OPS-R022.2.4, ARBORA-OPS-R022.2.5`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/review-sdk-20261012.json, arbora/specs/hosted-api-operations/requirements.md:54#sha256=d8c69732119b9efd110bc34158c3782be3ac3914844a8564936c35fe22dcbe9f, arbora/specs/hosted-api-operations/requirements.md:55#sha256=44c3ad638e12350e6fe73a655035a083f2c25d36131778469c43d3c2eb06ce8d, arbora/specs/hosted-api-operations/requirements.md:56#sha256=b203871faa89f38d2cd13102fe1cb4d5e4e734d1e8f774af2b9d604f5c513db7, arbora/specs/hosted-api-operations/requirements.md:57#sha256=42459bd7420c8fdbf7cc60f54270ad0963dbc4b14296a6a5c5dd2eb70c0d0151, arbora/specs/hosted-api-operations/requirements.md:58#sha256=951c86d4839a7606a1e5167a9d60f76f41ef8e370c6ce3013f272f09b07dd173, arbora/specs/hosted-api-operations/requirements.md:59#sha256=1d35ac03b38b3a95e5e549207b4f6a162a2f51b408465c6bb4fb7f7551a81db1, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:9#sha256=f6d94debdbb42e057cfee8695a8e966995d97c89a6e1c3dc2231526d26d9c0ea, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:10#sha256=69f387c80a40bcbd9cf6b70146369b4c6b5f3d6c29a97cac877b682cc0682c52, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:11#sha256=2ed1afa41c9047b9934339edd8392d3788cc5fa680e738f6bdc74d6cb548e954, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:12#sha256=bc1ee535bc1e35792a22eb83dbb19e7aed481b3ccb2bb6c62a0662e3addd343d, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:13#sha256=50914a51f916217350b621e51d74be1faf45e9508bf204f2381adf53cff2e21f, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:14#sha256=0a9eaa55e6a32fb1a0dfe081e8438d2a38c25e18ee9831c5d768a4c7b41b4e29, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:15#sha256=52f2cfe67e8569ca58747b2ee1122f6cb141864b7873ce17be4e809ac4b54dd1, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:87#sha256=fcc7546cd4f02886ab91637944516673592df5e6ca479c5ba95095b33c2ebcf5, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:88#sha256=f2c3733a3455af35d163dc5135ce5abed3c45f028fba26fa9f38f2dcf15cc98c, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:89#sha256=063b0267d85d85c6d6f385dd991a5e0f175667ce4ac71bbd545a1dd0e6fceca2, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:90#sha256=3a12cbdab1fdd6f87980b4a8fe0b7a83fd91a5cb2a51cbc29747402a6af3d5d8, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:91#sha256=f42f20c28d9e8144b4b42ea1f8aaab926de2049e8baa8985b90896cd28e320cf, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:92#sha256=39535bd4d3917d5a4fef260753fbc4d1b4ac2cd96565cc62042562c3957d301d, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:98#sha256=7de9c5ec586b6c5ccfd8b5e0fca8560a9ac838c98cf062b7c62f1fbdc339a883, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:99#sha256=2b0bcb5943d5b6d81289b94cce41041614bc6a0b48e52ffbed730d364e7b09df, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:100#sha256=f01b5a242debf96ebf6807098eca0f99c0b40fc9c099c6256093041ed8ccb961, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:101#sha256=75462f1fb86e05f3d20789607f4328a0dcae9e58a48ba8a7cc0c5bc4aea439ef, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:102#sha256=5c51652288c886aaafb0508f6dbf9dc341782e35420931d91198330745aebd5b, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:103#sha256=3ee760d7979531e9bffb1ac5000efbb83d95cea760dcc2858a6988a68b74db61, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:109#sha256=536efcbc2ef4bb6b10d9a98b55a426ce15714667b1a3fb48274f81cc109426f5, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:110#sha256=060fbfbeee2381b829f2eae191b13e207cd4e0638614bf083a94c98d2d07326c, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:111#sha256=473ef97020feaa26f5b0c187a20927f5c0f494fc41e7623b2d35250f80432450, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:112#sha256=317a9259e61b918aa0613f3e5f930e19c0b88cda2f2d49b98dfaed3c557d5d45, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:113#sha256=5d5ff53b1ced9c99caab9fb2a7db5b8077004529cf2a7f12268735f046c14f3f, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:114#sha256=8156161d12158f9abae0220d7dd1c71ca4507a541d593882a3191a0f0b20577b, agent-utilities/specs/au-integration-reliability/requirements.md:28#sha256=39b6562dd71932de65a9932e503ec4de7751a7d4be0290dd4ed3c6e6652aea99, agent-utilities/specs/harness-evolution/requirements.md:78#sha256=2120d55236f5a2a34eaf8935326377dd202d8643d661a95e39bf13868fb1cf59, agent-utilities/specs/harness-evolution/requirements.md:79#sha256=a8a7c4a61a0b0315de5cb294eef886621d6a919fa32bc09227101ecd8c42c63f, agent-utilities/specs/harness-evolution/requirements.md:80#sha256=05c42e4beed57e532283525e61957f003c35de84cb58a3506b8f537cb3c54ba6, agent-utilities/specs/harness-evolution/requirements.md:81#sha256=ffbfda6a61b94b4435bbcd37510c9234c7fb8ccc2de58604c39dcf6a2bd19dc3, agent-utilities/specs/harness-evolution/requirements.md:82#sha256=f7ef7e6ef3f5b93aa4294dbb1371a21f1cf29ae7ec62c739a11deec7782d45c5, agent-utilities/specs/harness-evolution/requirements.md:83#sha256=ee4cd7755f8396f563e9ed33c5c5871daca2d42d4b1adc15403cb817bdd730eb, agent-utilities/specs/harness-evolution/requirements.md:84#sha256=1c927a677f7b84879703c0c1239477462cb2ffd3a21212ff3c49fbf8a4905cca, agent-utilities/specs/harness-evolution/requirements.md:85#sha256=d78a3c773ac3dc764fc56c8e833b019fc52edf78df8c6dfe30cb35aefc00c857, agent-utilities/specs/harness-evolution/requirements.md:86#sha256=9980f6739ed10aefaf5a5e973d3fec51866ccf8d851ad1be56a5f5bed3e87bc3, agent-utilities/specs/harness-evolution/requirements.md:87#sha256=ea7d9534b77169253c6c5e2bf32b269dc53e2def9559875e3e533344e9501463, agent-utilities/specs/harness-evolution/requirements.md:88#sha256=a5e27b14b1c6db7169c943e03e1ca82efe27d051cc6eb874589a70646df5bb1a, agent-utilities/specs/harness-evolution/requirements.md:89#sha256=645fb034990cf006ef3d9e5c8db0b5bdf2a2f7e4bb9f8d987267d999cd05b9fe, agent-utilities/specs/harness-evolution/requirements.md:90#sha256=a3c86d310180d2daf9536f3ae912e6958c08f057c98ed5aa8842325a9e89db71`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R022.4
    AU:53 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **AU:53 Arbora definition slice.** AU:53 cross-owner slice. Residual: The contract does not define grading every output or converting checker findings into the next instruction. It also omits durable continuation until no fixes remain or a bound is reached. A once-per-evaluation-round gate plus a run API does not establish that feedback loop. Arbora minimum action: Extend the existing runner/evaluation loop contract with every-output checker feedback, findings-to-next-instruction. Durable continuation and no-fixes/bound stopping rules; preserve R022 fail-closed scope/idempotency criteria. Producer/consumer boundary: AU triggered runner/output -> checker/evaluation report -> EG authority and durable state. Arbora exposes the loop status/run/pause facade. The report-to-next-instruction and stopping links remain undefined. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-OPS-R022, AU-HARNESS-R021, AU-HARNESS-R003`. Source record SHA-256: `3432e0278c2f92fce06790822ed67bd032678dcf58ab47c2a76934dfd9356199`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:53, agent-utilities/specs/harness-evolution/requirements.md:7#sha256=647388f1d7122d54ada7d05db4010abd8cd64d7677c5be11f5a4e2c4ddbcf85e, agent-utilities/specs/harness-evolution/requirements.md:100#sha256=73eb8c3e4b8fa8e15715730c8a52dc5c6c48048eabb1bdb3f7ef422b2d895a65, arbora/specs/hosted-api-operations/requirements.md:52#sha256=00a3f51ddcde9bedb3edbbe07293f9b7610e10212e9be4f93df2b7809386f6b7, agent-utilities/specs/harness-evolution/requirements.md:105#sha256=17fc83fc314533c54b52e10691f758e762c25ecdc14e5897ced05993520446ee, agent-utilities/specs/harness-evolution/requirements.md:107#sha256=70526a562b833c993d0b0dd5888d871afd291a21ae6bdac4cb35a90669081ed8, arbora/specs/hosted-api-operations/requirements.md:54#sha256=d8c69732119b9efd110bc34158c3782be3ac3914844a8564936c35fe22dcbe9f`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/21`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-OPS-R022, AU-HARNESS-R021, AU-HARNESS-R003`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/agent-utilities.tsv:53, agent-utilities/specs/harness-evolution/requirements.md:7#sha256=647388f1d7122d54ada7d05db4010abd8cd64d7677c5be11f5a4e2c4ddbcf85e, agent-utilities/specs/harness-evolution/requirements.md:100#sha256=73eb8c3e4b8fa8e15715730c8a52dc5c6c48048eabb1bdb3f7ef422b2d895a65, arbora/specs/hosted-api-operations/requirements.md:52#sha256=00a3f51ddcde9bedb3edbbe07293f9b7610e10212e9be4f93df2b7809386f6b7, agent-utilities/specs/harness-evolution/requirements.md:105#sha256=17fc83fc314533c54b52e10691f758e762c25ecdc14e5897ced05993520446ee, agent-utilities/specs/harness-evolution/requirements.md:107#sha256=70526a562b833c993d0b0dd5888d871afd291a21ae6bdac4cb35a90669081ed8, arbora/specs/hosted-api-operations/requirements.md:54#sha256=d8c69732119b9efd110bc34158c3782be3ac3914844a8564936c35fe22dcbe9f`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.7
    AU:71 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **AU:71 Arbora definition slice.** AU:71 cross-owner slice. Residual: The existing indexed lexical interaction space does not guarantee raw-corpus operation without an index. Exact file-read/context-verification primitives, per-scan cost reporting or refusal before exceeding the scan budget. Arbora minimum action: Extend existing EG retrieval/source-access contracts with the explicit indexless operations. Per-query cost/budget and typed abstention; bind the existing host/AU exploration consumer. Do not claim index scans satisfy no-index acceptance. Producer/consumer boundary: Arbora retrieval.space -> GovernedRetriever -> EG retrieval returns a top-K boundary; EG UQL budgets bound rows/visits. No reviewed governed indexless scan/file-read/context-verification producer contract supplies the requested operations. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-OPS-R053, EG-FEDERATED-QUERY-R070`. Source record SHA-256: `0f1b775fd66c41586bdcdf0047a9ccbc52e38aa1bc21a4e8234e9c641e45c68e`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/federated-query-and-reasoning/requirements.md:83#sha256=203a1371c95a991b72576bbb67873a25df004cb857594af925bce522c4cb3a31, arbora/specs/hosted-api-operations/requirements.md:168#sha256=cd4141cec45588ff5cccb99372c2c820b7426daad315a925c8e791b3f8764306, arbora/specs/hosted-api-operations/requirements.md:169#sha256=334587dc5d43d1b213b1ddfe626c9ede1b1dccf86f883c2b8de84016d389a70c, arbora/specs/hosted-api-operations/requirements.md:171#sha256=395479fb85ffc58edaf0761b6a663dd9558a6e0b62fb5d6d22afa09ee303a71d`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/23`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-OPS-R053, EG-FEDERATED-QUERY-R070`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/federated-query-and-reasoning/requirements.md:83#sha256=203a1371c95a991b72576bbb67873a25df004cb857594af925bce522c4cb3a31, arbora/specs/hosted-api-operations/requirements.md:168#sha256=cd4141cec45588ff5cccb99372c2c820b7426daad315a925c8e791b3f8764306, arbora/specs/hosted-api-operations/requirements.md:169#sha256=334587dc5d43d1b213b1ddfe626c9ede1b1dccf86f883c2b8de84016d389a70c, arbora/specs/hosted-api-operations/requirements.md:171#sha256=395479fb85ffc58edaf0761b6a663dd9558a6e0b62fb5d6d22afa09ee303a71d`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R021.2.1.1
    AU:93 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **AU:93 Arbora definition slice.** AU:93 cross-owner slice. Residual: Replaceable search-grounding provider independently selected from reasoning model and bound to a committed route. Unavailable committed provider must refuse rather than substitute. Arbora minimum action: Extend the retrieval route with a provider identity/revision separate from the reasoning model. Then require exact provider execution and refusal on unavailable committed provider. Test provider/model independence and zero alternate-provider calls. Producer/consumer boundary: Preserve ARBORA-OPS-R021.2.1 retrieval.search and its tenant-scoped retriever. EG must produce the committed provider binding and the SDK/Arbora consumer must execute that exact provider. That edge is missing. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-OPS-R021.2.1, EG-DECISION-ENGINE-R029`. Source record SHA-256: `c9552392eb813763a83fc96fb48ad1bd18fd805ef608736f1dae5d48ab12c984`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/decision-engine/requirements.md:41#sha256=b10e246a0cce00d98b2d1844300252fdf864e0db30687f34383fba0b1ab760d1, arbora/specs/hosted-api-operations/requirements.md:42#sha256=912ffbe86ea1b814b84b55cfa53b220071e474844ea01a71a4a598c76ded58a1`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/25`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-OPS-R021.2.1, EG-DECISION-ENGINE-R029`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/decision-engine/requirements.md:41#sha256=b10e246a0cce00d98b2d1844300252fdf864e0db30687f34383fba0b1ab760d1, arbora/specs/hosted-api-operations/requirements.md:42#sha256=912ffbe86ea1b814b84b55cfa53b220071e474844ea01a71a4a598c76ded58a1`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R050.2.1
    EG:61 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **EG:61 Arbora definition slice.** EG:61 cross-owner slice. Residual: A versioned reviewed normative source may coexist with EG active policy authority. Source-revision-to-active-policy binding and the graph no-overwrite invariant are not explicit in these rows. File-only runtime authority is not adopted. Arbora minimum action: Bind reviewed file revision/digest to active EG policy. Require no autonomous source overwrite and route requested source changes via approved SDK writeback. Test rejected/stale review leaves file and active policy unchanged. Producer/consumer boundary: Versioned repository policy source -> Arbora approved engine policy port -> EG active policy node. Source mutation separately uses governed SDK effect. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `EG-ORCH-VOCAB-R012.2, EG-IDENTITY-R008.4, ARBORA-OPS-R050.2, ARBORA-OPS-R050.4`. Source record SHA-256: `c5f1dfe7867267169ebc8c75abba87a1d9ed47568a65cbfe1bf6d183b8026e59`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/engine-identity-and-scope/requirements.md:16#sha256=1a9dbcdc0fe9547187467ffb07e0a3620a4353520042fcfb898b19e1db68c177, epistemic-graph/specs/orchestration-vocabulary/requirements.md:91#sha256=5f2fe911d1c238c63a759ac64521fee212565d9b2abfd95548af8666e8c2d6e8, arbora/specs/hosted-api-operations/requirements.md:147#sha256=7ba42ed9ba5b941180ff3235ffb0c8f8e68de37bbae06e1f8839f6462d0a20b1, arbora/specs/hosted-api-operations/requirements.md:149#sha256=0888d375dab7e779009f428191e080e46090fc4f0c78628d0ebefaf068d59d15, epistemic-graph/specs/orchestration-vocabulary/requirements.md:94#sha256=85b67012af0b3e5405417277835f6aa84faea2b202609247f1ca269559ae9ec7, epistemic-graph/specs/orchestration-vocabulary/requirements.md:95#sha256=856a2f5237ee7b15911fbcbc72fbe5bed34078f81049e46192d073bc566043af`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/33`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `EG-ORCH-VOCAB-R012.2, EG-IDENTITY-R008.4, ARBORA-OPS-R050.2, ARBORA-OPS-R050.4`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/engine-identity-and-scope/requirements.md:16#sha256=1a9dbcdc0fe9547187467ffb07e0a3620a4353520042fcfb898b19e1db68c177, epistemic-graph/specs/orchestration-vocabulary/requirements.md:91#sha256=5f2fe911d1c238c63a759ac64521fee212565d9b2abfd95548af8666e8c2d6e8, arbora/specs/hosted-api-operations/requirements.md:147#sha256=7ba42ed9ba5b941180ff3235ffb0c8f8e68de37bbae06e1f8839f6462d0a20b1, arbora/specs/hosted-api-operations/requirements.md:149#sha256=0888d375dab7e779009f428191e080e46090fc4f0c78628d0ebefaf068d59d15, epistemic-graph/specs/orchestration-vocabulary/requirements.md:94#sha256=85b67012af0b3e5405417277835f6aa84faea2b202609247f1ca269559ae9ec7, epistemic-graph/specs/orchestration-vocabulary/requirements.md:95#sha256=856a2f5237ee7b15911fbcbc72fbe5bed34078f81049e46192d073bc566043af`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R009.1
    ARBORA:17 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **ARBORA:17 Arbora definition slice.** ARBORA:17 cross-owner slice. Residual: No cited definition requires every decision to link simulation. Inspection and process-knowledge streams into a complete reviewer-readable provenance record, or every recommendation commit to require recorded human approval. Governed-effect approval is narrower than all recommendations. Arbora minimum action: Keep existing effect audit/approval mappings. Bind the missing decision-wide evidence and recommendation-approval definition to EG, and link Arbora/SDK consumers. Do not duplicate effect audit rows. Producer/consumer boundary: EG decision/provenance producer -> Arbora shared invoke/A2A approval admission -> SDK governed source effect and receipt. Existing effect-audit contracts do not establish the all-decision evidence/approval producer. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-A2A-R007, ARBORA-OPS-R009`. Source record SHA-256: `0e4858352b73b18661ed21ef503cc4c4f36e72045c3ffeff8d2094d9f8f8e50a`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/37`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-A2A-R007, ARBORA-OPS-R009`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R053.8
    ARBORA:25 Arbora definition slice
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **ARBORA:25 Arbora definition slice.** ARBORA:25 cross-owner slice. Residual: No cited contract requires offline preprocessing into line-numbered tables of contents. It also does not bind navigation to those line ranges without reading whole files. Source spans and directories alone do not establish line numbering, offline construction, or bounded span-read behavior. Arbora minimum action: Retain space/section mappings as partial coverage. Define offline line-numbered TOC and bounded span-read contracts at the source/EG boundary, then link existing Arbora/AU consumers. Do not recreate interaction spaces. Producer/consumer boundary: SDK source ingestion -> EG immutable document/section records -> Arbora retrieval.space directories -> AU exploration. The offline line-numbered TOC producer and bounded line-range read contract are unbound. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-OPS-R053.1, ARBORA-OPS-R053.2, ARBORA-OPS-R053.3, ARBORA-OPS-R053.6, EG-FEDERATED-QUERY-R081.9.7.1, EG-FEDERATED-QUERY-R081.9.7.5`. Source record SHA-256: `6797cff839c16c3b9c3877d6bbf48bf8953eae8696087abc99f2b57147daed93`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/38`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-OPS-R053.1, ARBORA-OPS-R053.2, ARBORA-OPS-R053.3, ARBORA-OPS-R053.6, EG-FEDERATED-QUERY-R081.9.7.1, EG-FEDERATED-QUERY-R081.9.7.5`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json`. This definition does not assert these tests have run.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R059
    Proposal outcome projection
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Proposal outcome projection.** Register the read operation `evolution.proposals.metrics` with closed `EvolutionMetricsQueryV1` and `EvolutionMetricsProjectionV1` schemas. Bind proposal and prompt-revision IDs to authorized EG progress facts and source RunTrace IDs, metric names/values/units. Metric window, coverage, and source revision. Use the caller's authenticated tenant/project scope. Reject cross-scope or incomplete identity before EG reads. Return no progress or metrics on denial. Attach through the existing immutable operation registry and shared `POST /api/v1/ops/{op_id}`/MCP invocation path to the existing WebUI evolution dashboard. Consumer counterpart: `WEBUI-APPS-R004.7`, agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`; EG owns proposal/progress and trace facts. Bind the exact producer operations, existing attachment functions, limits, and proposed proof named in plan.md. Keep unavailable until those owner prerequisites exist. | A served dashboard test joins a proposal to stored trace metrics and progress; a denied trace reveals neither. `runs.get` and `runs.metrics` alone do not satisfy the join.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R060
    Supported-harness discovery and session projections
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Supported-harness discovery and session projections.** Register `harnesses.manifest`, `harnesses.discovery.status`, `sessions.browse`, `sessions.search`, and `sessions.costs` with closed `HarnessManifestV1`, `DiscoveryProgressV1`, `SessionQueryV1`, `SessionPageV1`, and `SessionCostSummaryV1` schemas. Bind every supported harness ID/version and SDK source-coverage revision to EG indexed-session revision, tenant/source-session identity. Bounded page size/cursor, partial/denied-source state, and cost amount/currency/unit/coverage. Do not build a host index. Attach via the shared registry/REST/MCP path to the existing WebUI sessions view. Consumer counterpart: `WEBUI-APPS-R006.4` at agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`; SDK owns source discovery/submission and EG owns indexed search/cost facts. Bind the exact producer operations, existing attachment functions, limits, and proposed proof named in plan.md. Keep unavailable until those owner prerequisites exist. | A fresh served browser discovers, browses, and searches every declared harness and sees cross-session costs. Denied sources appear as partial without hidden session metadata. Repeat sync/restart proves stable source identities and cursors.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R062
    Authenticated graph-change feed and recovery
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Authenticated graph-change feed and recovery.** Register `graph.changes.subscribe` and `graph.snapshot.recover` with closed `GraphChangeEventV1` and `GraphSnapshotRecoveryV1` schemas carrying graph incarnation, committed revision, event ID. Ordered cursor, change/tombstone identity, and snapshot revision. Use the existing event transport and EG snapshot authority; reauthorize every reconnect. Refuse expired/stale cursors with a typed recovery result, and stop delivery/clear protected client state on revocation. Bind a finite positive commit-to-visible limit to a named workload and measurement boundary. WebUI owns layout, readability, frame, and selection metrics. Attach to existing WebUI live graph views through the shared registry. Consumer counterpart: `WEBUI-APPS-R030.8` at agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`. Bind the exact producer operations, existing attachment functions, limits, and proposed proof named in plan.md. Keep unavailable until those owner prerequisites exist. | Two served browsers converge durably without refresh under concurrent edits, duplicate/delayed/reordered events, gaps, reconnect, and revocation. Measure commit-to-visible under the named workload and keep WebUI layout acceptance in its owner spec.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R064
    Viewport bins and selection
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Viewport bins and selection.** Register `graph.viewport.bins` and `graph.selection.resolve` with closed `ViewportBinsQueryV1`, `ViewportBinsV1`, and `GraphSelectionV1` schemas preserving EG formulas, source and viewport revisions. Scatter/line variant, pixel dimensions, bin counts/extrema, line gaps, selection token, and bounded response bytes/bin count. Require authenticated scope and positive finite byte/bin limits before dispatch; refuse stale source/viewport tokens and invalid limits. Arbora transports EG results and does not substitute generic pagination or finance decimation. Attach to the existing WebUI chart interaction path through the shared registry. Consumer counterpart: `WEBUI-APPS-R001.2` at agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`. Bind the exact producer operations, existing attachment functions, limits, and proposed proof named in plan.md. Keep unavailable until those owner prerequisites exist. | A served scatter and line interaction over a billion-point source preserves pan, zoom, and selection semantics. Independently measured responses remain within declared limits. Stale tokens and missing, invalid, or exceeded limits refuse before a usable result is returned.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R065
    Live meeting transcript and summary provider operations
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Live meeting transcript and summary provider operations.** Register `meetings.transcript.subscribe`, `meetings.providers.list`, `meetings.summary.create`, and `meetings.summary.get` with closed transcript-event, provider-choice, summary-request, and summary-result V1 schemas. Preserve meeting/segment IDs, sequence, correction revision, partial/final/finalized state, timestamps, source/model provenance. Explicit local/hosted provider identity and execution class, context revision, and summary provenance. SDK owns transport; EG owns transcript/context/admission facts. Enforce capture and egress authority before dispatch; expose distinct unavailable, gap, and refusal states. Attach to the existing WebUI meeting panel through the shared registry. Consumer counterpart: `WEBUI-APPS-R001.5` at agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`. Bind the exact producer operations, existing attachment functions, limits, and proposed proof named in plan.md. Keep unavailable until those owner prerequisites exist. | Served browser tests prove ordered corrections, finalization, each selected local and hosted route, and provenance. Tests also prove zero provider effect for denied egress or stale transcript revisions.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R066
    Bounded bookmark search, relationships, and export
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Bounded bookmark search, relationships, and export.** Register `bookmarks.search`, `bookmarks.relationships`, and `bookmarks.export` with closed query/page/relationship/export V1 schemas bound to one authorized EG query snapshot, source and bookmark IDs, ingestion provenance, index/query revision, bounded cursor, format revision. Bind each schema to a content digest. Search, mindmap relationships, and export use identical scope. Preserve unknown metadata; escape spreadsheet-formula-like CSV cells; never fetch imported URLs or instructions. Attach to existing WebUI bookmark search/mindmap/download views through the shared registry. Consumer counterpart: `WEBUI-APPS-R001.6` at agent-webui PR #95 head `05ea3dab39a34b48e538fe70ea8d24fd4335f1e9`; EG owns semantic index and relationships. Bind the exact producer operations, existing attachment functions, limits, and proposed proof named in plan.md. Keep unavailable until those owner prerequisites exist. | A served ingestion-to-browser test checks semantic search, interactive relationships, and independently recorded CSV/JSON downloads against the same snapshot. Denied bookmarks are absent from every view and export. This definition does not claim runtime delivery.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R700
    Readiness snapshot joins independent probes
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Readiness snapshot joins independent probes.** `arbora/observability/readiness.py` exposes `collect_readiness_snapshot(probes, required, deadline_s, now)` returning the `arbora.readiness.v1` envelope. Probes run concurrently on a pool sized to the probe count; a probe that raises, overruns its deadline or returns an unknown state reports `unavailable`, never `ready`. A failed or missing required check (`engine`, `catalog`, `synthetic_query` by default) makes the snapshot `unavailable`; any other non-ready check makes it `degraded`. Identity is `ready` only for a session whose actor is authenticated. Every call re-probes; nothing is cached. `GET /dashboard/readiness` serves the snapshot from the engine probe and the probes added with `register_probe`. Budget: rollup under 1 ms for 16 probes, memory under 2 MiB beyond probe cost; wall time is bounded by the deadline. | `tests/observability/test_readiness.py` covers all-ready, each failure mode, optional degradation, missing required checks and the identity rule.
    requirementARBORA-OPSVERIFIED0978f146c1dc
    fb0bc5b69328
    tests/observability/test_readiness.py:31
    tests/observability/test_readiness.py:47
    tests/observability/test_readiness.py:54
    tests/observability/test_readiness.py:68
    ARBORA-OPS-R843
    Served engine operations replace the in-run agent-utilities tool wrappers
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Served engine operations replace the in-run agent-utilities tool wrappers.** The agent-utilities modules `tools/kg_tools.py`, `tools/knowledge_tools.py`, `tools/code_intelligence_tools.py` and the session-admission part of `protocols/acp_adapter.py` wrap engine calls. arbora serves the same behaviour as generated `eg.<domain>.<Method>` operations and `ARBORA-ACP-R001`, so the wrappers have no remaining job. Split into `ARBORA-OPS-R843.1` (the delivered part) and `ARBORA-OPS-R843.2` (the modules that are not engine wrappers). | Closes when both children close.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-OPS-R843.1
    Delivered wrapper behaviour
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Delivered wrapper behaviour.** Hybrid search, recall and read-only structured query (`kg_tools`), search, code impact, memory create/read/update/delete and node links (`knowledge_tools`), definition, callers, call graph, impacted tests and dependencies (`code_intelligence_tools`) are served by `eg.query.UnifiedQuery`, `eg.query.Uql`, `eg.ingestion.SemanticSearch`, `eg.graph.GetSubgraph`, `eg.graph.GetNeighbors`, `eg.compute.GetBlastRadius`, `eg.ingestion.IndexRepository`, `eg.graph.AddNode`, `eg.graph.AddEdge` and `eg.graph.CompareAndSetNodeFields`. The read tools map only to non-mutating methods; the read-only Cypher guard in `kg_tools` maps to `eg.query.Uql`, which is read-only, and not to `eg.query.CypherQuery`, which may write. ACP session admission is `ARBORA-ACP-R001.1`. | `tests/api/test_au_tool_parity.py::test_replaced_wrapper_methods_are_served` (5 cases) with `tests/acp/test_session_policy.py` (`ARBORA-ACP-R001.1`).
    requirementARBORA-OPSVERIFIED379bfc44c56b
    tests/api/test_au_tool_parity.py:42
    ARBORA-OPS-R843.2
    Modules that are not engine wrappers
    Definition — ARBORA-OPS / ARBORA-OPS — Hosted API and intent operationsCanonical requirement and verification source
    **Modules that are not engine wrappers.** Per module disposition. Composed operations: `agent_tools` list and library reads to `ARBORA-OPS-R810`; `team_tools` to `ARBORA-OPS-R819`; `sdd_tools` to `ARBORA-OPS-R809`; `scheduler_tools` to `ARBORA-OPS-R818`; `self_improvement_tools` and `kg_evolution_tools` to `ARBORA-OPS-R824`; `kg_share_tools` to `ARBORA-OPS-R830`; `a2a_tools` peer registry to `ARBORA-OPS-R817`; `codebase_map_tools` to `ARBORA-OPS-R802` and `ARBORA-OPS-R807`; `media_tools` transcription to the served `eg.ingestion.Asr` method (generation has no engine method and stays with the connector that provides it); `knowledge_tools` client/user creation, heartbeat and feature sync to `ARBORA-FLEET-R024`. Harness-retained in agent-utilities, with no served equivalent: `memory_tools` (reads workspace instructions), `tool_filtering`, `tool_registry`, `versioning`, `pattern_tools`, `onboarding_tools` and `eval_harness` (in-run scorers). | Each module's disposition names an existing row or the harness; closes when the agent-utilities importers are re-pointed.
    requirementARBORA-OPSSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY
    ARBORA-IDENTITY — ACCESS — identity, authorization, and access operations
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R001
    Elevation request, approve, and revoke surfaces
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Elevation request, approve, and revoke surfaces.** Arbora exposes elevation request, approval, and revoke actions through its web console, its A2A authority boundary, and chat-based tooling. Each surface invokes the engine's access service rather than deciding locally. | Verified by an integration test exercising the REST and MCP access operations from each surface. It also confirms self-approval and delegated-approval attempts are denied.
    requirementARBORA-IDENTITYLANDED4a3410afa6de
    ARBORA-IDENTITY-R002
    Domain scopes consume the generated scope registry
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Domain scopes consume the generated scope registry.** Arbora's own domain scopes use the shared scope classes (user, domain, service-only, approver, admin) and are kept consistent with the single generated scope registry rather than a separately maintained list. | Verified by a registry property test asserting every scope Arbora advertises matches the generated registry's name and class.
    requirementARBORA-IDENTITYVERIFIEDa2212420d6c6
    d497f656144a
    tests/api/test_domain_scopes.py:50
    ARBORA-IDENTITY-R002.1
    Arbora owns the scope registry generated from EG `scopes.json`
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Arbora owns the scope registry generated from EG `scopes.json`.** `arbora/security/scope_registry.py` is rendered by `scripts/gen_scope_registry.py` from the installed `epistemic_graph/contract/scopes.json`; the session allowlist is exactly the registry. Child slice of `ARBORA-IDENTITY-R002`. | `tests/security/test_scope_registry.py::test_the_generated_module_is_the_installed_eg_registry`.
    requirementARBORA-IDENTITYVERIFIED9e7f6499d96f
    tests/security/test_scope_registry.py:26
    tests/security/test_scope_registry.py:35
    tests/security/test_scope_registry.py:45
    ARBORA-IDENTITY-R003
    Persistent local token issuer with secret-backed key
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Persistent local token issuer with secret-backed key.** Arbora runs a persistent local token issuer that publishes discovery and JWKS metadata under a well-known path, stores its signing key as a secret reference, rotates keys with bounded overlap, and exchanges tokens from an external identity provider or a local authenticator for a verified local principal token. | Verified by a contract test validating discovery/JWKS responses, stable token subject identity, and bounded-overlap key rotation.
    requirementARBORA-IDENTITYLANDED9a8cbf921748
    c4c9cb1fac8f
    ARBORA-IDENTITY-R004
    Rollup
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Rollup.** See `ARBORA-IDENTITY-R004.1` and `ARBORA-IDENTITY-R004.2`. In unauthenticated mode, Arbora resolves a request as the bootstrap principal through the ordinary RBAC and scope path, refuses non-loopback binds unless an explicit exposure acknowledgment is supplied, validates the Host header and same-origin Origin on cookie-mutating requests, and shows an unsecured-mode banner, page title, and doctor diagnostic, with the previously identified authentication bypasses removed. | See children.
    requirementARBORA-IDENTITYLANDEDcd652df8f6c8
    ARBORA-IDENTITY-R004.1
    Typed bootstrap-principal model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed bootstrap-principal model.** `LoopbackBootstrapPrincipal` refuses construction for a non-loopback bind host unless an explicit exposure acknowledgment is set, and refuses an empty bind host. | Verified by refusal unit tests in `tests/identity/test_bootstrap_mfa_admin_console_models.py`.
    requirementARBORA-IDENTITYVERIFIEDcd652df8f6c8
    d497f656144a
    tests/identity/test_bootstrap_mfa_admin_console_models.py:15
    tests/identity/test_bootstrap_mfa_admin_console_models.py:28
    ARBORA-IDENTITY-R004.2
    Bootstrap resolution path
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Bootstrap resolution path.** Wire the typed model into the ordinary RBAC/scope resolution path, Host/Origin validation on cookie-mutating requests. It also wires the unsecured-mode banner/title/doctor diagnostic. | Verified by a served HTTP/MCP test asserting loopback-only access and Host/Origin rejection before token issuance. It also asserts the unsecured-mode indicators across session, status, and initialize responses.
    requirementARBORA-IDENTITYLANDED4a3410afa6de
    ARBORA-IDENTITY-R005
    Local account lifecycle with server-side sessions
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Local account lifecycle with server-side sessions.** Arbora implements local login, logout, registration, password change, and password reset backed by opaque server-side sessions, a CSRF token for cookie-based authentication, session-fixation rotation on login and privilege change, and uniform public error responses that never reveal whether an account exists. | Verified by an end-to-end account-lifecycle test covering CSRF validation, session rotation, and uniform throttled responses for unknown users and wrong passwords.
    requirementARBORA-IDENTITYLANDED9a8cbf921748
    ARBORA-IDENTITY-R006
    Optional MFA with TOTP, WebAuthn, and recovery codes
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Optional MFA with TOTP, WebAuthn, and recovery codes.** Arbora supports TOTP, WebAuthn, and one-use recovery codes for multi-factor authentication, with enrollment optional by default globally while an administrator can require it for members of a configured group. | Verified by MFA ceremony tests covering valid and replayed TOTP codes, WebAuthn origin and signature-counter checks, single-use recovery codes, and enforced enrollment for a required group.
    requirementARBORA-IDENTITYLANDEDcd652df8f6c8
    ARBORA-IDENTITY-R006.1
    Typed MFA enrollment model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed MFA enrollment model.** `MfaEnrollment` refuses an unknown MFA method and refuses a required-group enrollment with zero methods. | Verified by refusal unit tests in `tests/identity/test_bootstrap_mfa_admin_console_models.py`.
    requirementARBORA-IDENTITYLANDEDcd652df8f6c8
    ARBORA-IDENTITY-R006.2
    MFA ceremonies
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **MFA ceremonies.** Implement the TOTP, WebAuthn, and recovery-code ceremonies and group-enrollment enforcement over the typed model. | Verified by MFA ceremony tests covering valid and replayed TOTP codes, WebAuthn origin and signature-counter checks, single-use recovery codes, and enforced enrollment for a required group.
    requirementARBORA-IDENTITYLANDED4a3410afa6de
    ARBORA-IDENTITY-R007
    Admin console tabs with mapping dry-run and mode wizard
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Admin console tabs with mapping dry-run and mode wizard.** Arbora's web console provides identity administration tabs for users, sessions, providers, and policy, a dry-run view that previews the roles an identity-provider mapping rule would assign, and a guided wizard for switching authentication mode. | Verified by a browser-driven test exercising each admin tab, the mapping dry-run preview, and a full mode-transition walkthrough.
    requirementARBORA-IDENTITYLANDEDcd652df8f6c8
    ARBORA-IDENTITY-R007.1
    Typed admin-console tab model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed admin-console tab model.** `AdminConsoleTab` refuses a name outside the fixed `users`/`sessions`/`providers`/`policy` set. | Verified by refusal unit tests in `tests/identity/test_bootstrap_mfa_admin_console_models.py`.
    requirementARBORA-IDENTITYLANDEDcd652df8f6c8
    ARBORA-IDENTITY-R007.2
    Admin console behavior
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Admin console behavior.** Implement the mapping dry-run preview and mode-transition wizard over the typed tab model. | Verified by a browser-driven test exercising each admin tab, the mapping dry-run preview, and a full mode-transition walkthrough.
    requirementARBORA-IDENTITYLANDED4a3410afa6de
    ARBORA-IDENTITY-R008
    API keys and service accounts replace static MCP tokens
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **API keys and service accounts replace static MCP tokens.** Arbora issues expiring API keys and service accounts in place of static MCP tokens. It intersects a key's effective scopes with its current owner's scopes on every use. It rejects approver-class scopes on keys. It denies a revoked or expired key immediately, with no static-token compatibility path. | Verified by an API-key contract test asserting scope intersection at use time. It also asserts immediate denial of a revoked, expired, or approver-scoped key.
    requirementARBORA-IDENTITYVERIFIEDe74110bb69b5
    ARBORA-IDENTITY-R009
    Multi-provider OIDC with mapping rules and JIT policy
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Multi-provider OIDC with mapping rules and JIT policy.** Arbora authenticates through multiple OIDC providers using PKCE, state, and nonce verification, applies deterministic ordered mapping rules with configurable just-in-time user creation or denial, supports a preset configuration for a common identity provider, migrates existing identity links idempotently, and sends a logout hint to the provider where supported. | Verified by an OIDC integration test against mock issuers asserting PKCE/nonce/state validation, mapping-rule outcomes, idempotent link migration, and hinted logout.
    requirementARBORA-IDENTITYSPECIFIED4a3410afa6de
    e74110bb69b5
    ARBORA-IDENTITY-R010
    LDAPS bind with nested group sync
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **LDAPS bind with nested group sync.** Arbora binds to a directory over LDAPS, escapes search filters, and synchronizes group membership including nested Active Directory groups, deprovisioning access for disabled directory accounts. | An integration test uses a mock TLS LDAP directory. It covers escaped filters, bounded nested-group resolution and disabled-account deprovisioning.
    requirementARBORA-IDENTITYSPECIFIEDe74110bb69b5
    ARBORA-IDENTITY-R008.1
    Typed API-key grant model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed API-key grant model.** `ApiKeyGrant` refuses an approver-class scope and refuses an empty owner principal id. | Verified by refusal unit tests in `tests/identity/test_api_key_grant.py`.
    requirementARBORA-IDENTITYVERIFIED8b0005ee65dd
    tests/identity/test_api_key_grant.py:20
    tests/identity/test_api_key_grant.py:26
    tests/identity/test_api_key_grant.py:9
    ARBORA-IDENTITY-R008.2
    Scope intersection and revocation
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Scope intersection and revocation.** Intersect effective scopes with the owner's current scopes at use time; deny a revoked or expired key immediately. | An API-key contract test asserts scope intersection at use time. It also asserts immediate denial of a revoked, expired, or approver-scoped key.
    requirementARBORA-IDENTITYVERIFIEDd45ad779b80c
    tests/identity/test_api_key_use_time.py:22
    tests/identity/test_api_key_use_time.py:31
    tests/identity/test_api_key_use_time.py:39
    tests/identity/test_api_key_use_time.py:49
    ARBORA-IDENTITY-R009.1
    Typed OIDC mapping-rule model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed OIDC mapping-rule model.** `OidcMappingRule` refuses an unknown JIT policy and refuses a negative rule order. | Verified by refusal unit tests in `tests/identity/test_api_keys_oidc_ldap_models.py`.
    requirementARBORA-IDENTITYVERIFIED6c3a92eb849a
    tests/identity/test_oidc_mapping_rule.py:23
    tests/identity/test_oidc_mapping_rule.py:29
    tests/identity/test_oidc_mapping_rule.py:36
    tests/identity/test_oidc_mapping_rule.py:43
    ARBORA-IDENTITY-R009.2
    OIDC authentication flow (rollup)
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **OIDC authentication flow (rollup).** Delivered through children `.2.1`-`.2.4`: ordered rule evaluation, ID-token validation, callback wiring, and live IdP probe. | Verified when every child is verified.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R009.2.1
    Ordered claim-to-rule evaluation
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Ordered claim-to-rule evaluation.** `select_mapping_rule` returns the lowest-order matching `OidcMappingRule` for a provider and refuses no match, duplicate order, or malformed match. | Verified by unit tests in `tests/identity/test_oidc_rule_selection.py`.
    requirementARBORA-IDENTITYVERIFIED0714a7bf6f8e
    tests/identity/test_oidc_rule_selection.py:17
    tests/identity/test_oidc_rule_selection.py:24
    tests/identity/test_oidc_rule_selection.py:30
    tests/identity/test_oidc_rule_selection.py:37
    tests/identity/test_oidc_rule_selection.py:43
    ARBORA-IDENTITY-R009.2.2
    ID-token validation inputs and typed refusal
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **ID-token validation inputs and typed refusal.** Pure PKCE/state/nonce/audience/expiry checks over decoded token claims, refusing any mismatch. | Verified by refusal unit tests.
    requirementARBORA-IDENTITYVERIFIED4ecc19a9f4e8
    tests/identity/test_oidc_id_token_claims.py:41
    tests/identity/test_oidc_id_token_claims.py:47
    tests/identity/test_oidc_id_token_claims.py:52
    tests/identity/test_oidc_id_token_claims.py:58
    tests/identity/test_oidc_id_token_claims.py:66
    ARBORA-IDENTITY-R009.2.3
    Callback handler wiring
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Callback handler wiring.** Wire rule evaluation and token validation into the OIDC callback, with idempotent link migration and hinted logout. | Verified by a callback test against a mock issuer.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R009.2.4
    Live IdP probe
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Live IdP probe.** Exercise the flow against a live identity provider (requires a deployed IdP service). | Verified by a live probe against the deployed IdP.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R010.1
    Typed LDAPS bind-config model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed LDAPS bind-config model.** `LdapBindConfig` refuses a non-`ldaps` scheme and refuses an invalid port. | Verified by refusal unit tests in `tests/identity/test_api_keys_oidc_ldap_models.py`.
    requirementARBORA-IDENTITYVERIFIED02d2a6e84ec7
    tests/identity/test_ldap_bind_config.py:11
    tests/identity/test_ldap_bind_config.py:18
    tests/identity/test_ldap_bind_config.py:25
    ARBORA-IDENTITY-R010.2
    Directory bind and group sync (rollup)
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Directory bind and group sync (rollup).** Split into `.2.1`-`.2.4`; implement the LDAPS bind, filter escaping, nested-group resolution, and deprovisioning of disabled accounts. | An integration test uses a mock TLS LDAP directory. It covers escaped filters, bounded nested-group resolution and disabled-account deprovisioning.
    requirementARBORA-IDENTITYSPECIFIED9fc4eae0f299
    ARBORA-IDENTITY-R010.2.1
    Group-DN-to-role mapping evaluation
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Group-DN-to-role mapping evaluation.** `map_groups_to_roles()` maps a directory user's group DNs (DN-normalized, case-insensitive) to roles through an explicit mapping and refuses with `IdentityUnavailable` when no group matches. | Verified by unit tests in `tests/identity/test_ldap_group_roles.py`.
    requirementARBORA-IDENTITYVERIFIED9fc4eae0f299
    tests/identity/test_ldap_group_roles.py:13
    tests/identity/test_ldap_group_roles.py:19
    tests/identity/test_ldap_group_roles.py:25
    tests/identity/test_ldap_group_roles.py:32
    ARBORA-IDENTITY-R010.2.2
    Bind through an injected directory port
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Bind through an injected directory port.** Bind and search via an injected directory port with typed `IdentityUnavailable` refusal when the directory is unavailable, plus search-filter escaping. | Verified by unit tests using a fake directory port.
    requirementARBORA-IDENTITYVERIFIED57c4aff42c64
    tests/identity/test_ldap_bind.py:22
    tests/identity/test_ldap_bind.py:29
    tests/identity/test_ldap_bind.py:35
    tests/identity/test_ldap_bind.py:41
    ARBORA-IDENTITY-R010.2.3
    Scheduled group sync (rollup)
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Scheduled group sync (rollup).** Split into `.2.3.1` and `.2.3.2`; bounded nested-group resolution and scheduled sync, deprovisioning disabled accounts. | Verified by a test against a fake directory covering bounded nesting and deprovisioning of a disabled account.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R010.2.3.1
    Pure sync plan
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Pure sync plan.** `plan_directory_sync()` turns a directory snapshot (users with group DNs and a disabled flag) into a typed `SyncPlan` of role assignments per user and users to deprovision, listing enabled users with no mapped role as unmapped, and refuses an empty snapshot with `IdentityUnavailable`. | Verified by unit tests in `tests/identity/test_ldap_sync_plan.py`.
    requirementARBORA-IDENTITYVERIFIED937d3788413d
    tests/identity/test_ldap_sync_plan.py:12
    tests/identity/test_ldap_sync_plan.py:27
    ARBORA-IDENTITY-R010.2.3.2
    Scheduled apply
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Scheduled apply.** Schedule the sync and apply the plan through the identity port. | Verified by a test with a fake directory and fake identity port applying a deprovision.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R010.2.4
    Live directory probe
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Live directory probe.** Probe a live LDAPS directory (requires a live service). | Verified by a live probe against the deployed directory.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R011
    SCIM 2.0 provisioning server
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **SCIM 2.0 provisioning server.** Arbora exposes a SCIM 2.0 server bound to a provider-specific service credential, supporting user and group provisioning and deprovisioning without deleting owned data. | Verified by a SCIM contract test covering create/update/patch/deactivate flows and rejection of a token scoped to a different provider.
    requirementARBORA-IDENTITYSPECIFIED117ad5b56bc6
    ARBORA-IDENTITY-R012
    Native SAML service provider
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Native SAML service provider.** Arbora acts as a SAML 2.0 service provider itself, so a deployment can sign in through a SAML identity provider without an OIDC broker in between; brokering through an OIDC provider remains a supported alternative. Assertions are accepted only with a valid signature from the configured provider certificate, the expected audience and recipient, an unexpired validity window and an unreplayed assertion ID, and a SAML sign-in resolves to the same stable principal and narrowed scopes as every other login method. | Integration tests assert a signed assertion yields the stable principal, and unsigned, wrongly signed, wrong-audience, expired and replayed assertions and XML signature-wrapping attempts are each refused.
    requirementARBORA-IDENTITYSPECIFIED117ad5b56bc6
    ARBORA-IDENTITY-R011.1
    Typed SCIM service-credential model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed SCIM service-credential model.** `ScimServiceCredential` refuses an empty provider id and exposes `authorizes()` refusing a mismatched provider. | Verified by refusal unit tests in `tests/identity/test_scim_saml_models.py`.
    requirementARBORA-IDENTITYVERIFIED95e2a2ed3519
    tests/identity/test_scim_credential.py:11
    tests/identity/test_scim_credential.py:17
    tests/identity/test_scim_credential.py:23
    tests/identity/test_scim_credential.py:31
    ARBORA-IDENTITY-R011.2
    SCIM server surface (rollup)
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **SCIM server surface (rollup).** Implement the create/update/patch/deactivate flows and provisioning/deprovisioning without deleting owned data. | Verified by a SCIM contract test covering create/update/patch/deactivate flows and rejection of a token scoped to a different provider.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R011.2.1
    Typed SCIM User resource model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed SCIM User resource model.** `ScimUser` validates a SCIM 2.0 User payload (schema URN, non-empty userName, boolean active) and refuses a malformed one. | Verified by refusal unit tests in `tests/identity/test_scim_user.py`.
    requirementARBORA-IDENTITYVERIFIEDe92d812eb39d
    tests/identity/test_scim_user.py:15
    tests/identity/test_scim_user.py:21
    tests/identity/test_scim_user.py:26
    tests/identity/test_scim_user.py:32
    tests/identity/test_scim_user.py:40
    ARBORA-IDENTITY-R011.2.2
    SCIM credential check
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **SCIM credential check.** Gate every SCIM request on `ScimServiceCredential.authorizes` and refuse a token scoped to a different provider. | Verified by a cross-provider rejection unit test.
    requirementARBORA-IDENTITYVERIFIED966dc25b5493
    tests/identity/test_scim_credential_check.py:17
    tests/identity/test_scim_credential_check.py:22
    tests/identity/test_scim_credential_check.py:29
    tests/identity/test_scim_credential_check.py:35
    ARBORA-IDENTITY-R011.2.3
    SCIM create/patch/deactivate handlers
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **SCIM create/patch/deactivate handlers.** Handlers create, patch and deactivate users through an injected identity port; deactivation never deletes owned data. | Verified by a SCIM contract test over a fake identity port.
    requirementARBORA-IDENTITYVERIFIEDe848425636e4
    tests/identity/test_scim_handlers.py:33
    tests/identity/test_scim_handlers.py:40
    tests/identity/test_scim_handlers.py:47
    tests/identity/test_scim_handlers.py:54
    tests/identity/test_scim_handlers.py:64
    ARBORA-IDENTITY-R011.2.4
    SCIM route registration
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **SCIM route registration.** Register the `/scim/v2/Users` routes in the arbora HTTP surface. | Verified by a route-registration test.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R012.1
    Typed SAML service-provider model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed SAML service-provider model.** `SamlServiceProvider` refuses a non-URL ACS endpoint and refuses a missing IdP certificate. | Verified by refusal unit tests in `tests/identity/test_saml_models.py`.
    requirementARBORA-IDENTITYVERIFIED66b447b6f3f3
    tests/identity/test_saml_models.py:11
    tests/identity/test_saml_models.py:21
    tests/identity/test_saml_models.py:29
    ARBORA-IDENTITY-R012.2
    Assertion verification and sign-in (rollup of .2.1-.2.4)
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Assertion verification and sign-in (rollup of .2.1-.2.4).** Implement signature, audience/recipient, validity-window and replay checks, and resolve a SAML sign-in to the same stable principal as every other login method. | Integration tests assert a signed assertion yields the stable principal, and unsigned, wrongly signed, wrong-audience, expired and replayed assertions and XML signature-wrapping attempts are each refused.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R012.2.1
    Typed parsed-assertion model and condition checks
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Typed parsed-assertion model and condition checks.** `ParsedSamlAssertion` refuses malformed claims, and `check_assertion_conditions()` refuses a wrong audience, wrong recipient, not-yet-valid or expired assertion with a typed `SamlRefusalReason`. | Verified by refusal unit tests in `tests/identity/test_saml_assertion_conditions.py`.
    requirementARBORA-IDENTITYVERIFIEDfdbaebdb795a
    tests/identity/test_saml_assertion_conditions.py:37
    tests/identity/test_saml_assertion_conditions.py:42
    tests/identity/test_saml_assertion_conditions.py:64
    tests/identity/test_saml_assertion_conditions.py:74
    tests/identity/test_saml_assertion_conditions.py:89
    ARBORA-IDENTITY-R012.2.2
    Signature verification through an injected verifier port
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Signature verification through an injected verifier port.** Define a `SamlSignatureVerifier` port and refuse unsigned, wrongly signed and signature-wrapped assertions; no crypto or XML implementation lives in arbora. | Verified by unit tests with a fake verifier port covering unsigned, wrongly signed and wrapped assertions.
    requirementARBORA-IDENTITYVERIFIED2eaa6baaabc5
    tests/identity/test_saml_signature_verification.py:47
    tests/identity/test_saml_signature_verification.py:54
    tests/identity/test_saml_signature_verification.py:63
    ARBORA-IDENTITY-R012.2.3
    Replay check and sign-in handler wiring (rollup)
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Replay check and sign-in handler wiring (rollup).** Refuse a replayed assertion ID and resolve an accepted assertion to the same stable principal and narrowed scopes as every other login method; delivered by `.2.3.1` and `.2.3.2`. | Verified by the child rows.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R012.2.3.1
    Replay check through a seen-assertion-id store port
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Replay check through a seen-assertion-id store port.** Define a `SamlReplayStore` `Protocol` and `check_assertion_replay`, which, after `verify_assertion`, refuses a repeated `assertion_id` with the typed reason `REPLAYED`. | Unit tests with an in-memory fake store assert a first assertion is accepted and a repeated assertion ID is refused with `REPLAYED`.
    requirementARBORA-IDENTITYVERIFIED7f5cd8d1fe7d
    tests/identity/test_saml_replay.py:41
    tests/identity/test_saml_replay.py:48
    tests/identity/test_saml_replay.py:57
    tests/identity/test_saml_replay.py:64
    ARBORA-IDENTITY-R012.2.3.2
    Sign-in handler wiring into the browser authority
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Sign-in handler wiring into the browser authority.** Resolve an accepted assertion to the same stable principal and narrowed scopes as every other login method. | Integration tests assert a verified assertion yields the stable principal.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R012.2.4
    Live IdP sign-in probe
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Live IdP sign-in probe.** A committed probe signs in through a real SAML IdP; needs a live IdP service. | Verified by the probe run against the deployed IdP.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R013
    Identity CLI commands and doctor diagnostics
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Identity CLI commands and doctor diagnostics.** The Arbora identity CLI supports claim, link-claim, transition, reset-admin, and rotate commands with profile-aware defaults, and its doctor diagnostic reports a failing check for an exposed unauthenticated mode or an automatically generated secret. | Verified by a CLI contract test asserting each command's typed result and a doctor test asserting failing diagnostics for an exposed mode and an auto-generated secret.
    requirementARBORA-IDENTITYLANDED4a3410afa6de
    ARBORA-IDENTITY-R014
    Shared RBAC decision oracle across identity modes
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Shared RBAC decision oracle across identity modes.** Arbora runs the same principal-by-scope-by-action-by-resource decision table against its unauthenticated, local, and external authentication modes, the last using mock OIDC and LDAP providers, and asserts identical allow/deny outcomes, reason codes, and claims digest for each principal across modes, including after a full mode-transition round trip. | Verified by a cross-mode oracle test comparing decision-table results and claims digests across all three modes.
    requirementARBORA-IDENTITYLANDED4a3410afa6de
    ARBORA-IDENTITY-R015
    Identity operations documentation and cutover runbook
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Identity operations documentation and cutover runbook.** Arbora documents its identity and access operations and configuration, and provides a runbook for cutting an existing deployment over between authentication modes. The runbook references a committed browser sign-in probe as the verification step for an external provider. | Verified by following the documented runbook end to end against a test deployment. The test confirms each described step and diagnostic matches observed behavior.
    requirementARBORA-IDENTITYLANDED765e4c3a46fe
    ARBORA-IDENTITY-R016
    Optional SMTP adapter for identity email
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Optional SMTP adapter for identity email.** Arbora optionally sends password-reset, verification, and invitation email through a configurable SMTP adapter; when no adapter is configured, email-only affordances are hidden while administrator reset and recovery-code paths remain available. | Verified by a notification test asserting a one-use reset email is sent when SMTP is configured and that email-only UI options are hidden when it is absent.
    requirementARBORA-IDENTITYSPECIFIEDadf48206cdff
    tests/identity/test_mail_capability.py:15
    tests/identity/test_mail_capability.py:30
    tests/identity/test_mail_capability.py:45
    ARBORA-IDENTITY-R016.1
    Arbora-side mail capability model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Arbora-side mail capability model.** A typed `SmtpAdapterSettings` model refuses an unusable adapter (missing host, out-of-range port, invalid `mail_from`), and `email_affordances()` hides every email-only UI affordance while keeping the administrator-issued reset and recovery-code paths available when no adapter is configured. | Verified by refusal and capability-flag unit tests in `tests/identity/test_mail_capability.py`.
    requirementARBORA-IDENTITYLANDEDadf48206cdff
    ARBORA-IDENTITY-R016.2
    SMTP/listmonk send integration
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **SMTP/listmonk send integration.** Wire a real SMTP/listmonk transport into the password-reset, verification, and invitation send pipeline so a one-use reset email is actually sent when an adapter is configured. Pinned to the epistemic-graph >=2.28 engine release (current pin: `epistemic-graph>=2.27.0,<3.0.0`); not deliverable until that pin moves. | Verified by a notification test asserting a one-use reset email is sent when SMTP is configured, once the epistemic-graph >=2.28 dependency lands.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017
    Remove the unauthenticated opt-out once clients migrate
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Remove the unauthenticated opt-out once clients migrate.** Every Arbora client path carries a verified local-issuer or permitted service token. These paths include bootstrap, REST, MCP, A2A, CLI, and background service calls. Then Arbora stops relying on the engine's unauthenticated opt-out. The engine refuses any unsigned request. | A served test asserts the engine denies every client entry point when its token is missing, expired, or has the wrong audience. No unsigned retry or fallback path runs.
    requirementARBORA-IDENTITYSPECIFIEDadf48206cdff
    tests/identity/test_client_entry_points.py:14
    tests/identity/test_client_entry_points.py:21
    ARBORA-IDENTITY-R017.1
    Client entry-point token audit registry
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Client entry-point token audit registry.** `CLIENT_TOKEN_REQUIREMENTS` enumerates every Arbora client path (bootstrap, REST, MCP, A2A, CLI, background service) and records that each one carries a verified local-issuer or permitted service token, with `entry_points_without_verified_tokens()` empty -- the audited precondition for removing reliance on the engine's opt-out. | Verified by registry-completeness and token-requirement unit tests in `tests/identity/test_client_entry_points.py`.
    requirementARBORA-IDENTITYLANDEDadf48206cdff
    ARBORA-IDENTITY-R017.2
    Engine opt-out removal
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Engine opt-out removal.** Once the engine stops honoring the unauthenticated opt-out, Arbora stops relying on it so the engine refuses any unsigned request. Pinned to the epistemic-graph >=2.28 engine release (current pin: `epistemic-graph>=2.27.0,<3.0.0`); not deliverable until that pin moves. | Verified by a served test asserting every client entry point is denied when its token is missing, expired, or has the wrong audience, once the epistemic-graph >=2.28 dependency lands.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017.3
    Model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Model.** BearerVerificationProfile pins issuer, audience, signing algorithms, key authority, tenant claim mapping and validity limits. VerifiedBearer binds subject, tenant, client, scopes, token expiry and verification evidence. Tenant is a required nonempty signed claim, mapped to the existing internal tenant field. Headers, cookies, process identity and defaults cannot fill an absent tenant. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017.4
    Behavior
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Behavior.** Validate each API bearer independently of local browser-session storage. Verify signature, issuer, audience, expiry, not-before and required tenant before resolving current EG authority. Stateless token verification does not bypass revocation, delegation or current authorization. A valid browser cookie cannot rescue an invalid bearer or create an API principal. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017.5
    Wiring
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Wiring.** Reuse `verify_local_bearer_request` at `arbora/api/http/auth.py:127` and `caller_from_session` at `arbora/api/mcp/caller.py:12.` `VerifiedMCPCaller.caller_for_request` at line 117 resolves each call. The existing verifier result lacks current policy authority. Missing qualified token verification, tenant validation or current EG resolution keeps ingress unavailable; decoded-claims helpers alone cannot admit a bearer. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017.6
    Refusal
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Refusal.** Reject missing or duplicate bearer headers, invalid signature, unknown issuer/key, wrong audience, absent tenant, expiry and revoked credentials. A tenant mismatch refuses before discovery, dispatch or source access. Missing key or policy authority returns UNAVAILABLE without accepting cached positive authorization beyond its validity. Preserve uniform public authentication errors and bounded internal reasons. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017.7
    Evidence
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Evidence.** Record request, verified tenant/principal/client, issuer profile, key ID, policy revision and refusal category. Never retain raw bearer material or log a reversible token encoding. Bearer evidence identifies the exact request and authority source. Browser-session evidence remains separate and cannot imply bearer validation. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R017.8
    Hot-path proof
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Hot-path proof.** `tests/identity/test_bearer_tenant_ingress.py::test_served_stateless_bearer_requires_tenant` enters the tools/call wire method and REST with local issuer tokens. Empty browser-session storage must not block a valid bearer. Missing tenant, expired token, wrong audience, duplicate headers and forged signature cause zero handler calls. Restart, revoked authority and cross-tenant calls preserve refusal. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R018
    Identity administration operations for self, admin, config
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Identity administration operations for self, admin, config.** Arbora exposes identity operations covering the authenticated caller's own record, administrator management of users, sessions, API keys, service accounts, roles, groups, identity providers with mapping dry-run, policy, mode, issuer, audit, and SCIM client configuration, all requiring exact identity-admin scope, console origin, and fresh multi-factor authentication for mutations. | Verified by an integration test exercising each identity operation and asserting admin mutations are denied without exact scope, console origin, or fresh MFA.
    requirementARBORA-IDENTITYLANDED2c70abad2b68
    336f9faf3f21
    ARBORA-IDENTITY-R019
    Access operations for elevation and approval decisions
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Access operations for elevation and approval decisions.** Arbora exposes access operations for elevation request, list, revoke, and approve/deny, approval listing and grant/deny, lease management, access checks, and policy explanation, all backed by the engine's access authority with no separate Arbora-local approval or lease record. | Verified by an access-operations contract test asserting self-approval and delegated-approval attempts are denied and that REST and MCP surfaces return identical decisions.
    requirementARBORA-IDENTITYSPECIFIEDd467b8f6c708
    f0432f0a0cef
    f22badda8f35
    ARBORA-IDENTITY-R019.1
    Model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Model.** ResourceAccessRequest binds verified tenant/principal/client, canonical resource reference, protocol, operation and immutable constraints. ResourceGrant binds an EG decision, verified user or role, exact resource version, scope ceiling, expiry and revocation revision. Protocol is web, ssh, rdp or database. Unknown resource, protocol or operation has no implicit grant. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R019.2
    Behavior
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Behavior.** Require an explicit current grant at every protocol boundary before opening an upstream channel. Match user or verified role, tenant, resource, protocol and operation together. Grants never authorize a whole host or network by proximity. Reauthorize each new operation and stop active access when authority expires or revocation becomes known. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R019.3
    Wiring
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Wiring.** Reuse `arbora/access/service.py:90` `check_access` and `arbora/api/ops/access.py:151` operations for EG-backed access projection. The shared invoke policy path at `arbora/api/invoke/pipeline.py:198` remains mandatory. Protocol resource resolution, grant adapters and web/SSH/RDP/database enforcement are missing integration; no existing graph access verdict establishes protocol-wide enforcement. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R019.4
    Refusal
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Refusal.** Default deny for missing grant, unknown resource, untrusted role, stale policy, expired grant, tenant mismatch or unavailable EG authority. If a protocol adapter cannot enforce the granted operation and constraints, refuse `unsupported_enforcement` before opening the connection. Opaque tunneling cannot be represented as operation-scoped authorization. Denied and unknown resources share a safe public refusal. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R019.5
    Evidence
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Evidence.** Join ingress request, verified principal/client/tenant, canonical resource version, protocol, operation, EG decision and enforcement outcome. Record grant expiry, revocation observation and channel termination. Never record credentials, database payloads or private destination details in general logs. Evidence must prove the actual protocol boundary, not only an access-preview result. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R019.6
    Hot-path proof
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Hot-path proof.** `tests/identity/test_resource_protocol_access.py::test_served_protocol_grants_default_deny` enters the served operation through REST/MCP and each local protocol adapter. Controlled web, SSH, RDP and database endpoints record connection attempts. Explicit user and role grants permit only their exact resources. Unrelated resources, revoked grants and unsupported enforcement cause zero upstream connections. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R020
    Domain scope registry covers finance, fleet, loops, ops
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Domain scope registry covers finance, fleet, loops, ops.** Arbora registers and exports its domain scopes, including finance read, fleet read and control, loops read and control, and ops read and admin, each with an exact name and scope class, consuming the generated engine scope registry rather than a separate list. | Verified by a registry property test asserting each exported scope's name and class matches the generated registry.
    requirementARBORA-IDENTITYLANDEDa2212420d6c6
    ARBORA-IDENTITY-R021
    Identity wiring depends only on identity ports
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Identity wiring depends only on identity ports.** Arbora's web host, web co-service, and MCP server packages depend only on the identity ports protocols and DTOs for identity behavior, with the concrete issuer, session, and authority implementations constructed once in the serving composition root and injected, removing the prior direct dependencies between these packages. | Verified by an import-graph and composition test asserting a single constructed implementation per port, no import cycle, and compliance with the configured dependency-count threshold.
    requirementARBORA-IDENTITYVERIFIED2c70abad2b68
    336f9faf3f21
    tests/identity/test_identity_ports_boundary.py:105
    tests/identity/test_identity_ports_boundary.py:77
    ARBORA-IDENTITY-R022
    Fleet authorization fails closed on exact scopes
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Fleet authorization fails closed on exact scopes.** Arbora's fleet capability check accepts only the exact fleet scope for a requested operation rather than treating a general admin or cluster-admin scope as sufficient, applies the same check to local stdio transport as to any other transport, denies dispatch of an unrecognized native tool rather than allowing it by default, and enforces this filtering on every served MCP request regardless of which code path constructed the server. | Verified by positive and negative tests asserting an admin-only or cluster-admin-only caller is denied fleet access, an unknown tool is denied, and stdio-transport requests are checked identically to networked requests.
    requirementARBORA-IDENTITYVERIFIED2c70abad2b68
    76d418e32221
    tests/fleet/test_multiplexer_dynamic_gateway.py:1550
    tests/fleet/test_multiplexer_dynamic_gateway.py:1761
    tests/fleet/test_multiplexer_dynamic_gateway.py:1806
    tests/fleet/test_multiplexer_dynamic_gateway.py:1824
    ARBORA-IDENTITY-R023
    Native, self-refreshing credentials for MCP clients
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Native, self-refreshing credentials for MCP clients.** Arbora issues and refreshes its own service-account or API-key tokens in process and serves them directly to IDE and agent MCP clients, removing the need for an external scheduled credential-refresh process or a file-based token cache read by a separate bridge process. | Verified by a client integration test asserting an MCP client obtains and automatically renews a working token from Arbora with no external refresh process or cached credential file.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R023.1
    Model
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Model.** Frozen CredentialUseRequest binds tenant, owner principal, requesting principal/client, connector, provider, audience, scopes, resource and operation. CredentialUseGrant adds EG decision reference, vault reference, expiry, revocation revision and declared provider token profile. AuthorizationChallenge binds that request, issuer, client, callback, state, nonce, PKCE challenge, attempt and deadline. No shared-host identity or supplied actor field grants reuse. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R023.2
    Behavior
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Behavior.** Resolve only an explicit reuse grant for the exact requesting agent, admitted connector and purpose. Derive connector identity from trusted admission; reject caller-forged or mismatched values. Validate provider tokens under the declared JWT/OIDC or opaque profile defined in the plan. Missing credentials start one admitted inline PKCE challenge. Persist acquired tokens through the approved host vault before reporting readiness. Resume only the unchanged pending operation after fresh EG authorization. Expiry, revocation and concurrent refresh preserve the same narrowed authority. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R023.3
    Wiring
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Wiring.** Extend authorize at `arbora/gateway/remote_oauth_api.py:245` and `oauth_callback` at line 280 through the existing broker boundary. `build_identity_ports` at `arbora/identity/composition.py:48` injects qualified identity authorities. Reuse SDK-CONNECTOR-CONTROL-R035 and R046 for credential references and PKCE transport. Scoped reuse, vault persistence receipts and inline operation continuation remain missing producer wiring. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R023.4
    Refusal
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Refusal.** Return `credential_missing`, `reuse_denied`, `browser_launch_failed`, `callback_unavailable`, `input_timeout`, `state_mismatch`, `insecure_redirect`, `provider_unavailable`, `persistence_failed`, revoked or expired. An unavailable interactive channel returns `interaction_required` immediately. Errors contain no code, verifier or token. A refused ceremony cannot dispatch the pending operation or leave a usable credential grant. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R023.5
    Evidence
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Evidence.** Record tenant, requesting principal/client, provider, granted scopes, resource, operation, challenge reference, EG decision and vault receipt. Include issuance, refresh, revocation and expiry references. Redact authorization codes, verifier, tokens, cookies and credential values. Record cross-agent use independently; process or host identity cannot substitute for caller provenance. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R023.6
    Hot-path proof
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Hot-path proof.** `tests/identity/test_scoped_credential_reuse.py::test_served_pkce_reuse_and_refusal` enters the served operation through REST and MCP tools/call. A local OIDC provider and real callback complete PKCE and vault persistence. A granted second client succeeds; unrelated clients and mismatched connectors fail before token use. JWT and opaque-token fixtures prove the declared validation profile without fabricating claims. Browser opening failure, timed-out input, replay and failed persistence cause no backend effect. | Served acceptance in the named identity tests; runtime evidence remains required.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R024
    Committed browser and Keycloak SSO probe
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Committed browser and Keycloak SSO probe.** Arbora provides a committed, reusable script that drives a real browser through sign-in against an external OIDC provider such as Keycloak and verifies the resulting session, replacing any uncommitted ad hoc probe. | Verified by running the committed probe against a test identity-provider realm and confirming it reports a successful authenticated session.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R025
    Register identity ops once the engine contract lists `identity:admin`
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Register identity ops once the engine contract lists `identity:admin`.** Arbora registers the identity operations only after the engine contract lists scope `identity:admin`. Until then registration is skipped with a doctor warning. Depends on the engine registering `identity:admin` (closed PR #176 failed `tests/api/test_registry_factory.py` for this). | `tests/api/test_registry_factory.py` passes with the engine contract listing `identity:admin` and skips identity ops without it.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026
    Hosted sessions are attributed to a client and segmented by principal
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Hosted sessions are attributed to a client and segmented by principal.** Arbora must attribute every streamable-http session, agent run and audit event to a verified client principal, and must show each caller only its own. Rollup: LANDED when every `ARBORA-IDENTITY-R026.<n>` child is LANDED. | A served test with two principals shows no cross-client visibility and the children pass.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.1
    Client session record
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Client session record.** Arbora must define a typed client session record in arbora/identity/client_session.py. It holds principal, tenant, session id and start time. | tests/identity/test_client_session.py: fields required; an unsigned principal is rejected.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.2
    Record at session open
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Record at session open.** Arbora must create the record when an MCP session opens, from the verified principal. The first task locates the session-open call site in arbora/mcp_server. | tests/identity/test_client_session_open.py: opening a session stores one record for the caller.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.3
    Runs carry the session id
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Runs carry the session id.** Each agent run started through Arbora must carry its client session id and principal into the run record. | tests/identity/test_run_attribution.py: run record shows the opening session id.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.4
    Audit event per run
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Audit event per run.** Arbora must write one audit event per orchestrated run, holding trace id, principal and session id, in arbora/api/invoke/audit.py. | tests/identity/test_run_audit.py: one event per run with all three fields.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.5
    Caller-scoped client listing
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Caller-scoped client listing.** A list-clients operation must return only the caller's sessions and runs, and must return all of them only for an exact admin scope. | tests/identity/test_list_clients.py: user sees own rows; admin sees all; reader scope without admin is limited.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.6
    User and service account parity
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **User and service account parity.** A user and a service account holding the same grants must see the same operation catalog and the same graph data. | tests/identity/test_principal_parity.py: equal catalog and equal visible-row count for both principals.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.7
    Cross-client denial is uniform
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **Cross-client denial is uniform.** A read of another client's session must fail with the same refusal as an unknown session id. | tests/identity/test_cross_client_denial.py: both cases return identical structured denials.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R026.8
    ARBORA:16 Arbora definition slice
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **ARBORA:16 Arbora definition slice.** ARBORA:16 primary-owner slice. Residual: No served inbox operation authenticates both sender and recipient. It also must refuse unknown or unauthorized target sessions before durable enqueue. Read isolation and messaging supervision do not establish delivery authorization. Arbora minimum action: Extend existing messaging/session definitions with the served inbox operation. Exact sender/recipient bindings and authorization-before-enqueue, plus durable delivery and zero-enqueue negative acceptance. Producer/consumer boundary: Arbora session-authenticated inbox ingress -> sender/recipient session authorization -> EG durable append -> scoped inbox read. Delivery binding/refusal contract is missing. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-HOST-R011, ARBORA-IDENTITY-R026`. Source record SHA-256: `5bd50d265a1a83230d0b51b029d19e223467cdc483fdc08567cd35849969f59e`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:16, arbora/specs/host-composition-boundary/requirements.md:109#sha256=acd48a25ab250570f59857f3bf17a9f9998dca08e4881eadb3ec8014e8cce3ae, arbora/specs/identity-access/requirements.md:89#sha256=f311a34e2ea54221b19c57807e0164cce183a393fdce034abc4e5953ed698940, arbora/specs/identity-access/requirements.md:93#sha256=6828c8637572d2f4e86bf23c095c8d488c25350d3fca0224b32c39586c3ec18b, arbora/specs/identity-access/requirements.md:95#sha256=c2658c88d689908601bf885283ef8260214e4c45f963eaa2e689af67ea58eaf6`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/11`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-HOST-R011, ARBORA-IDENTITY-R026`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:16, arbora/specs/host-composition-boundary/requirements.md:109#sha256=acd48a25ab250570f59857f3bf17a9f9998dca08e4881eadb3ec8014e8cce3ae, arbora/specs/identity-access/requirements.md:89#sha256=f311a34e2ea54221b19c57807e0164cce183a393fdce034abc4e5953ed698940, arbora/specs/identity-access/requirements.md:93#sha256=6828c8637572d2f4e86bf23c095c8d488c25350d3fca0224b32c39586c3ec18b, arbora/specs/identity-access/requirements.md:95#sha256=c2658c88d689908601bf885283ef8260214e4c45f963eaa2e689af67ea58eaf6`. This definition does not assert these tests have run.
    requirementARBORA-IDENTITYSPECIFIEDNo recorded commit/test evidence
    ARBORA-IDENTITY-R650
    External policy sync renders the engine's row-visibility bundle and fails closed
    Definition — ARBORA-IDENTITY / ARBORA-IDENTITY — ACCESS — identity, authorization, and access operationsCanonical requirement and verification source
    **External policy sync renders the engine's row-visibility bundle and fails closed.** `arbora.access.external_policy_sync` fetches the engine's per-tenant policy bundle and renders it into Trino file rules, OpenSearch document-level-security roles and Lakekeeper tuple sets, then applies each idempotently (an unchanged payload makes no downstream call). A fetch or decode failure, or a bundle governing anything but row visibility, denies every target. A caller without a marking role gets a per-subject rule, never a catch-all, and subjects are regex-escaped. Applying is off unless `EXTERNAL_POLICY_SYNC_ENABLED` is set. `sync_external_policy` in `arbora.access.service` runs one fetch-and-apply cycle. | `tests/access/test_external_policy_sync.py` covers decoding, per-target rendering, escaping, idempotent re-apply and deny-all.
    requirementARBORA-IDENTITYVERIFIEDbe63023340ec
    bf0256771979
    tests/access/test_external_policy_sync.py:3
    ARBORA-MCP-RESOURCES
    ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliation
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-MCP-RESOURCES-R001
    Publication gate refuses without a valid receipt (rollup)
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **Publication gate refuses without a valid receipt (rollup).** arbora's MCP resource/template publication path never claims a candidate generation is published unless a `ReconciliationReceipt` exists, matches that exact candidate, and is fresh; otherwise it returns the typed `reingestion-unreconciled` result. Delivered through its child requirement, producer first. | Covered by `ARBORA-MCP-RESOURCES-R001.1` plus `ARBORA-MCP-RESOURCES-R003` (not yet specified).
    requirementARBORA-MCP-RESOURCESVERIFIEDNo recorded commit/test evidence
    ARBORA-MCP-RESOURCES-R001.1
    Typed `ReconciliationReceipt` model and publication gate
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **Typed `ReconciliationReceipt` model and publication gate.** `arbora/fleet/mcp_resource_reconciliation.py` defines a frozen `ReconciliationReceipt` and `gate_mcp_resource_publication()` returning a typed `PublicationGateResult`: `"reconciled"` only for a receipt matching the exact tenant, `catalog_generation`, `snapshot_digest`, and all four families (`tools`, `prompts`, `resources`, `resource_templates`) within a freshness bound; `"reingestion-unreconciled"` with a stable `reason` (`missing`, `stale`, `invalid`) otherwise. | `tests/fleet/test_mcp_resource_reconciliation.py` covers missing, stale, digest-mismatched, generation-mismatched, partial-family, and wrong-tenant receipts all returning `reingestion-unreconciled`, and a fully matching fresh receipt returning `reconciled`.
    requirementARBORA-MCP-RESOURCESVERIFIED6a19f564d301
    tests/fleet/test_mcp_resource_reconciliation.py:22
    ARBORA-MCP-RESOURCES-R002
    epistemic-graph is the sole admissible receipt source
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **epistemic-graph is the sole admissible receipt source.** The gate may only treat as reconciling a receipt epistemic-graph issued after durably committing the candidate's four-family projection. Arbora never synthesizes or locally fabricates a passing receipt. Producing contract: [`EG-REPO-INGEST-001`](https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/repository-index-and-ingestion/spec.md) (owned by epistemic-graph). | Cross-repository link verification: this spec's `spec.md` cites the exact EG spec ID and URL. No arbora code path constructs a `ReconciliationReceipt` locally outside of test fixtures.
    requirementARBORA-MCP-RESOURCESVERIFIED028338c38838
    tests/fleet/test_mcp_resource_receipt_source.py:32
    ARBORA-MCP-RESOURCES-R003
    Gate wired at the one catalog-publish entry point (rollup)
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **Gate wired at the one catalog-publish entry point (rollup).** The fleet catalog's atomic generation-publish step (`fleet-catalog-and-tools` R022/PA-12) calls `gate_mcp_resource_publication()` before swapping the active generation pointer for the four MCP families; only an all-families `"reconciled"` result allows the swap. Split because the publish step it must call is not yet built in arbora (`fleet-catalog-and-tools` R022/PA-12 is still BUILDING, so there is no entry point to wire). Delivered through its children. | Covered by `ARBORA-MCP-RESOURCES-R003.1` and `ARBORA-MCP-RESOURCES-R003.2`.
    requirementARBORA-MCP-RESOURCESSPECIFIEDNo recorded commit/test evidence
    ARBORA-MCP-RESOURCES-R003.1
    Swap guard function
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **Swap guard function.** `arbora/fleet/mcp_resource_reconciliation.py` adds `require_reconciled_for_swap()`, which wraps `gate_mcp_resource_publication()` and raises a typed `PublicationRefusedError` carrying the `PublicationGateResult` for any `reingestion-unreconciled` result, and returns the receipt only for `reconciled`. The publish step can then call one function that cannot be bypassed by ignoring a return value. | Unit tests: missing, stale, and invalid receipts raise `PublicationRefusedError` with the typed result attached and the stable `reason`. A matching fresh receipt returns the receipt.
    requirementARBORA-MCP-RESOURCESVERIFIED965d34390876
    tests/fleet/test_mcp_resource_reconciliation.py:119
    tests/fleet/test_mcp_resource_reconciliation.py:138
    ARBORA-MCP-RESOURCES-R003.2
    Call the guard from the publish step (depends on `fleet-catalog-and-tools` R022/PA-12 landing in arbora)
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **Call the guard from the publish step (depends on `fleet-catalog-and-tools` R022/PA-12 landing in arbora).** The atomic generation-publish step calls `require_reconciled_for_swap()` before swapping the active generation pointer for the four families, leaves the last-known-good generation active on refusal, and surfaces the typed result in the reload outcome. | Integration test drives the publish step with missing/stale/invalid receipts and confirms the swap is refused with the typed result surfaced; a matching receipt allows the swap.
    requirementARBORA-MCP-RESOURCESSPECIFIEDNo recorded commit/test evidence
    ARBORA-MCP-RESOURCES-R004
    Status docs are the gate's result, not hand-maintained prose
    Definition — ARBORA-MCP-RESOURCES / ARBORA-MCP-RESOURCES — MCP resource/template publication reconciliationCanonical requirement and verification source
    **Status docs are the gate's result, not hand-maintained prose.** `docs/status.md`'s "Explicitly unavailable surfaces" row and `docs/fleet.md`'s reconciliation paragraph describe exactly the `reingestion-unreconciled` result the gate returns. | A docs-consistency check (or review note) confirms the status/reason vocabulary in both docs matches `arbora/fleet/mcp_resource_reconciliation.py` exactly. Not built in this slice.
    requirementARBORA-MCP-RESOURCESVERIFIED94ee72171294
    tests/fleet/test_mcp_resource_status_docs.py:20
    tests/fleet/test_mcp_resource_status_docs.py:25
    tests/fleet/test_mcp_resource_status_docs.py:32
    tests/fleet/test_mcp_resource_status_docs.py:44
    ARBORA-MESSAGING
    ARBORA-MESSAGING — Messaging channel supervision lifecycle
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R001
    Typed channel supervision state machine
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Typed channel supervision state machine.** Arbora models each supervised messaging backend's lifecycle as a closed, typed state enum (`STOPPED`, `STARTING`, `RUNNING`, `BACKING_OFF`, `DEGRADED`, `STOPPING`) with a fixed legal-transition table; `InboundRouter` reports this state per backend. Delivered as the rollup of `ARBORA-MESSAGING-R001.1` (typed model, transition table, refusal tests) plus the router wiring that reports it live. | Unit tests over the typed model prove every legal transition and refuse every illegal one; an integration test confirms `InboundRouter` reports the live state per registered backend.
    requirementARBORA-MESSAGINGLANDED63a66f60915a
    ARBORA-MESSAGING-R001.1
    Typed state model, transition table, and refusal tests
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Typed state model, transition table, and refusal tests.** Arbora defines the `ChannelSupervisionState` enum and a `TRANSITIONS: dict[ChannelSupervisionState, frozenset[ChannelSupervisionState]]` table as the sole authority for legal moves, plus a `transition(current, target)` function that returns the target on a legal move and raises a typed `IllegalSupervisionTransition` otherwise. No router wiring is required for this slice. | Unit tests cover every legal transition pair and assert a representative set of illegal pairs (including `STOPPED -> RUNNING` and `DEGRADED -> RUNNING`) each raise `IllegalSupervisionTransition` with the attempted pair in its message.
    requirementARBORA-MESSAGINGLANDED63a66f60915a
    ARBORA-MESSAGING-R002
    Health-gated start
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Health-gated start.** `InboundRouter.start()` transitions a registered backend through `STARTING` and only reaches `RUNNING` once `backend.is_connected` is observed true; a backend that is not connected at start is recorded `STOPPED` (skipped), never `RUNNING`. | A unit test with a fixture backend whose `is_connected` is `False` asserts the router records it as not running and does not create a listener task for it; a connected fixture backend reaches `RUNNING`.
    requirementARBORA-MESSAGINGLANDED63a66f60915a
    ARBORA-MESSAGING-R003
    Bounded restart backoff with healthy-run reset
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Bounded restart backoff with healthy-run reset.** On a recoverable listener failure, `_supervise_backend` moves the backend to `BACKING_OFF`, computing its next delay from `MESSAGING_LISTEN_BACKOFF_BASE_S` (floored at a nonzero value so a zero base never busy-loops), doubling on each consecutive failure, capped at `MESSAGING_LISTEN_BACKOFF_MAX_S` (default 60s); a run lasting at least `MESSAGING_LISTEN_HEALTHY_RESET_S` (default 60s) resets the delay to base before the next failure. | A unit test drives a sequence of simulated short-lived failures and asserts the delay sequence is monotonically bounded by the cap; a separate test simulates one long-lived healthy run followed by a failure and asserts the delay resets to base.
    requirementARBORA-MESSAGINGVERIFIED29a592980f26
    tests/messaging/test_supervision.py:154
    tests/messaging/test_supervision.py:188
    ARBORA-MESSAGING-R004
    Graceful stop and drain
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Graceful stop and drain.** `InboundRouter.stop()` moves every supervised backend to `STOPPING` before cancelling its listener and inbox-reaper tasks, awaits their completion with `return_exceptions=True`, then reports `STOPPED`; a task observing `asyncio.CancelledError` during a backoff wait propagates as clean shutdown and triggers no further restart attempt. | A unit test cancels a router with an in-flight backoff wait and asserts no restart task is scheduled after `stop()` returns and that the task collection is empty.
    requirementARBORA-MESSAGINGVERIFIED29a592980f26
    tests/messaging/test_supervision.py:223
    ARBORA-MESSAGING-R005
    Typed degraded adapter state and configuration-aware health
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Typed degraded adapter state and configuration-aware health.** Arbora records configured adapter failures as DEGRADED with typed reasons. It continues creating other configured channels. R005.1 defines configuration-aware health and alert eligibility. | Named registry and health cases in R005.1 exercise these behaviors.
    requirementARBORA-MESSAGINGSPECIFIED29a592980f26
    785693fbf7a3
    tests/messaging/test_registry_degraded.py:101
    tests/messaging/test_registry_degraded.py:85
    ARBORA-MESSAGING-R005.1
    Typed adapter degradation and configuration-aware health
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Typed adapter degradation and configuration-aware health.** Preserve the configured missing/import-failed adapter record as DEGRADED with AdapterMissing or AdapterImportFailed. Continue creating other configured channels. Expose components.messaging_intake on authenticated GET /api/dashboard/health and graph_configure(action="health"). Return stable enabled, configured, state, alert_eligible, and backends fields. Set enabled only when MESSAGING_INTAKE_ENABLED is explicitly true and KG_DAEMON_ROLE=host. Credentials alone never enable intake. Set configured when at least one supported backend has credential material. Never return credential values. Set state to disabled when intake is off. Use not_configured when enabled but no backend is configured. Use degraded when enabled with any unavailable configured backend. Use healthy only when every configured backend is connected. Set alert_eligible true exactly when enabled and state is not_configured or degraded. Build backends in stable ID order from configured backend IDs and typed degraded-record IDs. Each row has id, configured, state, and nullable reason_code. States are not_configured, disabled, connected, or unavailable. Use not_configured without credentials and disabled when intake is off. Use connected only when enabled and is_connected=true. Otherwise mark configured rows unavailable. Map AdapterMissing to adapter_missing, AdapterImportFailed to adapter_import_failed, and false is_connected to backend_not_connected. Never expose credentials or raw exception text. Alert evaluators may emit only when alert_eligible=true. Health reads never send messages. Keep unauthenticated /health and /health/ready detail-free. | MSG-T07 and MSG-T09–MSG-T12 prove typed failure preservation, state distinctions, alert eligibility, matching authenticated projections, safe output, and detail-free probes.
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R006
    Supervision/adapter ownership boundary
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Supervision/adapter ownership boundary.** Arbora's supervision types import only `agent_utilities.messaging.base.MessagingBackend`'s public adapter contract and `agent_utilities.messaging.models`. Arbora implements no channel adapter and agent-utilities implements no supervision, health gating, or backoff. This requirement links `AU-INTEGRATION-001` (`AU-INTEGRATION-R002`, `AU-INTEGRATION-R019`) as the agent-utilities-owned messaging/router spec this boundary depends on. | A source-level import check confirms `arbora/messaging/{router,registry,service}.py` import no agent-utilities module outside `agent_utilities.messaging.{base,models}` and `agent_utilities.core.config`.
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800
    Messaging adapter contract, command registry and the full channel adapter set (rollup)
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Messaging adapter contract, command registry and the full channel adapter set (rollup).** `arbora.messaging` owns the `MessagingBackend` contract and the capability and event models. It owns the single built-in command registry and the Telegram markdown renderer. It owns seventeen channel adapters, each behind its own install extra. The chat adapters are telegram, mattermost, discord, slack, whatsapp, teams, googlechat and googlemeet. The others are matrix, irc, signal, imessage, line, twitch, synology, voicecall and nextcloud. Children `.1` through `.6` cover model, behavior, wiring, refusal, evidence and hot-path proof. | See each child.
    requirementARBORA-MESSAGINGSPECIFIED9da18258ca1b
    tests/messaging/test_primitives.py:17
    ARBORA-MESSAGING-R800.1
    Model
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Model.** `MessagingBackend`, `MessagingConfig`, `InboundEvent`, `Message`, `SendResult` and the capability declarations are the public records; adapters register through the `agent_utilities.messaging` entry-point group. | `tests/messaging/test_primitives.py::test_command_specs_match_registry_and_filter_by_surface`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.2
    Behavior
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Behavior.** One command registry serves every platform and the terminal. Built-in commands answer locally. Plain text and model-routed or agent-routed commands go to the agent. | `tests/messaging/test_primitives.py::test_builtin_commands_answer_locally`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.3
    Wiring
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Wiring.** Adapters load lazily so importing `arbora.messaging` pulls in no platform SDK; a missing SDK reports its extra by name. | `tests/messaging/test_channel_adapters.py` binds the entry-point group and lazy loading.
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.4
    Refusal
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Refusal.** An unknown command or botname-suffixed command never raises; a command outside the surface is hidden from that surface's listing. | `tests/messaging/test_primitives.py::test_non_builtin_text_falls_through_to_the_agent`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.5
    Evidence
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Evidence.** Tests assert the registry views per surface, built-in replies and the Telegram rendering contract with no network. | `tests/messaging/test_primitives.py::test_render_structure_leaks_no_markdown_markers`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.6
    Hot-path proof
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Hot-path proof.** The proof renders and dispatches ten thousand mixed messages and records p50 and p99 latency per call. | `tests/messaging/test_primitives.py::test_render_inline_forms`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R700
    Action notification and webhook dispatch
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Action notification and webhook dispatch.** `arbora/messaging/action_dispatch.py` delivers the notifications and webhooks of a completed ontology Action from the engine's action outbox event. `NotificationSpec` and `WebhookSpec` are closed Pydantic models. A `Notifier` sink delivers or journals; a webhook goes through an injected HTTP transport or is recorded. Every dispatch returns an outcome record with `delivered`, `transport` and a timestamp from an injected clock. A raising sink or failing transport yields a recorded error and never blocks the Action. `dispatch_action_notification` in `arbora/messaging/service.py` delivers notifications through governed reach. Dispatch is O(1) per spec and holds no shared state, so concurrent dispatches run in parallel. Budget: p50 under 0.1 ms and p99 under 1 ms excluding transport, memory under 1 MiB. Engine side: `EG-UNIFIED-DATA-PLANE-R700`. | `tests/messaging/test_action_dispatch.py` asserts recorded, error, delivered, non-2xx and exception outcomes and that no outcome raises.
    requirementARBORA-MESSAGINGVERIFIEDfb0bc5b69328
    tests/messaging/test_action_dispatch.py:19
    tests/messaging/test_action_dispatch.py:33
    tests/messaging/test_action_dispatch.py:56
    ARBORA-MESSAGING-R800.1000
    Intake lease on the engine WorkItem methods
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Intake lease on the engine WorkItem methods.** One durable WorkItem per `(platform, identity)` admits one inbound poller. Arbora calls the engine's served `submit`, `get`, `claim`, `renew` and `defer` methods and keeps no lease state of its own. | `tests/messaging/test_lease.py`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.1001
    Behavior
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Behavior.** Two contenders for the same platform get one owner. A lost renewal stops that platform only, and intake stops when no platform holds a lease. The renewal thread keeps the caller's context. A stopped intake defers its lease so another owner can claim it. | `tests/messaging/test_lease.py::test_two_contenders_cannot_both_own_intake`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-MESSAGING-R800.1002
    Refusal
    Definition — ARBORA-MESSAGING / ARBORA-MESSAGING — Messaging channel supervision lifecycleCanonical requirement and verification source
    **Refusal.** Intake opens no poller when the engine serves no WorkItem methods. It opens none for a session without a tenant or for a row with another identity. | `tests/messaging/test_lease.py::test_missing_authority_opens_no_poller`
    requirementARBORA-MESSAGINGSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY
    ARBORA-DEPLOY — Portable Arbora development and deployment
    specNoneSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R001
    Worker topology manifest is digest-pinned
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Worker topology manifest is digest-pinned.** Arbora's Kubernetes worker-topology manifest pins each workload to an exact image digest. The workloads are the dispatch, ingest and other workers, their horizontal pod autoscalers, and the stateful set. A floating tag is not allowed. | A manifest lint check fails any workload image reference in the manifest that is not digest-pinned.
    requirementARBORA-DEPLOYLANDEDe7ae64dec334
    ARBORA-DEPLOY-R002
    Executable release-qualification runbook
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Executable release-qualification runbook.** Arbora publishes an executable, step-by-step release-qualification runbook. It covers the graph engine, connector SDK, agent runtime, Arbora itself, the web UI and the connector package fleet. It runs through production redeployment. It is the companion procedure to the exit-criteria matrix. | Each runbook stage is backed by an automated check or script that a reviewer can run directly.
    requirementARBORA-DEPLOYVERIFIED689f232dc362
    d75db1ea42e8
    eaabc7449a93
    tests/deployment/test_release_qualification_runbook.py:32
    tests/deployment/test_release_qualification_runbook.py:47
    tests/deployment/test_release_qualification_runbook.py:58
    tests/deployment/test_release_qualification_runbook.py:72
    ARBORA-DEPLOY-R003
    Pre-push hooks always run the full gate suite
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Pre-push hooks always run the full gate suite.** Arbora's pre-push git hook resolves to its actual pre-commit configuration file. It runs the full gate suite before a push succeeds. A relocated configuration path or a missing hook installation is a failure, never a silent pass-through. | A hook-audit test invokes the generated pre-push shim and confirms it runs the configured gates rather than exiting silently.
    requirementARBORA-DEPLOYVERIFIED4a2d2cd9ac55
    689f232dc362
    c3c6be59a12a
    tests/deployment/test_doctor_prepush_hook.py:22
    tests/deployment/test_doctor_prepush_hook.py:42
    tests/deployment/test_pre_push_hook_shim.py:77
    tests/deployment/test_pre_push_hook_shim.py:91
    ARBORA-DEPLOY-R004
    mypy hook type-checks the test suite
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **mypy hook type-checks the test suite.** Arbora's pre-commit mypy hook type-checks its test suite rather than excluding it. The type errors that the exclusion had hidden are fixed, not suppressed. | The mypy hook runs against the test suite in continuous integration and passes with zero errors.
    requirementARBORA-DEPLOYVERIFIED689f232dc362
    9d8a787b8495
    tests/deployment/test_mypy_hook_scope.py:13
    ARBORA-DEPLOY-R005
    Web UI keeps its component package name
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Web UI keeps its component package name.** Operator decision 2026-10-09: only front-end-facing items carry the Arbora name. The web UI stays the `agent-webui` component (`agent_webui` import, `agent-webui` distribution). These Arbora items keep referencing `agent-webui`. They are import sites and the optional web UI package extra. The extra resolves from the package index. The release workflow checks out no web UI source. They also include preflight checks and browser-control tests and docs. No package rename cutover is required. | A focused test run and the offline lock check confirm every reference resolves against the `agent-webui` package.
    requirementARBORA-DEPLOYVERIFIED15bc1fd4c49e
    d6f16cd447e2
    d75db1ea42e8
    eaabc7449a93
    tests/deployment/test_component_names_and_scripts.py:17
    ARBORA-DEPLOY-R006
    gateway-widgets extra pins a compatible connector floor
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **gateway-widgets extra pins a compatible connector floor.** Arbora's `gateway-widgets` optional extra declares a minimum version for each fleet connector package. That minimum is the first published release compatible with the agent runtime's current module layout. Installing the extra therefore never pulls a connector package that imports a retired module. | The widget test suite passes when the extra is installed from the published package index.
    requirementARBORA-DEPLOYVERIFIED45283d0137b9
    d58ee3e25028
    d6f16cd447e2
    f42856691f97
    tests/gateway/test_gateway_widgets_extra.py:57
    ARBORA-DEPLOY-R007
    Arbora hosts deployment doctor and skill certification
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Arbora hosts deployment doctor and skill certification.** Arbora hosts the sole deployment doctor, skill-certification, OIDC-certification, skill-validation, and fleet-harness/skill-graph test modules. It incorporates any behavior unique to the agent runtime's former deployment package. Its `pyproject.toml` is the canonical source of console-script registrations for this tooling. No equivalent script remains declared by the agent runtime. Rollup: LANDED when every `ARBORA-DEPLOY-R007.<n>` child is LANDED. | A package-layout test confirms the agent runtime's deployment package is absent. It also confirms every related console script resolves to a Arbora-owned module.
    requirementARBORA-DEPLOYLANDEDfd761d59a171
    ARBORA-DEPLOY-R007.1
    `agent-utilities-doctor` console-script collision resolved
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **`agent-utilities-doctor` console-script collision resolved.** Arbora's `pyproject.toml` is the sole declarer of the `agent-utilities-doctor` console script (`arbora.deployment.doctor:main`). The agent runtime's `pyproject.toml` no longer registers the same script name against its own separate `agent_utilities.deployment.doctor:main`. The agent runtime's `agent_utilities.deployment.doctor` module itself may remain while it still has real non-test importers. Only the duplicate console-script registration is required to be gone. | A package-metadata check confirms exactly one installed distribution declares the `agent-utilities-doctor` entry point, and it resolves to `arbora.deployment.doctor:main`.
    requirementARBORA-DEPLOYVERIFIEDd6f16cd447e2
    fd761d59a171
    tests/deployment/test_component_names_and_scripts.py:42
    ARBORA-DEPLOY-R007.2
    `setup-config` console-script collision resolved
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **`setup-config` console-script collision resolved.** Arbora's `pyproject.toml` is the sole declarer of the `setup-config` console script (`arbora.deployment.cli:main`). The agent runtime's `pyproject.toml` no longer registers the same script name against its own separate `agent_utilities.deployment.cli:main`. The agent runtime's `agent_utilities.deployment.cli` module itself may remain while it is still exercised directly (by a test, or via `python -m`). Only the duplicate console-script registration is required to be gone. | A package-metadata check confirms exactly one installed distribution declares the `setup-config` entry point, and it resolves to `arbora.deployment.cli:main`.
    requirementARBORA-DEPLOYVERIFIEDd6f16cd447e2
    fd761d59a171
    tests/deployment/test_component_names_and_scripts.py:51
    ARBORA-DEPLOY-R007.3
    `arbora-daemon` console-script collision resolved
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **`arbora-daemon` console-script collision resolved.** Arbora's `pyproject.toml` is the sole declarer of the `arbora-daemon` console script (`arbora.gateway.daemon:main`). The agent runtime's `pyproject.toml` no longer registers the same script name against its own separate `agent_utilities.gateway.daemon:main`. The agent runtime's `agent_utilities.gateway.daemon` module itself may remain while it still has real non-test importers. Only the duplicate console-script registration is required to be gone. | A package-metadata check confirms exactly one installed distribution declares the `arbora-daemon` entry point, and it resolves to `arbora.gateway.daemon:main`.
    requirementARBORA-DEPLOYLANDEDfd761d59a171
    ARBORA-DEPLOY-R007.4
    `agent-utilities-venv` console-script collision resolved
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **`agent-utilities-venv` console-script collision resolved.** Arbora's `pyproject.toml` is the sole declarer of the `agent-utilities-venv` console script (`arbora.deployment.venv_sync:main`). The agent runtime's `pyproject.toml` no longer registers the same script name against its own separate `agent_utilities.deployment.venv_sync:main`. The agent runtime's `agent_utilities.deployment.venv_sync` module itself may remain while it still has real non-test importers. Only the duplicate console-script registration is required to be gone. | A package-metadata check confirms exactly one installed distribution declares the `agent-utilities-venv` entry point, and it resolves to `arbora.deployment.venv_sync:main`.
    requirementARBORA-DEPLOYLANDEDfd761d59a171
    ARBORA-DEPLOY-R007.5
    `arbora-release-canary` console-script collision resolved
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **`arbora-release-canary` console-script collision resolved.** Arbora's `pyproject.toml` is the sole declarer of the `arbora-release-canary` console script (`arbora.deployment.release_canary:main`). The agent runtime's `pyproject.toml` no longer registers the same script name against its own separate `agent_utilities.deployment.release_canary:main`. The agent runtime's `agent_utilities.deployment.release_canary` module itself may remain while it still has a real non-test importer. Only the duplicate console-script registration is required to be gone. | A package-metadata check confirms exactly one installed distribution declares the `arbora-release-canary` entry point, and it resolves to `arbora.deployment.release_canary:main`.
    requirementARBORA-DEPLOYLANDEDfd761d59a171
    ARBORA-DEPLOY-R007.6
    The Arbora doctor checks the served engine families and graph connections
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **The Arbora doctor checks the served engine families and graph connections.** `engine_domains` fails when no `engine_<domain>` family is served. On `tiny` it warns instead. `graph_connections` validates every declared connection against the registry. On a live run it probes each connection and reports only redacted aggregate counts. The Langfuse MCP child probe runs through the served multiplexer. Child slice of `ARBORA-DEPLOY-R007`. | `tests/deployment/test_doctor_graph.py` and the Langfuse probe tests in `tests/deployment/test_doctor.py`.
    requirementARBORA-DEPLOYVERIFIED9e7f6499d96f
    tests/deployment/test_doctor_graph.py:206
    ARBORA-DEPLOY-R008
    Arbora hosts its own boundary modules
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Arbora hosts its own boundary modules.** Arbora hosts its own security request-identity, error-surface, browser-auth and security-policy-middleware modules with their conformance tests. It also hosts its own gateway and runtime health and metrics observability. It also hosts its own profile-guard, install, release-channel, live-mount-guard, paths, workspace and config-admin core modules. It also hosts its own hook-installer, agent-manager-dashboard, release-catalog and gateway-client modules. It also hosts its own connection-registry and engine-discovery modules under `arbora.fleet`. | A package-layout census confirms these modules are imported only from their Arbora location. It also confirms the agent runtime no longer declares equivalents.
    requirementARBORA-DEPLOYLANDEDae856bc9a101
    ARBORA-DEPLOY-R009
    Arbora owns hosting/deployment configuration settings
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Arbora owns hosting/deployment configuration settings.** Arbora owns the hosting and deployment settings. They are split out of the agent runtime's monolithic configuration module. Connector base settings move to the connector SDK's own configuration module. Agent and model settings remain with the agent runtime. | A configuration-schema test confirms Arbora resolves its hosting and deployment settings from its own module. The module does not import the agent runtime's configuration internals.
    requirementARBORA-DEPLOYSPECIFIEDae856bc9a101
    ARBORA-DEPLOY-R009.1
    Arbora hosts a typed `arbora.core.config_admin` hosting/deployment settings module
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Arbora hosts a typed `arbora.core.config_admin` hosting/deployment settings module.** Arbora resolves host, port, deploy-profile and data-dir settings from its own validated, typed module. It has no import of the agent runtime's configuration internals. | A test confirms the module's source has no reference to the agent runtime's configuration module. It also confirms the module resolves documented defaults and environment overrides. It also confirms the module rejects an invalid port or deploy profile.
    requirementARBORA-DEPLOYVERIFIEDae856bc9a101
    tests/core/test_config_admin.py:17
    tests/core/test_config_admin.py:30
    tests/core/test_config_admin.py:41
    tests/core/test_config_admin.py:57
    ARBORA-DEPLOY-R009.4
    Arbora owns the `graph_config` operation
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Arbora owns the `graph_config` operation.** `arbora.core.agent_config_admin` backs the `graph_config` describe, get, diff, reload and set actions. Fields come from the settings model, and secrets are redacted by reference. An ActionPolicy `config.set` gate denies a change when the policy is unavailable. Each change writes a `:ConfigChange` provenance node and reconciles the served catalog. Child slice of `ARBORA-DEPLOY-R009`. | `tests/core/test_agent_config_admin.py` and `tests/core/test_agent_config_admin_type_names.py`.
    requirementARBORA-DEPLOYSPECIFIEDtests/core/test_agent_config_admin.py:432
    tests/core/test_agent_config_admin_type_names.py:21
    ARBORA-DEPLOY-R010
    Ecosystem and repository development skills are published
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Ecosystem and repository development skills are published.** Arbora publishes an ecosystem-wide development skill and its own repository development skill. They document architecture boundaries, build-host requirements, required gates, contract regeneration, and identity setup for this codebase. Arbora's `AGENTS.md` is trimmed to navigation. It points to that skill. | A documentation-freshness check confirms the skill content matches current gate commands. It also confirms `AGENTS.md` contains the pointer rather than duplicated procedure.
    requirementARBORA-DEPLOYSPECIFIED96e23d7f4ed4
    ARBORA-DEPLOY-R011
    Deployment layout test suite passes in full
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Deployment layout test suite passes in full.** Arbora's deployment manifest layout passes its full deployment test suite with no failing tests. | The deployment test suite reports all tests passing, including cases that previously failed on this layout.
    requirementARBORA-DEPLOYLANDED2b605acbf3a6
    962462cdc788
    ARBORA-DEPLOY-R012
    Pipelines dependency is referenced at main, never pinned
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Pipelines dependency is referenced at main, never pinned.** Arbora's pre-commit configuration and GitHub Actions workflows reference the shared pipelines repository at its default branch. They do not use a pinned commit. Arbora therefore tracks pipeline fixes automatically. | A reference-pin lint check fails a pipelines entry that names a commit. The entry is a pre-commit `rev:` or a workflow `uses:`. It must name the default branch.
    requirementARBORA-DEPLOYLANDED0f780429fb19
    6c4b89f91732
    ARBORA-DEPLOY-R013
    Development and production deployment profiles
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Development and production deployment profiles.** Arbora's deployment skills provide a development profile. It uses Docker Compose on a single host with no or local identity. They also provide a production profile. It uses Kubernetes/Helm with external or local identity. Each profile runs the graph engine as a sidecar. Each profile enforces an identity mode with a forced first administrator. Each profile applies default authorization policy and selects an appropriate secrets backend. Each profile also performs first-boot verification. These Arbora-owned skills replace the agent runtime's retired deployment copies. The connector SDK's federation capability replaces any direct graph-database mirror. | A first-boot test provisions each profile. It confirms readiness, administrator creation, and the selected secrets backend before accepting traffic.
    requirementARBORA-DEPLOYSPECIFIED0da5f7440603
    2abb9ebb3905
    99028d9d9f82
    d75db1ea42e8
    e9d992980035
    ARBORA-DEPLOY-R014
    Agent runtime split into connector SDK, Arbora and engine
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Agent runtime split into connector SDK, Arbora and engine.** The former agent runtime is split into separately published repositories. They are the connector SDK, Arbora, and the graph engine. Each publishes its own installable package. Arbora depends on the others only through their public APIs. | Arbora's dependency manifest pins each split repository's published package. It does not pin a path into the former combined source tree.
    requirementARBORA-DEPLOYLANDEDfe7c5c9a4a32
    ARBORA-DEPLOY-R015
    AVX2 guard test runs on any hosted runner
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **AVX2 guard test runs on any hosted runner.** Arbora's AVX2 guard test validates CPU feature-detection logic. It does not assert that the execution host lacks the AVX2 instruction set. It therefore passes on both AVX2-capable and non-AVX2 hosts. | The guard test passes in continuous integration on a standard hosted runner. It also passes on a non-AVX2 target host.
    requirementARBORA-DEPLOYLANDED67a387e5dbed
    ARBORA-DEPLOY-R016
    One host daemon process shares the in-pod engine
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **One host daemon process shares the in-pod engine.** A Kubernetes deployment pins its serving container to the client role. It runs exactly one separate host-role daemon container in the same pod. The daemon container uses the serving image and source mounts. It runs `arbora.gateway.daemon` with daemons enabled. It serves no MCP, web UI or messaging intake. It connects to the in-pod engine over the shared Unix socket volume. It never spawns an engine. It authenticates with the Arbora process identity. It shares the task-queue data volume with the serving container. | A manifest contract test asserts these items. They are exactly one host-role container, the client-role serving container, and the daemon entry point. They also include the Unix socket endpoint, the shared volumes and the shared image. A server-side dry run accepts the manifest. A live receipt shows the daemon holding the host lock. The receipt also shows the sparse index rising above zero.
    requirementARBORA-DEPLOYLANDED8b20c11b5dc5
    eb31b7757681
    f3bcee6dfbcf
    ARBORA-DEPLOY-R017
    Deployment placement and sequencing go through the engine decision capability
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Deployment placement and sequencing go through the engine decision capability.** Arbora adds no deployment planner. Where to run is one typed Decide question asked of the engine (`EG-DECISION-ENGINE-R046`/`R111`). The engine assembles the ordered fleet-tool steps as an agent graph (`AgentAssemble`, `EG-DECISION-ENGINE-R036`). The operator sees that graph and confirms it through `arbora.plan/confirm`. Manifests are the existing `deploy/` artifacts. This row supersedes the retired agent-utilities planner (AU-BOUNDARY-R002.2) without re-creating it. Rollup: LANDED when every `ARBORA-DEPLOY-R017.<n>` child is LANDED. | A package-layout test shows no arbora plan type or backend selection exists. The children also pass.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.1
    Placement Decide mapping
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Placement Decide mapping.** Add a typed request/response mapping in arbora/deployment/placement.py. It asks the engine one placement Decide question. It returns the engine decision verbatim. It makes no backend selection in arbora. It depends on `EG-DECISION-ENGINE-R046`/`R111`. It needs the engine prerequisite below. | tests/deployment/test_placement_decide.py: request fields, decision passed through unchanged, no backend names referenced in arbora.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.2
    Request assembly for a deployment task
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Request assembly for a deployment task.** Add a function in arbora/deployment/assembly.py. It submits a deployment task to the engine's `AgentAssemble` (`EG-DECISION-ENGINE-R036`, routed per `R044`). It returns the engine's assembled graph unmodified. | tests/deployment/test_deploy_assembly_request.py with a fake engine: task and capabilities sent, graph returned as-is.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.3
    Present the assembled graph read-only
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Present the assembled graph read-only.** Add a read-only presenter in arbora/deployment/assembly_view.py. It prints the engine-returned graph for the operator. It cannot mutate or dispatch the graph. | tests/deployment/test_deploy_assembly_view.py: output lists nodes in engine order; presenter has no dispatch path.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.4
    Confirm through plan/confirm
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Confirm through plan/confirm.** Route operator confirmation of the assembled graph through `arbora.plan/confirm`. The rows are `ARBORA-A2A-R005.1`/`R006.1`. Record the choice with `decide.commit`. The code lives in arbora/deployment/assembly.py. It calls arbora/a2a/application.py and arbora/api/ops/decide.py. | tests/deployment/test_deploy_confirm.py: confirmation goes only through plan/confirm; nothing runs unconfirmed.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.5
    Typed refusal while unavailable
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Typed refusal while unavailable.** Return a typed refusal in arbora/deployment/assembly.py. Use it when the engine assemble handler is unavailable. Use it also when the confirm surface is unavailable. Today both are refusal stubs. | tests/deployment/test_deploy_refusal.py: stub assemble and stub confirm each produce a distinct typed refusal. Neither has a side effect.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.6
    Existing artifact per target
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Existing artifact per target.** In arbora/deployment/artifacts.py, select the existing deploy artifact for a decided target from deploy/environments. Add no renderer. Compose, helm and swarm are supported. Systemd is explicitly unsupported. | tests/deployment/test_deploy_artifacts.py: each of compose, helm, swarm resolves to an existing file. Image references are digest-pinned via scripts/check_deployment_image_digests.py. Systemd is refused as unsupported.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.7
    In-process unchanged
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **In-process unchanged.** Keep `start_composed_services` as the in-process path. Add no wrapper or plan type. A test covers this. | tests/deployment/test_deployment_in_process.py: live start calls `start_composed_services` with a fake supervisor and composition from `detect_composition`.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.8
    Thin setup-config subcommand
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Thin setup-config subcommand.** In arbora/deployment/cli.py, add a `setup-config deploy` subcommand. It asks the engine (rows .1 and .2). It prints the returned decision and assembled graph. It holds no planning logic. | tests/deployment/test_deploy_cli.py: output equals the fake engine's decision and graph. The handler imports no backend or renderer.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.9
    Checker dispatches on document shape
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Checker dispatches on document shape.** In scripts/check_deployment_image_digests.py, add one dispatch in `_check_resource`. A document with a top-level `services` mapping and no `kind` goes to a new compose/swarm walker. Kubernetes documents are unchanged. | tests/deployment/test_image_digests.py: a Compose fixture is walked; every existing Kubernetes case still passes.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.10
    Compose/Swarm literal images use the existing grammar
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Compose/Swarm literal images use the existing grammar.** In scripts/check_deployment_image_digests.py, add the walker `_check_services`. It passes each service `image` through `_valid_image` and counts it. It rejects a service with no `image`. | tests/deployment/test_image_digests.py: pinned literal accepted, tagged literal and missing image rejected with a `services.<name>.image` location.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.11
    Template mode accepts the required-variable form
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Template mode accepts the required-variable form.** Add one rule in scripts/check_deployment_image_digests.py. An image of exactly `${NAME:?...}` is accepted and counted as pin-required. `${NAME:-default}` and `${NAME}` are validated or rejected, never accepted blindly. | tests/deployment/test_image_digests.py: `${X:?m}` accepted; `${X:-repo:latest}` and bare `${X}` rejected; `${X:-repo@sha256:<hex>}` accepted.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.12
    Resolve mode validates the given value
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Resolve mode validates the given value.** Add a repeatable `--set NAME=value` argument to scripts/check_deployment_image_digests.py. It substitutes the value before validation. Validation then sees the real reference. | tests/deployment/test_image_digests.py: a digest passes. A tag fails. An unused name is an error.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.13
    Run the checker on the shipped Compose and Swarm files
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Run the checker on the shipped Compose and Swarm files.** Add one test that runs the script against deploy/compose/compose.yaml and deploy/swarm/stack.yml. Run it in template mode. Run it again with a fixture digest via `--set`. | tests/deployment/test_deploy_artifacts.py: both files exit 0 and report one image each; a tag value for ARBORA_IMAGE exits 1.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.14
    Helm pinned and default renders
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Helm pinned and default renders.** Add a values fixture with a digest for `arbora.image`, `engine.image` and one connector. Add a test that renders it and pipes the output to the script. Skip the test when `helm` is absent. The pinned render must exit 0 with the arbora, daemon, engine and connector images checked. A default-values render must exit 1. | tests/deployment/test_helm_image_digests.py: pinned render passes; default render fails on `replace-me`.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.15
    systemd stays refused
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **systemd stays refused.** Add the typed `unsupported_target` refusal naming the bare-metal reference for `systemd` in arbora/deployment/artifacts.py (extends R017.6). | tests/deployment/test_deploy_artifacts.py: `systemd` refused, compose/helm/swarm still resolve.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R017.16
    Environment policy drives the check
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Environment policy drives the check.** Add one function in arbora/deployment/artifacts.py. It maps `release.tag_policy` from the selected deploy/environments profile to a digest-check decision. The check is required for `digest-pinned`. It is skipped with an explicit note for `floating-tag`. | tests/deployment/test_deploy_artifacts.py: prod and test require the check, dev reports it skipped by policy.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018
    Small deployment shares one engine per host
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Small deployment shares one engine per host.** A small Arbora deployment must start its own engine only when none answers on the host. Every Arbora or agent server on that host must share one engine. Rollup: LANDED when every `ARBORA-DEPLOY-R018.<n>` child is LANDED. | A package-layout test shows no second engine is spawned. The children also pass.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.1
    Engine endpoint type
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Engine endpoint type.** In arbora/mcp_server/composition.py, Arbora must model an engine endpoint. It is a Unix socket path or a remote URL. | tests/deployment/test_engine_endpoint.py: both forms parse; an empty or malformed endpoint is rejected.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.2
    Probe before start
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Probe before start.** In arbora/mcp_server/composition.py, `detect_composition` must probe the configured endpoint. It must report a running engine before any start decision. | tests/deployment/test_engine_probe.py: live fake engine detected; dead socket reported absent.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.3
    Start only when absent
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Start only when absent.** `start_composed_services` must start the engine only when the probe finds none. It must record that it is the owner. | tests/deployment/test_engine_owner.py: absent starts once and records owner; present starts nothing.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.4
    Second process attaches
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Second process attaches.** A second Arbora or agent server on the same host must attach to the running engine and spawn none. | tests/deployment/test_engine_attach.py: two processes, one engine, spawn count is one.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.5
    Owner stands down the engine
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Owner stands down the engine.** The owner must stop the engine it started on exit when no attached client remains. Otherwise it must leave the engine running. | tests/deployment/test_engine_standdown.py: last client exit stops the engine; early owner exit does not.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.6
    Remote engine skips local start
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Remote engine skips local start.** A configured remote engine URL must skip local start. Arbora must refuse to start when that URL carries no valid credential. | tests/deployment/test_remote_engine.py: remote URL starts nothing locally; missing credential gives a typed refusal.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R010.1
    Preserve development skill coverage
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Preserve development skill coverage.** Model: The original parent remains the complete contract. Behavior: Retain every original skill topic, architecture boundary, build-host rule, gate, regeneration command and identity setup obligation. Wiring: Use the original documentation-freshness check and AGENTS navigation check. Refusal: New child evidence cannot replace any original acceptance obligation. Evidence: Retain the original parent receipts and require its complete acceptance. | The complete original R010 documentation acceptance remains binding.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R010.2
    Keep deployment guidance executable and synchronized
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Keep deployment guidance executable and synchronized.** Model: `DeploymentExample` binds profile, configuration schema, transport, argument vector and expected probe. Behavior: Keep matching deployment examples in the packaged skill, README and documentation, including stdio and streamable HTTP. Wiring: Extend the existing development and deployment skills; derive example fields from the same host declarations and parser. Refusal: Undocumented consumed variables, unsupported commands and divergent profiles fail the documentation check. Evidence: Record example digests and actual parser and probe results. | Extract all three surfaces, parse their examples and start both transport fixtures. An obsolete flag or missing required field fails.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R010.3
    Publish complete supported-profile instructions
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Publish complete supported-profile instructions.** Model: Each profile example declares prerequisites, install source, authority setup, startup, probes, logs and shutdown. Behavior: Document production package or pinned-image installation and explicit development editable installation separately. Wiring: Reuse the profile matrix under R013 and public deployment skill references. Refusal: A missing adapter stays unavailable; guidance must not present an unimplemented target as supported. Evidence: Bind each instruction set to its profile digest and repeatable clean-environment commands. | A contributor follows each supported profile from a fresh environment to a real served probe, then performs the documented shutdown.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.1
    Preserve original profile and first-boot obligations
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Preserve original profile and first-boot obligations.** Model: The original parent remains the complete contract. Behavior: Retain both original profiles, identity modes, forced administrator, policy, secrets, sidecar topology and first-boot checks. Wiring: Keep Arbora deployment skill ownership and SDK federation replacing direct graph-database mirrors. Refusal: New child evidence cannot replace any original acceptance obligation. Evidence: Retain the original parent receipts and require its complete acceptance. | The original first-boot tests still prove readiness, administrator creation and the chosen secrets backend before traffic.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.2
    Record explicit component deploy or reuse choices
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Record explicit component deploy or reuse choices.** Model: `ComponentDeploymentChoice` binds component ID, selected action, endpoint reference, profile and operator confirmation. Behavior: Ask separately for every component; select deploy or reuse explicitly. Preserve operator tunings in the resolved configuration. Wiring: Extend `deployment/cli.py:134` and `genesis_environments.py`; submit choices as constraints to existing R017 engine decisions. Refusal: Missing choices, conflicting endpoints and undeclared components refuse before deployment. Evidence: Record the confirmed component inventory and its canonical digest without credentials. | Run onboarding with all-new, all-reused and mixed components. The actual presented choices match the confirmed inventory exactly.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.3
    Make reused components connect-only
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Make reused components connect-only.** Model: A reuse choice is an immutable no-deployment constraint in the approved request. Behavior: Validate connectivity and compatibility without installing, replacing, configuring remotely or restarting the existing component. Wiring: Apply the constraint before every deployment action under R017 and the SDK effect boundary. Refusal: A plan containing effects for a reused component refuses before any source call. Unreachable reuse never falls back to deployment. Evidence: Record read-only probes and zero create, update, delete, restart and credential-write effects for reused components. | Inject a create or update for a reused service and require zero effects. A healthy reused service connects without mutation.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.4
    Define the complete deployment target matrix
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Define the complete deployment target matrix.** Model: Each profile binds an explicit target, runtime and privilege triple from the plan matrix. Behavior: Standalone and compose each require the cross-product of daemon-managed and daemonless runtimes with rootful and rootless modes. Wiring: Extend existing profile validation and deployment artifacts; R017 remains the placement and assembly authority. Refusal: Missing target adapters or required privileges yield `unsupported_target`; never silently substitute another runtime. Evidence: Record selected target, privilege mode, package or image digest, capability probe and artifact digest. | Derive cases from every declared triple and require the complete container cross-product. Each cell needs served success and no-effect refusal evidence.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.5
    Bind confirmed profiles to governed deployment
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Bind confirmed profiles to governed deployment.** Model: Confirmation binds component choices, target, resolved configuration digest, artifact digest and checked actor. Behavior: Present engine-produced placement and ordered steps; admit only the confirmed exact plan before SDK source effects. Wiring: Reuse R017 and ARBORA-A2A-R005/R006; their missing deployment-question and confirmation producers remain prerequisites. Refusal: Changed choices, stale artifacts, unavailable authority and unmatched receipts refuse. Arbora creates no parallel deployment planner. Evidence: Join confirmed request, engine decision, SDK effects and served post-deploy probes. | A valid mixed deployment changes only deploy-marked components. Altered bindings cause zero deployment effects through the real command.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.6
    Prove component choices and target profiles
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Prove component choices and target profiles.** Model: Seeded component inventories cover deploy, reuse, compatibility and target capability combinations. Behavior: Invoke the actual onboarding command, governed application and served first-boot probes. Wiring: Proposed `tests/deployment/test_component_choices_served.py` uses controlled services and the existing R017 path. Refusal: Mocked plan rendering alone cannot prove no-effect reuse or functional target startup. Evidence: Record exact component effects, resource identities, profile digests, readiness and surviving reused services. | For seed 4110, run 32 mixed inventories plus cases derived from every matrix triple. Omitted privilege cells fail coverage; refused plans cause zero effects.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.7
    Preserve reuse through engine attachment
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Preserve reuse through engine attachment.** Model: The confirmed engine choice binds the selected endpoint and its compatibility evidence. Behavior: A reuse-marked engine only attaches; a dead endpoint never authorizes a local replacement. All existing R018 children still bind. Wiring: Extend `detect_composition` and `start_composed_services` using the R013 confirmed choice. Refusal: Unavailable or incompatible reuse returns a typed refusal with zero starts. Evidence: Record actual endpoint identity and engine start count across repeated starts. | Two hosts reuse one engine, then repeat with it unavailable. The unavailable case starts zero replacement engines.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R018.8
    Keep reused resources alive across host shutdown
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Keep reused resources alive across host shutdown.** Model: Lifecycle ownership distinguishes a created engine from a reused endpoint. Behavior: Stop only resources this start owns under the original last-client rule; never stop a reused service. Wiring: Use the existing composition supervisor and R018.3 through R018.6 ownership contract. Refusal: Unknown ownership refuses destructive cleanup rather than guessing. Evidence: Record shutdown decisions and independent post-exit probes of reused endpoints. | Restart and stop both host clients. The reused engine remains reachable; the original owned-engine last-client tests remain required.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R009.2
    EG:53 Arbora definition slice
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **EG:53 Arbora definition slice.** EG:53 primary-owner slice. Residual: No complete engine-plus-front-door single-binary or single-image deployment with zero external-service dependency and clustered contract parity is defined. A sidecar profile and CPU-only scorer do not prove the complete deployment. Arbora minimum action: Extend existing portable deployment/EG parity definitions with a concrete single binary/image profile. External-dependency-free acceptance and explicit capability/refusal parity matrix; preserve LocalOnly refusals. Producer/consumer boundary: Arbora small deployment package/front door -> public EG embedded/served contract; packaging. Dependency inventory and clustered capability/refusal comparison are missing. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-DEPLOY-R009, EG-TYPED-PACKS-R088, EG-TYPED-PACKS-R012`. Source record SHA-256: `e6289ca324829050d73bcc2f6a5ff0d1611340cc946f4c708100aa06909e2f46`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/epistemic-graph.tsv:53, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:36#sha256=eafc1061748cc61b8c95da4e98d83320cfd97507b03b0483a3be0994c90e4a42, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:138#sha256=5dc5bfe8c152902c9b4cde8142aadc6b792f76e3c53a82598787abe09e30e096, arbora/specs/portable-deployment/requirements.md:23#sha256=9754354bcd7c424ef7deec601e94a02bc76cad816d58afaa4ea21a92ad147c2a, arbora/specs/portable-deployment/requirements.md:26#sha256=f7ac9167bd8aee69b61214dcee576468ce98236dfae380409964f225bb868c33`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/7`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-DEPLOY-R009, EG-TYPED-PACKS-R088, EG-TYPED-PACKS-R012`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/epistemic-graph.tsv:53, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:36#sha256=eafc1061748cc61b8c95da4e98d83320cfd97507b03b0483a3be0994c90e4a42, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:138#sha256=5dc5bfe8c152902c9b4cde8142aadc6b792f76e3c53a82598787abe09e30e096, arbora/specs/portable-deployment/requirements.md:23#sha256=9754354bcd7c424ef7deec601e94a02bc76cad816d58afaa4ea21a92ad147c2a, arbora/specs/portable-deployment/requirements.md:26#sha256=f7ac9167bd8aee69b61214dcee576468ce98236dfae380409964f225bb868c33`. This definition does not assert these tests have run.
    requirementARBORA-DEPLOYSPECIFIED9e7f6499d96f
    tests/deployment/test_small_profile_footprint.py:31
    ARBORA-DEPLOY-R009.2.1
    Small-profile import footprint
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Small-profile import footprint.** A cold import of the served Arbora surface loads no external-service client library. The gateway routes and the MCP server entry import without a message broker, relational, labelled-property or remote RDF store client. Child slice of `ARBORA-DEPLOY-R009.2`. | `tests/deployment/test_small_profile_footprint.py` imports the served surface in a clean interpreter and asserts that no forbidden driver module is loaded.
    requirementARBORA-DEPLOYSPECIFIEDtests/deployment/test_small_profile_footprint.py:32
    ARBORA-DEPLOY-R009.2.2
    Single-image deployment with capability parity
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Single-image deployment with capability parity.** One binary or one image serves the engine and the front door with no external service. An explicit matrix records capability and refusal parity with the clustered contract. LocalOnly refusals stay in place. Child slice of `ARBORA-DEPLOY-R009.2`. | An acceptance run boots the single image with no external service and checks each matrix row.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R009.3
    EG:57 Arbora definition slice
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **EG:57 Arbora definition slice.** EG:57 primary-owner slice. Residual: No complete operator-selected import/serve path with digest provenance and duplicate ontology/drift refusal is defined. Local/remote deployment choice cannot create a second ontology authority. Arbora minimum action: Link Arbora deployment selection to approved EG schema import and served digest readback; define duplicate/drift refusal. Any external triple-store projection remains read-only and traces to EG revision. Producer/consumer boundary: Arbora deployment config -> SDK source candidate -> EG schema admission/attachment -> governed served read; selected-store handoff remains incomplete. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `EG-TYPED-PACKS-R051, EG-TYPED-PACKS-R090, SDK-SOURCE-INGEST-R003, ARBORA-DEPLOY-R009`. Source record SHA-256: `cbbc05f2ce41a1ad33863fdaaceecd0c0f22dc8c4cb8f25801e756cda916993a`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:91#sha256=aacd0b059b7d4c4481383e40c7b3f35f65613361b40b0f8fc6d918cab6bd2cbc, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:140#sha256=aeb0e1d08d0af2df8d8a074e9f02eaee3efce008e70a60ea7737b4b23ef57e3d, arbora/specs/portable-deployment/requirements.md:18#sha256=39d3ea5e2c0bdfe9f6f886b1dcf848db749c4c80321dbaae5f1d4fbc409b7ede, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:7#sha256=37dd3173ac59a161cd0b3e744de22e09e5691da3063d892ab9cb584c43bbc17e, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:141#sha256=5f792f1f35414f5fd55c052eb6cd7b5f44694bb5eaeaae1720782388e5311109, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:119#sha256=1bd66eae29eea58962751d72bb58380ccc19eab69477eee9632492d06e250b57`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/8`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `EG-TYPED-PACKS-R051, EG-TYPED-PACKS-R090, SDK-SOURCE-INGEST-R003, ARBORA-DEPLOY-R009`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-70.json, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:91#sha256=aacd0b059b7d4c4481383e40c7b3f35f65613361b40b0f8fc6d918cab6bd2cbc, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:140#sha256=aeb0e1d08d0af2df8d8a074e9f02eaee3efce008e70a60ea7737b4b23ef57e3d, arbora/specs/portable-deployment/requirements.md:18#sha256=39d3ea5e2c0bdfe9f6f886b1dcf848db749c4c80321dbaae5f1d4fbc409b7ede, agent-connector-sdk/specs/SDK-SOURCE-INGEST/requirements.md:7#sha256=37dd3173ac59a161cd0b3e744de22e09e5691da3063d892ab9cb584c43bbc17e, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:141#sha256=5f792f1f35414f5fd55c052eb6cd7b5f44694bb5eaeaae1720782388e5311109, epistemic-graph/specs/typed-packs-and-catalog/requirements.md:119#sha256=1bd66eae29eea58962751d72bb58380ccc19eab69477eee9632492d06e250b57`. This definition does not assert these tests have run.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R013.7
    ARBORA:12 Arbora definition slice
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **ARBORA:12 Arbora definition slice.** ARBORA:12 primary-owner slice. Residual: These contracts do not define default vault storage for all secrets and environment values with guided setup. They also omit enterprise root-bundle propagation to every touched system. Arbora minimum action: Extend existing deployment/secrets/TLS definitions with default vault coverage. Guided setup and a complete touched-system root-bundle propagation/verification matrix. Preserve certificate verification; no bypasses or inferred blanket trust. Producer/consumer boundary: Arbora guided deployment/secrets broker -> vault references. The flow also distributes the enterprise trust bundle to SDK transport and every deployed component. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `ARBORA-DEPLOY-R013, ARBORA-INGRESS-R001`. Source record SHA-256: `2fb105e779dc00dd943d15b778a4563b6298318b40cbf74d37196caa71df7df2`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:12, arbora/specs/portable-deployment/requirements.md:23#sha256=9754354bcd7c424ef7deec601e94a02bc76cad816d58afaa4ea21a92ad147c2a, arbora/specs/public-ingress-identity/requirements.md:5#sha256=3856373436eb61949d4a8b0f3309bfa22aaadf69aac5b3b433f711bc9bd49af6, agent-connector-sdk/specs/SDK-CONNECTOR-CONTROL/requirements.md:23#sha256=a6dfc990dacd6a5b6e1906649b3a16a04beffdd707205cefb79bb34b9a0d3516, agent-connector-sdk/specs/SDK-CONNECTOR-CONTROL/requirements.md:45#sha256=7e7e8b33e2e7bf9f8a9c03cc5acce786553427862a0e9a3fc2f39b91abda7e25`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/10`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `ARBORA-DEPLOY-R013, ARBORA-INGRESS-R001`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:12, arbora/specs/portable-deployment/requirements.md:23#sha256=9754354bcd7c424ef7deec601e94a02bc76cad816d58afaa4ea21a92ad147c2a, arbora/specs/public-ingress-identity/requirements.md:5#sha256=3856373436eb61949d4a8b0f3309bfa22aaadf69aac5b3b433f711bc9bd49af6, agent-connector-sdk/specs/SDK-CONNECTOR-CONTROL/requirements.md:23#sha256=a6dfc990dacd6a5b6e1906649b3a16a04beffdd707205cefb79bb34b9a0d3516, agent-connector-sdk/specs/SDK-CONNECTOR-CONTROL/requirements.md:45#sha256=7e7e8b33e2e7bf9f8a9c03cc5acce786553427862a0e9a3fc2f39b91abda7e25`. This definition does not assert these tests have run.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R010.4
    ARBORA:13 Arbora definition slice
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **ARBORA:13 Arbora definition slice.** ARBORA:13 cross-owner slice. Residual: Configured function-argument-count and try-block-statement-count limits, enforced as build failures naming each violating function. Have no exact definition in the reviewed requirements. Arbora minimum action: Add the two explicit configured rules and named-function failure behavior to the shared gate requirements. Bind Arbora adoption. Use per-rule passing/failing fixtures; do not infer coverage from unrelated KISS scanner fixes. Producer/consumer boundary: Shared pipelines complexity gate -> Arbora configured build/hook consumer; exact two-rule producer/configuration/reporting contract is missing. External engine, SDK, AU, Pipelines or WebUI behavior remains owned there; this row specifies only Arbora. Current IDs: `none assigned in this packet`. Source record SHA-256: `2c94038d68d0fa77032073b0ff5021c7cec8d1a104945633a7d9a791c2b0957f`. Reviewed evidence paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:13, epistemic-graph/specs/public-engine-contract-and-release/requirements.md:22#sha256=df5c58b7f4922c1bb7cc4db192856f9bda1882cfc196757db8726e83f9bf7091, epistemic-graph/specs/public-engine-contract-and-release/requirements.md:19#sha256=5cb8e973e154d9fd8e389bdaeab1acdfbdb2791804533714726f146692be0186, epistemic-graph/specs/public-engine-contract-and-release/requirements.md:23#sha256=68dc0ba9fceb65454a5ccbf683d06991320352011cc2ec3f87bb0e80a4fed9ba`. Packet row: `spec-audit/reconciliation/repository-batches-20261012/arbora.json#/rows/36`. No implementation or runtime evidence is claimed. | Future Arbora tests must prove the owner behavior and cover every positive, refusal, and zero-effect case defined above. Retain all existing parent acceptance for IDs `none assigned in this packet`. Use the exact reviewed source paths: `spec-audit/reconciliation/fresh-validation-20261012/semantic-reviews/incoming-24-owner-supplements.json, spec-audit/writer-queue-merged/arbora.tsv:13, epistemic-graph/specs/public-engine-contract-and-release/requirements.md:22#sha256=df5c58b7f4922c1bb7cc4db192856f9bda1882cfc196757db8726e83f9bf7091, epistemic-graph/specs/public-engine-contract-and-release/requirements.md:19#sha256=5cb8e973e154d9fd8e389bdaeab1acdfbdb2791804533714726f146692be0186, epistemic-graph/specs/public-engine-contract-and-release/requirements.md:23#sha256=68dc0ba9fceb65454a5ccbf683d06991320352011cc2ec3f87bb0e80a4fed9ba`. This definition does not assert these tests have run.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600
    Process singleton locks guard the served host (rollup)
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Process singleton locks guard the served host (rollup).** Children `.1` to `.6`. | Satisfied only when every child `.1` to `.6` is VERIFIED.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600.1
    Model
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Model.** The modules `arbora/deployment/file_lock.py`, `host_lock.py` and `engine_lock.py` define three things. They define cross-platform advisory file locks. They define the host-daemon singleton election. They define the per-socket engine spawn guard. Each field has a type. Each identifier is validated at construction. | Unit test round-trips each type and rejects an invalid identifier.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600.2
    Behavior
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Behavior.** Exactly one host daemon holds the exclusive host lock. Clients never lock. An `auto` role falls back to client when the lock is held. An explicit `host` role raises `KGHostAlreadyRunning`. The engine spawn guard serializes spawners per socket. It never contends across sockets. The host lock lives under the shared runtime directory, never a per-container one. | Unit tests cover each rule with positive and boundary cases.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600.3
    Wiring
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Wiring.** Host start, the engine resolver and the transport client call these modules. The migration report describes the server registration. It touches no server or bootstrap module here. No other production caller may duplicate this behavior. | Test drives the entry point and asserts the capability ran.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600.4
    Refusal
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Refusal.** A second explicit host start raises with the holder's pid. The stable code is `HOST_ALREADY_RUNNING`. | Test submits the invalid input and asserts the code and zero partial writes.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600.5
    Evidence
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Evidence.** The lock file records the holder's pid. | Test reads the trace or metrics after one success and one refusal.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-DEPLOY-R600.6
    Hot-path proof
    Definition — ARBORA-DEPLOY / ARBORA-DEPLOY — Portable Arbora development and deploymentCanonical requirement and verification source
    **Hot-path proof.** `tests/deployment/test_process_locks.py` runs in about 2 s under xdist and random order. The benchmark is `tests/deployment/test_process_locks.py::test_host_acquires_reports_holder_and_releases` and gates a regression above 10 percent. | The benchmark and its integration test run in the spec checks.
    requirementARBORA-DEPLOYSPECIFIEDNo recorded commit/test evidence
    ARBORA-INGRESS
    ARBORA-INGRESS — Portable public ingress and identity cutover
    specNoneLANDEDNo recorded commit/test evidence
    ARBORA-INGRESS-R001
    Public ingress rename with Keycloak and OpenBao cutover
    Definition — ARBORA-INGRESS / ARBORA-INGRESS — Portable public ingress and identity cutoverCanonical requirement and verification source
    **Public ingress rename with Keycloak and OpenBao cutover.** Arbora's public ingress is served from its own hostname with a renamed TLS certificate, ingress resource and secret, backed by an OpenBao-stored key delivered through an ExternalSecret, updated Keycloak redirect URIs, and the corresponding host-path and environment configuration; a time-bounded redirect from the prior hostname is available during cutover. | A served probe completes a browser login through Keycloak against the new hostname and confirms the MCP and REST endpoints respond under the renamed ingress.
    requirementARBORA-INGRESSLANDEDd35d445334f2
    ARBORA-INGRESS-R001.1
    Typed public-ingress profile model
    Definition — ARBORA-INGRESS / ARBORA-INGRESS — Portable public ingress and identity cutoverCanonical requirement and verification source
    **Typed public-ingress profile model.** A closed-schema, versioned value object (`PublicIngressProfile`) carries the canonical public origin, TLS secret reference, exact callback URI and trusted-proxy identity, independent of `EnvironmentProfile`; it refuses an unknown field, a missing/malformed TLS reference, a malformed callback, an HTTP origin that is not loopback, and a wildcard Host or proxy. | Unit tests (T-IN-01/T-IN-02) show a deterministic redacted render for a valid mapping and a named-key refusal for each malformed/unknown/missing input, with no secret value in any error text.
    requirementARBORA-INGRESSLANDEDd35d445334f2
    TitleSpec delivery: arbora
    RepositoryKnuckles-Team/arbora
    Commit170a83c27b88
    Captured (UTC)2026-10-18T03:04:43
    Snapshotsnapshot.json (v1)
    Sourcespecs/*/status.json
    Sheet1 of 1