{
  "version": 1,
  "repository": "Knuckles-Team/arbora",
  "revision": "170a83c27b882e59f90190bd6cadcf3d4792f332",
  "captured_at": "2026-10-18T03:04:43.941311+00:00",
  "records": [
    {
      "id": "ARBORA-A2A",
      "kind": "spec",
      "parent": null,
      "source": "specs/a2a/status.json",
      "title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/a2a/spec.md",
      "component": "Arbora A2A request adapter",
      "code_refs": [
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "external declaration; not verified",
          "label": "AU public session API",
          "repository": "Knuckles-Team/agent-utilities",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/agent-utilities/blob/50c313ab01871ff7e10aee2a9d0254fa55d71f07/agent_utilities/api/session.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/a2a/application.py:225",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/application.py#L225"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/a2a/application.py:39",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/application.py#L39"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/a2a/mcp.py:15",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/mcp.py#L15"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/api/invoke/bootstrap.py:99",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/bootstrap.py#L99"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/api/invoke/pipeline.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/pipeline.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/api/mcp/caller.py:12",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/mcp/caller.py#L12"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../arbora/mcp_server/composition.py:185",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/mcp_server/composition.py#L185"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/admission.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/admission.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/admission.py:50",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/admission.py#L50"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/admission.py:61",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/admission.py#L61"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/application.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/application.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/application.py:140",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/application.py#L140"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/authority.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/authority.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/authority.py:256",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/authority.py#L256"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/composition.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/composition.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/models.py:104",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/models.py#L104"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/models.py:167",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/models.py#L167"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/routing.py:71",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/routing.py#L71"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/service.py:40",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/service.py#L40"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/access/service.py:54",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/access/service.py#L54"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/invoke/pipeline.py:641",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/pipeline.py#L641"
        },
        {
          "declared_in": "specs/a2a/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "`ARBORA-A2A`",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/a2a/spec.md"
        },
        {
          "declared_in": "specs/a2a/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/models.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/models.py"
        },
        {
          "declared_in": "specs/a2a/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/a2a/requirements.md"
        },
        {
          "declared_in": "specs/a2a/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "test-spec.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/a2a/test-spec.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "depends on",
          "label": "AU public session API",
          "repository": "Knuckles-Team/agent-utilities",
          "url": "https://github.com/Knuckles-Team/agent-utilities/blob/50c313ab01871ff7e10aee2a9d0254fa55d71f07/agent_utilities/api/session.py"
        },
        {
          "declared_in": "specs/a2a/plan.md",
          "evidence": "local spec declaration",
          "kind": "depends on",
          "label": "ARBORA-A2A-R006.2",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/a2a/spec.md"
        },
        {
          "declared_in": "specs/a2a/spec.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "`AU-CONTROL-R035`",
          "repository": "Knuckles-Team/agent-utilities",
          "url": "https://github.com/Knuckles-Team/agent-utilities/blob/50c313ab01871ff7e10aee2a9d0254fa55d71f07/specs/agent-control-plane/spec.md"
        },
        {
          "declared_in": "specs/a2a/spec.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "`EG-DECISION-ENGINE-001`",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/decision-engine/spec.md"
        }
      ],
      "plan_diagrams": [
        "flowchart LR\n  H[human A2A client] --> V[Arbora verified A2A adapter]\n  V --> T[A2AService and operation invoke]\n  T --> O[agent orchestrator public port]\n  T --> E[\"engine WorkItem, grant and plan leases\"]\n  T --> F[fleet via hosted operation invoke]\n  E --> A[durable audit reservation and outcome]\n",
        "flowchart LR\n  C[A2A caller] --> AC[Agent Card: from_wired_authorities]\n  C --> S[message/stream]\n  C --> G[\"tasks/get (history)\"]\n  S --> AU[\"AU task-event reader: owner contract pending\"]\n  G --> EG[\"EG durable transition ledger (EG-DURABLE-KERNEL)\"]\n  AU --> PN[push-notification trigger]\n  PN --> OB[\"EG durable outbox (EG-DURABLE-KERNEL-R001)\"]\n",
        "flowchart LR\n  C[A2A caller: agent graph ref + contextBudgetTokens] --> D[admit_tool_subset admission door]\n  D -->|needs| EG[\"EG AgentAssemble (EG-DECISION-ENGINE-R036)\"]\n  D -->|needs| AU[\"AU signed AgentTurnEnvelope allowed-tool-subset (AU-CONTROL-R035)\"]\n  D -->|refused| R[\"typed ToolSubsetAdmissionDecision (admitted=False; reason; provenance)\"]\n  D -->|admitted, once both land| A[\"ToolSubsetAdmissionDecision (admitted tools + provenance)\"]\n  A --> X[OrchestratorA2ARouter / WorkItemA2AAuthority dispatch]\n",
        "flowchart LR\n  R[Authenticated A2A request] --> A[Retain resolved AU GraphSession]\n  A --> C[Existing caller_from_session projection]\n  C --> V[Existing session refresh]\n  V --> I[Shared InvokeServices and Surface.A2A]\n  I --> O[Registered operation scope and effect boundary]\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-A2A-R001",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "A2A facade over the engine and agent services",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "a8ed61b538e7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-A2A-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Fail-closed `tasks/resubscribe` stub on the A2A method table",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "a8ed61b538e7",
        "d5bff77ba836"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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 \u2014 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\".",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-A2A-R002",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Inbound task routing with caller-filtered tool exposure",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9a79acee8b6c"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-A2A-R002.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Fail-closed refusal when assembly selects a tool subset",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "dfe297e0466d"
      ],
      "verified_by": [
        "tests/a2a/test_authority.py:26"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-A2A-R002.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Caller-filtered tool-subset enforcement at dispatch",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-A2A-R002.2.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Owner-blocked: AU carried, enforced tool-subset field",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-A2A-R002.2.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Reference-bound single-tool task worker",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "663cc8cad940"
      ],
      "verified_by": [
        "tests/a2a/test_tool_task.py:20"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-A2A-R003",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "No duplicate skill or prompt harvesting in the multiplexer",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2cbed24252ec",
        "deb2b45bf83d"
      ],
      "verified_by": [
        "tests/fleet/test_no_duplicate_skill_prompt_harvest.py:58"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-A2A-R004",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Served MCP bridge runs FastMCP 4, matching its declared version",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d5bff77ba836",
        "d60b46fc6984"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-A2A-R005",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Durable, fail-closed A2A approval exchange for tool calls",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9a79acee8b6c"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-A2A-R005.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Fail-closed `arbora.plan/confirm` stub on the A2A method table",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a226c8fdf397"
      ],
      "verified_by": [
        "tests/a2a/test_application.py:274"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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\".",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-A2A-R005.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Full signed human approval chain and input-required task emission",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cdde0200a54a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-A2A-R005.2.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Durable, revocable human-grant store with atomic compare-and-set consumption",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cdde0200a54a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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 \u2014 issuance, lookup, and a single atomic consume-once operation keyed by pending-call id \u2014 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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-A2A-R005.2.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Validate detached pending-call signatures without authorizing execution",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c935d6686ef5"
      ],
      "verified_by": [
        "tests/a2a/test_approval_signature.py:25"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-A2A-R005.3",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-A2A-R005.4",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-A2A-R005.5",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-A2A-R005.6",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-A2A-R005.7",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-A2A-R005.8",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-A2A-R006",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Operation invoke and plan-confirm methods for A2A",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9a79acee8b6c"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-A2A-R006.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Register `arbora.op/invoke` and `arbora.plan/confirm`, fail-closed",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "cdde0200a54a"
      ],
      "verified_by": [
        "tests/a2a/test_application.py:236",
        "tests/a2a/test_application.py:275"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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 \u201cmethod not found\u201d.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 26
    },
    {
      "id": "ARBORA-A2A-R006.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Bridge `arbora.op/invoke` to the shared hosted-operation registry",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "cdde0200a54a"
      ],
      "verified_by": [
        "tests/a2a/test_operation_bridge.py:34"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 27
    },
    {
      "id": "ARBORA-A2A-R006.2.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Preserve the verified caller through Arbora A2A authentication",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "cdde0200a54a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 28
    },
    {
      "id": "ARBORA-A2A-R006.2.1.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Wire request-bound caller retention and refresh",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "013c270081a9",
        "5fc890ade3ae",
        "b582a7584de6"
      ],
      "verified_by": [
        "tests/a2a/test_request_session_authority.py:43"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 29
    },
    {
      "id": "ARBORA-A2A-R006.2.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Compose shared invocation into A2A",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/mcp_server/test_hosted_invocation.py:25"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 30
    },
    {
      "id": "ARBORA-A2A-R006.3",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 31
    },
    {
      "id": "ARBORA-A2A-R006.4",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 32
    },
    {
      "id": "ARBORA-A2A-R006.5",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 33
    },
    {
      "id": "ARBORA-A2A-R006.6",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 34
    },
    {
      "id": "ARBORA-A2A-R006.7",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 35
    },
    {
      "id": "ARBORA-A2A-R006.8",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 36
    },
    {
      "id": "ARBORA-A2A-R007",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Pre-effect audit reservation for every governed write",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9a79acee8b6c",
        "c2a6ab839fd3"
      ],
      "verified_by": [
        "tests/api/test_invoke_contract.py:435",
        "tests/api/test_invoke_governance.py:443"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 37
    },
    {
      "id": "ARBORA-A2A-R008",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "First-party A2A facade, not a vendored wrapper",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d5bff77ba836"
      ],
      "verified_by": [
        "tests/a2a/test_first_party_facade.py:53",
        "tests/a2a/test_first_party_facade.py:68",
        "tests/a2a/test_first_party_facade.py:86"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 38
    },
    {
      "id": "ARBORA-A2A-R009",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Advertise only what is wired",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 39
    },
    {
      "id": "ARBORA-A2A-R009.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Typed Agent Card capability-advertisement model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 40
    },
    {
      "id": "ARBORA-A2A-R010",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "WorkItem stream projection, not a shadow log",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 41
    },
    {
      "id": "ARBORA-A2A-R011",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Transition history is read-through to epistemic-graph",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 42
    },
    {
      "id": "ARBORA-A2A-R012",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Typed refusal when the durable history authority is absent",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 43
    },
    {
      "id": "ARBORA-A2A-R012.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Landed: the protocol exists, the error does not",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "tests/a2a/test_models.py:97"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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/`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 44
    },
    {
      "id": "ARBORA-A2A-R012.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Add the `A2ATransitionHistoryUnavailable` error type",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "tests/a2a/test_authority.py:51"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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__`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 45
    },
    {
      "id": "ARBORA-A2A-R012.3",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Blocked: wire `tasks/get`'s typed refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 46
    },
    {
      "id": "ARBORA-A2A-R013",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Push notifications are best-effort over a durable outbox",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 47
    },
    {
      "id": "ARBORA-A2A-R014",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "No capability advertised before ARBORA-A2A lands",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 48
    },
    {
      "id": "ARBORA-A2A-R014.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Card advertises no harness capability before it works",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 49
    },
    {
      "id": "ARBORA-A2A-R015",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Caller-visible card matches served behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 50
    },
    {
      "id": "ARBORA-A2A-R016",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Typed admission request/decision model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "tests/a2a/test_admission.py:15"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 51
    },
    {
      "id": "ARBORA-A2A-R016.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Fail-closed admission function proven against today's unavailable upstreams",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "tests/a2a/test_admission.py:16"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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 \u2014 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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 52
    },
    {
      "id": "ARBORA-A2A-R016.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Admission request carries model profile and task class",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 53
    },
    {
      "id": "ARBORA-A2A-R016.3",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Admission decision carries the committed harness answer",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 54
    },
    {
      "id": "ARBORA-A2A-R016.4",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Refusal enum gains the harness reasons",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 55
    },
    {
      "id": "ARBORA-A2A-R016.5",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Routing decision carries model profile and task class",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 56
    },
    {
      "id": "ARBORA-A2A-R017",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Context-budget-bound subset sourced from EG assembly",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 57
    },
    {
      "id": "ARBORA-A2A-R017.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Engine decision port for HarnessConfig",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 58
    },
    {
      "id": "ARBORA-A2A-R017.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Admission is async and calls the decider once",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 59
    },
    {
      "id": "ARBORA-A2A-R017.3",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Priority comes from the principal class",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 60
    },
    {
      "id": "ARBORA-A2A-R017.4",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Missing budget refuses",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 61
    },
    {
      "id": "ARBORA-A2A-R017.5",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Wire admission into the send path",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 62
    },
    {
      "id": "ARBORA-A2A-R017.6",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "End-to-end admitted task",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 63
    },
    {
      "id": "ARBORA-A2A-R018",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Cryptographic enforcement via the signed AU envelope",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 64
    },
    {
      "id": "ARBORA-A2A-R018.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Envelope carries harness_config",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 65
    },
    {
      "id": "ARBORA-A2A-R018.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Envelope without the field refuses",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 66
    },
    {
      "id": "ARBORA-A2A-R019",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Typed refusal reason and provenance on every decision",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "tests/a2a/test_admission.py:34"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 67
    },
    {
      "id": "ARBORA-A2A-R019.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Provenance names the harness decision",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 68
    },
    {
      "id": "ARBORA-A2A-R020",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "No advisory, cached, or partial substitute",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "35257e780f7c"
      ],
      "verified_by": [
        "tests/a2a/test_admission.py:53"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 69
    },
    {
      "id": "ARBORA-A2A-R020.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Abstention refuses and records the named default",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 70
    },
    {
      "id": "ARBORA-A2A-R020.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Unavailable, stale, or partial answers refuse",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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`.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 71
    },
    {
      "id": "ARBORA-A2A-R021",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Fresh checkout",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 72
    },
    {
      "id": "ARBORA-A2A-R022",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Critique-gated output release",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 73
    },
    {
      "id": "ARBORA-A2A-R001.2",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "AU:21 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 88
    },
    {
      "id": "ARBORA-A2A-R010.1",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Opt-in committed terminal point read",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/a2a/test_terminal_event.py:59"
      ],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 90
    },
    {
      "id": "ARBORA-A2A-R001.3",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Served agent keeps and lists caller conversations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 91
    },
    {
      "id": "ARBORA-A2A-R001.4",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Served agent streams turn events or refuses streaming by type",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 92
    },
    {
      "id": "ARBORA-A2A-R001.5",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Served agent accepts file parts",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 93
    },
    {
      "id": "ARBORA-A2A-R016.6",
      "kind": "requirement",
      "parent": "ARBORA-A2A",
      "source": "specs/a2a/status.json",
      "title": "Caller model preference",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-A2A \u2014 A2A projection, streaming, history and tool-subset admission",
      "definition": "**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.",
      "definition_source": "specs/a2a/requirements.md",
      "definition_line": 94
    },
    {
      "id": "ARBORA-ACCEPTANCE",
      "kind": "spec",
      "parent": null,
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/acceptance-evidence-freeze/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/acceptance-evidence-freeze/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/check_acceptance_evidence.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/scripts/check_acceptance_evidence.py"
        },
        {
          "declared_in": "specs/acceptance-evidence-freeze/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/test_check_acceptance_evidence.py",
          "repository": "Knuckles-Team/arbora",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/tests/test_check_acceptance_evidence.py"
        },
        {
          "declared_in": "specs/acceptance-evidence-freeze/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/acceptance-evidence-freeze/requirements.md"
        },
        {
          "declared_in": "specs/acceptance-evidence-freeze/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/check_public_specs.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/scripts/check_public_specs.py"
        },
        {
          "declared_in": "specs/acceptance-evidence-freeze/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "status.json",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/acceptance-evidence-freeze/status.json"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-ACCEPTANCE-R001",
      "kind": "requirement",
      "parent": "ARBORA-ACCEPTANCE",
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "Typed acceptance-evidence model and freeze-gap checker",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "a5951682d6da",
        "f62a4e2e39ed"
      ],
      "verified_by": [
        "tests/test_check_acceptance_evidence.py:137",
        "tests/test_check_acceptance_evidence.py:83"
      ],
      "parent_title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "definition": "**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.",
      "definition_source": "specs/acceptance-evidence-freeze/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-ACCEPTANCE-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-ACCEPTANCE",
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "implement the typed EvidenceRecord/RequirementGap model and gaps_for_status/load_status functions plus the standalone CLI entry point in scripts/check_acceptanc",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "57cb99978975"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "definition": "**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",
      "definition_source": "specs/acceptance-evidence-freeze/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-ACCEPTANCE-R002",
      "kind": "requirement",
      "parent": "ARBORA-ACCEPTANCE",
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "Auditor distinct from delivery lane",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a5951682d6da",
        "f62a4e2e39ed"
      ],
      "verified_by": [
        "tests/test_check_acceptance_evidence.py:179",
        "tests/test_check_acceptance_evidence.py:192",
        "tests/test_check_acceptance_evidence.py:205"
      ],
      "parent_title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "definition": "**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.",
      "definition_source": "specs/acceptance-evidence-freeze/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-ACCEPTANCE-R003",
      "kind": "requirement",
      "parent": "ARBORA-ACCEPTANCE",
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "Evidence is append-only",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a5951682d6da",
        "f62a4e2e39ed"
      ],
      "verified_by": [
        "tests/test_check_acceptance_evidence.py:216",
        "tests/test_check_acceptance_evidence.py:224"
      ],
      "parent_title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "definition": "**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.",
      "definition_source": "specs/acceptance-evidence-freeze/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-ACCEPTANCE-R004",
      "kind": "requirement",
      "parent": "ARBORA-ACCEPTANCE",
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "Operational evidence tracks the current commit, not a stale one",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a5951682d6da",
        "f62a4e2e39ed"
      ],
      "verified_by": [
        "tests/test_check_acceptance_evidence.py:99"
      ],
      "parent_title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "definition": "**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.",
      "definition_source": "specs/acceptance-evidence-freeze/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-ACCEPTANCE-R005",
      "kind": "requirement",
      "parent": "ARBORA-ACCEPTANCE",
      "source": "specs/acceptance-evidence-freeze/status.json",
      "title": "Checker is the only path to an `ACCEPTED` report",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a5951682d6da",
        "f62a4e2e39ed"
      ],
      "verified_by": [
        "tests/test_check_acceptance_evidence.py:232"
      ],
      "parent_title": "ARBORA-ACCEPTANCE \u2014 evidence acceptance freeze",
      "definition": "**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.",
      "definition_source": "specs/acceptance-evidence-freeze/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-CAPACITY",
      "kind": "spec",
      "parent": null,
      "source": "specs/adaptive-capacity/status.json",
      "title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/adaptive-capacity/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/adaptive-capacity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/adaptive-capacity/requirements.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/adaptive-capacity/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "hosted operations",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/hosted-api-operations/spec.md"
        }
      ],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-CAPACITY-R001",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "AIMD error-budget throttling that only narrows automatically (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "d2f29725918d"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-CAPACITY-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Pure partitioned AIMD decision rule",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "69d6f6eef5ea",
        "c46a1ded6a8f",
        "d2f29725918d"
      ],
      "verified_by": [
        "tests/fleet/test_error_budget.py:28"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-CAPACITY-R002",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Capacity status and mode operations",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "69d6f6eef5ea",
        "c46a1ded6a8f"
      ],
      "verified_by": [
        "tests/api/test_capacity_ops.py:26"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-CAPACITY-R001.2",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "AU:26 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-CAPACITY-R003",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "AU:70 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-CAPACITY-R004",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "AU:122 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-CAPACITY-R001.3",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "EG:9 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-CAPACITY-R750",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Scaling authority and intent contracts (rollup)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-CAPACITY-R750.750",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Scale authority validation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43b17c4d919c"
      ],
      "verified_by": [
        "tests/fleet/scaling/test_scaling_authority_contract.py:21"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-CAPACITY-R750.751",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Authenticated bounded signal reads",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43b17c4d919c"
      ],
      "verified_by": [
        "tests/fleet/scaling/test_scaling_signal_authority.py:22"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-CAPACITY-R750.752",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Idempotent scale-intent reconciliation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43b17c4d919c"
      ],
      "verified_by": [
        "tests/fleet/scaling/test_scaling_intent_reconciler.py:25"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-CAPACITY-R750.753",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Service-surface scale evaluator",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43b17c4d919c"
      ],
      "verified_by": [
        "tests/fleet/scaling/test_service_scale_units.py:31"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-CAPACITY-R750.754",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Attested resource-pool placement",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43b17c4d919c"
      ],
      "verified_by": [
        "tests/fleet/scaling/test_resource_pool_authority.py:27"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-CAPACITY-R750.755",
      "kind": "requirement",
      "parent": "ARBORA-CAPACITY",
      "source": "specs/adaptive-capacity/status.json",
      "title": "Engine-native reservation and development-lane transport",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43b17c4d919c"
      ],
      "verified_by": [
        "tests/fleet/scaling/test_resource_reservation.py:14"
      ],
      "parent_title": "ARBORA-CAPACITY \u2014 Adaptive capacity control",
      "definition": "**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.",
      "definition_source": "specs/adaptive-capacity/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-ACP",
      "kind": "spec",
      "parent": null,
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/conversational-acp-gateway/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/__init__.py:3",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/__init__.py#L3"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/coding_session.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/coding_session.py"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/session_policy.py:101",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/session_policy.py#L101"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/session_policy.py:120",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/session_policy.py#L120"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/session_policy.py:21",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/session_policy.py#L21"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/session_policy.py:68",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/session_policy.py#L68"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/acp/session_policy.py:89",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/acp/session_policy.py#L89"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/graph_api.py:368",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/graph_api.py#L368"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/identity/broker.py:256",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/identity/broker.py#L256"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/webui_host/webui_co_service.py:77",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/webui_host/webui_co_service.py#L77"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Adapter refusal",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/conversational-acp-gateway/plan.md#adapter-unavailable-refusal"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Admission",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/conversational-acp-gateway/plan.md#admission-and-binding"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Observability",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/conversational-acp-gateway/plan.md#observability"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Policy limits",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/conversational-acp-gateway/plan.md#idle-and-expiry-policy"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "docs/architecture.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/docs/architecture.md"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/conversational-acp-gateway/requirements.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "ARBORA-IDENTITY-001",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/identity-access/spec.md"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "Access control",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/identity-access/spec.md"
        },
        {
          "declared_in": "specs/conversational-acp-gateway/spec.md",
          "evidence": "unresolved",
          "kind": "references",
          "label": "AU-CONTROL-001",
          "repository": "Unresolved",
          "url": ""
        }
      ],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-ACP-R001",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Conversational ACP gateway session admission and policy",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9a79acee8b6c",
        "c2a6ab839fd3"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-ACP-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Typed ACP session-policy model and fail-closed admission check",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9a79acee8b6c",
        "c2a6ab839fd3"
      ],
      "verified_by": [
        "tests/acp/test_session_policy.py:31",
        "tests/acp/test_session_policy.py:71"
      ],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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 \u2014 on both admission and message \u2014 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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-ACP-R001.3",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fa860a640a8d"
      ],
      "verified_by": [
        "tests/acp/test_coding_session.py:34"
      ],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-ACP-R001.4",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-ACP-R001.5",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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`.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-ACP-R001.6",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-ACP-R001.7",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-ACP-R001.8",
      "kind": "requirement",
      "parent": "ARBORA-ACP",
      "source": "specs/conversational-acp-gateway/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-ACP \u2014 Conversational ACP gateway session projection and policy",
      "definition": "**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.",
      "definition_source": "specs/conversational-acp-gateway/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-DATA-MARKET",
      "kind": "spec",
      "parent": null,
      "source": "specs/data-and-market-projections/status.json",
      "title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/data-and-market-projections/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/data-and-market-projections/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/http/routes.py:72",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/http/routes.py#L72"
        },
        {
          "declared_in": "specs/data-and-market-projections/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/invoke/plan.py:24",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/plan.py#L24"
        },
        {
          "declared_in": "specs/data-and-market-projections/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/mcp/verbs.py:26",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/mcp/verbs.py#L26"
        },
        {
          "declared_in": "specs/data-and-market-projections/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/finance/markets.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/finance/markets.py"
        },
        {
          "declared_in": "specs/data-and-market-projections/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/mcp_server/server.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/mcp_server/server.py"
        },
        {
          "declared_in": "specs/data-and-market-projections/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/data-and-market-projections/requirements.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-DATA-MARKET-R001",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Durable, deduplicated flip alert delivery",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "e61c0e3df8b7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-DATA-MARKET-R002",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Scheduled finance backfill, scan, and explanation jobs",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "57391db3828f"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-DATA-MARKET-R003",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Server-side finance and markets reads and paper order submission",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "57391db3828f",
        "b1ee0584dbba"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-DATA-MARKET-R004",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "One-at-a-time application admission with rollback",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "33622be01de7",
        "fd761d59a171"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-DATA-MARKET-R005",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "schema_context query surface for tables and ontology mappings",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "0a1beb2aae13",
        "44ba09589820",
        "8a7010bd6592"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-DATA-MARKET-R006",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Recurring DCA plans with deterministic, non-duplicating proposals",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "35385208a619",
        "e61c0e3df8b7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-DATA-MARKET-R007",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Confirmed order and position changes",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-DATA-MARKET-R007.1",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-DATA-MARKET-R007.2",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-DATA-MARKET-R007.3",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-DATA-MARKET-R007.4",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-DATA-MARKET-R007.5",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-DATA-MARKET-R007.6",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-DATA-MARKET-R003.1",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Market list/search/get",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**Market list/search/get.** Define read-only `markets.list`, `markets.search`, and `markets.get` on `finance:read`. List/search accept `limit` (default 50, 1\u2013100), 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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-DATA-MARKET-R003.2",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Event list/search/get",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**Event list/search/get.** Define read-only `events.list`, `events.search`, and `events.get` on `finance:read`. List/search accept `limit` (default 50, 1\u2013100), 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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-DATA-MARKET-R003.3",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Order list/search/get",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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\u2013100), 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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-DATA-MARKET-R003.4",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Stable JSON projections",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-DATA-MARKET-R003.5",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Authority before provider calls",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-DATA-MARKET-R003.6",
      "kind": "requirement",
      "parent": "ARBORA-DATA-MARKET",
      "source": "specs/data-and-market-projections/status.json",
      "title": "Producer port, registration, and read/effect separation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DATA-MARKET \u2014 Schema context, source admission, and finance projection",
      "definition": "**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` \u2192 `create_api_application` \u2192 `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.",
      "definition_source": "specs/data-and-market-projections/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-RELEASE",
      "kind": "spec",
      "parent": null,
      "source": "specs/dependency-ordered-release/status.json",
      "title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/dependency-ordered-release/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Existing path",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/dependency-ordered-release/plan.md#existing-system-and-reuse"
        },
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Failure",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/dependency-ordered-release/plan.md#failure-and-rollback"
        },
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Gates",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/dependency-ordered-release/plan.md#quality-and-release-gates"
        },
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Manifest",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/dependency-ordered-release/plan.md#candidate-manifest-and-compatibility"
        },
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Ordering",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/dependency-ordered-release/plan.md#rollout-state-machine"
        },
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/dependency-ordered-release/requirements.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "Portable deployment",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/portable-deployment/spec.md"
        },
        {
          "declared_in": "specs/dependency-ordered-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "public ingress",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/spec.md"
        }
      ],
      "plan_diagrams": [
        "flowchart LR\n  Candidate --> Verify[Verify manifest and compatibility]\n  Verify --> Plan[Topological dry run]\n  Plan --> Stage[Apply one digest-pinned stage]\n  Stage --> Probe[Readiness and functional probe]\n  Probe -->|pass| Stage\n  Probe -->|fail| Stop[Stop and rollback decision]\n  Stage --> Complete[Complete signed receipt]\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-RELEASE-R001",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "Dependency-ordered, digest-verified release promotion",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "eacc29a1952e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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.",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-RELEASE-R002",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "Local Kubernetes validation gates every push",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "03ec8432da14",
        "f3f45f5e2d1b"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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.",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-RELEASE-R003",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "Exit-criteria matrix maps readiness to tests",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "03ec8432da14",
        "7db4c4a5d87c"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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).",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-RELEASE-R003.1",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "Exit-criteria matrix registry and audit mechanism (arbora side, against the currently pinned epistemic-graph)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "03ec8432da14",
        "7db4c4a5d87c"
      ],
      "verified_by": [
        "tests/deployment/test_exit_criteria.py:10",
        "tests/deployment/test_exit_criteria.py:27",
        "tests/deployment/test_exit_criteria.py:42"
      ],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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.",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-RELEASE-R003.2",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "Full exit-criteria matrix closes green across all seven obligations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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.",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-RELEASE-R003.3",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "SPARQL and natural-language query-proof rows",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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)",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-RELEASE-R003.4",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "multi-agent orchestration-graph row",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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)",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-RELEASE-R003.5",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "connector-certification row",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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)",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-RELEASE-R003.6",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "write-back receipt row",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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)",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-RELEASE-R003.7",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "browser-and-identity-provider login probe row",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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)",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-RELEASE-R003.8",
      "kind": "requirement",
      "parent": "ARBORA-RELEASE",
      "source": "specs/dependency-ordered-release/status.json",
      "title": "typed-abstention response row",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-RELEASE \u2014 Dependency-ordered, digest-pinned Arbora rollout",
      "definition": "**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)",
      "definition_source": "specs/dependency-ordered-release/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-FLEET",
      "kind": "spec",
      "parent": null,
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/fleet-catalog-and-tools/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "ARBORA-OPS-R009",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/hosted-api-operations/requirements.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/deployment/doctor.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/deployment/doctor.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/catalog_reader.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/catalog_reader.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/child_resilience.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/child_resilience.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/gateway_ops.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/gateway_ops.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/multiplexer.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/multiplexer.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/onboarding.py:236",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/onboarding.py#L236"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/session_notifications.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/session_notifications.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/webui_host/mcp_delegation.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/webui_host/mcp_delegation.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "plan.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/fleet-catalog-and-tools/plan.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/fleet-catalog-and-tools/requirements.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "test-spec.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/fleet-catalog-and-tools/test-spec.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/fleet/test_fleet_onboarding.py",
          "repository": "Knuckles-Team/arbora",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/tests/fleet/test_fleet_onboarding.py"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/test_fleet_catalog_reader.py",
          "repository": "Knuckles-Team/arbora",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/tests/test_fleet_catalog_reader.py"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG-DECISION-ENGINE-R176",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/decision-engine/spec.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG-DECISION-ENGINE-R177",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/decision-engine/spec.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG-TYPED-PACKS-R103",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/typed-packs-and-catalog/spec.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG-TYPED-PACKS-R104",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/typed-packs-and-catalog/spec.md"
        },
        {
          "declared_in": "specs/fleet-catalog-and-tools/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "SDK-CONNECTOR-CONTROL-R068",
          "repository": "Knuckles-Team/agent-connector-sdk",
          "url": "https://github.com/Knuckles-Team/agent-connector-sdk/blob/main/specs/SDK-CONNECTOR-CONTROL/spec.md"
        }
      ],
      "plan_diagrams": [
        "sequenceDiagram\n    participant Caller\n    participant Host as Arbora invoke\n    participant EG\n    participant SDK\n    participant Agent as AU agent\n    Caller->>Host: authenticated run + idempotency key\n    Host->>EG: resolve skill, workflow, policy and distribution\n    EG-->>Host: bound decisions and versioned identities\n    Host->>Host: certify dependencies, admit all tools, reserve capacity\n    Host->>SDK: approved typed allocation\n    SDK-->>Host: actual instance receipt\n    Host->>Agent: admitted skill identity and model configuration\n    Agent->>EG: durable result through published execution contract\n    Host->>EG: apply existing aggregation to result receipts\n    EG-->>Caller: governed result and provenance\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-FLEET-R001",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Typed pack publisher replaces placeholder ContentPack",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "18038a22a875",
        "223bee6a0edd",
        "8df218e2f742"
      ],
      "verified_by": [
        "tests/test_connector_pack_typed_publisher.py:29",
        "tests/test_connector_pack_typed_publisher.py:51",
        "tests/test_connector_pack_typed_publisher.py:65"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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`.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-FLEET-R002",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Tool schema fingerprints recomputed from served schemas (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "0f346a4d0e4a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-FLEET-R002.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Per-tool schema fingerprint computed from the served schema",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0f346a4d0e4a",
        "223bee6a0edd"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-FLEET-R002.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Remaining scope of ARBORA-FLEET-R002 (slice .2): Tool schema fingerprints recomputed from served schemas (rollup)",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "0f346a4d0e4a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-FLEET-R003",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "D18 write-back exposed only as a typed, previewed operation (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "67b1b9ab916e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-FLEET-R003.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Typed write-back preview model and its refusal rule",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "67b1b9ab916e",
        "e80df3dcad62",
        "f2d7ec520ab7"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-FLEET-R003.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Write-back registered as a typed, gated registry operation, not a native child tool",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "f2d7ec520ab7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-FLEET-R004",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Pack annotations carry capability, digest, modality, cost, latency",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0aba0c33acd0",
        "f2a3173e9a84"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-FLEET-R005",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "A2A task routing with typed work-item and lease operations (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "3b404ee3ecf8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-FLEET-R005.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Typed WorkItem view, the GetWorkItem/ListWorkItems producer",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3b404ee3ecf8",
        "f2a3173e9a84"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-FLEET-R005.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Remaining scope of ARBORA-FLEET-R005 (slice .2): A2A task routing with typed work-item and lease operations (rollup)",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "3b404ee3ecf8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-FLEET-R006",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Multiplexer skill and prompt harvest path removed",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "67b1b9ab916e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-FLEET-R007",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Bridge upgraded to FastMCP 4 (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "67b1b9ab916e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-FLEET-R008",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "RUM, security-audit and CI/CD feeds join the catalog (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "67b1b9ab916e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-FLEET-R008.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Typed feed-event model per feed kind",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "67b1b9ab916e",
        "f2a3173e9a84"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-FLEET-R008.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Live feed ingestion wired into the catalog",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-FLEET-R009",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Run admission evaluates, commits and publishes with capacity control",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "58ee1a06a392",
        "67b1b9ab916e",
        "c77ede8726fa"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-FLEET-R009.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Capacity acquisition is all-or-nothing with one re-decision",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "58ee1a06a392",
        "c77ede8726fa"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-FLEET-R009.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Routing and composition publish only through acquired capacity",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "58ee1a06a392",
        "c77ede8726fa"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-FLEET-R009.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Run admission publishes with all-or-nothing capacity control",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "58ee1a06a392"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 26
    },
    {
      "id": "ARBORA-FLEET-R003.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Write-back idempotency and preview gating survive a service restart",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 28
    },
    {
      "id": "ARBORA-FLEET-R006.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Harvest call-site inventory, the removal baseline",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "031958c74eb8",
        "a94c87aa090e"
      ],
      "verified_by": [
        "tests/fleet/test_harvest_inventory.py:105",
        "tests/fleet/test_harvest_inventory.py:116"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 29
    },
    {
      "id": "ARBORA-FLEET-R006.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Skill/prompt body-harvest cutover for an already-admitted child",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "031958c74eb8",
        "1db599dcf40c",
        "a94c87aa090e"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 30
    },
    {
      "id": "ARBORA-FLEET-R006.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Dead harvest helpers removed (rollup over `ARBORA-FLEET-R006.3.1`-`.4`)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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`.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 31
    },
    {
      "id": "ARBORA-FLEET-R006.3.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "`_probe_protocol_families` harvest calls routed through the cutover helper",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ddb10c07995e"
      ],
      "verified_by": [
        "tests/fleet/test_harvest_inventory.py:128",
        "tests/fleet/test_harvest_inventory.py:135"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**`_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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 32
    },
    {
      "id": "ARBORA-FLEET-R006.3.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Non-admitted fallback and `_harvest_resource_bodies` deleted",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 33
    },
    {
      "id": "ARBORA-FLEET-R006.3.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Deadline and error-reason helpers deleted",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 34
    },
    {
      "id": "ARBORA-FLEET-R006.3.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Harvest specs deleted",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 35
    },
    {
      "id": "ARBORA-FLEET-R006.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Residual `_harvest`-named symbol renamed off the removed path",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 36
    },
    {
      "id": "ARBORA-FLEET-R006.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Closing audit: no harvest or hydration code remains",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 37
    },
    {
      "id": "ARBORA-FLEET-R007.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "agent-connector-sdk's FastMCP instance gains native prompt/resource/template registration (cross-repo, owner: agent-connector-sdk)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 38
    },
    {
      "id": "ARBORA-FLEET-R007.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "agent-utilities' arbora bridge surface gains native prompt/resource/template registration (cross-repo, owner: agent-utilities)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 39
    },
    {
      "id": "ARBORA-FLEET-R007.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "arbora's served bridge exercises native prompts, resources and templates end to end",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 40
    },
    {
      "id": "ARBORA-FLEET-R011",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Registry core computes a canonical digest and authorized find",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4b83c69e2b41"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 41
    },
    {
      "id": "ARBORA-FLEET-R012",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "EG-direct binding generator with reviewed exclusions",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b83c69e2b41",
        "68e31b75248a",
        "f651a834b0db"
      ],
      "verified_by": [
        "tests/api/test_eg_binding.py:133",
        "tests/api/test_eg_binding.py:204",
        "tests/api/test_eg_binding.py:88"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 42
    },
    {
      "id": "ARBORA-FLEET-R013",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "MCP projection exposes the six verbs with typed schemas",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "6b63aeb7ba03",
        "ea736715b7fb"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 43
    },
    {
      "id": "ARBORA-FLEET-R014",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Resolver ranks catalog items with partitioned feedback",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43db6b7ac49b",
        "a2f74cb9621d"
      ],
      "verified_by": [
        "tests/api/test_resolve.py:114",
        "tests/api/test_resolve.py:161",
        "tests/api/test_resolve.py:170"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 44
    },
    {
      "id": "ARBORA-FLEET-R015",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Typed operations cover agents, browser and fleet calls",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "68e31b75248a",
        "e1d37ca10ef7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 45
    },
    {
      "id": "ARBORA-FLEET-R016",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Automated gates catch API surface and compatibility drift",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ba0aa6a11b4a"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 46
    },
    {
      "id": "ARBORA-FLEET-R017",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Authority-parity oracle validates principal, operation and surface",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "ba0aa6a11b4a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 47
    },
    {
      "id": "ARBORA-FLEET-R018",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Multiplexer exposes four resident fleet tools over one catalog",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "e1d37ca10ef7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 48
    },
    {
      "id": "ARBORA-FLEET-R019",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Eunomia narrows authority at discover, load and call",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "269c409c5415"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 49
    },
    {
      "id": "ARBORA-FLEET-R021",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Fleet capability checks require exact scopes, deny unknown tools",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "18038a22a875",
        "2c70abad2b68",
        "336f9faf3f21",
        "444cedaf2b6d",
        "e7a32f572005"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 51
    },
    {
      "id": "ARBORA-FLEET-R022",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Catalog reconciliation re-ingests via durable replay",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1a8d280ab981"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 52
    },
    {
      "id": "PA-12",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Catalog reload rejects invalid candidates, proves replica convergence",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1a8d280ab981"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 53
    },
    {
      "id": "ARBORA-FLEET-R023",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Connector count pins stay consistent across the fleet",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "667a206c800e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**Connector count pins stay consistent across the fleet.** Every fleet connector count reference \u2014 the compatibility matrix, the bundle-catalog schema, the check scripts, `ontology.lock`, the federated IRI, and `genesis.yaml` \u2014 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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 54
    },
    {
      "id": "ARBORA-FLEET-R023.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Pure connector count-pin comparison (producer)",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "667a206c800e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 55
    },
    {
      "id": "ARBORA-FLEET-R024",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Fleet reconciliation, scaling and deploy watch are served by Arbora",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "c2d8c8ce46b8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 56
    },
    {
      "id": "PA-12.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Catalog reload rejects invalid candidates",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1a8d280ab981"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 57
    },
    {
      "id": "PA-12.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Multi-replica convergence is observed by generation and digest",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1a8d280ab981"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 58
    },
    {
      "id": "ARBORA-FLEET-R024.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Deploy-watch verdict is a typed Arbora operation",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "c2d8c8ce46b8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 59
    },
    {
      "id": "ARBORA-FLEET-R024.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Remaining fleet reconciler, autoscaler, scaling-authority and deploy-watch scheduling behavior is served by Arbora",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 60
    },
    {
      "id": "ARBORA-FLEET-R024.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Agent runtime no longer ships the superseded fleet modules (cross-repo)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 61
    },
    {
      "id": "ARBORA-FLEET-R024.750",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Fail-closed fleet health evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "62c0320da4f9"
      ],
      "verified_by": [
        "tests/fleet/test_health.py:19"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 62
    },
    {
      "id": "ARBORA-FLEET-R025",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Skills from every installed package, and an always-offered core pack, join the find/load path",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3f7190f32493",
        "d16472d4df1d"
      ],
      "verified_by": [
        "tests/fleet/test_local_skill_discovery.py:145",
        "tests/fleet/test_local_skill_discovery.py:32"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 63
    },
    {
      "id": "ARBORA-FLEET-R029",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "The intent tools are the only MCP surface",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1a8d280ab981",
        "d2b070392ec9",
        "db8d44259c3d"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 64
    },
    {
      "id": "ARBORA-FLEET-R026",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "The catalog admits each server on its own",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "619d25ac8e69",
        "d9015e6d6cda"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 65
    },
    {
      "id": "ARBORA-FLEET-R027",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Arbora onboards every configured fleet server",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "5edd6cc9a3d7",
        "619d25ac8e69",
        "bbc73cd1532d",
        "be2026dd4ebf",
        "d9015e6d6cda"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 66
    },
    {
      "id": "ARBORA-FLEET-R028",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Arbora renews every registration before its lease lapses",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "619d25ac8e69",
        "d9015e6d6cda"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 67
    },
    {
      "id": "ARBORA-FLEET-R030",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Fleet onboarding registers connector access contracts unapproved",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "7e0cc536c81a",
        "9095a5cefabe",
        "f2284b64b6b3"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 68
    },
    {
      "id": "ARBORA-FLEET-R031",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "`find` ranks catalog-admitted tools when a live probe cannot answer",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "d43ff2da921f"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**`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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 69
    },
    {
      "id": "ARBORA-FLEET-R032",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Gateway widget fetches run under a bound service actor",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "f4812c0aa389"
      ],
      "verified_by": [
        "tests/gateway/test_aggregator.py:159"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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` \u2192 `mint_actor_from_token_sync` \u2192 `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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 70
    },
    {
      "id": "ARBORA-FLEET-R033",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Fleet-catalog `servers` read owned by arbora",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 71
    },
    {
      "id": "ARBORA-FLEET-R033.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Define the typed fleet-catalog `servers` reader",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 72
    },
    {
      "id": "ARBORA-FLEET-R033.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Add refusal tests for the `servers` reader",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 73
    },
    {
      "id": "ARBORA-FLEET-R034",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Skills and SI workflows are admitted before they run (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 74
    },
    {
      "id": "ARBORA-FLEET-R034.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 75
    },
    {
      "id": "ARBORA-FLEET-R034.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 76
    },
    {
      "id": "ARBORA-FLEET-R034.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 77
    },
    {
      "id": "ARBORA-FLEET-R034.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 78
    },
    {
      "id": "ARBORA-FLEET-R034.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 79
    },
    {
      "id": "ARBORA-FLEET-R034.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 80
    },
    {
      "id": "ARBORA-FLEET-R034.7",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 86
    },
    {
      "id": "ARBORA-FLEET-R034.8",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 87
    },
    {
      "id": "ARBORA-FLEET-R034.9",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 88
    },
    {
      "id": "ARBORA-FLEET-R034.10",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 89
    },
    {
      "id": "ARBORA-FLEET-R034.11",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 90
    },
    {
      "id": "ARBORA-FLEET-R034.12",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 91
    },
    {
      "id": "ARBORA-FLEET-R024.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 92
    },
    {
      "id": "ARBORA-FLEET-R024.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 93
    },
    {
      "id": "ARBORA-FLEET-R024.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 94
    },
    {
      "id": "ARBORA-FLEET-R024.7",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 95
    },
    {
      "id": "ARBORA-FLEET-R024.8",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 96
    },
    {
      "id": "ARBORA-FLEET-R024.9",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 97
    },
    {
      "id": "ARBORA-FLEET-R002.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 98
    },
    {
      "id": "ARBORA-FLEET-R002.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 99
    },
    {
      "id": "ARBORA-FLEET-R002.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 100
    },
    {
      "id": "ARBORA-FLEET-R002.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 101
    },
    {
      "id": "ARBORA-FLEET-R002.7",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 102
    },
    {
      "id": "ARBORA-FLEET-R002.8",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 103
    },
    {
      "id": "ARBORA-FLEET-R027.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 104
    },
    {
      "id": "ARBORA-FLEET-R027.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 105
    },
    {
      "id": "ARBORA-FLEET-R027.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 106
    },
    {
      "id": "ARBORA-FLEET-R027.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 107
    },
    {
      "id": "ARBORA-FLEET-R027.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 108
    },
    {
      "id": "ARBORA-FLEET-R027.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 109
    },
    {
      "id": "ARBORA-FLEET-R019.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 110
    },
    {
      "id": "ARBORA-FLEET-R021.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 111
    },
    {
      "id": "ARBORA-FLEET-R005.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 112
    },
    {
      "id": "ARBORA-FLEET-R019.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Original policy contract",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 121
    },
    {
      "id": "ARBORA-FLEET-R021.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Original fleet authority contract",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 122
    },
    {
      "id": "ARBORA-FLEET-R027.7",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Original fleet onboarding contract",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 123
    },
    {
      "id": "ARBORA-FLEET-R003.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Original writable-fleet acceptance residual",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 131
    },
    {
      "id": "ARBORA-FLEET-R003.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Complete repository request binding",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 132
    },
    {
      "id": "ARBORA-FLEET-R003.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Trusted composition through shared invoke",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 133
    },
    {
      "id": "ARBORA-FLEET-R003.7",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Preview and approval bind the commit operation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 134
    },
    {
      "id": "ARBORA-FLEET-R003.8",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Served effect and independent readback evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 135
    },
    {
      "id": "ARBORA-FLEET-R003.9",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Zero-effect refusal parity",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 136
    },
    {
      "id": "ARBORA-FLEET-R003.10",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Durable replay across host and connector restart",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 137
    },
    {
      "id": "ARBORA-FLEET-R035",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Authenticated schema preflight for OpenAPI operation aliases",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1cf004ee454e",
        "1e55e62acb2a",
        "35fbba91b24b",
        "61c7f230ec1e",
        "763701d591a8"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 138
    },
    {
      "id": "ARBORA-FLEET-R024.10",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "AU:29 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 144
    },
    {
      "id": "ARBORA-FLEET-R024.11",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "AU:30 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 145
    },
    {
      "id": "ARBORA-FLEET-R002.9",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "AU:52 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 146
    },
    {
      "id": "ARBORA-FLEET-R034.13",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "AU:98 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 147
    },
    {
      "id": "ARBORA-FLEET-R034.14",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "ARBORA:8 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 148
    },
    {
      "id": "ARBORA-FLEET-R036",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "The connector contract is established on first connect (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 149
    },
    {
      "id": "ARBORA-FLEET-R036.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 150
    },
    {
      "id": "ARBORA-FLEET-R036.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 151
    },
    {
      "id": "ARBORA-FLEET-R036.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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`.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 152
    },
    {
      "id": "ARBORA-FLEET-R036.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 153
    },
    {
      "id": "ARBORA-FLEET-R036.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 154
    },
    {
      "id": "ARBORA-FLEET-R036.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 155
    },
    {
      "id": "ARBORA-FLEET-R037",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Tools load per job from the engine answer (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 156
    },
    {
      "id": "ARBORA-FLEET-R037.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 157
    },
    {
      "id": "ARBORA-FLEET-R037.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 158
    },
    {
      "id": "ARBORA-FLEET-R037.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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`.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 159
    },
    {
      "id": "ARBORA-FLEET-R037.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 160
    },
    {
      "id": "ARBORA-FLEET-R037.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 161
    },
    {
      "id": "ARBORA-FLEET-R037.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 162
    },
    {
      "id": "ARBORA-FLEET-R038",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "One protocol stack with one implementation per role",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 163
    },
    {
      "id": "ARBORA-FLEET-R039",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Domain pack reads compose engine methods",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 164
    },
    {
      "id": "ARBORA-FLEET-R039.1",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 165
    },
    {
      "id": "ARBORA-FLEET-R039.2",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 166
    },
    {
      "id": "ARBORA-FLEET-R039.3",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 167
    },
    {
      "id": "ARBORA-FLEET-R039.4",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 168
    },
    {
      "id": "ARBORA-FLEET-R039.5",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 169
    },
    {
      "id": "ARBORA-FLEET-R039.6",
      "kind": "requirement",
      "parent": "ARBORA-FLEET",
      "source": "specs/fleet-catalog-and-tools/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-FLEET \u2014 Fleet catalog, intent tools, and policy safe reload",
      "definition": "**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`.",
      "definition_source": "specs/fleet-catalog-and-tools/requirements.md",
      "definition_line": 170
    },
    {
      "id": "ARBORA-HOST",
      "kind": "spec",
      "parent": null,
      "source": "specs/host-composition-boundary/status.json",
      "title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/host-composition-boundary/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/host-composition-boundary/plan.md",
          "evidence": "external declaration; not verified",
          "label": "TUI-RUNTIME-R002.2 through R002.6",
          "repository": "Knuckles-Team/agent-terminal-ui",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/agent-terminal-ui/blob/5ac5e3fec4d590f167d2c6bd694683dbd8950c26/specs/terminal-runtime/plan.md#tui-runtime-r002-consumer-boundary"
        },
        {
          "declared_in": "specs/host-composition-boundary/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/host-composition-boundary/requirements.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/host-composition-boundary/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "A2A spec",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/a2a/spec.md"
        }
      ],
      "plan_diagrams": [
        "flowchart LR\n  C[Client] --> B[Transport identity and admission]\n  B --> P[Shared action policy]\n  P --> S[Typed application operation]\n  S --> E[Graph engine client]\n  S --> A[Agent runtime public API]\n  S --> K[Connector SDK runner]\n  S --> R[One result and receipt mapper]\n  R --> C\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-HOST-R001",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Cross-repository composition boundary assignment",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9760bef27075"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-HOST-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora owns the MCP, REST and API serving code that agent-utilities 3.0.0 drops",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4eb2b408bd93"
      ],
      "verified_by": [
        "tests/test_package_layout.py:120"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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/`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-HOST-R001.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora registers the harness host bindings at startup",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-HOST-R001.2.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora binds the run-loop providers at startup",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "25e15e2108e1"
      ],
      "verified_by": [
        "tests/test_agent_runs.py:42",
        "tests/test_agent_runs.py:60",
        "tests/test_agent_runs.py:77"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-HOST-R001.2.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "A served agents.run call runs end to end",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "cc6349408a14",
        "d3d50ac5d766"
      ],
      "verified_by": [
        "tests/test_agents_run_end_to_end.py:117",
        "tests/test_agents_run_end_to_end.py:164"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-HOST-R001.2.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "The served process mounts the operation-invoke API",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "192099593cdd"
      ],
      "verified_by": [
        "tests/test_served_operation_api.py:175",
        "tests/test_served_operation_api.py:217"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-HOST-R001.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora ships the surface client as its generated client",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/deployment/test_generated_client_wheel.py:16"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-HOST-R001.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Provider plugin entry-point groups use the connector SDK namespace",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/deployment/test_arbora_deploy_artifacts.py:103"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-HOST-R001.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "The moved serving code keeps its tests and runs on FastMCP 4",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/test_package_layout.py:136"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-HOST-R001.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora publishes its operation registry as versioned data",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/mcp_server/test_operation_registry.py:11",
        "tests/mcp_server/test_operation_registry.py:17"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-HOST-R001.8",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Gate G-26: the served MCP surface is wired to epistemic-graph",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3f7190f32493",
        "9e7f6499d96f"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-HOST-R001.9",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "The tiny profile serves the graph with zero containers",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/deployment/test_small_profile_footprint.py:33"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-HOST-R001.9.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "The served surface imports no external-service driver",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/deployment/test_small_profile_footprint.py:34"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-HOST-R001.9.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "The tiny profile serves the graph with zero containers",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-HOST-R001.10",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora owns provider discovery over the connector SDK groups",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3f7190f32493"
      ],
      "verified_by": [
        "tests/core/test_providers.py:24"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-HOST-R002",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Graph engine client exposes the session/discovery surface",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-HOST-R003",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Web UI rename cutover across Arbora",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "15bc1fd4c49e",
        "4ca77fbff9e3",
        "6dda5ac3548c"
      ],
      "verified_by": [
        "tests/architecture/test_webui_rename_references.py:13"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-HOST-R004",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Single gateway implementation under arbora/gateway",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "45283d0137b9",
        "f37f67d33d37"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-HOST-R005",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "arbora.mcp_server.runtime serves retired MCP actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "4ca77fbff9e3"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-HOST-R005.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Landed: the typed approved-mapping model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c7eda638d959"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-HOST-R005.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Parity test proves no served action is dropped",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "c7eda638d959"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-HOST-R005.2.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the analyze action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 26
    },
    {
      "id": "ARBORA-HOST-R005.2.1.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for code navigation actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 27
    },
    {
      "id": "ARBORA-HOST-R005.2.1.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for impact actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 28
    },
    {
      "id": "ARBORA-HOST-R005.2.1.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for `similar_code` and the remaining `graph_analyze` actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 29
    },
    {
      "id": "ARBORA-HOST-R005.2.1.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for `process_writeback`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 30
    },
    {
      "id": "ARBORA-HOST-R005.2.1.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approve the analyze mappings",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 31
    },
    {
      "id": "ARBORA-HOST-R005.2.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the configure action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 32
    },
    {
      "id": "ARBORA-HOST-R005.2.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the ingest action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 33
    },
    {
      "id": "ARBORA-HOST-R005.2.3.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Map `sync` to `ingest.sources.sync`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "567a2b417ed7"
      ],
      "verified_by": [
        "tests/mcp_server/test_legacy_action_mapping_ingest_sync.py:11"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 34
    },
    {
      "id": "ARBORA-HOST-R005.2.3.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for ingest submission actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 35
    },
    {
      "id": "ARBORA-HOST-R005.2.3.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for `corpus`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 36
    },
    {
      "id": "ARBORA-HOST-R005.2.3.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for job lifecycle actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 37
    },
    {
      "id": "ARBORA-HOST-R005.2.3.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for `rebuild_indexes` and `observe`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 38
    },
    {
      "id": "ARBORA-HOST-R005.2.3.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for `materialize` and `materialize_source`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 39
    },
    {
      "id": "ARBORA-HOST-R005.2.3.7",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add arbora operation for `reflect` and `agent_toolkit`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 40
    },
    {
      "id": "ARBORA-HOST-R005.2.3.8",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approve the ingest mappings",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 41
    },
    {
      "id": "ARBORA-HOST-R005.2.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the query-memory action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 42
    },
    {
      "id": "ARBORA-HOST-R005.2.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the orchestrate action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 43
    },
    {
      "id": "ARBORA-HOST-R005.2.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the mine-learn action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 44
    },
    {
      "id": "ARBORA-HOST-R005.2.7",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Approved mapping for the governance-ops action family",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 45
    },
    {
      "id": "ARBORA-HOST-R005.2.8",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Parity test over the full legacy action surface",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 46
    },
    {
      "id": "ARBORA-HOST-R006",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "arbora.fleet is the sole multiplexer and host owner",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "97b844e615b7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 47
    },
    {
      "id": "ARBORA-HOST-R007",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Agent runtime imported only through its public API",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "c467b28d2385"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 48
    },
    {
      "id": "ARBORA-HOST-R007.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Landed: none of the fence exists yet",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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/`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 49
    },
    {
      "id": "ARBORA-HOST-R007.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add the import-fence test (rollup of `ARBORA-HOST-R007.2.1` to `ARBORA-HOST-R007.2.69`)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 50
    },
    {
      "id": "ARBORA-HOST-R007.2.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/a2a/authority.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 51
    },
    {
      "id": "ARBORA-HOST-R007.2.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/a2a/routing.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 52
    },
    {
      "id": "ARBORA-HOST-R007.2.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/access/service.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 53
    },
    {
      "id": "ARBORA-HOST-R007.2.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/agent_host/__init__.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 54
    },
    {
      "id": "ARBORA-HOST-R007.2.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/api/http/auth.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 55
    },
    {
      "id": "ARBORA-HOST-R007.2.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/api/mcp/serving.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 56
    },
    {
      "id": "ARBORA-HOST-R007.2.7",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/api/ops/access.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 57
    },
    {
      "id": "ARBORA-HOST-R007.2.8",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/api/policy/pdp_remote.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 58
    },
    {
      "id": "ARBORA-HOST-R007.2.9",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_binding.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 59
    },
    {
      "id": "ARBORA-HOST-R007.2.10",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_dispatch.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 60
    },
    {
      "id": "ARBORA-HOST-R007.2.11",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_durability.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 61
    },
    {
      "id": "ARBORA-HOST-R007.2.12",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_outcome.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 62
    },
    {
      "id": "ARBORA-HOST-R007.2.13",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_policy.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 63
    },
    {
      "id": "ARBORA-HOST-R007.2.14",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_provenance.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 64
    },
    {
      "id": "ARBORA-HOST-R007.2.15",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_service.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 65
    },
    {
      "id": "ARBORA-HOST-R007.2.16",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/browser_control_state.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 66
    },
    {
      "id": "ARBORA-HOST-R007.2.17",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/browser_control/trace_bundle.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 67
    },
    {
      "id": "ARBORA-HOST-R007.2.18",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/cli.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 68
    },
    {
      "id": "ARBORA-HOST-R007.2.19",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/config_generator.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 69
    },
    {
      "id": "ARBORA-HOST-R007.2.20",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/doctor_certification.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 70
    },
    {
      "id": "ARBORA-HOST-R007.2.21",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/doctor_coverage.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 71
    },
    {
      "id": "ARBORA-HOST-R007.2.22",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/doctor_lakehouse.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 72
    },
    {
      "id": "ARBORA-HOST-R007.2.23",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/doctor_observability.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 73
    },
    {
      "id": "ARBORA-HOST-R007.2.24",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/doctor.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 74
    },
    {
      "id": "ARBORA-HOST-R007.2.25",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/genesis_environments.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 75
    },
    {
      "id": "ARBORA-HOST-R007.2.26",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/preflight.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 76
    },
    {
      "id": "ARBORA-HOST-R007.2.27",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/production_ops.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 77
    },
    {
      "id": "ARBORA-HOST-R007.2.28",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/release_canary.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 78
    },
    {
      "id": "ARBORA-HOST-R007.2.29",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/release_candidate.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 79
    },
    {
      "id": "ARBORA-HOST-R007.2.30",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/deployment/self_deploy.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 80
    },
    {
      "id": "ARBORA-HOST-R007.2.31",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/fleet/access_contracts.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 81
    },
    {
      "id": "ARBORA-HOST-R007.2.32",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/fleet/child_resilience.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 82
    },
    {
      "id": "ARBORA-HOST-R007.2.33",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/fleet/gateway_ops.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 83
    },
    {
      "id": "ARBORA-HOST-R007.2.34",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/fleet/local_skill_catalog.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 84
    },
    {
      "id": "ARBORA-HOST-R007.2.35",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/fleet/multiplexer.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 85
    },
    {
      "id": "ARBORA-HOST-R007.2.36",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/fleet/onboarding.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 86
    },
    {
      "id": "ARBORA-HOST-R007.2.37",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/aggregator.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 87
    },
    {
      "id": "ARBORA-HOST-R007.2.38",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/config.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 88
    },
    {
      "id": "ARBORA-HOST-R007.2.39",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/daemon.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 89
    },
    {
      "id": "ARBORA-HOST-R007.2.40",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/dashboard_api.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 90
    },
    {
      "id": "ARBORA-HOST-R007.2.41",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/fleet_events.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 91
    },
    {
      "id": "ARBORA-HOST-R007.2.42",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/fleet.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 92
    },
    {
      "id": "ARBORA-HOST-R007.2.43",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/graph_api.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 93
    },
    {
      "id": "ARBORA-HOST-R007.2.44",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/rate_limit.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 94
    },
    {
      "id": "ARBORA-HOST-R007.2.45",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/remote_oauth_api.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 95
    },
    {
      "id": "ARBORA-HOST-R007.2.46",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/schemas/graph_core.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 96
    },
    {
      "id": "ARBORA-HOST-R007.2.47",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/usage_api.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 97
    },
    {
      "id": "ARBORA-HOST-R007.2.48",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/widgets/base.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 98
    },
    {
      "id": "ARBORA-HOST-R007.2.49",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/widgets/ollama.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 99
    },
    {
      "id": "ARBORA-HOST-R007.2.50",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/gateway/widgets/vector_db.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 100
    },
    {
      "id": "ARBORA-HOST-R007.2.51",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/mcp_server/bootstrap.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 101
    },
    {
      "id": "ARBORA-HOST-R007.2.52",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/mcp_server/composition.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 102
    },
    {
      "id": "ARBORA-HOST-R007.2.53",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/mcp_server/decide_wiring.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 103
    },
    {
      "id": "ARBORA-HOST-R007.2.54",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/mcp_server/runtime.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 104
    },
    {
      "id": "ARBORA-HOST-R007.2.55",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/mcp_server/server.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 105
    },
    {
      "id": "ARBORA-HOST-R007.2.56",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/alert_intake.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 106
    },
    {
      "id": "ARBORA-HOST-R007.2.57",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/backends/mattermost.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 107
    },
    {
      "id": "ARBORA-HOST-R007.2.58",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/backends/telegram.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 108
    },
    {
      "id": "ARBORA-HOST-R007.2.59",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/governed_send.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 109
    },
    {
      "id": "ARBORA-HOST-R007.2.60",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/lease.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 110
    },
    {
      "id": "ARBORA-HOST-R007.2.61",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/polling.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 111
    },
    {
      "id": "ARBORA-HOST-R007.2.62",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/reach.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 112
    },
    {
      "id": "ARBORA-HOST-R007.2.63",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/registry.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 113
    },
    {
      "id": "ARBORA-HOST-R007.2.64",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/router.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 114
    },
    {
      "id": "ARBORA-HOST-R007.2.65",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/messaging/service.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 115
    },
    {
      "id": "ARBORA-HOST-R007.2.66",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/observability/gateway_health.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 116
    },
    {
      "id": "ARBORA-HOST-R007.2.67",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/semantic_content.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 117
    },
    {
      "id": "ARBORA-HOST-R007.2.68",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Rewire `arbora/webui_host/webui_co_service.py` off agent-runtime internals",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 118
    },
    {
      "id": "ARBORA-HOST-R007.2.69",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add the `agent_utilities.api`-only import-fence test",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 119
    },
    {
      "id": "ARBORA-HOST-R008",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora hosts its own boundary modules",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "776ceb15e7ba",
        "a04f32a44865",
        "a727c1536f27",
        "b0cd6a8f01de",
        "d3ef338ca1e3"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 120
    },
    {
      "id": "ARBORA-HOST-R009",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora hosts the agent HTTP server and A2A endpoints",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "e5efd4f0ca33"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 121
    },
    {
      "id": "ARBORA-HOST-R010",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora owns hosting/deployment configuration settings",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "396d8307596f",
        "afc93c497524"
      ],
      "verified_by": [
        "tests/deployment/test_host_config.py:32",
        "tests/deployment/test_host_config.py:43"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 122
    },
    {
      "id": "ARBORA-HOST-R011",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora serves the messaging channel and routing layer",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "63a66f60915a",
        "afefd425c905",
        "bc2b6941077e",
        "c467b28d2385"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`\u2013`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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 123
    },
    {
      "id": "ARBORA-HOST-R012",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Component registry carries Arbora and SDK boundary entries",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "9760bef27075",
        "d75db1ea42e8",
        "e278fafd4073"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 124
    },
    {
      "id": "ARBORA-HOST-R013",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Front ends import only public Arbora/agent-runtime surfaces",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4ca77fbff9e3"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 125
    },
    {
      "id": "ARBORA-HOST-R014",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Agent runtime split into connector SDK, Arbora and engine",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "0062797e3c37",
        "91c0d96adb17",
        "f8d31551067c"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 126
    },
    {
      "id": "ARBORA-HOST-R015",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Layered agent capability model with a harness abstraction",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1f575184e8da"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 127
    },
    {
      "id": "ARBORA-HOST-R016",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "main branch includes the published dependency composition",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "20f773df9ddd"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 128
    },
    {
      "id": "ARBORA-HOST-R017",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Browser inventory lists native Arbora tools",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "3b2c6ac9d864",
        "a4928a7047e1"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 129
    },
    {
      "id": "ARBORA-HOST-R018",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Browser catalog reads run under the process authority",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "3b2c6ac9d864",
        "a4928a7047e1"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 130
    },
    {
      "id": "ARBORA-HOST-R019",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora serves the service dashboard surface the web UI composes",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "975596a67ed0",
        "a504e36c3c7c"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 131
    },
    {
      "id": "ARBORA-HOST-R020",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Serving start installs the decide consumers",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "91c0d96adb17",
        "c4e7f7197b78",
        "d7eb02776c45",
        "e96c8e3a5360"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 132
    },
    {
      "id": "ARBORA-HOST-R021",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Serving start binds the assembler's commit and publish providers and installs the topology asker",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "117301017944",
        "e67f069a9ed4"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 133
    },
    {
      "id": "ARBORA-HOST-R022",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Serving start binds the task planner's capability-search, guardrail and workflow lookups",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "af5f5c292007",
        "e67f069a9ed4"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 134
    },
    {
      "id": "ARBORA-HOST-R023",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Arbora serves its eight-tool MCP intent surface from its own operation registry",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "51529da8abe6",
        "c39349d16c53",
        "e28e54dd74e5"
      ],
      "verified_by": [
        "tests/api/test_mcp_serving.py:236"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 135
    },
    {
      "id": "ARBORA-HOST-R024",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "`arbora.mcp_server.server` registers Arbora's own intent surface, not the agent runtime's",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2646511870e7",
        "ab0d4bed45c4",
        "c39349d16c53",
        "d5f69ae59c75"
      ],
      "verified_by": [
        "tests/test_real_boot.py:537",
        "tests/test_real_boot.py:567"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**`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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 136
    },
    {
      "id": "ARBORA-HOST-R025",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "The agent runtime's MCP serving stack is removed",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "c39349d16c53"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 137
    },
    {
      "id": "ARBORA-HOST-R026",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Durable A2A task persistence in the arbora agent host",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "8d1bc46ecbdb"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 138
    },
    {
      "id": "ARBORA-HOST-R026.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Define the typed A2A task-store port",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 139
    },
    {
      "id": "ARBORA-HOST-R026.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Implement the engine-backed A2A task store",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 140
    },
    {
      "id": "ARBORA-HOST-R026.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Wire the hosted A2A app to the task store, fail-closed when absent",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 141
    },
    {
      "id": "ARBORA-HOST-R026.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add the doctor check for A2A task persistence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 142
    },
    {
      "id": "ARBORA-HOST-R026.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Point the `g34-a2a` certification gate at arbora tests",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 143
    },
    {
      "id": "ARBORA-HOST-R027",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Loopback OIDC authority for skill certification",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 144
    },
    {
      "id": "ARBORA-HOST-R027.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add the loopback OIDC authority owner module for skill certification",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 145
    },
    {
      "id": "ARBORA-HOST-R027.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add the loopback OIDC authority test fixture",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 146
    },
    {
      "id": "ARBORA-HOST-R027.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Add the loopback OIDC authority script",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 147
    },
    {
      "id": "ARBORA-HOST-R028",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Bump the pinned agent-utilities source for the new `agent_utilities.api.*` export modules",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 148
    },
    {
      "id": "ARBORA-HOST-R029",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Tenant-bound native desktop actions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 149
    },
    {
      "id": "ARBORA-HOST-R030",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Run-bound visual state",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 150
    },
    {
      "id": "ARBORA-HOST-R031",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Coding-agent discovery and sandbox handoff",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 151
    },
    {
      "id": "ARBORA-HOST-R010.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Preserve configuration ownership",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 152
    },
    {
      "id": "ARBORA-HOST-R010.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Declare every consumed environment name",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 153
    },
    {
      "id": "ARBORA-HOST-R010.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Validate before any service starts",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 154
    },
    {
      "id": "ARBORA-HOST-R010.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Keep conditional configuration precise",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 155
    },
    {
      "id": "ARBORA-HOST-R010.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Bind environment guidance to declarations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 156
    },
    {
      "id": "ARBORA-HOST-R010.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Prove startup validation through the launcher",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 157
    },
    {
      "id": "ARBORA-HOST-R008.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Preserve every boundary module",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 158
    },
    {
      "id": "ARBORA-HOST-R008.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Detect installed harnesses without effects",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 159
    },
    {
      "id": "ARBORA-HOST-R008.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Bind exact harness configuration changes",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 160
    },
    {
      "id": "ARBORA-HOST-R008.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Apply harness edits without overwriting unrelated content",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 161
    },
    {
      "id": "ARBORA-HOST-R008.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Prove detected-harness installation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 162
    },
    {
      "id": "ARBORA-HOST-R009.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Preserve hosted protocols and task authority",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 163
    },
    {
      "id": "ARBORA-HOST-R010.7",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Select terminal web or combined start",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 164
    },
    {
      "id": "ARBORA-HOST-R010.7.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Check injected startup admission",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "aee6cfa29204"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 165
    },
    {
      "id": "ARBORA-HOST-R010.7.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Wire admitted interface startup",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 166
    },
    {
      "id": "ARBORA-HOST-R010.7.2.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Bind actual declarative startup inputs",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "906170980099"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 167
    },
    {
      "id": "ARBORA-HOST-R010.7.2.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Complete admitted client composition",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 168
    },
    {
      "id": "ARBORA-HOST-R009.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Run terminal-mode HTTP in a supervised background thread",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 169
    },
    {
      "id": "ARBORA-HOST-R009.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Project scoped workspace logs",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 170
    },
    {
      "id": "ARBORA-HOST-R009.4",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Bound log delivery and shutdown",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 171
    },
    {
      "id": "ARBORA-HOST-R009.4.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Bound owned supervisor shutdown",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6fa7e9832d48"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 172
    },
    {
      "id": "ARBORA-HOST-R009.4.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Integrate delivery and terminal shutdown",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 173
    },
    {
      "id": "ARBORA-HOST-R009.5",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Publish the terminal log-consumer handoff",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 174
    },
    {
      "id": "ARBORA-HOST-R009.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Prove start and logs through real processes",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 175
    },
    {
      "id": "ARBORA-HOST-R006.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Preserve the sole multiplexer owner",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 176
    },
    {
      "id": "ARBORA-HOST-R006.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Use one standard transport scaffold",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 177
    },
    {
      "id": "ARBORA-HOST-R023.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Preserve the entire intent surface",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 178
    },
    {
      "id": "ARBORA-HOST-R023.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Prove transport parity on the served surface",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 179
    },
    {
      "id": "ARBORA-HOST-R023.3",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "AU:20 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 185
    },
    {
      "id": "ARBORA-HOST-R008.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "AU:96 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 186
    },
    {
      "id": "ARBORA-HOST-R026.6",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "AU:112 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 187
    },
    {
      "id": "ARBORA-HOST-R022.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "AU:97 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 188
    },
    {
      "id": "ARBORA-HOST-R010.8",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "ARBORA:9 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 189
    },
    {
      "id": "ARBORA-HOST-R032",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Remote workbench compatibility manifest and admission",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 190
    },
    {
      "id": "ARBORA-HOST-R010.9",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Refuse unsupported client interfaces before host effects",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "21bf942e9389",
        "c18b2c507267"
      ],
      "verified_by": [
        "tests/agent_host/test_interface_refusal.py:3"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 192
    },
    {
      "id": "ARBORA-HOST-R009.7",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Injected host log authority",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "22534d1e5448",
        "cdd77f05d30b",
        "e30aad028a40"
      ],
      "verified_by": [
        "tests/agent_host/test_log_access.py:2"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 194
    },
    {
      "id": "ARBORA-HOST-R009.8",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Production host log sink",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "191af7948d99"
      ],
      "verified_by": [
        "tests/agent_host/test_log_sink.py:2",
        "tests/agent_host/test_log_sink_terminal.py:6"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 196
    },
    {
      "id": "ARBORA-HOST-R009.8.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Admit exact source generations",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "34077185335e",
        "ee476c64b37f"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 198
    },
    {
      "id": "ARBORA-HOST-R009.8.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Retain restart acceptance",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 199
    },
    {
      "id": "ARBORA-HOST-R009.8.2.1",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Replay retained host files after restart",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "80f6b7b53f91",
        "c7208d7d3822"
      ],
      "verified_by": [
        "tests/agent_host/test_log_replay.py:2"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 200
    },
    {
      "id": "ARBORA-HOST-R009.8.2.2",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Complete consumer metadata presentation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ceaa3da1bbcc"
      ],
      "verified_by": [
        "tests/agent_host/test_log_metadata.py:2",
        "tests/agent_host/test_log_sink_terminal.py:60"
      ],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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.",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 201
    },
    {
      "id": "ARBORA-HOST-R008.1000",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Startup bindings for messaging, A2A and readiness",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 202
    },
    {
      "id": "ARBORA-HOST-R008.1001",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 203
    },
    {
      "id": "ARBORA-HOST-R008.1002",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 204
    },
    {
      "id": "ARBORA-HOST-R008.1003",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 205
    },
    {
      "id": "ARBORA-HOST-R008.1004",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 206
    },
    {
      "id": "ARBORA-HOST-R008.1005",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 207
    },
    {
      "id": "ARBORA-HOST-R008.1006",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Hosted observability, ecosystem and deployment modules",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 208
    },
    {
      "id": "ARBORA-HOST-R008.1007",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 209
    },
    {
      "id": "ARBORA-HOST-R008.1008",
      "kind": "requirement",
      "parent": "ARBORA-HOST",
      "source": "specs/host-composition-boundary/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-HOST \u2014 Arbora host composition and ownership boundary",
      "definition": "**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`",
      "definition_source": "specs/host-composition-boundary/requirements.md",
      "definition_line": 210
    },
    {
      "id": "ARBORA-OPS",
      "kind": "spec",
      "parent": null,
      "source": "specs/hosted-api-operations/status.json",
      "title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/hosted-api-operations/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/invoke/bootstrap.py:167",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/bootstrap.py#L167"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/invoke/pipeline.py:810",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/pipeline.py#L810"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/ops/registry_factory.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/ops/registry_factory.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/ops/retrieval.py:81",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/ops/retrieval.py#L81"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/policy/domain_scopes.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/policy/domain_scopes.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/registry/eg_binding.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/registry/eg_binding.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/registry/scopes.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/registry/scopes.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/dashboard_api.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/dashboard_api.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/fleet_events.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/fleet_events.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/registry.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/registry.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "spec",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/hosted-api-operations/spec.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/api/test_registry_factory.py",
          "repository": "Knuckles-Team/arbora",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/tests/api/test_registry_factory.py"
        },
        {
          "declared_in": "specs/hosted-api-operations/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/hosted-api-operations/requirements.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "test-spec.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/hosted-api-operations/test-spec.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG durable kernel",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG media",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG orchestration",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "EG query",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "SDK ingest",
          "repository": "Knuckles-Team/agent-connector-sdk",
          "url": "https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md"
        },
        {
          "declared_in": "specs/hosted-api-operations/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "A2A task projection",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/a2a/spec.md"
        }
      ],
      "plan_diagrams": [
        "flowchart LR\n  C[MCP / HTTP / A2A / fleet forwarder] --> S[verified surface adapter]\n  S --> I[\"invoke: validate, scopes, policy, subject, effect, audit\"]\n  I --> R[one typed operation registry]\n  I --> E[engine client under caller claims]\n  I --> A[agent service via public port]\n  I --> F[fleet gateway under caller credential]\n  I --> D[durable audit and plan lease]\n  R --> G[\"generated OpenAPI, schemas and clients\"]\n"
      ],
      "unparsed_references": [
        {
          "declared_in": "specs/hosted-api-operations/plan.md",
          "text": "[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)."
        }
      ]
    },
    {
      "id": "ARBORA-OPS-R001",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Native MCP/REST facade with A2A unary operations then streaming",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "deb2b45bf83d"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-OPS-R002",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Scoped A2A task routing and fleet tool exposure",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "20f773df9ddd"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-OPS-R003",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Remove multiplexer skill/prompt harvest path",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "deb2b45bf83d"
      ],
      "verified_by": [
        "tests/fleet/test_no_duplicate_skill_prompt_harvest.py:59"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-OPS-R004",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "FastMCP 4 bridge for the MCP server",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a7947166d00a",
        "b5bf4ba58902"
      ],
      "verified_by": [
        "tests/deployment/test_release_canary.py:61",
        "tests/deployment/test_release_canary.py:92"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-OPS-R005",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Stable auth error codes from the engine contract",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "100d015ca012",
        "b5bf4ba58902"
      ],
      "verified_by": [
        "tests/api/test_contract_admission.py:120",
        "tests/api/test_contract_admission.py:70",
        "tests/api/test_errors.py:285"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-OPS-R006",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Consume the engine's packaged wire-callable contract",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "100d015ca012",
        "97061e59c412"
      ],
      "verified_by": [
        "tests/api/test_eg_binding.py:190"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-OPS-R007",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Immutable operation registry with digest and authorization",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b83c69e2b41",
        "97061e59c412"
      ],
      "verified_by": [
        "tests/api/test_api_registry.py:110",
        "tests/api/test_api_registry.py:63"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-OPS-R009",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Single invoke pipeline for authority, effect, and audit",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "5cd1a427c6a1",
        "97061e59c412",
        "deb2b45bf83d"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-OPS-R010",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Closed error enum and one response envelope",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4b83c69e2b41"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-OPS-R011",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Six resident MCP verbs with typed discovery",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "6b63aeb7ba03",
        "ea736715b7fb"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-OPS-R012",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Bounded resolver for natural-language operation lookup",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43db6b7ac49b",
        "deb2b45bf83d"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-OPS-R013",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Generated HTTP API for every registry operation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1fb96633563e",
        "a974d10c5d0c",
        "ea736715b7fb"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-OPS-R014",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Identity self-service and admin operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-OPS-R015",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Access elevation, approval, and lease operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-OPS-R016",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Capacity status and throttle mode operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-OPS-R017",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Finance and markets operations with tenant isolation",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-OPS-R017.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Tenant-scoped market reads under finance:read",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "64a0c091b354"
      ],
      "verified_by": [
        "tests/finance/test_markets.py:34",
        "tests/finance/test_markets.py:68"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-OPS-R017.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Position and paper-trading actions with subject ownership checks",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "64a0c091b354"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-OPS-R018",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Query, search, ontology, and analytics operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-OPS-R018.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Sparql, sql_schema, and ontology operations",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "64a0c091b354"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-OPS-R018.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Uql, sql, search, indexes, and analytics.series operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "64a0c091b354"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 26
    },
    {
      "id": "ARBORA-OPS-R018.2.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Distinct caller-bound query contracts",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3ea22258010e",
        "51529da8abe6",
        "a2f74cb9621d"
      ],
      "verified_by": [
        "tests/api/test_query_ops.py:57"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 27
    },
    {
      "id": "ARBORA-OPS-R018.2.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Remaining query, SQL, search, indexes and analytics serving acceptance",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 28
    },
    {
      "id": "ARBORA-OPS-R019",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Federation source registration and sharing operations",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 29
    },
    {
      "id": "ARBORA-OPS-R019.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Federation source register, list, get, and probe",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "64a0c091b354"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 30
    },
    {
      "id": "ARBORA-OPS-R019.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Federation source share and unshare",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "64a0c091b354"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 31
    },
    {
      "id": "ARBORA-OPS-R020",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Ingest operations through a typed SDK runner facade",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "e990e195ab42"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 32
    },
    {
      "id": "ARBORA-OPS-R020.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Typed ingest runner port and the source-sync entry point",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b69b27f1d76",
        "5ffd23ca7883",
        "822f55d5835d",
        "a974d10c5d0c",
        "cc90ee37583f"
      ],
      "verified_by": [
        "tests/api/test_ingest_ops.py:116",
        "tests/api/test_ingest_ops.py:97"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 33
    },
    {
      "id": "ARBORA-OPS-R020.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Repository indexing and source inventory operations",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b69b27f1d76",
        "5ffd23ca7883",
        "822f55d5835d",
        "a974d10c5d0c",
        "cc90ee37583f"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 34
    },
    {
      "id": "ARBORA-OPS-R020.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Pack and job management operations",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "822f55d5835d"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 35
    },
    {
      "id": "ARBORA-OPS-R020.3.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Missing ingest.packs.* and ingest.jobs.* ops",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16c9b2bddda3"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 36
    },
    {
      "id": "ARBORA-OPS-R020.3.1.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`ingest.packs.list` op",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16c9b2bddda3"
      ],
      "verified_by": [
        "tests/api/test_ingest_ops.py:228",
        "tests/api/test_ingest_ops.py:240",
        "tests/api/test_ingest_ops.py:249"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 37
    },
    {
      "id": "ARBORA-OPS-R020.3.1.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`ingest.jobs.status` op",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "634a344fade7"
      ],
      "verified_by": [
        "tests/api/test_ingest_ops.py:256",
        "tests/api/test_ingest_ops.py:266",
        "tests/api/test_ingest_ops.py:275"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 38
    },
    {
      "id": "ARBORA-OPS-R020.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Drift listing and repair-with-approval operations",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "822f55d5835d"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 39
    },
    {
      "id": "ARBORA-OPS-R020.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Embedding admission and re-embedding operations",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "822f55d5835d"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 40
    },
    {
      "id": "ARBORA-OPS-R021",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Decision, retrieval, and policy operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 41
    },
    {
      "id": "ARBORA-OPS-R021.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Decide operations (service-executed) \u2014 decide slice",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1ded59edd1a6"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Decide operations (service-executed) \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 42
    },
    {
      "id": "ARBORA-OPS-R021.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Retrieval, context, and freshness read operations \u2014 retrieval slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "e78a5e5b701e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Retrieval, context, and freshness read operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 43
    },
    {
      "id": "ARBORA-OPS-R021.2.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`retrieval.search` op",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "e78a5e5b701e"
      ],
      "verified_by": [
        "tests/api/test_retrieval_ops.py:43",
        "tests/api/test_retrieval_ops.py:58"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 44
    },
    {
      "id": "ARBORA-OPS-R021.2.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`retrieval.freshness` op",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "f6f2177ab1e0"
      ],
      "verified_by": [
        "tests/api/test_retrieval_ops.py:68",
        "tests/api/test_retrieval_ops.py:81"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 45
    },
    {
      "id": "ARBORA-OPS-R021.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Policy and swarm read operations \u2014 policy slice",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cc90ee37583f"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Policy and swarm read operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 46
    },
    {
      "id": "ARBORA-OPS-R021.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Run read operations \u2014 runs slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Run read operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 47
    },
    {
      "id": "ARBORA-OPS-R021.4.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "RunTraceReader port",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 48
    },
    {
      "id": "ARBORA-OPS-R021.4.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Engine adapter",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 49
    },
    {
      "id": "ARBORA-OPS-R021.4.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Aggregate models",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 50
    },
    {
      "id": "ARBORA-OPS-R021.4.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Aggregate operation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 51
    },
    {
      "id": "ARBORA-OPS-R021.4.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Per-run operation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 52
    },
    {
      "id": "ARBORA-OPS-R021.4.5.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Current-plan read boundary",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "663cc8cad940"
      ],
      "verified_by": [
        "tests/api/test_runs_ops.py:20"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 53
    },
    {
      "id": "ARBORA-OPS-R021.4.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Registration and served proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 54
    },
    {
      "id": "ARBORA-OPS-R022",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Work and evolution loop operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 55
    },
    {
      "id": "ARBORA-OPS-R022.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Work-item and offer operations \u2014 work slice",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "c4cc3e21b439"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Work-item and offer operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 56
    },
    {
      "id": "ARBORA-OPS-R022.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Evolution loop, schedule, and proposal operations \u2014 evolution slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Evolution loop, schedule, and proposal operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 57
    },
    {
      "id": "ARBORA-OPS-R022.2.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "evolution.loops.status operation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 58
    },
    {
      "id": "ARBORA-OPS-R022.2.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`evolution.schedules.list` op",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 59
    },
    {
      "id": "ARBORA-OPS-R022.2.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`evolution.proposals.list` op",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 60
    },
    {
      "id": "ARBORA-OPS-R022.2.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`evolution.loops.run` op",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 61
    },
    {
      "id": "ARBORA-OPS-R022.2.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "`evolution.loops.pause` op",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**`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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 62
    },
    {
      "id": "ARBORA-OPS-R023",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Agent, browser, RLM, and fleet call operations",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "e1d37ca10ef7"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 63
    },
    {
      "id": "ARBORA-OPS-R024",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Telemetry, security, usage, and admin operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 64
    },
    {
      "id": "ARBORA-OPS-R024.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Telemetry operations \u2014 telemetry slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "4b69b27f1d76"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Telemetry operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 65
    },
    {
      "id": "ARBORA-OPS-R024.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Security operations \u2014 security slice",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4b69b27f1d76"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Security operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 66
    },
    {
      "id": "ARBORA-OPS-R024.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Usage operations \u2014 usage slice",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4b69b27f1d76"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Usage operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 67
    },
    {
      "id": "ARBORA-OPS-R024.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Memory operations \u2014 memory slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "383897ed5238",
        "5ffd23ca7883",
        "8d1bc46ecbdb",
        "94724be32c28"
      ],
      "verified_by": [
        "tests/api/test_registry_factory.py:326"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Memory operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 68
    },
    {
      "id": "ARBORA-OPS-R024.4.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Versioned memory port",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 69
    },
    {
      "id": "ARBORA-OPS-R024.4.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Snapshot reads and listing",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 70
    },
    {
      "id": "ARBORA-OPS-R024.4.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Versioned saves and conflicts",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 71
    },
    {
      "id": "ARBORA-OPS-R024.4.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Hosted materialization",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 72
    },
    {
      "id": "ARBORA-OPS-R024.4.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Authority and replay",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 73
    },
    {
      "id": "ARBORA-OPS-R024.4.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Registration and served proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 74
    },
    {
      "id": "ARBORA-OPS-R024.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Operational admin operations \u2014 admin slice",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "8d1bc46ecbdb"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Operational admin operations \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 75
    },
    {
      "id": "ARBORA-OPS-R025",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Generated registry, OpenAPI, and client artifacts",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b83c69e2b41"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 76
    },
    {
      "id": "ARBORA-OPS-R025.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Generated Python invocation boundary",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "144fd029bf2e"
      ],
      "verified_by": [
        "tests/api/test_gen_api.py:266",
        "tests/api/test_gen_api.py:288",
        "tests/api/test_gen_api.py:303"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 77
    },
    {
      "id": "ARBORA-OPS-R025.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Remaining generated artifact acceptance",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "43c5e4b631cb",
        "a247b168fa98"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 78
    },
    {
      "id": "ARBORA-OPS-R026",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "API surface and compatibility drift gates",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b9d181069e4"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 79
    },
    {
      "id": "ARBORA-OPS-R026.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "API-surface drift gate \u2014 api-surface slice",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b9d181069e4"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**API-surface drift gate \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 80
    },
    {
      "id": "ARBORA-OPS-R026.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Backward-compatibility drift gate \u2014 backward-compat slice",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b9d181069e4"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Backward-compatibility drift gate \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 81
    },
    {
      "id": "ARBORA-OPS-R027",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Authority-parity test across principals and surfaces",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4b9d181069e4"
      ],
      "verified_by": [
        "tests/api/test_authority_parity.py:114",
        "tests/api/test_authority_parity.py:120"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 82
    },
    {
      "id": "ARBORA-OPS-R028",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Exported domain scope classes",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4b83c69e2b41",
        "b47b39eac0ae"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 83
    },
    {
      "id": "ARBORA-OPS-R029",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Single resident-tool server cutover",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5bc24c262ef0"
      ],
      "verified_by": [
        "tests/api/test_resident_tool_surface.py:33",
        "tests/api/test_resident_tool_surface.py:43",
        "tests/api/test_resident_tool_surface.py:56"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 84
    },
    {
      "id": "ARBORA-OPS-R030",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Accurate MCP server and API documentation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5bc24c262ef0"
      ],
      "verified_by": [
        "tests/docs/test_mcp_server_doc_accuracy.py:24",
        "tests/docs/test_mcp_server_doc_accuracy.py:38"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 85
    },
    {
      "id": "ARBORA-OPS-R031",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Published tool-to-operation parity inventory",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5bc24c262ef0"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 86
    },
    {
      "id": "ARBORA-OPS-R031.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Fleet meta-tool parity mapping \u2014 resident fleet slice",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5bc24c262ef0"
      ],
      "verified_by": [
        "tests/api/test_fleet_tool_parity_inventory.py:33",
        "tests/api/test_fleet_tool_parity_inventory.py:42"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**Fleet meta-tool parity mapping \u2014 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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 87
    },
    {
      "id": "ARBORA-OPS-R032",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Identity dependency inversion via ports",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 88
    },
    {
      "id": "ARBORA-OPS-R032.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Static identity-ports import boundary",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b97b75e763ed"
      ],
      "verified_by": [
        "tests/architecture/test_identity_ports_boundary.py:51"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 89
    },
    {
      "id": "ARBORA-OPS-R032.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Injected composition root for identity ports",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 90
    },
    {
      "id": "ARBORA-OPS-R032.2.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Identity runtime constructor in the composition root",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3dc5a3607868"
      ],
      "verified_by": [
        "tests/identity/test_identity_composition.py:32",
        "tests/identity/test_identity_composition.py:52",
        "tests/identity/test_identity_composition.py:62"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 91
    },
    {
      "id": "ARBORA-OPS-R032.2.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Inject identity ports into mcp_server",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 92
    },
    {
      "id": "ARBORA-OPS-R032.2.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Inject identity ports into webui_host and webui_co_service (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 93
    },
    {
      "id": "ARBORA-OPS-R032.2.3.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "compose_web_application requires injected identity ports",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 94
    },
    {
      "id": "ARBORA-OPS-R032.2.3.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Thread identity ports through run_web_ui and the webui_host package (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 95
    },
    {
      "id": "ARBORA-OPS-R032.2.3.2.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "run_web_ui accepts and binds identity ports",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 96
    },
    {
      "id": "ARBORA-OPS-R032.2.3.2.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Supply identity ports from mcp_server composition to the agent-webui start call",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 97
    },
    {
      "id": "ARBORA-OPS-R032.2.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Integration test of single injected identity runtime",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 98
    },
    {
      "id": "ARBORA-OPS-R033",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Dynamic multiplexer discovery, load, and call",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "b9141334e1ba"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 99
    },
    {
      "id": "ARBORA-OPS-R034",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Eunomia narrowing-only policy enforcement",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4b83c69e2b41"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 100
    },
    {
      "id": "ARBORA-OPS-R035",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Multiplexer registration reduced to four resident tools",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 101
    },
    {
      "id": "ARBORA-OPS-R035.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Four-tool meta-registration and routing-only visibility, unit-bound",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b97b75e763ed"
      ],
      "verified_by": [
        "tests/api/mcp/test_registration_governed_visibility.py:27",
        "tests/api/mcp/test_registration_governed_visibility.py:58"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 102
    },
    {
      "id": "ARBORA-OPS-R035.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Registration wired into the live server",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 103
    },
    {
      "id": "ARBORA-OPS-R036",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Pre-dispatch audit reservation for governed effects",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "a9025191159e"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 104
    },
    {
      "id": "ARBORA-OPS-R037",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Native first-party A2A facade",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "20f773df9ddd",
        "d53165c2e72c"
      ],
      "verified_by": [
        "tests/a2a/test_application.py:68",
        "tests/a2a/test_application.py:90"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 105
    },
    {
      "id": "ARBORA-OPS-R038",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Generated OpenAPI served through Swagger UI",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1fb96633563e",
        "ea736715b7fb",
        "f13ce20b05dc"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 106
    },
    {
      "id": "ARBORA-OPS-R039",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Dashboard route parity (replaces AU-BOUNDARY-R001.2, commit 0eb67c99c)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 107
    },
    {
      "id": "ARBORA-OPS-R039.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one test in tests/gateway/test_dashboard_route_census.py asserting the served dashboard router exposes all 15 old method and path pairs",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 108
    },
    {
      "id": "ARBORA-OPS-R039.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 109
    },
    {
      "id": "ARBORA-OPS-R039.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one test in tests/gateway/test_dashboard_api.py asserting GET /health returns 200 without a capability and sets Cache-Control no-store",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 110
    },
    {
      "id": "ARBORA-OPS-R039.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one test in tests/gateway/test_dashboard_api.py asserting a malformed hydrate source returns 422 and an unknown service id returns 404",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 111
    },
    {
      "id": "ARBORA-OPS-R039.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 112
    },
    {
      "id": "ARBORA-OPS-R039.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 113
    },
    {
      "id": "ARBORA-OPS-R039.7",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 114
    },
    {
      "id": "ARBORA-OPS-R039.8",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 115
    },
    {
      "id": "ARBORA-OPS-R039.9",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 116
    },
    {
      "id": "ARBORA-OPS-R040",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Live Artifacts routes (replaces AU-BOUNDARY-R001.3, commit 902f906ca)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 117
    },
    {
      "id": "ARBORA-OPS-R040.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Cross-repo prerequisite (owner: agent-utilities)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 118
    },
    {
      "id": "ARBORA-OPS-R040.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one typed model: create-artifact request in arbora/gateway/artifacts_api.py, rejecting empty template and oversize data",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 119
    },
    {
      "id": "ARBORA-OPS-R040.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one port: artifact store and refresh ports plus a resolver callable type in arbora/gateway/ports.py",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 120
    },
    {
      "id": "ARBORA-OPS-R040.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one route: POST /api/artifacts, returning id and rendered output, 400 on a bounded-JSON error",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 121
    },
    {
      "id": "ARBORA-OPS-R040.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one route: GET /api/artifacts/{artifact_id}, 404 when absent",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "Add one route: GET /api/artifacts/{artifact_id}, 404 when absent. | test_artifacts_api.py get and 404 cases.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 122
    },
    {
      "id": "ARBORA-OPS-R040.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Add one route: POST /api/artifacts/{artifact_id}/refresh with inline data or resolver, 404 when absent, prior render preserved on failure",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 123
    },
    {
      "id": "ARBORA-OPS-R040.7",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 124
    },
    {
      "id": "ARBORA-OPS-R040.8",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 125
    },
    {
      "id": "ARBORA-OPS-R040.9",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 126
    },
    {
      "id": "ARBORA-OPS-R040.10",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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).",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 127
    },
    {
      "id": "ARBORA-OPS-R041",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Agent summary widget dropped (replaces AU-BOUNDARY-R001.7, commit 7717d2e62)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 128
    },
    {
      "id": "ARBORA-OPS-R041.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "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",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 129
    },
    {
      "id": "ARBORA-OPS-R042",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Served operations screen untrusted content and redact secrets (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 131
    },
    {
      "id": "ARBORA-OPS-R042.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 132
    },
    {
      "id": "ARBORA-OPS-R042.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 133
    },
    {
      "id": "ARBORA-OPS-R042.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 134
    },
    {
      "id": "ARBORA-OPS-R042.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 135
    },
    {
      "id": "ARBORA-OPS-R042.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 136
    },
    {
      "id": "ARBORA-OPS-R042.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 137
    },
    {
      "id": "ARBORA-OPS-R050",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Policy lifecycle operations that guard plans",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 150
    },
    {
      "id": "ARBORA-OPS-R050.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 151
    },
    {
      "id": "ARBORA-OPS-R050.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 152
    },
    {
      "id": "ARBORA-OPS-R050.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 153
    },
    {
      "id": "ARBORA-OPS-R050.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 154
    },
    {
      "id": "ARBORA-OPS-R050.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 155
    },
    {
      "id": "ARBORA-OPS-R050.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 156
    },
    {
      "id": "ARBORA-OPS-R051",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Scoped security-evaluation operation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 157
    },
    {
      "id": "ARBORA-OPS-R051.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 158
    },
    {
      "id": "ARBORA-OPS-R051.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 159
    },
    {
      "id": "ARBORA-OPS-R051.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 160
    },
    {
      "id": "ARBORA-OPS-R051.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 161
    },
    {
      "id": "ARBORA-OPS-R051.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 162
    },
    {
      "id": "ARBORA-OPS-R051.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 163
    },
    {
      "id": "ARBORA-OPS-R052",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Authorization-segmented virtual schema projections",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 164
    },
    {
      "id": "ARBORA-OPS-R052.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 165
    },
    {
      "id": "ARBORA-OPS-R052.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 166
    },
    {
      "id": "ARBORA-OPS-R052.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 167
    },
    {
      "id": "ARBORA-OPS-R052.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 168
    },
    {
      "id": "ARBORA-OPS-R052.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 169
    },
    {
      "id": "ARBORA-OPS-R052.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 170
    },
    {
      "id": "ARBORA-OPS-R053",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Bounded interaction space",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 171
    },
    {
      "id": "ARBORA-OPS-R053.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 172
    },
    {
      "id": "ARBORA-OPS-R053.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 173
    },
    {
      "id": "ARBORA-OPS-R053.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 174
    },
    {
      "id": "ARBORA-OPS-R053.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 175
    },
    {
      "id": "ARBORA-OPS-R053.5",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 176
    },
    {
      "id": "ARBORA-OPS-R053.6",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 177
    },
    {
      "id": "ARBORA-OPS-R054",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Technique-bound benchmark adoption",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 178
    },
    {
      "id": "ARBORA-OPS-R055",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Run-bound process remediation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 179
    },
    {
      "id": "ARBORA-OPS-R056",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Source-bound changeset review",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 180
    },
    {
      "id": "ARBORA-OPS-R057",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Stable prompt serialization and difference oracle",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 181
    },
    {
      "id": "ARBORA-OPS-R058",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Authorized table-browser projection",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 182
    },
    {
      "id": "ARBORA-OPS-R061",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Indexed token and cost projection",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 183
    },
    {
      "id": "ARBORA-OPS-R063",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Retrieval evaluation and authorized context projection",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 184
    },
    {
      "id": "ARBORA-OPS-R024.1.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "AU:62 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 190
    },
    {
      "id": "ARBORA-OPS-R014.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "AU:95 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 191
    },
    {
      "id": "ARBORA-OPS-R022.3",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "AU:41 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 192
    },
    {
      "id": "ARBORA-OPS-R022.4",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "AU:53 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 193
    },
    {
      "id": "ARBORA-OPS-R053.7",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "AU:71 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 194
    },
    {
      "id": "ARBORA-OPS-R021.2.1.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "AU:93 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 195
    },
    {
      "id": "ARBORA-OPS-R050.2.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "EG:61 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 196
    },
    {
      "id": "ARBORA-OPS-R009.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "ARBORA:17 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 197
    },
    {
      "id": "ARBORA-OPS-R053.8",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "ARBORA:25 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 198
    },
    {
      "id": "ARBORA-OPS-R059",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Proposal outcome projection",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 199
    },
    {
      "id": "ARBORA-OPS-R060",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Supported-harness discovery and session projections",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 200
    },
    {
      "id": "ARBORA-OPS-R062",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Authenticated graph-change feed and recovery",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 201
    },
    {
      "id": "ARBORA-OPS-R064",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Viewport bins and selection",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 202
    },
    {
      "id": "ARBORA-OPS-R065",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Live meeting transcript and summary provider operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 203
    },
    {
      "id": "ARBORA-OPS-R066",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Bounded bookmark search, relationships, and export",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 204
    },
    {
      "id": "ARBORA-OPS-R700",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Readiness snapshot joins independent probes",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0978f146c1dc",
        "fb0bc5b69328"
      ],
      "verified_by": [
        "tests/observability/test_readiness.py:31",
        "tests/observability/test_readiness.py:47",
        "tests/observability/test_readiness.py:54",
        "tests/observability/test_readiness.py:68"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 205
    },
    {
      "id": "ARBORA-OPS-R843",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Served engine operations replace the in-run agent-utilities tool wrappers",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 206
    },
    {
      "id": "ARBORA-OPS-R843.1",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Delivered wrapper behaviour",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "379bfc44c56b"
      ],
      "verified_by": [
        "tests/api/test_au_tool_parity.py:42"
      ],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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`).",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 207
    },
    {
      "id": "ARBORA-OPS-R843.2",
      "kind": "requirement",
      "parent": "ARBORA-OPS",
      "source": "specs/hosted-api-operations/status.json",
      "title": "Modules that are not engine wrappers",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-OPS \u2014 Hosted API and intent operations",
      "definition": "**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.",
      "definition_source": "specs/hosted-api-operations/requirements.md",
      "definition_line": 208
    },
    {
      "id": "ARBORA-IDENTITY",
      "kind": "spec",
      "parent": null,
      "source": "specs/identity-access/status.json",
      "title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/identity-access/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/authority.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/authority.py"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/access/service.py:90",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/access/service.py#L90"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/http/auth.py:127",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/http/auth.py#L127"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/invoke/audit.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/invoke/audit.py"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/mcp/caller.py:12",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/mcp/caller.py#L12"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/api/ops/access.py:151",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/api/ops/access.py#L151"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/deployment/cli.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/deployment/cli.py"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/graph_api.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/graph_api.py"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/remote_oauth_api.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/remote_oauth_api.py"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/gateway/remote_oauth_api.py:245",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/gateway/remote_oauth_api.py#L245"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/identity/composition.py:48",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/identity/composition.py#L48"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/identity/oidc.py:102",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/identity/oidc.py#L102"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/mcp_server/server.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/mcp_server/server.py"
        },
        {
          "declared_in": "specs/identity-access/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/webui_host/webui_co_service.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/webui_host/webui_co_service.py"
        },
        {
          "declared_in": "specs/identity-access/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/identity-access/requirements.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [
        "flowchart LR\n    B[\"Browser, CLI, MCP, A2A\"] --> C[Arbora serving composition]\n    C --> A[Authenticator per mode]\n    A --> P[Principal and scope resolver]\n    P --> I[Local issuer and short-lived token]\n    I --> U[Verified actor and delegated session]\n    U --> E[\"Engine identity, RBAC, CheckAccess, elevation, lease, audit\"]\n    E --> R[Typed redacted result]\n    R --> C\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-IDENTITY-R001",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Elevation request, approve, and revoke surfaces",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4a3410afa6de"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-IDENTITY-R002",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Domain scopes consume the generated scope registry",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a2212420d6c6",
        "d497f656144a"
      ],
      "verified_by": [
        "tests/api/test_domain_scopes.py:50"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-IDENTITY-R002.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Arbora owns the scope registry generated from EG `scopes.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/security/test_scope_registry.py:26",
        "tests/security/test_scope_registry.py:35",
        "tests/security/test_scope_registry.py:45"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-IDENTITY-R003",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Persistent local token issuer with secret-backed key",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "9a8cbf921748",
        "c4c9cb1fac8f"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-IDENTITY-R004",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Rollup",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cd652df8f6c8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-IDENTITY-R004.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed bootstrap-principal model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "cd652df8f6c8",
        "d497f656144a"
      ],
      "verified_by": [
        "tests/identity/test_bootstrap_mfa_admin_console_models.py:15",
        "tests/identity/test_bootstrap_mfa_admin_console_models.py:28"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-IDENTITY-R004.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Bootstrap resolution path",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4a3410afa6de"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-IDENTITY-R005",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Local account lifecycle with server-side sessions",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "9a8cbf921748"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-IDENTITY-R006",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Optional MFA with TOTP, WebAuthn, and recovery codes",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cd652df8f6c8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-IDENTITY-R006.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed MFA enrollment model",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cd652df8f6c8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-IDENTITY-R006.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "MFA ceremonies",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4a3410afa6de"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-IDENTITY-R007",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Admin console tabs with mapping dry-run and mode wizard",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cd652df8f6c8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-IDENTITY-R007.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed admin-console tab model",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "cd652df8f6c8"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-IDENTITY-R007.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Admin console behavior",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4a3410afa6de"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-IDENTITY-R008",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "API keys and service accounts replace static MCP tokens",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e74110bb69b5"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-IDENTITY-R009",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Multi-provider OIDC with mapping rules and JIT policy",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "4a3410afa6de",
        "e74110bb69b5"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-IDENTITY-R010",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "LDAPS bind with nested group sync",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "e74110bb69b5"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-IDENTITY-R008.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed API-key grant model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "8b0005ee65dd"
      ],
      "verified_by": [
        "tests/identity/test_api_key_grant.py:20",
        "tests/identity/test_api_key_grant.py:26",
        "tests/identity/test_api_key_grant.py:9"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-IDENTITY-R008.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Scope intersection and revocation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d45ad779b80c"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-IDENTITY-R009.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed OIDC mapping-rule model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6c3a92eb849a"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-IDENTITY-R009.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "OIDC authentication flow (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-IDENTITY-R009.2.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Ordered claim-to-rule evaluation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0714a7bf6f8e"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 26
    },
    {
      "id": "ARBORA-IDENTITY-R009.2.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "ID-token validation inputs and typed refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4ecc19a9f4e8"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 27
    },
    {
      "id": "ARBORA-IDENTITY-R009.2.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Callback handler wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 28
    },
    {
      "id": "ARBORA-IDENTITY-R009.2.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Live IdP probe",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 29
    },
    {
      "id": "ARBORA-IDENTITY-R010.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed LDAPS bind-config model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "02d2a6e84ec7"
      ],
      "verified_by": [
        "tests/identity/test_ldap_bind_config.py:11",
        "tests/identity/test_ldap_bind_config.py:18",
        "tests/identity/test_ldap_bind_config.py:25"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 30
    },
    {
      "id": "ARBORA-IDENTITY-R010.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Directory bind and group sync (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9fc4eae0f299"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 31
    },
    {
      "id": "ARBORA-IDENTITY-R010.2.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Group-DN-to-role mapping evaluation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9fc4eae0f299"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 32
    },
    {
      "id": "ARBORA-IDENTITY-R010.2.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Bind through an injected directory port",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "57c4aff42c64"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 33
    },
    {
      "id": "ARBORA-IDENTITY-R010.2.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Scheduled group sync (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 34
    },
    {
      "id": "ARBORA-IDENTITY-R010.2.3.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Pure sync plan",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "937d3788413d"
      ],
      "verified_by": [
        "tests/identity/test_ldap_sync_plan.py:12",
        "tests/identity/test_ldap_sync_plan.py:27"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 35
    },
    {
      "id": "ARBORA-IDENTITY-R010.2.3.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Scheduled apply",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 36
    },
    {
      "id": "ARBORA-IDENTITY-R010.2.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Live directory probe",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**Live directory probe.** Probe a live LDAPS directory (requires a live service). | Verified by a live probe against the deployed directory.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 37
    },
    {
      "id": "ARBORA-IDENTITY-R011",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "SCIM 2.0 provisioning server",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "117ad5b56bc6"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 38
    },
    {
      "id": "ARBORA-IDENTITY-R012",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Native SAML service provider",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "117ad5b56bc6"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 39
    },
    {
      "id": "ARBORA-IDENTITY-R011.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed SCIM service-credential model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "95e2a2ed3519"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 40
    },
    {
      "id": "ARBORA-IDENTITY-R011.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "SCIM server surface (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 41
    },
    {
      "id": "ARBORA-IDENTITY-R011.2.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed SCIM User resource model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e92d812eb39d"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 42
    },
    {
      "id": "ARBORA-IDENTITY-R011.2.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "SCIM credential check",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "966dc25b5493"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 43
    },
    {
      "id": "ARBORA-IDENTITY-R011.2.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "SCIM create/patch/deactivate handlers",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e848425636e4"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 44
    },
    {
      "id": "ARBORA-IDENTITY-R011.2.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "SCIM route registration",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**SCIM route registration.** Register the `/scim/v2/Users` routes in the arbora HTTP surface. | Verified by a route-registration test.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 45
    },
    {
      "id": "ARBORA-IDENTITY-R012.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed SAML service-provider model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "66b447b6f3f3"
      ],
      "verified_by": [
        "tests/identity/test_saml_models.py:11",
        "tests/identity/test_saml_models.py:21",
        "tests/identity/test_saml_models.py:29"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 46
    },
    {
      "id": "ARBORA-IDENTITY-R012.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Assertion verification and sign-in (rollup of .2.1-.2.4)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 47
    },
    {
      "id": "ARBORA-IDENTITY-R012.2.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Typed parsed-assertion model and condition checks",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fdbaebdb795a"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 48
    },
    {
      "id": "ARBORA-IDENTITY-R012.2.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Signature verification through an injected verifier port",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2eaa6baaabc5"
      ],
      "verified_by": [
        "tests/identity/test_saml_signature_verification.py:47",
        "tests/identity/test_saml_signature_verification.py:54",
        "tests/identity/test_saml_signature_verification.py:63"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 49
    },
    {
      "id": "ARBORA-IDENTITY-R012.2.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Replay check and sign-in handler wiring (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 50
    },
    {
      "id": "ARBORA-IDENTITY-R012.2.3.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Replay check through a seen-assertion-id store port",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "7f5cd8d1fe7d"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 51
    },
    {
      "id": "ARBORA-IDENTITY-R012.2.3.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Sign-in handler wiring into the browser authority",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 52
    },
    {
      "id": "ARBORA-IDENTITY-R012.2.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Live IdP sign-in probe",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 53
    },
    {
      "id": "ARBORA-IDENTITY-R013",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Identity CLI commands and doctor diagnostics",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4a3410afa6de"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 54
    },
    {
      "id": "ARBORA-IDENTITY-R014",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Shared RBAC decision oracle across identity modes",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "4a3410afa6de"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 55
    },
    {
      "id": "ARBORA-IDENTITY-R015",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Identity operations documentation and cutover runbook",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "765e4c3a46fe"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 56
    },
    {
      "id": "ARBORA-IDENTITY-R016",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Optional SMTP adapter for identity email",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "adf48206cdff"
      ],
      "verified_by": [
        "tests/identity/test_mail_capability.py:15",
        "tests/identity/test_mail_capability.py:30",
        "tests/identity/test_mail_capability.py:45"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 57
    },
    {
      "id": "ARBORA-IDENTITY-R016.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Arbora-side mail capability model",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "adf48206cdff"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 58
    },
    {
      "id": "ARBORA-IDENTITY-R016.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "SMTP/listmonk send integration",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 59
    },
    {
      "id": "ARBORA-IDENTITY-R017",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Remove the unauthenticated opt-out once clients migrate",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "adf48206cdff"
      ],
      "verified_by": [
        "tests/identity/test_client_entry_points.py:14",
        "tests/identity/test_client_entry_points.py:21"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 60
    },
    {
      "id": "ARBORA-IDENTITY-R017.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Client entry-point token audit registry",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "adf48206cdff"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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`.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 61
    },
    {
      "id": "ARBORA-IDENTITY-R017.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Engine opt-out removal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 62
    },
    {
      "id": "ARBORA-IDENTITY-R017.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 63
    },
    {
      "id": "ARBORA-IDENTITY-R017.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 64
    },
    {
      "id": "ARBORA-IDENTITY-R017.5",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 65
    },
    {
      "id": "ARBORA-IDENTITY-R017.6",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 66
    },
    {
      "id": "ARBORA-IDENTITY-R017.7",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 67
    },
    {
      "id": "ARBORA-IDENTITY-R017.8",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 68
    },
    {
      "id": "ARBORA-IDENTITY-R018",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Identity administration operations for self, admin, config",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "2c70abad2b68",
        "336f9faf3f21"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 69
    },
    {
      "id": "ARBORA-IDENTITY-R019",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Access operations for elevation and approval decisions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "d467b8f6c708",
        "f0432f0a0cef",
        "f22badda8f35"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 70
    },
    {
      "id": "ARBORA-IDENTITY-R019.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 71
    },
    {
      "id": "ARBORA-IDENTITY-R019.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 72
    },
    {
      "id": "ARBORA-IDENTITY-R019.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 73
    },
    {
      "id": "ARBORA-IDENTITY-R019.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 74
    },
    {
      "id": "ARBORA-IDENTITY-R019.5",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 75
    },
    {
      "id": "ARBORA-IDENTITY-R019.6",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 76
    },
    {
      "id": "ARBORA-IDENTITY-R020",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Domain scope registry covers finance, fleet, loops, ops",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "a2212420d6c6"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 77
    },
    {
      "id": "ARBORA-IDENTITY-R021",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Identity wiring depends only on identity ports",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2c70abad2b68",
        "336f9faf3f21"
      ],
      "verified_by": [
        "tests/identity/test_identity_ports_boundary.py:105",
        "tests/identity/test_identity_ports_boundary.py:77"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 78
    },
    {
      "id": "ARBORA-IDENTITY-R022",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Fleet authorization fails closed on exact scopes",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2c70abad2b68",
        "76d418e32221"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 79
    },
    {
      "id": "ARBORA-IDENTITY-R023",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Native, self-refreshing credentials for MCP clients",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 80
    },
    {
      "id": "ARBORA-IDENTITY-R023.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 81
    },
    {
      "id": "ARBORA-IDENTITY-R023.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 82
    },
    {
      "id": "ARBORA-IDENTITY-R023.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 83
    },
    {
      "id": "ARBORA-IDENTITY-R023.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 84
    },
    {
      "id": "ARBORA-IDENTITY-R023.5",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 85
    },
    {
      "id": "ARBORA-IDENTITY-R023.6",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 86
    },
    {
      "id": "ARBORA-IDENTITY-R024",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Committed browser and Keycloak SSO probe",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 87
    },
    {
      "id": "ARBORA-IDENTITY-R025",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Register identity ops once the engine contract lists `identity:admin`",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 88
    },
    {
      "id": "ARBORA-IDENTITY-R026",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Hosted sessions are attributed to a client and segmented by principal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 89
    },
    {
      "id": "ARBORA-IDENTITY-R026.1",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Client session record",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 90
    },
    {
      "id": "ARBORA-IDENTITY-R026.2",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Record at session open",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 91
    },
    {
      "id": "ARBORA-IDENTITY-R026.3",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Runs carry the session id",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 92
    },
    {
      "id": "ARBORA-IDENTITY-R026.4",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Audit event per run",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 93
    },
    {
      "id": "ARBORA-IDENTITY-R026.5",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Caller-scoped client listing",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 94
    },
    {
      "id": "ARBORA-IDENTITY-R026.6",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "User and service account parity",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 95
    },
    {
      "id": "ARBORA-IDENTITY-R026.7",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "Cross-client denial is uniform",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 96
    },
    {
      "id": "ARBORA-IDENTITY-R026.8",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "ARBORA:16 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 102
    },
    {
      "id": "ARBORA-IDENTITY-R650",
      "kind": "requirement",
      "parent": "ARBORA-IDENTITY",
      "source": "specs/identity-access/status.json",
      "title": "External policy sync renders the engine's row-visibility bundle and fails closed",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "be63023340ec",
        "bf0256771979"
      ],
      "verified_by": [
        "tests/access/test_external_policy_sync.py:3"
      ],
      "parent_title": "ARBORA-IDENTITY \u2014 ACCESS \u2014 identity, authorization, and access operations",
      "definition": "**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.",
      "definition_source": "specs/identity-access/requirements.md",
      "definition_line": 103
    },
    {
      "id": "ARBORA-MCP-RESOURCES",
      "kind": "spec",
      "parent": null,
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/mcp-resource-publication-reconciliation/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "`docs/fleet.md`",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/docs/fleet.md"
        },
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "`docs/status.md`",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/docs/status.md"
        },
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/catalog_reader.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/catalog_reader.py"
        },
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/fleet/mcp_resource_reconciliation.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/fleet/mcp_resource_reconciliation.py"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "`EG-REPO-INGEST-001`",
          "repository": "Knuckles-Team/epistemic-graph",
          "url": "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/repository-index-and-ingestion/spec.md"
        },
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "`fleet-catalog-and-tools/spec.md`",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/fleet-catalog-and-tools/spec.md"
        },
        {
          "declared_in": "specs/mcp-resource-publication-reconciliation/spec.md",
          "evidence": "missing source",
          "kind": "references",
          "label": "fleet-catalog-and-tools/spec.md",
          "repository": "Unresolved",
          "url": ""
        }
      ],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R001",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "Publication gate refuses without a valid receipt (rollup)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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).",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "Typed `ReconciliationReceipt` model and publication gate",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6a19f564d301"
      ],
      "verified_by": [
        "tests/fleet/test_mcp_resource_reconciliation.py:22"
      ],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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`.",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R002",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "epistemic-graph is the sole admissible receipt source",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "028338c38838"
      ],
      "verified_by": [
        "tests/fleet/test_mcp_resource_receipt_source.py:32"
      ],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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.",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R003",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "Gate wired at the one catalog-publish entry point (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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`.",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R003.1",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "Swap guard function",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "965d34390876"
      ],
      "verified_by": [
        "tests/fleet/test_mcp_resource_reconciliation.py:119",
        "tests/fleet/test_mcp_resource_reconciliation.py:138"
      ],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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.",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R003.2",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "Call the guard from the publish step (depends on `fleet-catalog-and-tools` R022/PA-12 landing in arbora)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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.",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-MCP-RESOURCES-R004",
      "kind": "requirement",
      "parent": "ARBORA-MCP-RESOURCES",
      "source": "specs/mcp-resource-publication-reconciliation/status.json",
      "title": "Status docs are the gate's result, not hand-maintained prose",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "94ee72171294"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-MCP-RESOURCES \u2014 MCP resource/template publication reconciliation",
      "definition": "**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.",
      "definition_source": "specs/mcp-resource-publication-reconciliation/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-MESSAGING",
      "kind": "spec",
      "parent": null,
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/messaging-channel-supervision/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/messaging-channel-supervision/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "ARBORA-HOST-R011",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/host-composition-boundary/requirements.md"
        },
        {
          "declared_in": "specs/messaging-channel-supervision/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/messaging-channel-supervision/requirements.md"
        },
        {
          "declared_in": "specs/messaging-channel-supervision/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "test-spec.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/messaging-channel-supervision/test-spec.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [
        "stateDiagram-v2\n  [*] --> STOPPED\n  STOPPED --> STARTING: start()\n  STARTING --> RUNNING: is_connected observed\n  STARTING --> STOPPED: not connected, skipped\n  STARTING --> DEGRADED: adapter missing/import failed\n  RUNNING --> BACKING_OFF: recoverable listener failure\n  BACKING_OFF --> RUNNING: listener resumed\n  BACKING_OFF --> STOPPING: stop() during backoff\n  RUNNING --> STOPPING: stop()\n  DEGRADED --> STOPPING: stop()\n  STOPPING --> STOPPED: tasks drained\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-MESSAGING-R001",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Typed channel supervision state machine",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "63a66f60915a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-MESSAGING-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Typed state model, transition table, and refusal tests",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "63a66f60915a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-MESSAGING-R002",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Health-gated start",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "63a66f60915a"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-MESSAGING-R003",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Bounded restart backoff with healthy-run reset",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "29a592980f26"
      ],
      "verified_by": [
        "tests/messaging/test_supervision.py:154",
        "tests/messaging/test_supervision.py:188"
      ],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-MESSAGING-R004",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Graceful stop and drain",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "29a592980f26"
      ],
      "verified_by": [
        "tests/messaging/test_supervision.py:223"
      ],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-MESSAGING-R005",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Typed degraded adapter state and configuration-aware health",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "29a592980f26",
        "785693fbf7a3"
      ],
      "verified_by": [
        "tests/messaging/test_registry_degraded.py:101",
        "tests/messaging/test_registry_degraded.py:85"
      ],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-MESSAGING-R005.1",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Typed adapter degradation and configuration-aware health",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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\u2013MSG-T12 prove typed failure preservation, state distinctions, alert eligibility, matching authenticated projections, safe output, and detail-free probes.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-MESSAGING-R006",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Supervision/adapter ownership boundary",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-MESSAGING-R800",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Messaging adapter contract, command registry and the full channel adapter set (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9da18258ca1b"
      ],
      "verified_by": [
        "tests/messaging/test_primitives.py:17"
      ],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-MESSAGING-R800.1",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-MESSAGING-R800.2",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-MESSAGING-R800.3",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-MESSAGING-R800.4",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-MESSAGING-R800.5",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-MESSAGING-R800.6",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-MESSAGING-R700",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Action notification and webhook dispatch",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fb0bc5b69328"
      ],
      "verified_by": [
        "tests/messaging/test_action_dispatch.py:19",
        "tests/messaging/test_action_dispatch.py:33",
        "tests/messaging/test_action_dispatch.py:56"
      ],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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.",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-MESSAGING-R800.1000",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Intake lease on the engine WorkItem methods",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-MESSAGING-R800.1001",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-MESSAGING-R800.1002",
      "kind": "requirement",
      "parent": "ARBORA-MESSAGING",
      "source": "specs/messaging-channel-supervision/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-MESSAGING \u2014 Messaging channel supervision lifecycle",
      "definition": "**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`",
      "definition_source": "specs/messaging-channel-supervision/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-DEPLOY",
      "kind": "spec",
      "parent": null,
      "source": "specs/portable-deployment/status.json",
      "title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/portable-deployment/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/a2a/routing.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/a2a/routing.py"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "arbora/skills/arbora-genesis/references/bare-metal.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/arbora/skills/arbora-genesis/references/bare-metal.md"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "deploy/compose/compose.yaml",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/deploy/compose/compose.yaml"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "deploy/swarm/stack.yml",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/deploy/swarm/stack.yml"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/check_deployment_image_digests.py",
          "repository": "Knuckles-Team/arbora",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/scripts/check_deployment_image_digests.py"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "specs/hosted-api-operations/plan.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/hosted-api-operations/plan.md"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/deployment/test_arbora_deploy_artifacts.py",
          "repository": "Knuckles-Team/arbora",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/tests/deployment/test_arbora_deploy_artifacts.py"
        },
        {
          "declared_in": "specs/portable-deployment/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/deployment/test_image_digests.py",
          "repository": "Knuckles-Team/arbora",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/tests/deployment/test_image_digests.py"
        },
        {
          "declared_in": "specs/portable-deployment/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/portable-deployment/requirements.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-DEPLOY-R001",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Worker topology manifest is digest-pinned",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "e7ae64dec334"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-DEPLOY-R002",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Executable release-qualification runbook",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "689f232dc362",
        "d75db1ea42e8",
        "eaabc7449a93"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 6
    },
    {
      "id": "ARBORA-DEPLOY-R003",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Pre-push hooks always run the full gate suite",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4a2d2cd9ac55",
        "689f232dc362",
        "c3c6be59a12a"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 7
    },
    {
      "id": "ARBORA-DEPLOY-R004",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "mypy hook type-checks the test suite",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "689f232dc362",
        "9d8a787b8495"
      ],
      "verified_by": [
        "tests/deployment/test_mypy_hook_scope.py:13"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 8
    },
    {
      "id": "ARBORA-DEPLOY-R005",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Web UI keeps its component package name",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "15bc1fd4c49e",
        "d6f16cd447e2",
        "d75db1ea42e8",
        "eaabc7449a93"
      ],
      "verified_by": [
        "tests/deployment/test_component_names_and_scripts.py:17"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 9
    },
    {
      "id": "ARBORA-DEPLOY-R006",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "gateway-widgets extra pins a compatible connector floor",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "45283d0137b9",
        "d58ee3e25028",
        "d6f16cd447e2",
        "f42856691f97"
      ],
      "verified_by": [
        "tests/gateway/test_gateway_widgets_extra.py:57"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 10
    },
    {
      "id": "ARBORA-DEPLOY-R007",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Arbora hosts deployment doctor and skill certification",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "fd761d59a171"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 11
    },
    {
      "id": "ARBORA-DEPLOY-R007.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "`agent-utilities-doctor` console-script collision resolved",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d6f16cd447e2",
        "fd761d59a171"
      ],
      "verified_by": [
        "tests/deployment/test_component_names_and_scripts.py:42"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**`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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 12
    },
    {
      "id": "ARBORA-DEPLOY-R007.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "`setup-config` console-script collision resolved",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d6f16cd447e2",
        "fd761d59a171"
      ],
      "verified_by": [
        "tests/deployment/test_component_names_and_scripts.py:51"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**`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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 13
    },
    {
      "id": "ARBORA-DEPLOY-R007.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "`arbora-daemon` console-script collision resolved",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "fd761d59a171"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**`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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 14
    },
    {
      "id": "ARBORA-DEPLOY-R007.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "`agent-utilities-venv` console-script collision resolved",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "fd761d59a171"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**`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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 15
    },
    {
      "id": "ARBORA-DEPLOY-R007.5",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "`arbora-release-canary` console-script collision resolved",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "fd761d59a171"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**`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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 16
    },
    {
      "id": "ARBORA-DEPLOY-R007.6",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "The Arbora doctor checks the served engine families and graph connections",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/deployment/test_doctor_graph.py:206"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 17
    },
    {
      "id": "ARBORA-DEPLOY-R008",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Arbora hosts its own boundary modules",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "ae856bc9a101"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 18
    },
    {
      "id": "ARBORA-DEPLOY-R009",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Arbora owns hosting/deployment configuration settings",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "ae856bc9a101"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 19
    },
    {
      "id": "ARBORA-DEPLOY-R009.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Arbora hosts a typed `arbora.core.config_admin` hosting/deployment settings module",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ae856bc9a101"
      ],
      "verified_by": [
        "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"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 20
    },
    {
      "id": "ARBORA-DEPLOY-R009.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Arbora owns the `graph_config` operation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/core/test_agent_config_admin.py:432",
        "tests/core/test_agent_config_admin_type_names.py:21"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 21
    },
    {
      "id": "ARBORA-DEPLOY-R010",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Ecosystem and repository development skills are published",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "96e23d7f4ed4"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 22
    },
    {
      "id": "ARBORA-DEPLOY-R011",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Deployment layout test suite passes in full",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "2b605acbf3a6",
        "962462cdc788"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 23
    },
    {
      "id": "ARBORA-DEPLOY-R012",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Pipelines dependency is referenced at main, never pinned",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "0f780429fb19",
        "6c4b89f91732"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 24
    },
    {
      "id": "ARBORA-DEPLOY-R013",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Development and production deployment profiles",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "0da5f7440603",
        "2abb9ebb3905",
        "99028d9d9f82",
        "d75db1ea42e8",
        "e9d992980035"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 25
    },
    {
      "id": "ARBORA-DEPLOY-R014",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Agent runtime split into connector SDK, Arbora and engine",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "fe7c5c9a4a32"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 26
    },
    {
      "id": "ARBORA-DEPLOY-R015",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "AVX2 guard test runs on any hosted runner",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "67a387e5dbed"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 27
    },
    {
      "id": "ARBORA-DEPLOY-R016",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "One host daemon process shares the in-pod engine",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "8b20c11b5dc5",
        "eb31b7757681",
        "f3bcee6dfbcf"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 28
    },
    {
      "id": "ARBORA-DEPLOY-R017",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Deployment placement and sequencing go through the engine decision capability",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 29
    },
    {
      "id": "ARBORA-DEPLOY-R017.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Placement Decide mapping",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 30
    },
    {
      "id": "ARBORA-DEPLOY-R017.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Request assembly for a deployment task",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 31
    },
    {
      "id": "ARBORA-DEPLOY-R017.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Present the assembled graph read-only",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 32
    },
    {
      "id": "ARBORA-DEPLOY-R017.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Confirm through plan/confirm",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 33
    },
    {
      "id": "ARBORA-DEPLOY-R017.5",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Typed refusal while unavailable",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 34
    },
    {
      "id": "ARBORA-DEPLOY-R017.6",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Existing artifact per target",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 35
    },
    {
      "id": "ARBORA-DEPLOY-R017.7",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "In-process unchanged",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 36
    },
    {
      "id": "ARBORA-DEPLOY-R017.8",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Thin setup-config subcommand",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 37
    },
    {
      "id": "ARBORA-DEPLOY-R017.9",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Checker dispatches on document shape",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 38
    },
    {
      "id": "ARBORA-DEPLOY-R017.10",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Compose/Swarm literal images use the existing grammar",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 39
    },
    {
      "id": "ARBORA-DEPLOY-R017.11",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Template mode accepts the required-variable form",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 40
    },
    {
      "id": "ARBORA-DEPLOY-R017.12",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Resolve mode validates the given value",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 41
    },
    {
      "id": "ARBORA-DEPLOY-R017.13",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Run the checker on the shipped Compose and Swarm files",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 42
    },
    {
      "id": "ARBORA-DEPLOY-R017.14",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Helm pinned and default renders",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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`.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 43
    },
    {
      "id": "ARBORA-DEPLOY-R017.15",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "systemd stays refused",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 44
    },
    {
      "id": "ARBORA-DEPLOY-R017.16",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Environment policy drives the check",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 45
    },
    {
      "id": "ARBORA-DEPLOY-R018",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Small deployment shares one engine per host",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 46
    },
    {
      "id": "ARBORA-DEPLOY-R018.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Engine endpoint type",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 47
    },
    {
      "id": "ARBORA-DEPLOY-R018.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Probe before start",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 48
    },
    {
      "id": "ARBORA-DEPLOY-R018.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Start only when absent",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 49
    },
    {
      "id": "ARBORA-DEPLOY-R018.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Second process attaches",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 50
    },
    {
      "id": "ARBORA-DEPLOY-R018.5",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Owner stands down the engine",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 51
    },
    {
      "id": "ARBORA-DEPLOY-R018.6",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Remote engine skips local start",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 52
    },
    {
      "id": "ARBORA-DEPLOY-R010.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Preserve development skill coverage",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 53
    },
    {
      "id": "ARBORA-DEPLOY-R010.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Keep deployment guidance executable and synchronized",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 54
    },
    {
      "id": "ARBORA-DEPLOY-R010.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Publish complete supported-profile instructions",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 55
    },
    {
      "id": "ARBORA-DEPLOY-R013.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Preserve original profile and first-boot obligations",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 56
    },
    {
      "id": "ARBORA-DEPLOY-R013.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Record explicit component deploy or reuse choices",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 57
    },
    {
      "id": "ARBORA-DEPLOY-R013.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Make reused components connect-only",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 58
    },
    {
      "id": "ARBORA-DEPLOY-R013.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Define the complete deployment target matrix",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 59
    },
    {
      "id": "ARBORA-DEPLOY-R013.5",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Bind confirmed profiles to governed deployment",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 60
    },
    {
      "id": "ARBORA-DEPLOY-R013.6",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Prove component choices and target profiles",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 61
    },
    {
      "id": "ARBORA-DEPLOY-R018.7",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Preserve reuse through engine attachment",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 62
    },
    {
      "id": "ARBORA-DEPLOY-R018.8",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Keep reused resources alive across host shutdown",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 63
    },
    {
      "id": "ARBORA-DEPLOY-R009.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "EG:53 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "9e7f6499d96f"
      ],
      "verified_by": [
        "tests/deployment/test_small_profile_footprint.py:31"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 69
    },
    {
      "id": "ARBORA-DEPLOY-R009.2.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Small-profile import footprint",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/deployment/test_small_profile_footprint.py:32"
      ],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 70
    },
    {
      "id": "ARBORA-DEPLOY-R009.2.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Single-image deployment with capability parity",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 71
    },
    {
      "id": "ARBORA-DEPLOY-R009.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "EG:57 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 72
    },
    {
      "id": "ARBORA-DEPLOY-R013.7",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "ARBORA:12 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 73
    },
    {
      "id": "ARBORA-DEPLOY-R010.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "ARBORA:13 Arbora definition slice",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 74
    },
    {
      "id": "ARBORA-DEPLOY-R600",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Process singleton locks guard the served host (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**Process singleton locks guard the served host (rollup).** Children `.1` to `.6`. | Satisfied only when every child `.1` to `.6` is VERIFIED.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 75
    },
    {
      "id": "ARBORA-DEPLOY-R600.1",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 76
    },
    {
      "id": "ARBORA-DEPLOY-R600.2",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 77
    },
    {
      "id": "ARBORA-DEPLOY-R600.3",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 78
    },
    {
      "id": "ARBORA-DEPLOY-R600.4",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 79
    },
    {
      "id": "ARBORA-DEPLOY-R600.5",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**Evidence.** The lock file records the holder's pid. | Test reads the trace or metrics after one success and one refusal.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 80
    },
    {
      "id": "ARBORA-DEPLOY-R600.6",
      "kind": "requirement",
      "parent": "ARBORA-DEPLOY",
      "source": "specs/portable-deployment/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "ARBORA-DEPLOY \u2014 Portable Arbora development and deployment",
      "definition": "**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.",
      "definition_source": "specs/portable-deployment/requirements.md",
      "definition_line": 81
    },
    {
      "id": "ARBORA-INGRESS",
      "kind": "spec",
      "parent": null,
      "source": "specs/public-ingress-identity/status.json",
      "title": "ARBORA-INGRESS \u2014 Portable public ingress and identity cutover",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/public-ingress-identity/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/public-ingress-identity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "access control",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/identity-access/plan.md"
        },
        {
          "declared_in": "specs/public-ingress-identity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "docs/quality-gate-terms.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/docs/quality-gate-terms.md"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Cutover",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/plan.md#cutover-and-rollback"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Portable proof",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/plan.md#quality-and-release-gates"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Profile contract",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/plan.md#profile-and-interface-contract"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Request path",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/plan.md#request-and-deployment-path"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Security",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/plan.md#security-and-failure-handling"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/arbora",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/public-ingress-identity/requirements.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "Access control",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/identity-access/spec.md"
        },
        {
          "declared_in": "specs/public-ingress-identity/spec.md",
          "evidence": "file exists; coverage not verified",
          "kind": "references",
          "label": "Portable deployment",
          "repository": "Knuckles-Team/arbora",
          "url": "https://github.com/Knuckles-Team/arbora/blob/170a83c27b882e59f90190bd6cadcf3d4792f332/specs/portable-deployment/spec.md"
        }
      ],
      "plan_diagrams": [
        "flowchart LR\n  Browser --> Ingress[Operator TLS ingress]\n  Ingress --> Gateway[Arbora gateway]\n  Gateway --> Admission[Existing identity middleware]\n  Admission --> Service[Arbora application service]\n  Service --> Engine[Graph engine authorization]\n  Browser --> IdP[Operator OIDC provider]\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "ARBORA-INGRESS-R001",
      "kind": "requirement",
      "parent": "ARBORA-INGRESS",
      "source": "specs/public-ingress-identity/status.json",
      "title": "Public ingress rename with Keycloak and OpenBao cutover",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "d35d445334f2"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-INGRESS \u2014 Portable public ingress and identity cutover",
      "definition": "**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.",
      "definition_source": "specs/public-ingress-identity/requirements.md",
      "definition_line": 5
    },
    {
      "id": "ARBORA-INGRESS-R001.1",
      "kind": "requirement",
      "parent": "ARBORA-INGRESS",
      "source": "specs/public-ingress-identity/status.json",
      "title": "Typed public-ingress profile model",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "d35d445334f2"
      ],
      "verified_by": [],
      "parent_title": "ARBORA-INGRESS \u2014 Portable public ingress and identity cutover",
      "definition": "**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.",
      "definition_source": "specs/public-ingress-identity/requirements.md",
      "definition_line": 6
    }
  ],
  "github": {
    "issues": {
      "available": true,
      "items": []
    },
    "pull_requests": {
      "available": true,
      "items": [
        {
          "number": 344,
          "title": "chore(specs): rename spec IDs GRAPHOS- to ARBORA- (source and script comments)",
          "html_url": "https://github.com/Knuckles-Team/arbora/pull/344",
          "created_at": "2026-10-17T23:01:34Z",
          "updated_at": "2026-10-18T00:16:31Z"
        }
      ]
    }
  },
  "spec_edges": [
    [
      "ARBORA-A2A",
      "depends on",
      "ARBORA-A2A"
    ],
    [
      "ARBORA-A2A",
      "depends on",
      "https://github.com/Knuckles-Team/agent-utilities/blob/50c313ab01871ff7e10aee2a9d0254fa55d71f07/agent_utilities/api/session.py"
    ],
    [
      "ARBORA-A2A",
      "references",
      "https://github.com/Knuckles-Team/agent-utilities/blob/50c313ab01871ff7e10aee2a9d0254fa55d71f07/specs/agent-control-plane/spec.md"
    ],
    [
      "ARBORA-A2A",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/decision-engine/spec.md"
    ],
    [
      "ARBORA-ACP",
      "references",
      "ARBORA-IDENTITY"
    ],
    [
      "ARBORA-ACP",
      "references",
      "AU-CONTROL-001"
    ],
    [
      "ARBORA-CAPACITY",
      "references",
      "ARBORA-OPS"
    ],
    [
      "ARBORA-FLEET",
      "references",
      "https://github.com/Knuckles-Team/agent-connector-sdk/blob/main/specs/SDK-CONNECTOR-CONTROL/spec.md"
    ],
    [
      "ARBORA-FLEET",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/decision-engine/spec.md"
    ],
    [
      "ARBORA-FLEET",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/typed-packs-and-catalog/spec.md"
    ],
    [
      "ARBORA-HOST",
      "references",
      "ARBORA-A2A"
    ],
    [
      "ARBORA-INGRESS",
      "references",
      "ARBORA-DEPLOY"
    ],
    [
      "ARBORA-INGRESS",
      "references",
      "ARBORA-IDENTITY"
    ],
    [
      "ARBORA-MCP-RESOURCES",
      "references",
      "ARBORA-FLEET"
    ],
    [
      "ARBORA-MCP-RESOURCES",
      "references",
      "fleet-catalog-and-tools/spec.md"
    ],
    [
      "ARBORA-MCP-RESOURCES",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/main/specs/repository-index-and-ingestion/spec.md"
    ],
    [
      "ARBORA-OPS",
      "references",
      "ARBORA-A2A"
    ],
    [
      "ARBORA-OPS",
      "references",
      "https://github.com/Knuckles-Team/agent-connector-sdk/blob/a0f78fefbb486e4c7d97e608462cf5847a46bc7d/specs/SDK-SOURCE-INGEST/spec.md"
    ],
    [
      "ARBORA-OPS",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/durable-graph-kernel/spec.md"
    ],
    [
      "ARBORA-OPS",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/federated-query-and-reasoning/spec.md"
    ],
    [
      "ARBORA-OPS",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/media-and-personal-vocabulary/spec.md"
    ],
    [
      "ARBORA-OPS",
      "references",
      "https://github.com/Knuckles-Team/epistemic-graph/blob/88572345d7aa8bcc7cad40904f35e2411c701243/specs/orchestration-vocabulary/spec.md"
    ],
    [
      "ARBORA-RELEASE",
      "references",
      "ARBORA-DEPLOY"
    ],
    [
      "ARBORA-RELEASE",
      "references",
      "ARBORA-INGRESS"
    ]
  ]
}
