A

Delivery structure

13 specs, 820 requirements, 1 with no code mapped
Knuckles-Team/agent-utilitiesSpec delivery
Specs (13)
  • AU-CONTEXT23
  • AU-CONTROL107
  • AU-SEC24
  • AU-BOUNDARY212
  • AU-QUAL18
  • AU-DEV14
  • AU-RETIRE13
  • AU-INTEGRATION25
  • AU-SEMANTIC109
  • AU-BASELINE5
  • AU-HARNESS237
  • AU-FREEZE3
  • AU-RETRIEVAL30
Records not done
  • Requirementsall slices in all specs820
  • Requirements not donenot VERIFIED688
  • Specs not donewhole specs only13

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

B

Delivery states

count of total

Requirements (820)

SPECIFIED (specified)547 of 820 requirements
LANDED (landed)141 of 820 requirements
VERIFIED (verified)132 of 820 requirements

Specs (13)

SPECIFIED (specified)10 of 13 specs
LANDED (landed)3 of 13 specs

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

Percentages count current rows. Done means VERIFIED.

C

State definitions

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

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

Invalid state: 0

D

Specifications

specs/*/status.json
Spec / titleReq.LandedDoneSpec stateCode references
AU-CONTEXTAU-CONTEXT — Agent context, retrieval feedback and finance roles2313/2311SPECIFIEDagent_utilities/core/contextual_model.py:752 implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/retrieval/context_compiler.py implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/retrieval/context_knapsack.py:303 implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-CONTROLAU-CONTROL — Agent control plane10737/10715SPECIFIEDagent_utilities/agent/factory.py:529 implementation: file exists; coverage not verified
agent_utilities/capabilities/fleet_tool_search.py:198 implementation: file exists; coverage not verified
agent_utilities/capabilities/fleet_tool_search.py:54 implementation: file exists; coverage not verified
agent_utilities/capabilities/fleet_tool_search.py:84 implementation: file exists; coverage not verified
agent_utilities/core/cgroup_resources.py:52 implementation: file exists; coverage not verified
agent_utilities/core/execution/adapters/base.py:34 implementation: file exists; coverage not verified
agent_utilities/decide/consumers/task_planner.py implementation: file exists; coverage not verified
agent_utilities/deployment/skill_validation.py:590 implementation: file exists; coverage not verified
agent_utilities/graph/builder.py implementation: file exists; coverage not verified
agent_utilities/graph/coordination.py:255 implementation: file exists; coverage not verified
agent_utilities/graph/coordination.py:51 implementation: file exists; coverage not verified
agent_utilities/graph/hierarchical_coordination.py:65 implementation: file exists; coverage not verified
agent_utilities/graph/planning/__init__.py:165 implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/enrichment/writeback/approval.py:47 implementation: file exists; coverage not verified
agent_utilities/mcp/tools/engine_surface_tools.py:1694 implementation: file exists; coverage not verified
agent_utilities/orchestration/agent_library.py implementation: file exists; coverage not verified
agent_utilities/orchestration/engine.py:1709 implementation: file exists; coverage not verified
agent_utilities/orchestration/swe_agent.py:44 implementation: file exists; coverage not verified
agent_utilities/protocols/acp_adapter.py:160 implementation: file exists; coverage not verified
agent_utilities/protocols/acp_adapter.py:273 implementation: file exists; coverage not verified
agent_utilities/rlm/sandboxes/_bridge.py:287 implementation: file exists; coverage not verified
agent_utilities/rlm/sandboxes/container_fork_backend.py:54 implementation: file exists; coverage not verified
agent_utilities/runtime/run_vcs/carrier.py:101 implementation: file exists; coverage not verified
agent_utilities/runtime/run_vcs/kernel.py:145 implementation: file exists; coverage not verified
agent_utilities/runtime/run_vcs/run_commit.py:30 implementation: file exists; coverage not verified
agent_utilities/runtime/run_vcs/run_session.py:39 implementation: file exists; coverage not verified
agent_utilities/runtime/workspace.py:108 implementation: file exists; coverage not verified
agent_utilities/tools/swe_workspace_tools.py:100 implementation: file exists; coverage not verified
agent_utilities/tools/swe_workspace_tools.py:143 implementation: file exists; coverage not verified
agent_utilities/tools/swe_workspace_tools.py:51 implementation: file exists; coverage not verified
agent_utilities/tools/swe_workspace_tools.py:69 implementation: file exists; coverage not verified
agent_utilities/tools/swe_workspace_tools.py:87 implementation: file exists; coverage not verified
agent_utilities/tools/tool_registry.py:247 implementation: file exists; coverage not verified
agent_utilities/tools/tool_registry.py:323 implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
tests/unit/decide/test_task_planner.py test: file exists; coverage not verified
tests/unit/knowledge_graph/test_virtual_graph.py test: file exists; coverage not verified
tests/unit/test_intent_fleet_ranking_and_ties.py test: file exists; coverage not verified
AU-SECAU-SEC — Agent security and governed policy2410/247SPECIFIEDagent_utilities/agent/factory.py:1054 implementation: file exists; coverage not verified
agent_utilities/capabilities/kg_audit_sink.py:113 implementation: file exists; coverage not verified
agent_utilities/security/request_identity.py implementation: file exists; coverage not verified
agent_utilities/security/tool_guard.py:383 implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-BOUNDARYAU-BOUNDARY — AU boundary deconstruction21282/21250SPECIFIED`au-boundary-deconstruction` documentation: file exists; coverage not verified
agent_utilities/knowledge_graph/backends/epistemic_graph_backend.py implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/retrieval/context_compiler.py implementation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
requirements documentation: file exists; coverage not verified
architecture/component-registry.yml implementation: file exists; coverage not verified
deletion and relocation inventory documentation: file exists; coverage not verified
deliverable matrix documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-QUALAU-QUAL — Reproducible AU boundary and quality gates1811/184SPECIFIED.config/pre-commit.yaml implementation: file exists; coverage not verified
agent_utilities/capabilities/kg_audit_sink.py:385 implementation: file exists; coverage not verified
agent_utilities/harness/red_team.py:44 implementation: file exists; coverage not verified
agent_utilities/harness/reliability_scorers.py implementation: file exists; coverage not verified
agent_utilities/mcp/harness_server.py:574 implementation: file exists; coverage not verified
scripts/check_liveness.py implementation: file exists; coverage not verified
scripts/liveness_deferred.tsv implementation: file exists; coverage not verified
scripts/uv_workspace.py implementation: file exists; coverage not verified
tests/integration/profiles/test_profile_tiny_zero_dep.py test: file exists; coverage not verified
tests/unit/mcp/test_graphos_bootstrap_isolation.py test: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-DEVAU-DEV — Public AU development environment and skill lifecycle149/146SPECIFIEDrequirements.md documentation: file exists; coverage not verified
scripts/uv_workspace.py implementation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-RETIREAU-RETIRE — Retire duplicate graph engine authority in AU1311/133SPECIFIEDcutover matrix documentation: file exists; coverage not verified
Cutover documentation: file exists; coverage not verified
Failure and security documentation: file exists; coverage not verified
Interfaces and data flow documentation: file exists; coverage not verified
Inventory and migration documentation: file exists; coverage not verified
deletion and relocation inventory documentation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
AU-INTEGRATIONAU-INTEGRATION — AU integration and release reliability2525/256LANDEDscripts/uv_workspace.py implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-SEMANTICAU-SEMANTIC — AU semantic client and generated contract10957/10923SPECIFIEDagent_utilities/core/model_router.py:111 implementation: file exists; coverage not verified
agent_utilities/core/resource_optimizer.py:232 implementation: file exists; coverage not verified
agent_utilities/decide/consumers/routing.py:58 implementation: file exists; coverage not verified
agent_utilities/harness/agentic_evolution_engine.py:316 implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/backends/epistemic_graph_backend.py implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/retrieval/context_compiler.py implementation: file exists; coverage not verified
tests/gates/test_epistemic_graph_schema_authority_cutover.py test: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-BASELINEAU-BASELINE — Baseline ingestion and served ontology content55/50LANDEDscripts/check_complexity_staged.py implementation: file exists; coverage not verified
scripts/check_event_loop_blocking.py implementation: file exists; coverage not verified
scripts/check_no_env_sprawl.py implementation: file exists; coverage not verified
scripts/check_swallowed_errors.py implementation: file exists; coverage not verified
spec.md documentation: file exists; coverage not verified
test-spec.md documentation: file exists; coverage not verified
plan.md#architecture documentation: file exists; coverage not verified
plan.md#interfaces-and-data-model documentation: file exists; coverage not verified
plan.md#live-integration-path documentation: file exists; coverage not verified
requirements table documentation: file exists; coverage not verified
AU-HARNESSAU-HARNESS — Harness evolution and governed work2379/2377SPECIFIEDagent_utilities/capabilities/composition.py:160 implementation: file exists; coverage not verified
agent_utilities/capabilities/telemetry_instrumentation.py:40 implementation: file exists; coverage not verified
agent_utilities/core/model_concurrency.py:296 implementation: file exists; coverage not verified
agent_utilities/core/registry/kg_adapter.py:660 implementation: file exists; coverage not verified
agent_utilities/harness/aegis_loop.py:274 implementation: file exists; coverage not verified
agent_utilities/harness/assimilation_benchmark.py implementation: file exists; coverage not verified
agent_utilities/harness/edit_engine.py:457 implementation: file exists; coverage not verified
agent_utilities/harness/harness_gate.py:127 implementation: file exists; coverage not verified
agent_utilities/harness/substrate_trainer.py implementation: file exists; coverage not verified
agent_utilities/observability/custom_observability.py:850 implementation: file exists; coverage not verified
agent_utilities/observability/replay_engine.py:48 implementation: file exists; coverage not verified
agent_utilities/observability/replay_engine.py:81 implementation: file exists; coverage not verified
agent_utilities/orchestration/agent_runner.py:702 implementation: file exists; coverage not verified
agent_utilities/rlm/config.py:60 implementation: file exists; coverage not verified
agent_utilities/rlm/repl.py:470 implementation: file exists; coverage not verified
agent_utilities/rlm/repl.py:972 implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-FREEZEAU-FREEZE — Freeze authoritative AU release evidence33/30LANDEDagent_utilities/_version.py implementation: file exists; coverage not verified
scripts/release/assemble_manifest.py implementation: file exists; coverage not verified
scripts/release/check_compatibility.py implementation: file exists; coverage not verified
scripts/release/generate_component_evidence.py implementation: file exists; coverage not verified
scripts/source_freeze_gate.py implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
AU-RETRIEVALAU-RETRIEVAL — Reproducible structure-aware retrieval evaluation301/300SPECIFIEDagent_utilities/harness/citation_tracker.py implementation: file exists; coverage not verified
agent_utilities/knowledge_graph/retrieval/evaluation_corpus.py implementation: file exists; coverage not verified
requirements.md documentation: file exists; coverage not verified
status.json implementation: file exists; coverage not verified
test-spec.md documentation: file exists; coverage not verified

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

The spec state comes from the spec status file only.

U

Spec architecture

repository / component packages

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

Knuckles-Team/agent-utilities / Unassigned (13)

AU-BASELINE: no plan diagram declared.

AU-BOUNDARY: source plan diagrams (Mermaid)
flowchart LR
  Client["Browser, CLI, agent package"] --> Host[graph-os served host]
  Host --> API[agent_utilities.api]
  API --> App[AU agent application]
  App --> EGC[Generated EG client]
  Host --> EGC
  Host --> SDK[Connector SDK runner]
  SDK --> EGC
  EGC --> EG[EG durable authority]
AU-CONTEXT: source plan diagrams (Mermaid)
flowchart LR
  Host[graph-os schedule/UI] --> Role[AU agent role]
  Role --> Context[AU context compiler]
  Context --> EG["EG retrieval, Decide, finance-core"]
  Role --> Claims[Evidence-labelled explanation]
  Role --> SDK[SDK read feed and governed effects]
  SDK --> EG
  EG --> Context

AU-CONTROL: no plan diagram declared.

AU-DEV: no plan diagram declared.

AU-FREEZE: no plan diagram declared.

AU-HARNESS: no plan diagram declared.

AU-INTEGRATION: no plan diagram declared.

AU-QUAL: no plan diagram declared.

AU-RETIRE: no plan diagram declared.

AU-RETRIEVAL: no plan diagram declared.

AU-SEC: source plan diagrams (Mermaid)
flowchart LR
  P[Principal] --> G[graph-os verified public boundary]
  G --> A[AU actor and session projection]
  A --> T[AU tool policy and decision]
  T --> E[epistemic-graph final authorization]
  E --> L[Durable lease and audit]
  S[SDK connector sync] --> E
  E --> I[Invalidation event]
  I --> C[AU cache]
AU-SEMANTIC: source plan diagrams (Mermaid)
sequenceDiagram
  participant Host as graph-os
  participant AU as AU application
  participant Client as Generated EG client
  participant EG as EG schema and state
  Host->>AU: execute(verified context, RunSpec)
  AU->>Client: inspect/query/validate typed request
  Client->>EG: pinned contract digest + scoped request
  EG-->>Client: typed result + receipt/provenance
  Client-->>AU: exact generated result
  AU-->>Host: agent outcome + emitted events
R

Spec relationships

declared dependencies and references

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

Knuckles-Team/agent-utilities / Unassigned
SpecRelationshipTargetEvidence
AU-BASELINENo relationships declared; dependencies unknown
AU-BOUNDARYreferences`agent-control-plane`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`agent-security-policy`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`au-boundary-quality`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`au-developer-environment`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`au-engine-duplicate-retirement`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`au-integration-reliability`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`au-semantic-client`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`harness-evolution`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/plan.md
AU-BOUNDARYreferences`agent-context-and-finance`Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-boundary-deconstruction/spec.md
AU-CONTEXTreferencesAU-SEC-01Knuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/agent-context-and-finance/spec.md
AU-CONTROLreferencesharness-evolutionKnuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/agent-control-plane/plan.md
AU-DEVNo relationships declared; dependencies unknown
AU-FREEZENo relationships declared; dependencies unknown
AU-HARNESSreferencesagent control planeKnuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/harness-evolution/spec.md
AU-INTEGRATIONNo relationships declared; dependencies unknown
AU-QUALNo relationships declared; dependencies unknown
AU-RETIREreferencesboundary cutover specKnuckles-Team/agent-utilities: file exists; coverage not verified; source: specs/au-engine-duplicate-retirement/spec.md
AU-RETRIEVALNo relationships declared; dependencies unknown
AU-SECNo relationships declared; dependencies unknown
AU-SEMANTICNo relationships declared; dependencies unknown
G

Open issues and pull requests

open at capture

Issues

0 open at capture.

    Pull Requests

    0 open at capture.

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

      J

      Record inventory

      833 records

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

      All documented records (833 rows)
      ID / sourceKindParentStateCommit / test evidence
      AU-CONTEXT
      AU-CONTEXT — Agent context, retrieval feedback and finance roles
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R001
      RetrievalPath templates feed EG-DECISION-ENGINE-R029 as candidates
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **RetrievalPath templates feed EG-DECISION-ENGINE-R029 as candidates.** agent-utilities keys RetrievalPath templates by task class and composed schema digest and submits them as candidates to EG-DECISION-ENGINE-R029 rather than self-promoting from its own unverified outcomes. Topology-to-skill edges support plan assembly, with ranking, optimization, and feedback owned by epistemic-graph. | Integration tests confirm a submitted RetrievalPath candidate reaches epistemic-graph's decision engine and that agent-utilities performs no local self-promotion.
      requirementAU-CONTEXTVERIFIED88c61dc9164c
      c563cef1f530
      tests/unit/decide/test_retrieval_consumer.py:15
      tests/unit/decide/test_retrieval_consumer.py:30
      AU-CONTEXT-R002
      Corpus re-embedding uses a governed shadow ANN swap
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Corpus re-embedding uses a governed shadow ANN swap.** A corpus re-embedding request runs as a governed agent-utilities workflow under a capacity lease: it asks epistemic-graph to build a shadow approximate-nearest-neighbor generation, checks population-stability and retrieval-quality receipts, and proposes activation. epistemic-graph performs the atomic swap and can roll it back. | A fault-injection test triggers rollback on a failed stability or quality receipt and confirms the prior ANN generation remains active.
      requirementAU-CONTEXTVERIFIED88c61dc9164c
      f0f5e51f6b47
      tests/unit/decide/test_generation_cycle.py:187
      AU-CONTEXT-R003
      Embedding admission changes come from reviewed proposals only
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Embedding admission changes come from reviewed proposals only.** agent-utilities observes never-retrieved content classes and proposes changes to the embedding admission table from that independently observed feedback. It never writes the durable admission policy directly; only epistemic-graph or a human reviewer can accept the proposal. | A unit test confirms a never-retrieved content class produces a proposal record without any direct admission-table write.
      requirementAU-CONTEXTVERIFIED88c61dc9164c
      c563cef1f530
      tests/unit/knowledge_graph/ingestion/test_admission_feedback.py:25
      tests/unit/knowledge_graph/ingestion/test_admission_feedback.py:67
      AU-CONTEXT-R004
      Context compilation applies engine budgets and preserves source bounds
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Context compilation applies engine budgets and preserves source bounds.** EG-DECISION-ENGINE-R137 owns context policy, window thresholds, recursive plans and limits. AU counts tokens, checks the received budget and preserves cited range and source identifiers. AU-HARNESS-R026 runs the received recursive plan within those limits. AU must abstain when no admissible context fits. | Planned consumer tests cover received budgets, unchanged citations, typed refusal and handoff to AU-HARNESS-R026. Legacy local-knapsack tests do not prove this boundary.
      requirementAU-CONTEXTSPECIFIED88c61dc9164c
      c563cef1f530
      tests/retrieval/test_context_knapsack.py:143
      tests/retrieval/test_context_knapsack.py:40
      AU-CONTEXT-R004.1
      Model
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Model.** `WindowFit` in `agent_utilities/knowledge_graph/retrieval/context_knapsack.py` carries `fits`, counted prompt tokens, received capacity tokens, overage and a closed `verdict`. The `ContextBudget` decision carries EG-DECISION-ENGINE-R137.1 `ContextPolicy`, `WindowBudget`, `OverWindowPlan` and `ParallelMapLimits`. `ContextSizer` at `context_knapsack.py:303` lacks this type. | `tests/unit/knowledge_graph/retrieval/test_context_window_fit.py::test_window_fit_fields`
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R004.2
      Behavior
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Behavior.** The sizer must count the whole prompt with its tokenizer. It must compare the count to the received `Capacity.tokens` (`context_knapsack.py:98`). The threshold uses the received `WindowBudget.over_window_fraction`; AU must not replace it with a local margin. Missing decision fields require abstention. A prompt without a countable tokenizer must yield `uncountable`. | `tests/unit/knowledge_graph/retrieval/test_context_window_fit.py::test_over_window_margin_default`
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R004.3
      Wiring
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Wiring.** `compile_model_context` (`agent_utilities/core/contextual_model.py:752`) must apply the received budget inside `sizing_scope`. Its production callers are `contextual_model.py:903` and `context_compiler_serving.py:565`. No production caller checks whole-prompt fit today. | `tests/unit/knowledge_graph/retrieval/test_context_window_fit.py::test_compile_model_context_checks_fit`
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R004.4
      Refusal
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Refusal.** An `over_window` verdict must not truncate silently. The sizer must return a typed `ContextOverWindow` result that names the overage. It must return the prompt to the caller for the engine's plan. An `uncountable` verdict must abstain. | `tests/unit/knowledge_graph/retrieval/test_context_window_fit.py::test_over_window_returns_typed_handoff`
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R004.5
      Evidence
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Evidence.** Each check must write five fields to the run trace: prompt tokens, capacity, overage, verdict and tokenizer identity. The trace must not store the prompt text. | `tests/unit/knowledge_graph/retrieval/test_context_window_fit.py::test_fit_verdict_in_trace`
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R004.6
      Hot-path proof
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served context-compile operation in `context_compiler_serving.py:565`. A prompt larger than the received window must return `ContextOverWindow`. A fitting prompt must compile unchanged. Test path: `tests/integration/test_context_window_fit_served.py`. | `tests/integration/test_context_window_fit_served.py::test_served_over_window_prompt`
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R005
      Finance scheduling and a sourced flip-explainer agent
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Finance scheduling and a sourced flip-explainer agent.** agent-utilities schedules finance backfill and scan work and provides a flip-explainer agent that computes its answer from math first and attaches every claim to a cited source. Scheduling surfaces presented to users are hosted by graph-os. | Unit tests verify the explainer's output always derives from the computed math and that every claim cites a source.
      requirementAU-CONTEXTLANDED88c61dc9164c
      f0f5e51f6b47
      AU-CONTEXT-R005.1
      Retrieval/decide-layer work lands under a commit that disclaims this row. No finance-scheduling or flip-explainer code ships
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Retrieval/decide-layer work lands under a commit that disclaims this row. No finance-scheduling or flip-explainer code ships.** `status.json`'s `landed_in` commit `88c61dc9164c` delivers `AU-CONTEXT-R001`-`R004` (the retrieval/decide consumer layer) and its own commit message states `AU-CONTEXT-R005..R008` are "not part of this slice". No `flip_explainer.py`, finance backfill scheduler, or finance scan scheduler exists anywhere in the tree at `origin/main`. | Commit `88c61dc9164c`'s message names R005..R008 as out of scope. `git ls-tree -r origin/main` contains no `flip_explainer.py`.
      requirementAU-CONTEXTLANDED88c61dc9164c
      AU-CONTEXT-R005.2
      Build finance scheduling and the sourced flip-explainer agent
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Build finance scheduling and the sourced flip-explainer agent.** agent-utilities implements `flip_explainer.py`, a flip-explainer agent that computes its answer from math first and attaches every claim to a cited source, plus the finance backfill and scan scheduler the parent row describes; scheduling surfaces presented to users remain hosted by graph-os. | Unit tests verify the explainer's output always derives from the computed math and that every claim cites a source.
      requirementAU-CONTEXTVERIFIED0209a00db1f0
      0c09b35ea390
      tests/unit/finance_agents/test_flip_explainer.py:19
      AU-CONTEXT-R006
      Paper trading is isolated; live orders need governed approval
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Paper trading is isolated; live orders need governed approval.** agent-utilities exposes read-only positions and an isolated paper-trading simulation account. Live orders require the SDK's governed write-back contract, a verified human approval lease, account capability, and an exact idempotency key; no agent-utilities model output or UI payload can grant that authority. A finance widget replaces the placeholder widget, and duplicated finance math is removed from agent-utilities. | Negative tests confirm a live order is rejected without an approval lease and idempotency key, and that paper and live paths use isolated accounts.
      requirementAU-CONTEXTVERIFIED0cd7be250b3d
      88c61dc9164c
      AU-CONTEXT-R006.1
      agent-utilities keeps finance agent roles only; paper trading stays isolated
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **agent-utilities keeps finance agent roles only; paper trading stays isolated.** agent-utilities exposes read-only positions and an isolated paper-trading simulation account, deletes duplicated finance math/connector modules, and documents that no local model output or UI payload can grant live-order authority. | A negative test confirms the paper path uses an isolated account and that no agent-utilities code path can authorize a live order.
      requirementAU-CONTEXTVERIFIED0cd7be250b3d
      636c91a16136
      dbe03a6687ca
      f474735cab25
      tests/unit/finance/test_quant_live_order_refusal.py:36
      tests/unit/finance/test_quant_live_order_refusal.py:61
      AU-CONTEXT-R007
      Finance math and feeds move out of agent-utilities
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Finance math and feeds move out of agent-utilities.** agent-utilities deletes its deterministic finance math and quant tooling, moving the equivalent calculations to epistemic-graph's finance core. Market data, market feeds, crypto, exchange, banking, and payments connectors move to SDK connector packages; agent-utilities retains only the finance agent roles: trading_swarm, debate_engine, investor_debate, research_autopilot, and persona_heuristics. Split: `engine_finance.py` is still the live implementation today, so this lands in two steps; see `AU-CONTEXT-R007.1`/`.2`. | An import census confirms no finance math or connector modules remain in agent-utilities, and parity tests cover the migrated calculations at their new owner.
      requirementAU-CONTEXTSPECIFIED703c3eb9d88d
      88c61dc9164c
      af11c84309ee
      AU-CONTEXT-R007.1
      A boundary test pins the finance-math module set, and a typed delegation seam prefers EG when available
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **A boundary test pins the finance-math module set, and a typed delegation seam prefers EG when available.** `tests/unit/finance/test_r007_finance_module_boundary.py` pins the current `agent_utilities/domains/finance/*.py` module set so it may only shrink, never grow, and `api/finance_delegation.py` gives callers one typed seam (`kelly_size_via_eg_or_local`) that calls EG's finance-core primitives when `resolve_finance_primitives_client()` finds them installed, falling back to the caller-supplied local calculation otherwise. | A test confirms the current module set is a subset of the pinned baseline, confirms the delegation seam falls back to the local calculation while EG's finance-core client is absent, and confirms it would delegate to EG's client if one were installed.
      requirementAU-CONTEXTVERIFIED0209a00db1f0
      4eac8c6dc419
      af11c84309ee
      f474735cab25
      tests/unit/finance/test_finance_delegation.py:16
      tests/unit/finance/test_finance_delegation.py:23
      tests/unit/finance/test_finance_delegation.py:41
      AU-CONTEXT-R007.2
      The local finance-math modules and the fallback branch are deleted after cutover
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **The local finance-math modules and the fallback branch are deleted after cutover.** Once epistemic-graph's finance core has documented, per-method parity evidence for every calculation the pinned module set names, `agent_utilities/domains/finance/**` (excluding the five retained agent-role modules) and `engine_finance.py` are deleted, the delegation seam's local-fallback branch in `finance_delegation.py` is removed, and the pinned baseline in the boundary test shrinks to match, closing `AU-CONTEXT-R007`. | An import census confirms no finance math or connector modules remain in agent-utilities, and parity tests cover the migrated calculations at their new owner.
      requirementAU-CONTEXTSPECIFIED9effc03d5c99
      f0f5e51f6b47
      AU-CONTEXT-R007.2.1
      Delete the local finance-math modules and fallback branch once EG parity evidence exists
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Delete the local finance-math modules and fallback branch once EG parity evidence exists.** `agent_utilities/domains/finance/**` (excluding the five retained agent-role modules: `trading_swarm`, `debate_engine`, `investor_debate`, `research_autopilot`, `persona_heuristics`) and `agent_utilities/knowledge_graph/orchestration/engine_finance.py` are still present on `origin/main` post-claimed-cutover; the local-fallback branch in `agent_utilities/api/finance_delegation.py` is not removed; `tests/unit/finance/test_r007_finance_module_boundary.py` still pins the pre-cutover module set. This remains blocked on epistemic-graph: `EG-FINANCE-PRIMITIVES-R016` has Pine-parity fixtures only for ATR/SuperTrend, missing SMA, EMA, 200-week SMA, the 20/21 band, and Heikin-Ashi. | An import census confirms no finance math or connector modules remain in agent-utilities beyond the five retained role modules; parity tests cover every migrated calculation at its new owner in epistemic-graph, gated on `EG-FINANCE-PRIMITIVES-R016` delivering full Pine-parity fixtures.
      requirementAU-CONTEXTSPECIFIEDNo recorded commit/test evidence
      AU-CONTEXT-R008
      Finance recommendations are calibrated, cited, and informational
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Finance recommendations are calibrated, cited, and informational.** agent-utilities produces a calibrated recommendation for each holding or watchlist item, to accumulate, hold, or de-risk, that may abstain when evidence is inadequate and cites its strategy version and supporting evidence. Each recommendation is recorded as an informational-only AnalysisSnapshot, with per-strategy scorecards tracked for comparison. | Unit tests confirm recommendations abstain below a calibration threshold and that every AnalysisSnapshot cites a strategy version and evidence identifiers.
      requirementAU-CONTEXTVERIFIED0cd7be250b3d
      88c61dc9164c
      AU-CONTEXT-R008.1
      Typed, calibrated AnalysisSnapshot model with abstention
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Typed, calibrated AnalysisSnapshot model with abstention.** agent-utilities defines the `AnalysisSnapshot`/`StrategyScorecard` typed model and a `recommend()` builder that abstains when evidence is missing or confidence is below a calibration threshold; `informational_only` is fixed `True` and not settable, and no order-submission entry point exists here. | Unit tests confirm abstention below the calibration threshold and when no evidence is cited, and that a non-abstaining snapshot always carries its strategy version and evidence identifiers.
      requirementAU-CONTEXTVERIFIED0cd7be250b3d
      af11c84309ee
      f474735cab25
      tests/unit/finance/test_analysis_snapshot_recommendation.py:27
      tests/unit/finance/test_analysis_snapshot_recommendation.py:47
      tests/unit/finance/test_analysis_snapshot_recommendation.py:64
      AU-CONTEXT-R008.2
      A real entry point produces recommendations from live holdings
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **A real entry point produces recommendations from live holdings.** agent-utilities wires `recommend()` to the real holdings/watchlist read path (positions, market observations) and a registered tool/agent entry point, replacing any placeholder recommendation output. | An integration test confirms a recommendation for a real holding ID flows through the registered entry point and returns an `AnalysisSnapshot`.
      requirementAU-CONTEXTVERIFIED9effc03d5c99
      tests/unit/finance/test_recommend_entrypoint.py:57
      tests/unit/finance/test_recommend_entrypoint.py:78
      AU-CONTEXT-R008.3
      Per-strategy scorecards persist for comparison
      Definition — AU-CONTEXT / AU-CONTEXT — Agent context, retrieval feedback and finance rolesCanonical requirement and verification source
      **Per-strategy scorecards persist for comparison.** Each strategy version's `StrategyScorecard` is persisted (not recomputed in-memory per call) so multiple strategies can be compared over time. | A test confirms scorecard state for a strategy version survives across separate `recommend()` calls and is queryable per strategy version.
      requirementAU-CONTEXTVERIFIED9effc03d5c99
      tests/unit/finance/test_recommend_entrypoint.py:122
      tests/unit/finance/test_recommend_entrypoint.py:92
      AU-CONTROL
      AU-CONTROL — Agent control plane
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R001
      Layered agent execution stack from task mapping to harness run
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Layered agent execution stack from task mapping to harness run.** agent-utilities implements agent layers L0 through L5 that turn a task into a committed plan obtained from epistemic-graph and execute it through a harness and sandbox abstraction, so the same committed plan can run across different underlying agent harnesses. | Proven by a conformance kit that exercises every layer end to end across each supported harness adapter.
      requirementAU-CONTROLVERIFIEDc049e325e91d
      e0420bc5ba59
      tests/unit/layers/test_harness_port.py:115
      tests/unit/layers/test_harness_port.py:124
      tests/unit/layers/test_harness_port.py:504
      AU-CONTROL-R002
      Component routing through one committed graph-engine decision
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Component routing through one committed graph-engine decision.** agent-utilities selects the model, prompt, skill, tool, harness, account mode, and sandbox for a run by requesting a single committed decision from epistemic-graph rather than choosing them itself, and binds the selected component digests into the resulting run. | Proven by a generated-client contract test asserting routing requests produce one committed decision with bound component digests.
      requirementAU-CONTROLVERIFIED4351f26b3d3b
      c049e325e91d
      e0420bc5ba59
      tests/unit/decide/test_routing_consumers.py:52
      AU-CONTROL-R003
      Agent graph composition via epistemic-graph assembly, not an LLM
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Agent graph composition via epistemic-graph assembly, not an LLM.** agent-utilities builds its agent execution graph by calling epistemic-graph's assembly interface through the generated client, and must not compose the graph with a language model or a local shadow solver. | Proven by a source-level gate plus a deterministic fixture test confirming graph construction only calls the generated assembly client.
      requirementAU-CONTROLVERIFIEDc049e325e91d
      e0420bc5ba59
      tests/unit/decide/test_assembly_consumer.py:46
      AU-CONTROL-R004
      Abstention escalations re-enter as labelled claims, not proofs
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Abstention escalations re-enter as labelled claims, not proofs.** When agent-utilities abstains on an unknown or unverified premise and escalates to a model or a human for input, that response is recorded as a labelled claim fed back into epistemic-graph, not treated as an authoritative decision or proof. | Proven by a negative test asserting an escalation response cannot authorize execution without a subsequent committed decision.
      requirementAU-CONTROLVERIFIEDc049e325e91d
      e0420bc5ba59
      tests/unit/decide/test_runner.py:68
      AU-CONTROL-R005
      Advisory pre-tool risk scoring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Advisory pre-tool risk scoring.** agent-utilities computes an advisory risk score for a proposed tool call before it executes. It surfaces that score to the caller and to epistemic-graph's decision. It never authorizes or blocks the call itself. | Proven by a unit test. It asserts a high-risk score is advisory only. The score never substitutes for a committed decision or policy check.
      requirementAU-CONTROLVERIFIED47a52e7442bd
      c049e325e91d
      e0420bc5ba59
      tests/unit/decide/test_risk_consumer.py:11
      tests/unit/decide/test_risk_consumer.py:24
      AU-CONTROL-R006
      Cost-aware routing informed by usage accounting
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Cost-aware routing informed by usage accounting.** agent-utilities' routing requests include accumulated usage and cost accounting from its own event layer as an input to epistemic-graph's decision, so a later run can be routed with awareness of prior spend rather than ignoring it. | Proven by an integration test showing recorded usage data changes a subsequent routing decision's cost inputs.
      requirementAU-CONTROLVERIFIED4351f26b3d3b
      a1dd4111f04f
      c049e325e91d
      AU-CONTROL-R006.1
      A production ObservedCost implementer and a caller in routing
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **A production ObservedCost implementer and a caller in routing.** `agent_utilities/decide/consumers/routing.py` defines the `ObservedCost` protocol. No production implementer backed by the usage/cost event layer exists. The functions `route_by_cost`, `route_choice` and `route_model` never receive a real `observed` argument. Routing therefore never sees real usage cost. | An integration test wires a real `ObservedCost` implementer into a routing call. The implementer reads recorded usage events. The test asserts the decision's cost inputs change.
      requirementAU-CONTROLVERIFIED6a43f914f823
      tests/unit/decide/test_routing_consumers.py:78
      AU-CONTROL-R007
      Swarm topology selection routed through Decide
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Swarm topology selection routed through Decide.** agent-utilities selects multi-agent swarm topology, including width, rounds, stop rule, and subagent caps, by requesting a decision from epistemic-graph instead of a local heuristic, covering the topology families delivered under AU-CONTROL-R009 through AU-CONTROL-R020. | Proven by integration tests across the supported topology families confirming each selection traces to a committed decision.
      requirementAU-CONTROLVERIFIEDa1dd4111f04f
      c049e325e91d
      tests/unit/decide/test_topology_consumer.py:145
      tests/unit/decide/test_topology_consumer.py:156
      AU-CONTROL-R008
      Free-text task mapping accepted only as a labelled claim
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Free-text task mapping accepted only as a labelled claim.** When agent-utilities proposes a mapping from a free-text task description to a task IRI, epistemic-graph accepts it only as a labelled claim requiring evidence, never as an authoritative proof of task identity. | Proven by mapping and refusal tests confirming an unproven free-text mapping cannot authorize execution.
      requirementAU-CONTROLVERIFIEDa1dd4111f04f
      c049e325e91d
      fdd333b5545a
      tests/unit/test_task_classification.py:30
      tests/unit/test_task_classification.py:37
      tests/unit/test_task_classification.py:65
      AU-CONTROL-R009
      Swarm topology ontology and schema publication
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Swarm topology ontology and schema publication.** agent-utilities publishes a swarm-topology ontology and SHACL shapes (agent_utilities/knowledge_graph/ontology/swarm_topology/topology.ttl and shapes.ttl) through epistemic-graph's schema attachment interface, with positive and negative fixtures validating the published shapes. | Proven by SHACL positive and negative fixture tests against the published topology shapes.
      requirementAU-CONTROLVERIFIEDa1dd4111f04f
      c049e325e91d
      da99e968d6c7
      tests/unit/decide/test_swarm_topology_schema.py:136
      tests/unit/decide/test_swarm_topology_schema.py:94
      AU-CONTROL-R010
      Reference swarm topology templates
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Reference swarm topology templates.** agent-utilities provides a fixed set of reference agent-graph templates in decide/topology/templates.py, covering single agent, pipeline, fan-out/join, supervisor with workers, critique loop, and council, each carrying topology facts consumed by epistemic-graph's decision. | Proven by unit tests confirming each template produces topology facts accepted by the decision contract.
      requirementAU-CONTROLVERIFIEDa1dd4111f04f
      c049e325e91d
      da99e968d6c7
      tests/unit/decide/test_swarm_topology_schema.py:164
      tests/unit/decide/test_swarm_topology_schema.py:95
      AU-CONTROL-R011
      Consume the generated topology contract via a pinned dependency
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Consume the generated topology contract via a pinned dependency.** agent-utilities consumes epistemic-graph's topology contract types, including assembly topology requirements and topology facts, through the generated Python client, and updates its pinned epistemic-graph dependency to the revision that introduces them. | Proven by a contract test against the generated client's golden fixtures for the topology types.
      requirementAU-CONTROLLANDEDc049e325e91d
      da99e968d6c7
      AU-CONTROL-R012
      Agent-graph templates validated against topology shape at publish
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Agent-graph templates validated against topology shape at publish.** When agent-utilities publishes an agent-graph template, epistemic-graph validates it against the template topology shape and rejects it immediately if the shape check fails, so an invalid template can never become available. | Proven by a negative test publishing a malformed template and asserting fail-closed rejection before availability.
      requirementAU-CONTROLLANDEDc049e325e91d
      AU-CONTROL-R013
      Topology options filtered by admissibility derivation
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Topology options filtered by admissibility derivation.** agent-utilities submits a composed-schema digest as part of its topology request and relies on epistemic-graph's derivation of admissible topology options to eliminate any option that is not entailed as admissible before selection. | Proven by a fixture test where an inadmissible topology option is excluded from the candidate set returned to agent-utilities.
      requirementAU-CONTROLLANDED148ef73124d2
      c049e325e91d
      AU-CONTROL-R014
      No local topology solver, defer to the validated graph-engine model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **No local topology solver, defer to the validated graph-engine model.** agent-utilities does not implement its own topology constraint solver. It relies entirely on epistemic-graph's precomputed, oracle-validated model. That model covers feasible width, rounds, lease, deadline, demand and capacity. AU applies it when selecting a topology. | Proven by a source gate confirming no local topology solver exists. A second test cross-checks a brute-force oracle result for small instances.
      requirementAU-CONTROLVERIFIED148ef73124d2
      c049e325e91d
      f764531c7dd3
      tests/gates/test_topology_authority_gate.py:25
      tests/gates/test_topology_authority_gate.py:30
      AU-CONTROL-R015
      Topology consumer asks the graph engine, not a local success store
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Topology consumer asks the graph engine, not a local success store.** agent-utilities' topology consumer in decide/consumers/topology.py requests its topology decision from epistemic-graph and builds its admission limits from the resulting decision; the previous local outcome-recording, moving-average, and success-rate reuse logic is removed, and a source gate prevents any component from writing a topology template directly into the graph store. | Proven by a source gate test that fails if a direct topology-template write or the removed local success-rate logic reappears.
      requirementAU-CONTROLLANDED148ef73124d2
      c049e325e91d
      AU-CONTROL-R016
      Topology decisions respect capacity headroom at request priority
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Topology decisions respect capacity headroom at request priority.** agent-utilities' topology requests factor in epistemic-graph's capacity status as a headroom observation scoped to the request's priority, and treat an infeasible-lease result as a refusal rather than retrying with a heuristic fallback. | Proven by a negative test asserting a request is refused, not silently retried, when capacity status reports an infeasible lease.
      requirementAU-CONTROLLANDED148ef73124d2
      c049e325e91d
      AU-CONTROL-R017
      Single re-decision on capacity denial for topology admission
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Single re-decision on capacity denial for topology admission.** When agent-utilities requests topology capacity admission and it is denied, it requests at most one fresh decision before giving up, and releases any acquired capacity as soon as the run stops rather than holding it until timeout. | Proven by an integration test asserting exactly one re-decision attempt on denial and capacity release on stop.
      requirementAU-CONTROLVERIFIED4a5540dd2e3d
      6d8865040871
      e78a5cf3de4e
      tests/unit/decide/test_topology_consumer.py:209
      tests/unit/decide/test_topology_consumer.py:223
      AU-CONTROL-R018
      Subagent allowance negotiated into the run specification
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Subagent allowance negotiated into the run specification.** agent-utilities adds a subagent allowance field to its run specification and negotiates it against each harness adapter's enforcement capability in agent_utilities/layers/contracts.py and negotiation.py, so a harness that cannot enforce a child cap is flagged accordingly before launch. | Proven by the adapter conformance kit asserting the negotiated allowance matches each adapter's actual enforcement flag.
      requirementAU-CONTROLVERIFIED4a5540dd2e3d
      bd37ae7764a6
      d008da7e66d1
      tests/unit/layers/test_harness_port.py:199
      tests/unit/layers/test_harness_port.py:246
      tests/unit/layers/test_harness_port.py:258
      AU-CONTROL-R019
      Swarm continuation restricted to narrow-only decisions
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Swarm continuation restricted to narrow-only decisions.** agent-utilities' swarm continuation point in decide/consumers/continuation.py evaluates only whether to stop or narrow a run in progress. It checks a stop rule over the run's usage data and never widens the run. It releases capacity whenever the run narrows. | Proven by a unit test. It asserts the continuation point refuses a widen request and releases capacity on narrow.
      requirementAU-CONTROLLANDED21ccce45c2d7
      c049e325e91d
      AU-CONTROL-R020
      Learned topology routing term with a benchmark gold set
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Learned topology routing term with a benchmark gold set.** agent-utilities defines a feature schema and a work-market crediting mechanism for an optional learned topology-routing term. It evaluates the term against a benchmark gold set in tests/benchmarks/swarm_topology/. The term is promoted only through the decision engine's promotion gate (EG-DECISION-ENGINE-R040). Its cost offer depends on the expected-cost capability defined by AU-HARNESS-R003. | Proven by the synthetic width-quality benchmark and a promotion gate that blocks use of the learned term before it passes evaluation.
      requirementAU-CONTROLLANDED21ccce45c2d7
      33dc0f5e9908
      75dc28c16382
      c049e325e91d
      AU-CONTROL-R021
      Harness and sandbox access via direct typed ports, not a registrar
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Harness and sandbox access via direct typed ports, not a registrar.** agent-utilities accesses a harness and sandbox through direct, typed port methods. It uses no registrar indirection and no legacy adapter layer. | Proven by focused unit tests exercising the direct port methods and a source check confirming no registrar or legacy adapter path remains.
      requirementAU-CONTROLLANDEDd8e0d2e999e1
      AU-CONTROL-R022
      Model selection routed through the committed decision, not ad hoc
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model selection routed through the committed decision, not ad hoc.** agent-utilities selects which model to use for a run by requesting it from epistemic-graph's committed decision interface, rather than applying an ad hoc or locally hard-coded selection policy. | Proven by the generated-client contract test confirming model selection is bound to the decision's selected component digest.
      requirementAU-CONTROLLANDED4351f26b3d3b
      c049e325e91d
      AU-CONTROL-R023
      Catalog entries attributed to their originating server
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Catalog entries attributed to their originating server.** agent-utilities' component catalog used for routing records which server each tool or skill entry originates from, so a routing decision and its audit trail can be traced to the correct source server rather than attributed ambiguously. | Proven by a unit test asserting each catalog entry's selection and audit record carries its correct originating-server attribution.
      requirementAU-CONTROLLANDED0d62109b2c36
      AU-CONTROL-R024
      Durable Agent Library with list, get and save
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Durable Agent Library with list, get and save.** agent-utilities stores each built agent as one Agent Library record in the knowledge graph. A record holds the system prompt, tools, skills, model profile, context policy and role. The record reuses the existing `CallableResource` node and the runnable-skill field contract, so delegation runs a saved agent by name. The agent-webui `/api/enhanced/agent-library` routes and the `agent_library` intent tool read and write through one `AgentLibrary` class. | Proven by unit tests: an agent saved through the library is listed and read back with every field. The intent router lists it through `ask` and saves through a previewed `manage` plan. `ask` cannot save.
      requirementAU-CONTROLLANDED8d94e1c97b28
      d10020c23444
      AU-CONTROL-R025
      Pre-built role agents from packaged fleet prompts
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Pre-built role agents from packaged fleet prompts.** agent-utilities generates one `role` Agent Library record for each packaged prompt blueprint that names an `identity.role` and a directive. The `:Prompt` corpus supplies the blueprints, so generation reads no filesystem path. The shipping package is the record's MCP server. Its ingested tools bind on save. | Proven by unit tests: a role blueprint becomes a saved role agent with its package tools; a blueprint without a role produces no agent.
      requirementAU-CONTROLLANDED8d94e1c97b28
      d10020c23444
      AU-CONTROL-R026
      Assembled agent graphs are committed, published and saved for reuse
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Assembled agent graphs are committed, published and saved for reuse.** After a solved L3 assembly, agent-utilities commits the decision through the bound `commit_context` provider. It then publishes the graph through the bound `publish_context` provider with the committed record as evidence. It saves every solved graph as an `agent_graph` Agent Library record. The record holds the graph draft, the agents, the decision record id and the publish receipt. An uncommitted graph is saved but never published. | Proven by unit tests over the scripted EG client: commit, publish and library save all run for a committed graph. An uncommitted graph is saved and not published. A publish failure keeps the assembled agent.
      requirementAU-CONTROLLANDED8d94e1c97b28
      d10020c23444
      AU-CONTROL-R027
      The task planner answers a how-to-execute question as one structured plan
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The task planner answers a how-to-execute question as one structured plan.** The plan lists steps, agent count and types, reuse, guardrails, workflow and the DAG. A mapper proposes native task IRIs as a labelled claim. EG assembly supplies the skills, tools, prompt and model of each agent. The EG topology decision supplies the template, the DAG and the slot widths. A capability search finds Agent Library templates and external A2A agents per step. A guardrail source adds policy rules to the control-plane invariants. Every plan element cites its evidence class and its record. A missing port or an EG abstention becomes a named gap. A model never composes a substitute. | Unit tests over scripted EG answers cover a decided plan, an abstention, an unmapped goal and a plan without ports.
      requirementAU-CONTROLLANDED5301b427a6a5
      543b8157705e
      c44206e0d856
      AU-CONTROL-R028
      The ask intent routes planning questions to the task planner
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The ask intent routes planning questions to the task planner.** A bare `ask` returns the task plan when it starts with "how can" plus a first-person pronoun. The same holds for "what steps", "which agents should" and "plan how". The result is read-only and carries its routing record. Any caller hint keeps the declared route of the caller. | Routing tests on the intent surface cover planning, non-planning and hinted questions.
      requirementAU-CONTROLLANDED5301b427a6a5
      543b8157705e
      c44206e0d856
      AU-CONTROL-R029
      Cross-source reports select sources by ontology and read them live
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Cross-source reports select sources by ontology and read them live.** The ontology names the classes in the question. Ontology relations link those classes into one path. Each class on the path uses its approved virtual mapping. The report joins live rows through bind joins along the path. No entity row enters the graph. A row budget marks the report incomplete and never truncates it. A bare `ask` routes such a question to this report when a catalog is installed. | A test with two fake sources proves source selection, live-only reads and fail-closed unapproved and over-budget cases.
      requirementAU-CONTROLLANDED5301b427a6a5
      543b8157705e
      c44206e0d856
      AU-CONTROL-R030
      Virtual-graph contracts materialize metadata and hot subsets only
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Virtual-graph contracts materialize metadata and hot subsets only.** A source connection names its endpoint by reference and refuses credentials. A metadata contract records discovered entities, fields, relationships and operations under a digest. A virtual mapping names discovered entities and fields only. A mapping serves reads only after approval. Connection, contract and mapping facts become graph facts. Entity rows stay at the source unless a hot subset meets the copy policy. EG-UNIFIED-DATA-PLANE-R037 owns the vocabulary. | Unit tests cover credential refusal, undiscovered-field refusal, metadata-only triples and the hot-subset decision.
      requirementAU-CONTROLLANDED5301b427a6a5
      543b8157705e
      c44206e0d856
      AU-CONTROL-R031
      `find` ranks fleet tools with native capabilities
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **`find` ranks fleet tools with native capabilities.** A `find(intent=...)` call scores each fleet discovery hit with the native lexical scorer. Fleet hits and native capabilities share one `results` list. Each fleet row names its server and kind. A fleet tool row carries a `how_to_call` that `act(action='fleet.call')` executes. A failed fleet probe appears as `fleet_error`; it never disappears silently. | Unit tests in `tests/unit/test_intent_fleet_ranking_and_ties.py` rank a Docker fleet tool first, check its `how_to_call` and report a failed probe.
      requirementAU-CONTROLLANDED1ff1099e5d57
      4c334b7fc9ad
      b4c99c73265c
      df00e9a0b560
      e822fa6bb112
      AU-CONTROL-R032
      `act` calls a fleet tool by its server and tool id
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **`act` calls a fleet tool by its server and tool id.** `act(action='<server>.<tool>')` resolves the catalog server and its tool. It mounts the child lazily through the multiplexer. It previews and executes through the same governed path as `fleet.call`. An unknown server or tool returns an actionable error. | Unit tests over a fake multiplexer cover preview, execute, unknown server and unknown tool.
      requirementAU-CONTROLLANDED1ff1099e5d57
      28eb7b647b57
      e822fa6bb112
      AU-CONTROL-R033
      A read-only action tie runs the declared default action
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **A read-only action tie runs the declared default action.** When read actions tie for an unpinned `ask` or `why`, the router runs the default of the tool's own `action` parameter. The default must be a declared read action. The tied alternatives stay in the routing record. A tool without a read default still refuses the tie. | Unit tests cover a `graph_explain` tie that runs `explain` and a tie without a read default that refuses.
      requirementAU-CONTROLLANDED1ff1099e5d57
      78a53983ae0b
      AU-CONTROL-R034
      An unmatched read intent falls back to the NL planner
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **An unmatched read intent falls back to the NL planner.** When the top capability matches no descriptor term, an unpinned `ask` routes to `nl_query`. The routing record sets `fell_back_to_nl_planner` and states the reason. A pinned tool or an explicit action never falls back. | Unit tests cover the unmatched fallback and the pinned and explicit-action exclusions.
      requirementAU-CONTROLLANDED1ff1099e5d57
      78a53983ae0b
      AU-CONTROL-R035
      The signed agent-dispatch envelope carries an enforced allowed-tool-subset field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The signed agent-dispatch envelope carries an enforced allowed-tool-subset field.** The signed `AgentTurnEnvelope` produced by `enqueue_agent_turn` carries an explicit allowed-tool-subset field naming the exact tools a caller-filtered assembly admitted, bound into the signature. A harness or carrier reading the envelope enforces that subset at execution time rather than treating it as advisory. An envelope with no allowed-tool-subset field never authorizes a caller-filtered exposure claim by a consumer. This is the dependency a budget-constrained admission door (such as GraphOS's `GRAPHOS-A2A-002`) requires before it can enforce tool-subset exposure end to end. | Proven by a unit test asserting the envelope's signature covers the allowed-tool-subset field and a negative test asserting a consumer cannot claim caller-filtered exposure from an envelope lacking the field.
      requirementAU-CONTROLSPECIFIED8c6fb318c5d3
      AU-CONTROL-R035.1
      Open the AU-CONTROL-R035 owner row
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Open the AU-CONTROL-R035 owner row.** Agent Utilities records, in `requirements.md` and `spec.md`, that the signed agent-dispatch envelope lacks an allowed-tool-subset field. The graph-os `GRAPHOS-A2A-002` admission door depends on this row closing. | The row exists in `requirements.md` and is cross-referenced from `spec.md`.
      requirementAU-CONTROLLANDED79a0b3968c7c
      AU-CONTROL-R035.2
      Add and enforce the allowed-tool-subset field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Add and enforce the allowed-tool-subset field.** Agent Utilities adds an `allowed_tool_subset` field to `AgentTurnEnvelope` (`agent_utilities/orchestration/agent_dispatch.py`), binds it into the `DispatchCarrier` signature payload alongside the envelope's other signed fields, and makes the carrier's consumer-side check reject execution when a tool outside that subset is invoked or when the field is absent from a caller-filtered claim. | A unit test asserts the envelope's signature covers `allowed_tool_subset`; a negative test asserts a consumer cannot claim caller-filtered exposure from an envelope lacking the field — both passing against real code, not just the spec text.
      requirementAU-CONTROLVERIFIED018e9824140f
      tests/unit/test_agent_dispatch.py:1309
      tests/unit/test_agent_dispatch.py:1345
      tests/unit/test_agent_dispatch.py:1363
      AU-CONTROL-R035.3
      Typed `harness_config` envelope field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Typed `harness_config` envelope field.** `AgentTurnEnvelope` (`agent_utilities/orchestration/agent_dispatch.py:471`) gains a `harness_config` field of type `HarnessConfig` (`AU-HARNESS-R012.1`). The field sits next to `allowed_tool_subset` (`agent_dispatch.py:509`). The default is `None`. | `tests/unit/test_agent_dispatch.py::test_envelope_carries_harness_config`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R035.4
      Sign the field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Sign the field.** `DispatchCarrier` (`agent_dispatch.py:180`) must bind a digest of `harness_config` into its signature payload beside `allowed_tool_subset` (`agent_dispatch.py:210`, `:263`). A changed config must change the signature. | `tests/unit/test_agent_dispatch.py::test_signature_covers_harness_config`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R035.5
      Reject a changed field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Reject a changed field.** `DispatchCarrier.verify` (`agent_dispatch.py:350`) must accept an expected `harness_config` and reject a mismatch. The worker passes the config it applies. | `tests/unit/test_agent_dispatch.py::test_verify_rejects_tampered_harness_config`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R035.6
      Refuse an absent field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refuse an absent field.** A harness-run job whose envelope has no `harness_config` must be refused at claim time with reason `harness_config_absent`. The worker must not substitute a default. | `tests/unit/test_agent_dispatch_worker.py::test_absent_harness_config_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R035.7
      Producers set the field
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Producers set the field.** The three envelope producers (`core/sessions.py:1231`, `mcp/tools/job_tools.py:89`, `integrations/git_resolver.py:234`) must pass the committed `HarnessConfig` into the envelope. A producer with no committed answer must refuse to enqueue. | `tests/unit/test_agent_dispatch.py::test_producers_enqueue_with_committed_config`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036
      Obtain `harness_config` from the engine's `HarnessConfig` decision
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Obtain `harness_config` from the engine's `HarnessConfig` decision.** AU must request the configuration from the engine's `HarnessConfig` decision on the same path that model selection uses. AU must apply the committed answer unchanged and must never compute a configuration locally. An abstention or refusal from the engine must stop the enqueue with a typed reason. | The end-to-end row proves the engine answer reaches the signed envelope.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.1
      Name the shared path
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Name the shared path.** Model selection today runs `route_model` (`agent_utilities/decide/consumers/routing.py:58`), `decide.choose` (`decide/__init__.py:67`), `DecisionRunner.choose` (`decide/runner.py:218`) and the transport `decide` call (`decide/transport.py:28`). The new consumer must use the same runner and transport. | `tests/unit/test_decide_harness_config.py::test_consumer_uses_shared_runner_and_transport`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.2
      Typed answer model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Typed answer model.** `agent_utilities/decide/consumers/harness_config.py` defines `HarnessConfigAnswer` with `context_policy`, the thresholds, `recent_window_fraction`, `plan_scaffold`, `action_space`, the allowed tool subset, premises, why-not entries, resolution kind and typed abstention. Field names must match the engine contract. | `tests/unit/test_decide_harness_config.py::test_answer_model_matches_contract_fixture`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.3
      Request function
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Request function.** `decide_harness_config` must send the model profile reference, the task class, the usable context budget and the request priority. It returns a `HarnessConfig` or a typed abstention. | `tests/unit/test_decide_harness_config.py::test_request_inputs_and_answer_mapping`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.4
      Abstention is not a guess
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Abstention is not a guess.** When the answer abstains because a model fact is unmeasured, the consumer must return the abstention with the missing fact name. It must not fill any part from a default. | `tests/unit/test_decide_harness_config.py::test_abstention_carries_missing_fact`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.5
      Wire into the producers
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wire into the producers.** The producers in `AU-CONTROL-R035.7` must call `decide_harness_config` before they build the envelope. They must pass the usable budget from the admitted task. | `tests/unit/test_agent_dispatch.py::test_producer_calls_decision_before_envelope`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.6
      Trace the decision
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Trace the decision.** The committed decision identifier must travel in the envelope and into the run trace, so the `EG` run-trace row can link a run to its decision. | `tests/unit/test_decide_harness_config.py::test_decision_id_in_envelope_and_trace`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R036.7
      End-to-end proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **End-to-end proof.** A fake engine answers `HarnessConfig`. A producer must enqueue a signed envelope carrying the answer, and the run must apply it. A second case with an abstention must refuse the enqueue. | `tests/harness/test_runloop_envelope_e2e.py::test_decision_to_signed_envelope_to_run`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037
      Skill workflow templates run through one orchestrate call and fill tool gaps by search
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Skill workflow templates run through one orchestrate call and fill tool gaps by search.** AU must instantiate a skill workflow's agent team and fan-out template as one agent graph. AU must fill each unmet tool slot from the installed fleet. AU must refuse the run when no admissible tool exists. | The end-to-end row proves a gap is filled and a second gap refuses.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037.1
      Typed gap model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Typed gap model.** `agent_utilities/decide/consumers/workflow_gaps.py` defines `WorkflowGap` with slot name, required capability, candidate tool ids and resolution kind. | `tests/unit/test_workflow_gaps.py::test_gap_model_fields`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037.2
      Detect unmet slots
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Detect unmet slots.** `find_workflow_gaps` must compare the template's tool slots with the installed fleet catalog. It must return one `WorkflowGap` per unmet slot. | `tests/unit/test_workflow_gaps.py::test_unmet_slot_becomes_gap`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037.3
      Fill from the committed ranking
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Fill from the committed ranking.** `fill_workflow_gaps` must take candidates from the `find` ranking and apply the engine's committed choice unchanged. It must not rank candidates locally. | `tests/unit/test_workflow_gaps.py::test_fill_applies_committed_choice`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037.4
      Refuse instead of inventing a tool
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refuse instead of inventing a tool.** When no candidate is admissible, AU must stop the run before graph build. The typed reason must name the slot. AU must not ask a model to invent a tool. | `tests/unit/test_workflow_gaps.py::test_no_candidate_refuses_with_slot`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037.5
      Wire into workflow execution
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wire into workflow execution.** Locate where `graph_orchestrate` hands a workflow to `execute_workflow`. That call must run `find_workflow_gaps` and `fill_workflow_gaps` before graph assembly. | `tests/unit/test_workflow_gaps.py::test_execute_workflow_fills_gaps_first`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R037.6
      End-to-end proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **End-to-end proof.** A fake engine and a fake fleet catalog serve a workflow with a missing pull-request tool slot. The run must fill the slot and execute. A second workflow with no matching tool must refuse. | `tests/harness/test_workflow_gap_e2e.py::test_gap_filled_then_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038
      Model-written code runs only in a restricted interpreter
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model-written code runs only in a restricted interpreter.** Code that a model writes runs in an embedded interpreter that cannot reach the filesystem, environment or network. Only host-controlled external functions give access, and resource limits apply to every run. | See children `AU-CONTROL-R038.1` to `AU-CONTROL-R038.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `SandboxCapabilities` in `agent_utilities/rlm/sandboxes/base.py:44` gains a closed `isolation` field with values `restricted_interpreter`, `wasm`, `container` and `microvm`. Each run carries a `ResourceLimits` record with wall time, memory and call count. | `tests/unit/rlm/test_sandbox_capabilities.py::test_isolation_values_closed`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** The restricted interpreter must expose only the helpers in `SandboxEnv.helpers`. Each helper is a named, replaceable default and counts its calls against the limit. Filesystem, environment and network names must be absent from the interpreter namespace. | `tests/unit/rlm/test_restricted_interpreter.py::test_only_host_helpers_reachable`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** `Router.select` at `agent_utilities/rlm/sandboxes/router.py:59` orders the restricted interpreter first for code that needs no library access. Production callers are `agent_utilities/harness/online_scoring.py:106` and `agent_utilities/knowledge_graph/research/change_synthesis.py:276`, which iterate over the chain. | `tests/unit/rlm/test_router.py::test_restricted_interpreter_first`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** A syntax element the interpreter does not support must raise `SandboxRejected` (`agent_utilities/rlm/sandboxes/base.py:133`) with a reason naming the element. A call over its limit must return a typed `limit_exceeded` result. The router must escalate to the next tier. It must not run the code unrestricted. | `tests/unit/rlm/test_restricted_interpreter.py::test_unsupported_construct_rejected`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** Each run must record the backend name, the limits applied, the helpers called and the rejection reason in the run trace. A reviewer can then tell which tier ran the code and why it escalated. | `tests/unit/rlm/test_restricted_interpreter.py::test_trace_fields_recorded`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R038.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the metric-scoring run loop at `agent_utilities/harness/online_scoring.py`. A snippet that opens a file must be rejected at the restricted tier. It must then escalate through the router. The trace must name both tiers. | `tests/harness/test_online_scoring_isolation.py::test_file_access_snippet_escalates`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039
      Fan-out sandboxes branch from a warmed parent and refuse typed
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Fan-out sandboxes branch from a warmed parent and refuse typed.** Child sandboxes start from one warmed parent through copy-on-write memory snapshots. A running sandbox may branch into a new parent with a layered diff snapshot. Each child stays isolated and each branch is audited. | See children `AU-CONTROL-R039.1` to `AU-CONTROL-R039.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `BranchRequest` and `BranchResult` in `agent_utilities/rlm/sandboxes/base.py` carry the child identifier, a tag, a mode of `full`, `diff` or `live`, and the new parent handle. A `BranchRefusal` carries a closed reason: `no_snapshot_support`, `unknown_child` or `host_unavailable`. | `tests/unit/rlm/test_branch_models.py::test_branch_models_closed_reasons`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** A branch must snapshot the running child and register the result as a parent in the warm registry. The source child must keep running. Each child must start with its own namespace and no shared writable state. The default mode is `diff`. | `tests/unit/rlm/test_branch_behavior.py::test_branch_registers_parent`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** `ForkableSandbox.branch` is defined at `agent_utilities/rlm/sandboxes/base.py:222` and has no production caller today. This row creates the call site in `_fork_fanout` (`agent_utilities/mcp/tools/engine_surface_tools.py:1694`), which calls `branch` when a fan-out branch asks to continue from a running child. | `tests/unit/test_fork_fanout_branch.py::test_fanout_calls_branch`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** A rung that cannot snapshot must return `BranchRefusal` with reason `no_snapshot_support`. `_fork_fanout` must report the refusal in its payload and must not fall back to a cold start without saying so. | `tests/unit/test_fork_fanout_branch.py::test_unsupported_rung_refuses_typed`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** Each branch must write an audit record and a metric with the source child, the tag, the mode and the snapshot size. Each refusal must write the closed reason. | `tests/unit/rlm/test_branch_behavior.py::test_branch_audit_and_metric`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R039.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served fork fan-out operation backed by `_fork_fanout`. A fake rung with snapshot support serves two branches. The test observes a registered parent, an audit record per branch and a typed refusal on a rung without support. | `tests/integration/test_fork_fanout_served.py::test_branch_through_served_fanout`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040
      The harness holds run output uncommitted and applies the verdict it receives
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The harness holds run output uncommitted and applies the verdict it receives.** Each run writes workspace changes into a held layer. The harness adapts the received `HeldItemVerdict` from graph-os. It applies admitted proposals, drops rejected local layers, and keeps abstained proposals held. The run's durable record is an engine fact (EG-DECISION-ENGINE). | See children `AU-CONTROL-R040.1` to `AU-CONTROL-R040.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `WorkspaceProposal` in `agent_utilities/runtime/run_vcs/proposal.py` (new) holds the run id, the base `FsSnapshot` id and the changed paths with digests. It receives `HeldItemVerdict` from GRAPHOS-A2A-R006, with `outcome` (`admitted`, `rejected`, `abstained`) and `verdict_ref`. The harness preserves these wire values and stores no decision. | `tests/unit/runtime/test_workspace_proposal.py::test_holds_paths_and_digests`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** The run writes into a layer over the base tree. `FsCarrier.snapshot` (`runtime/run_vcs/carrier.py:121`) captures the layer. The adapter maps `admitted` to apply and `rejected` to drop only the local uncommitted layer. It maps `abstained` to keep held. An unavailable producer or typed refusal also keeps the proposal held, with no filesystem effect. The engine retains its authoritative held-item record. | `tests/unit/runtime/test_workspace_proposal.py::test_admission_outcome_adapter`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** `RunSession` (`run_session.py:39`) and `FsCarrier` (`carrier.py:101`) have no production caller today. This row creates the call site in the served `execute_agent` operation. The call site holds the layer before the first tool call. `RunSessionRegistry` (`run_session.py:201`) is reached today only by replay at `mcp/tools/state_tools.py:1570`. | `tests/unit/test_execute_agent_proposal.py::test_run_holds_layer`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** The harness must refuse to apply a verdict whose base snapshot changed. It must return a typed `base_moved` refusal. A missing, unknown or refused verdict must keep the proposal held with no filesystem effect. The adapter must never map `abstained` to `rejected`. | `tests/unit/runtime/test_workspace_proposal.py::test_base_moved_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** The harness must append a `RunEvent` (`runtime/run_vcs/kernel.py:76`) to the run's `RunEventLog` when it holds, applies or drops a layer. The event carries the original outcome, `verdict_ref`, adapter action and changed-set digest. An unavailable response records its reason without inventing a verdict. The engine stores the durable record. | `tests/unit/runtime/test_workspace_proposal.py::test_apply_events_emitted`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R040.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `execute_agent` operation. A run that edits a file must leave the base tree unchanged. A received `admitted` outcome must then apply it. A `rejected` outcome must discard only the local layer. An `abstained` outcome, unavailable response or typed refusal must preserve the held layer and the base tree. | `tests/integration/test_execute_agent_proposal_served.py::test_no_change_before_verdict`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041
      The harness runs agent runtimes isolated and enforces the quota it receives
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The harness runs agent runtimes isolated and enforces the quota it receives.** The harness provides sandbox isolation, quota enforcement and graceful termination. The engine supplies the quota values (EG-DECISION-ENGINE). | See children `AU-CONTROL-R041.1` to `AU-CONTROL-R041.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `RuntimeQuota` in `agent_utilities/rlm/sandboxes/base.py` (new, next to `SandboxCapabilities` at `:44`) holds wall time, memory bytes, process count and grace seconds. The harness receives it from EG-DECISION-ENGINE. The fallback default grace is 10 seconds. `StopReason` is closed: `completed`, `signal`, `quota_exceeded` and `grace_expired`. | `tests/unit/rlm/test_runtime_quota.py::test_stop_reasons_closed`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** On `SIGTERM` the runtime must stop accepting calls and let the current call finish. After the received grace period it must kill the process group. The runtime must stop a run that exceeds a received limit. | `tests/unit/rlm/test_runtime_quota.py::test_term_then_kill_after_grace`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** The container backend (`rlm/sandboxes/container_fork_backend.py:54`) already ends its PID 1 by timeout. Cgroup readers exist at `core/cgroup_resources.py:52`. No quota record reaches either today. This row passes the received `RuntimeQuota` from `_fork_fanout` (`mcp/tools/engine_surface_tools.py:1694`) into the backend start call. | `tests/unit/test_fork_fanout_quota.py::test_quota_reaches_backend`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** A quota above the host's cgroup limit must return a typed `quota_unavailable` refusal before launch. The runtime must not start unlimited. | `tests/unit/rlm/test_runtime_quota.py::test_over_host_limit_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** Each run must emit the applied quota, the stop reason and the time from signal to exit as trace events. Unavailable usage stays `unavailable` and never becomes zero. | `tests/unit/rlm/test_runtime_quota.py::test_stop_evidence_recorded`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R041.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served fork fan-out operation. A fake runtime ignores `SIGTERM`. The test observes a kill after the grace period, the stop reason `grace_expired` and the trace fields. | `tests/integration/test_fork_fanout_served.py::test_signal_ignored_is_killed`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042
      The harness loads only the tools it is given during a run
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The harness loads only the tools it is given during a run.** The tool registry and on-demand disclosure belong to graph-os (GRAPHOS-FLEET). Tool choice belongs to the engine (EG-DECISION-ENGINE). The harness loads the given tools and refuses a call to any other tool. | See children `AU-CONTROL-R042.1` to `AU-CONTROL-R042.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `DisclosureSet` in `agent_utilities/capabilities/fleet_tool_search.py` (new type) holds the run id and the tool ids the harness was given. It receives selected ids from EG-DECISION-ENGINE-R134.2 and authorized schemas from GRAPHOS-FLEET-R011/R013/R029. Registry presence alone does not disclose a tool. The harness adds no id itself. | `tests/unit/capabilities/test_disclosure_set.py::test_only_received_ids_added`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** The harness must load each given tool's schema into the run. It must hold the set for the run's lifetime. It loads only selected ids with received authorized schemas. It ranks and selects nothing. GraphOS retains registry and call admission authority. | `tests/unit/capabilities/test_disclosure_set.py::test_loads_given_tools`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** `fleet_tool_search_capability` (`capabilities/fleet_tool_search.py:198`) has no production caller today. `_apply_defer_tool_loading` (`agent/factory.py:529`) is called at `agent/factory.py:973` for local toolsets only. This row feeds the given tools into the set at `factory.py:973` for every agent built with deferred loading. | `tests/unit/test_agent_factory_disclosure.py::test_given_tools_loaded`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** A call to a tool id outside the `DisclosureSet` must return a typed `tool_not_disclosed` refusal. The call must not reach the tool. | `tests/unit/capabilities/test_disclosure_set.py::test_undisclosed_call_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** The harness must emit the number of tools loaded and the number of refused calls as trace events. The engine receives them for its own records. | `tests/unit/capabilities/test_disclosure_set.py::test_disclosure_counts_traced`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R042.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `execute_agent` operation. Scripted EG selection chooses one tool from a GraphOS-authorized catalog containing two. The test observes one loaded schema and a successful call. The other tool is refused before dispatch. An upstream refusal causes no tool effect. | `tests/integration/test_execute_agent_disclosure_served.py::test_undisclosed_tool_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043
      The harness runs the given fan-out in parallel and returns results
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The harness runs the given fan-out in parallel and returns results.** Decomposition and routing are engine decisions (EG-DECISION-ENGINE). The harness runs the given subtasks in parallel and returns the results for aggregation. [arXiv:2605.15132] | See children `AU-CONTROL-R043.1` to `AU-CONTROL-R043.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `SubtaskSet` in `agent_utilities/graph/coordination.py` (new type) holds subtasks with an id, a role and an input digest. The harness receives it from EG-DECISION-ENGINE with the `independence` flag already set. The harness decomposes and routes nothing. | `tests/unit/graph/test_subtask_set.py::test_received_set_holds_flag`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** The runner must start each received subtask on its own sandbox. It must pass no message between them. It must return all results in one `FanoutResult` for aggregation. The fallback width cap is received from the engine. | `tests/unit/graph/test_subtask_set.py::test_no_cross_agent_messages`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** `AggregationOperator` (`graph/coordination.py:51`) exists at `graph/coordination.py:255` and `graph/hierarchical_coordination.py:65`. No served path hands it parallel results today. This row attaches the runner in `_fork_fanout` (`mcp/tools/engine_surface_tools.py:1694`), after the width AU-CONTROL-R007 receives. | `tests/unit/test_fork_fanout_aggregate.py::test_results_returned`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** A subtask set without the `independence` flag must return a typed `not_independent` refusal. A failed subtask must appear as a named gap in the result. It must not be dropped. | `tests/unit/graph/test_subtask_set.py::test_unflagged_set_refused`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** The harness must emit each subtask id, its sandbox and its wall time as trace events. The result must list which subtask produced each part. | `tests/unit/graph/test_subtask_set.py::test_result_provenance`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R043.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served fork fan-out operation. Three subtasks run on fake rungs. The test observes parallel start, no inter-agent message, one returned result set and a refusal for an unflagged set. | `tests/integration/test_fork_fanout_served.py::test_parallel_subtasks_returned`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044
      The harness exposes file and shell tools that forward to the client
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **The harness exposes file and shell tools that forward to the client.** Inside a run, `read_file`, `search_files`, `apply_patch`, `write_file` and `run_command` forward to the connected client through the graph-os session. The harness performs no local file or process I/O for them. Tool selection and limits come from the engine `HarnessConfig` (EG-DECISION-ENGINE). Session admission and permission belong to GRAPHOS-ACP. | See children `AU-CONTROL-R044.1` to `AU-CONTROL-R044.6`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044.1
      Model
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Model.** `ClientCapabilityToolset` in `agent_utilities/tools/client_capability_tools.py` (new) holds five tool definitions and one `ClientCapabilityTransport` protocol with `call(method, params)`. It receives the tool selection and limits from `HarnessConfig` (EG-DECISION-ENGINE, `AU-HARNESS-R012.1`). Each tool maps to one client method. The five tools are `read_file`, `search_files`, `apply_patch`, `write_file` and `run_command`. The harness chooses no tool and no limit itself. | `tests/unit/tools/test_client_capability_tools.py::test_tools_map_to_client_methods`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044.2
      Behavior
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Behavior.** Each tool call must become one transport call and return the client's reply as text. `apply_patch` must send the patch text and never write it. `run_command` must bound output bytes and wait time by the received limits. A limit the engine omits uses a named default. The toolset must perform no filesystem or process call of its own. `SWE_WORKSPACE_TOOLS` (`tools/swe_workspace_tools.py:143`) holds `run_command`, `read_file`, `write_file` and `edit_file`, which call `DevWorkspace.act` (`runtime/workspace.py:108`). Those tools lack `search_files` and `apply_patch`, and they act on a local backend. | `tests/unit/tools/test_client_capability_tools.py::test_no_local_io`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044.3
      Wiring
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Wiring.** The implementation is new. The nearest code is `register_swe_tools` (`tools/tool_registry.py:323`), reached at `tools/tool_registry.py:247` only when `DEFAULT_SWE_TOOLS` is on, and `build_swe_agent` (`orchestration/swe_agent.py:44`), reached by `run_swe_task` at `orchestration/engine.py:1709`. The ACP session factory `session_config` (`protocols/acp_adapter.py:273`) builds `GraphACPDeps` (`protocols/acp_adapter.py:160`) and attaches no file or shell tool today. This row creates the call site. `session_config` adds the transport to `GraphACPDeps`. `build_swe_agent` registers the toolset in place of local workspace tools when a transport exists. No production caller reaches client-capability execution today. | `tests/integration/test_client_capability_toolset_wired.py::test_session_attaches_toolset`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044.4
      Refusal
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Refusal.** A call with no connected client, a tool outside the received selection, or a client refusal must return a typed `client_capability_refused` result with a closed reason. A permission denial must return `permission_denied`. The toolset must not fall back to local I/O. The model sees the reason as text. | `tests/unit/tools/test_client_capability_tools.py::test_refusal_never_falls_back_local`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044.5
      Evidence
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Evidence.** Each call must emit a trace event with the tool name, the client method, the byte counts and the outcome. Path and command text pass the existing `PersistencePrivacyGuard` before emission. The engine receives the events for its own records. | `tests/unit/tools/test_client_capability_tools.py::test_call_traced_sanitized`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-CONTROL-R044.6
      Hot-path proof
      Definition — AU-CONTROL / AU-CONTROL — Agent control planeCanonical requirement and verification source
      **Hot-path proof.** The entry point is the agent run loop for an ACP session, `PydanticAIACPAgent` built at `protocols/acp_adapter.py:273`. A scripted model calls `apply_patch` with a fake `ClientCapabilityTransport`. The test observes one transport call carrying the patch and no changed file under the host working directory. A second call with the transport disconnected returns `client_capability_refused`. | `tests/integration/test_client_capability_toolset_run_loop.py::test_apply_patch_reaches_transport_only`.
      requirementAU-CONTROLSPECIFIEDNo recorded commit/test evidence
      AU-SEC
      AU-SEC — Agent security and governed policy
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R001
      Tiny profile grants scoped authority, not blanket admin
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Tiny profile grants scoped authority, not blanket admin.** The tiny profile issues bounded, scope-checked authority to a local process rather than an unconditional kg:admin grant. Access is restricted to a packaged, process-private, short-lived local channel with no external endpoint or identity, and expired grants are denied on renewal attempts. | Positive and negative profile tests confirm a tiny local process receives only its granted scope and that an admin-level operation outside that scope is denied.
      requirementAU-SECVERIFIED19109362ddd4
      2acbf25f8bb2
      51b4b7155fdc
      c7483960ebb0
      tests/integration/profiles/test_tiny_profile_admin_scope.py:64
      AU-SEC-R002
      Control view failure never falls back to the content graph
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Control view failure never falls back to the content graph.** When agent-utilities cannot open the __control__ view, knowledge_graph/core/engine.py raises a typed ControlGraphUnavailable error instead of silently continuing against the content graph. No operation can target the content graph as a substitute for an unavailable control view. | An injected control-view failure test confirms a ControlGraphUnavailable error is raised and no content-graph fallback write occurs.
      requirementAU-SECVERIFIED2acbf25f8bb2
      51b4b7155fdc
      c7483960ebb0
      caeeff7c3ef9
      tests/unit/knowledge_graph/test_control_backend_binding.py:90
      AU-SEC-R003
      Caches subscribe to invalidation with volatility-bounded TTL
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Caches subscribe to invalidation with volatility-bounded TTL.** agent-utilities caches subscribe to authoritative invalidation events and bound their time-to-live by a declared volatility class. A learned change-rate signal may only shorten that TTL, never lengthen it. | Event, loss, and clock-based tests confirm invalidation is observed and that a learned rate never increases TTL beyond its declared bound.
      requirementAU-SECVERIFIED2acbf25f8bb2
      45f3c3459198
      51b4b7155fdc
      c7483960ebb0
      tests/unit/caching/test_freshness.py:113
      tests/unit/caching/test_freshness.py:128
      AU-SEC-R004
      AU treats schema drift as a fail-closed typed result
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **AU treats schema drift as a fail-closed typed result.** agent-utilities treats a schema-drift classification from the connector SDK as a typed, fail-closed result at the SDK boundary: an incompatible or breaking report quarantines the affected work without advancing its SourceCheckpoint, following the declared schema evolution policy. agent-utilities never treats its own SHACL shapes as schema authority. | Connector contract tests feed a breaking SchemaDriftReport through the boundary and confirm the SourceCheckpoint does not advance.
      requirementAU-SECVERIFIED2acbf25f8bb2
      51b4b7155fdc
      9cc9e08c1a0e
      c7483960ebb0
      tests/unit/knowledge_graph/schema_drift/test_gate.py:107
      AU-SEC-R005
      AU proposes schema-repair mappings; EG alone activates them
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **AU proposes schema-repair mappings; EG alone activates them.** agent-utilities' governed decision path proposes a repair mapping for quarantined schema drift. It does not construct a candidate GraphSchema or pack, validate instances, run a shadow ingest, or activate a repair. Those steps belong exclusively to epistemic-graph after explicit approval. | A policy test confirms a proposed mapping reaches epistemic-graph for candidate construction. It also confirms that no AU code path performs direct activation.
      requirementAU-SECLANDED2acbf25f8bb2
      9cc9e08c1a0e
      c7483960ebb0
      c7fc09d3d2f6
      AU-SEC-R006
      Elevation can be requested, approved, and revoked
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Elevation can be requested, approved, and revoked.** agent-utilities exposes typed, tenant-scoped operations to request, approve, and revoke a temporary capability elevation. They are reachable from UI, A2A, and chat surfaces hosted by graph-os. The requesting agent and any learned policy cannot approve their own elevation; expiry and revocation are enforced at the authorization chokepoint before every protected action. | End to end policy tests cover request, approval by a distinct actor, revocation, and expiry. Each produces an auditable decision record.
      requirementAU-SECLANDED2acbf25f8bb2
      c7483960ebb0
      d1b9fc6dc5e5
      AU-SEC-R007
      Guardrail tightening is automatic; loosening needs approval
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Guardrail tightening is automatic; loosening needs approval.** agent-utilities evolves guardrail profiles through its governed decision path: a change that tightens the profile within declared bounds may apply automatically, while any loosening requires a live human approval. A request with missing bounds or stale evidence is rejected. | Decision and replay tests confirm automatic tightening within bounds, blocked loosening without approval, and rejection of stale or unbounded proposals.
      requirementAU-SECLANDED0b70fad31246
      2acbf25f8bb2
      c7483960ebb0
      AU-SEC-R008
      AU allowlist is generated from the canonical scope registry
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **AU allowlist is generated from the canonical scope registry.** agent-utilities consumes the canonical, classified scope registry covering user, domain, service-only, approver, and admin classes. It generates its request-identity allowlist directly from it. Documented scopes such as admin:cluster-read, fleet:events, and finance scopes match the registry exactly. An unknown or service-only scope cannot be smuggled through a human-issued token. | A generator-diff test confirms the AU allowlist matches the registry output. It also confirms that scope parity holds between public surfaces and the engine.
      requirementAU-SECVERIFIED2acbf25f8bb2
      c7483960ebb0
      eba6b8e9a661
      f63aeb608cc2
      tests/unit/security/test_scope_registry.py:62
      tests/unit/security/test_scope_registry.py:83
      AU-SEC-R009
      Learned scores never grant security authority
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Learned scores never grant security authority.** No learned probability, similarity score, or other model-derived confidence value can itself grant or extend authorization in agent-utilities or epistemic-graph. Every authorization decision traces to an explicit policy or approval record. | A static review of authorization code paths confirms no learned-score input participates in a grant decision.
      requirementAU-SECVERIFIED2acbf25f8bb2
      4a5540dd2e3d
      8a7a9e0e3fbe
      tests/unit/security/test_authority_audit.py:25
      AU-SEC-R010
      The shared tenant hierarchy reads as the service identity
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **The shared tenant hierarchy reads as the service identity.** The process-wide tenant hierarchy snapshot reads `__control__` under the process service session. A request caller never decides it. Callers keep their own tenant scoping in `accessible_graphs`. | `tests/unit/knowledge_graph/core/test_tenant_registry_control_graph.py` proves a `kg:read` user without a `__control__` grant still resolves the chain, and the read runs as the service identity.
      requirementAU-SECVERIFIED3fb99d2ff295
      e2b2152f1396
      f63aeb608cc2
      tests/unit/knowledge_graph/core/test_tenant_registry_control_graph.py:187
      AU-SEC-R011
      Task and tool text is screened before it enters a prompt
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Task and tool text is screened before it enters a prompt.** User input and tool output are validated against typed schemas and screened for injection patterns before they enter a prompt. Sensitive tools stay behind approval. A failed screen refuses the call with a typed reason. | See children `AU-SEC-R011.1` to `AU-SEC-R011.6`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R011.1
      Model
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Model.** `ScreenVerdict` in `agent_utilities/orchestration/task_guard.py` carries a source of `user_input` or `tool_output`, a closed reason of `injection_pattern`, `schema_invalid` or `none`, and the matched rule identifier. | `tests/unit/orchestration/test_task_guard.py::test_screen_verdict_fields`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R011.2
      Behavior
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Behavior.** The screen must validate structured text against its typed schema first, then scan free text with the injection scanner. Each rule set is a named, replaceable default. Redaction of personal data must run after a pass only. | `tests/unit/orchestration/test_task_guard.py::test_schema_then_scan_order`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R011.3
      Wiring
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Wiring.** User input is screened by `screen_and_redact_agent_task` (`agent_utilities/orchestration/task_guard.py:32`), called from `_prepare_agent_task` at `agent_utilities/api/agent_control_plane.py:355`. This row creates the call site that screens tool output in `agent_utilities/capabilities/composition.py:147`, beside the existing input guardrail. | `tests/unit/capabilities/test_tool_output_screen.py::test_tool_output_screened`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R011.4
      Refusal
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Refusal.** A failed screen must raise `TaskInjectionRejected` with the closed reason and must not call the model or the tool. A sensitive tool must refuse without a recorded approval, with reason `approval_required`. | `tests/unit/orchestration/test_task_guard.py::test_failed_screen_refuses_typed`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R011.5
      Evidence
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Evidence.** Each screen must write the source, the verdict, the rule identifier and the tool name to the run trace. The trace must not store the rejected text. | `tests/unit/orchestration/test_task_guard.py::test_screen_trace_has_no_text`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R011.6
      Hot-path proof
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `execute_agent` operation. A task with an injection pattern must be refused before capability resolution. A tool result with the same pattern must be refused before the next model step. The trace must show both verdicts. | `tests/integration/test_screen_served.py::test_execute_agent_refuses_injection`.
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012
      Tool actions after untrusted content pause until the harness receives an approval, and the run records the influence
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Tool actions after untrusted content pause until the harness receives an approval, and the run records the influence.** agent-utilities carries the engine's taint mark through the run. It pauses each gated tool action until graph-os returns an approval. It records which content influenced the action. | `See children `AU-SEC-R012.1` to `AU-SEC-R012.6`.`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012.1
      Model
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Model.** `ContentInfluence` in `agent_utilities/security/tool_guard.py` carries the content identifier, its source and a received taint mark. The taint mark comes from EG-SRC-AUTH. The approval comes from GRAPHOS-A2A. `ActionClass` reuses the producer values exactly: `egress`, `privileged_call` or `delegation`. No local alias is accepted. | `tests/unit/security/test_tainted_action_gate.py::test_influence_model_fields`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012.2
      Behavior
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Behavior.** The run must carry each received taint mark forward. A run holding a tainted mark must pause an action of a received class until it receives an approval. The class list is received; fallback default is all three. | `tests/unit/security/test_tainted_action_gate.py::test_tainted_run_pauses_for_approval`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012.3
      Wiring
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Wiring.** The pause at `_requires_approval` (`agent_utilities/security/tool_guard.py:383`) must read the carried taint. Its production caller is `apply_tool_guard_approvals` at `agent_utilities/agent/factory.py:1054`. No taint input reaches that pause today. | `tests/unit/security/test_tainted_action_gate.py::test_requires_approval_reads_taint`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012.4
      Refusal
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Refusal.** A gated action without a received approval must raise `ApprovalRequired` with the closed reason `untrusted_influence`. A missing taint mark must count as tainted, never as clean. An unknown action class, including `privileged`, must return typed `invalid_action_class` before any tool effect. | `tests/unit/security/test_tainted_action_gate.py::test_missing_taint_fails_closed`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012.5
      Evidence
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Evidence.** Each gated action must write the action class, the identifiers of the influencing content and the approval outcome to the tool-call record (`capabilities/kg_audit_sink.py:113`). The record must not store content text. | `tests/unit/security/test_tainted_action_gate.py::test_influence_in_tool_call_record`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-SEC-R012.6
      Hot-path proof
      Definition — AU-SEC / AU-SEC — Agent security and governed policyCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `execute_agent` operation. A run reads tainted tool output, then requests each canonical action class. It must pause until it receives approval. The trace must name the influencing content. Test path: `tests/integration/test_tainted_action_served.py`. | `tests/integration/test_tainted_action_served.py::test_served_tainted_egress_pauses`
      requirementAU-SECSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY
      AU-BOUNDARY — AU boundary deconstruction
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001
      Retire AU's duplicated gateway module
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire AU's duplicated gateway module.** Agent Utilities deletes `agent_utilities/gateway/` once graph-os serves equivalent routes and widgets, including the AU-only behavior in `api.py`, `artifacts_api.py`, `registry_api.py`, `registry.py`, `schemas/graph_analyze.py`, `widgets/genius_agent.py`, and `widgets/_optional_client.py`. AU reconciles its drifted `schemas/graph_core` and `ontology_api` files with their graph-os counterparts and removes the `graph-os-daemon` script and the `gateway-widgets` extra. | Route-parity and artifact-tenancy integration tests on graph-os, plus an import census, confirm no AU gateway import remains before the AU gateway tests are deleted.
      requirementAU-BOUNDARYSPECIFIEDaa5eba73e0f7
      AU-BOUNDARY-R001.1
      Record what actually landed for the gateway retirement
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record what actually landed for the gateway retirement.** PR #23 (merge commit `aa5eba73e0f7`) shipped only the boundary ownership and coverage gate scripts (`scripts/check_boundary_owners.py`, `scripts/check_boundary_coverage.py`, `scripts/boundary_inventory.py`) and moved `AU-BOUNDARY-R001` to LANDED in `status.json`. It deleted none of `agent_utilities/gateway/{api.py,artifacts_api.py,registry_api.py,registry.py,schemas/graph_analyze.py,widgets/genius_agent.py,widgets/_optional_client.py}`, all seven of which are still present at `origin/main`. | `git show --stat aa5eba73e0f7` lists only gate scripts and config, and `git ls-tree -r origin/main -- agent_utilities/gateway` shows all seven files still present.
      requirementAU-BOUNDARYVERIFIED65d9961401fd
      tests/gates/test_boundary_landed_records.py:51
      AU-BOUNDARY-R001.2
      Delete `agent_utilities/gateway/api.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/api.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_api_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYVERIFIED0eb67c99cf0a
      tests/gates/test_boundary_r001_r010_deletion_census.py:54
      AU-BOUNDARY-R001.3
      Delete `agent_utilities/gateway/artifacts_api.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/artifacts_api.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_artifacts_api_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYVERIFIED902f906cac97
      tests/gates/test_boundary_r001_3_deleted.py:28
      tests/gates/test_boundary_r001_3_deleted.py:35
      AU-BOUNDARY-R001.4
      Delete `agent_utilities/gateway/registry_api.py` (rollup)
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/registry_api.py` (rollup).** Agent Utilities removes the file and repoints or deletes its importers. Split because `agent_utilities/mcp/kg_server.py` drains the fleet catalog through six private `registry_api` functions for `GET /api/tools` and AU has no replacement for that read, so the deletion needs its own repoint step. Satisfied when `AU-BOUNDARY-R001.4.1` through `AU-BOUNDARY-R001.4.3` are VERIFIED. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_registry_api_deleted` passes once the children land.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.4.1
      Stop mounting `registry_api` routes from `agent_utilities/gateway/graph_api.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Stop mounting `registry_api` routes from `agent_utilities/gateway/graph_api.py`.** Agent Utilities removes the `register_registry_routes` mount (and the matching monkeypatch in `tests/unit/gateway/test_remote_oauth_api.py`), since graph-os serves `/api/registry/*`. | `git grep -n 'registry_api' agent_utilities/gateway/graph_api.py tests/unit/gateway/test_remote_oauth_api.py` finds no match.
      requirementAU-BOUNDARYVERIFIED8bc78cbdfda1
      tests/unit/gateway/test_remote_oauth_api.py:194
      AU-BOUNDARY-R001.4.2
      ROLLUP: repoint the `GET /api/tools` catalog read in `agent_utilities/mcp/kg_server.py` off `registry_api`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **ROLLUP: repoint the `GET /api/tools` catalog read in `agent_utilities/mcp/kg_server.py` off `registry_api`.** Rejected as not bite-sized: `_read_catalog_kind_sync` has no AU replacement and drains the `servers` kind through six private `registry_api` functions (`_KIND_SPECS`, `_MAX_LIMIT`, `_authorized_page`, `_get_catalog_engine`, `_require_catalog_authority`, `_row_key`) that carry the tenant/principal scoping, redaction and SQL construction, and `tests/unit/mcp/test_collapse_tool_endpoints.py` patches those privates. Split into a reader decision, a new tenant-scoped reader with refusal tests, the call-site repoint, and the test update. | Satisfied when children `AU-BOUNDARY-R001.4.2.1` through `AU-BOUNDARY-R001.4.2.4` are VERIFIED.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.4.2.1
      Record the owner of the `servers` catalog read for `GET /api/tools`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record the owner of the `servers` catalog read for `GET /api/tools`.** Name the graph-os registry operation to call, or record that AU reads the engine catalog directly, and state how tenant/principal scoping and redaction are preserved. | The decision is recorded in `specs/au-boundary-deconstruction/design.md` and cites the graph-os owner by ID.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.4.2.2
      Add one typed `servers`-kind catalog reader that does not import `registry_api`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add one typed `servers`-kind catalog reader that does not import `registry_api`.** One new module under `agent_utilities/mcp/` returning validated rows, fail-closed on missing tenant/principal authority, with refusal tests. Depends on `AU-BOUNDARY-R001.4.2.1`; if the decision is a graph-os registry call, the graph-os endpoint is a graph-os repo change. | New unit tests bound to this ID prove a missing-authority refusal and a paged drain bounded by `_TOOLS_CATALOG_DRAIN_MAX_PAGES`.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.4.2.3
      Call the new reader from `_read_catalog_kind_sync` in `agent_utilities/mcp/kg_server.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Call the new reader from `_read_catalog_kind_sync` in `agent_utilities/mcp/kg_server.py`.** Remove the `..gateway.registry_api` import and the docstring references. | `git grep -n 'registry_api' agent_utilities/mcp/kg_server.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.4.2.4
      Update `tests/unit/mcp/test_collapse_tool_endpoints.py` to patch the new reader instead of `registry_api` privates
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Update `tests/unit/mcp/test_collapse_tool_endpoints.py` to patch the new reader instead of `registry_api` privates.** | `git grep -n 'registry_api' tests/unit/mcp/test_collapse_tool_endpoints.py` finds no match and the file passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.4.3
      Delete the `registry_api` module and its tests
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the `registry_api` module and its tests.** Agent Utilities runs `git rm agent_utilities/gateway/registry_api.py`, deletes `tests/unit/gateway/test_registry_api.py` and `tests/unit/gateway/test_registry_catalog_count_scope.py`, and drops the module from `docs/concepts.yaml` and `scripts/check_openapi_coverage.py`. This also removes its `agent_utilities/mcp/multiplexer.py` import (`AU-BOUNDARY-R004.7`). | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_registry_api_deleted` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.5
      Delete `agent_utilities/gateway/registry.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/registry.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_registry_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.6
      Delete `agent_utilities/gateway/schemas/graph_analyze.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/schemas/graph_analyze.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_schemas_graph_analyze_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R001.7
      Delete `agent_utilities/gateway/widgets/genius_agent.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/widgets/genius_agent.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_widgets_genius_agent_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYVERIFIED7717d2e627ab
      tests/gates/test_boundary_r001_7_deleted.py:22
      tests/gates/test_boundary_r001_7_deleted.py:29
      AU-BOUNDARY-R001.8
      Delete `agent_utilities/gateway/widgets/_optional_client.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/gateway/widgets/_optional_client.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_gateway_widgets_optional_client_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R002
      Retire AU's deployment and skill-certification tooling
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire AU's deployment and skill-certification tooling.** Agent Utilities deletes `deployment/**` once graph-os owns installation, environment diagnostics, environment-sync, certification, and skill validation and runtime-harness behavior, including `backends.py`, `certification_oidc.py`, `skill_validation*.py`, and the moved `skills/` subpackages. AU removes the console scripts that collide with graph-os entry points or target the moved modules, leaving graph-os as the sole owner of the packaging entry points for this behavior. | Dry-run install and certification tests against the graph-os entry points confirm no AU console script still targets a moved module.
      requirementAU-BOUNDARYSPECIFIEDdb29b2da626e
      fca0c5ee42b3
      AU-BOUNDARY-R002.1
      Record what actually landed for the deployment/skill-certification retirement
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record what actually landed for the deployment/skill-certification retirement.** PR #26 (merge commit `fca0c5ee42b3`) edited `agent_utilities/deployment/{config_generator.py,doctor.py,genesis_environments.py,repo_templates.py}` and moved skill content, and moved `AU-BOUNDARY-R002` to LANDED in `status.json`. It deleted neither `agent_utilities/deployment/backends.py` nor `agent_utilities/deployment/certification_oidc.py`, both of which are still present at `origin/main`. | `git show --stat fca0c5ee42b3` shows no removal of `backends.py`/`certification_oidc.py`, and `git ls-tree -r origin/main -- agent_utilities/deployment` shows both files still present.
      requirementAU-BOUNDARYLANDEDdb29b2da626e
      AU-BOUNDARY-R002.2
      Delete `agent_utilities/deployment/backends.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/deployment/backends.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r002_2_backends_deleted.py::test_deployment_backends_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYVERIFIEDdb29b2da626e
      tests/gates/test_boundary_r002_2_backends_deleted.py:34
      AU-BOUNDARY-R002.3
      ROLLUP: delete `agent_utilities/deployment/certification_oidc.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **ROLLUP: delete `agent_utilities/deployment/certification_oidc.py`.** Rejected as not bite-sized: the module is the live ephemeral HTTPS loopback OIDC authority (`EphemeralLoopbackOidcAuthority`, `AUTHORITY_MODE`, `validated_token_ttl_seconds`) that `deployment/skill_validation.py` and `deployment/skill_validation_assets.py` call at runtime, with no replacement in AU; it is also a `main()` entry for `scripts/certification/loopback_oidc.py` and is named in three release/egress gate path lists. Split into a replacement decision, importer repoints, script/gate-list cleanup, and a final deletion. | Satisfied when children `AU-BOUNDARY-R002.3.1` through `AU-BOUNDARY-R002.3.5` are VERIFIED.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R002.3.1
      Record the graph-os owner of the ephemeral loopback OIDC certification authority
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record the graph-os owner of the ephemeral loopback OIDC certification authority.** Name the graph-os module or operation that replaces `EphemeralLoopbackOidcAuthority`, `AUTHORITY_MODE`, `DEFAULT_TOKEN_TTL_SECONDS` and `validated_token_ttl_seconds`, or record a reviewed deletion reason for the skill-certification flow that consumes them. **Finding: graph-os `main` has no replacement (no `loopback`/`certification_oidc` match in `graph_os`); cross-repo, blocked on a graph-os owner or a reviewed deletion decision. See design.md.** | The replacement (or deletion reason) is recorded in `specs/au-boundary-deconstruction/design.md` and cites the graph-os owner by ID.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R002.3.2
      Repoint or remove the `certification_oidc` import in `agent_utilities/deployment/skill_validation.py` and `agent_utilities/deployment/skill_validation_assets.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint or remove the `certification_oidc` import in `agent_utilities/deployment/skill_validation.py` and `agent_utilities/deployment/skill_validation_assets.py`.** Both import the authority symbols named in `AU-BOUNDARY-R002.3.1`. | `git grep -n certification_oidc -- agent_utilities/deployment/skill_validation.py agent_utilities/deployment/skill_validation_assets.py` prints nothing and `tests/gates/test_skill_validation_deployment.py` and `tests/gates/test_skill_certification_assets.py` pass.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R002.3.3
      Delete `scripts/certification/loopback_oidc.py` and `tests/unit/scripts/test_loopback_oidc.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `scripts/certification/loopback_oidc.py` and `tests/unit/scripts/test_loopback_oidc.py`.** The script only wraps `certification_oidc.main`; the test exercises only the module. | Neither file exists and `git grep -n loopback_oidc -- scripts tests` shows no import of them.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R002.3.4
      Remove `agent_utilities/deployment/certification_oidc.py` from the path lists in `scripts/check_http_egress_boundary.py` and `scripts/release/check_release_wheel.py`, and its docstring mention in `scripts/security/check_http_egress_boundary_gate.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Remove `agent_utilities/deployment/certification_oidc.py` from the path lists in `scripts/check_http_egress_boundary.py` and `scripts/release/check_release_wheel.py`, and its docstring mention in `scripts/security/check_http_egress_boundary_gate.py`.** | `git grep -n certification_oidc -- scripts` prints nothing and the egress-boundary and release-wheel checks pass.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R002.3.5
      Delete `agent_utilities/deployment/certification_oidc.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/deployment/certification_oidc.py`.** Also remove it from the three lists in `tests/gates/test_exact_local_release_contract.py`. | `tests/gates/test_boundary_r002_3_certification_oidc_deleted.py::test_deployment_certification_oidc_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003
      Retire AU's legacy MCP host and action manifest
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire AU's legacy MCP host and action manifest.** Agent Utilities deletes `mcp/kg_server.py`, `mcp/tools/**`, and `mcp/_graphos_action_manifest.py` once every behavior they implement is mapped to an approved graph-os operation or has a recorded, reviewed deletion reason. AU also removes the `_ingest_capabilities` function from `sdd/watcher.py`, deletes or relocates the tests that import these modules, and removes the AU `graph-os` console script. | An action-to-operation parity audit against the approved operation registry, with authorization checks exercised on the real graph-os entry points, shows no unmapped behavior is lost.
      requirementAU-BOUNDARYSPECIFIED2456745c1e4d
      AU-BOUNDARY-R003.1
      Record what actually landed for the legacy MCP host retirement
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record what actually landed for the legacy MCP host retirement.** Commit `2456745c1e4d` ("feat(gates): boundary ownership and coverage checks") shipped only `scripts/check_boundary_owners.py`, `scripts/check_boundary_coverage.py`, and `scripts/boundary_inventory.py`, and moved `AU-BOUNDARY-R003` to LANDED in `status.json`. It deleted neither `agent_utilities/mcp/kg_server.py` nor `agent_utilities/mcp/_graphos_action_manifest.py`, and left `_ingest_capabilities` in `agent_utilities/sdd/watcher.py`. | `git show --stat 2456745c1e4d` shows only the three gate scripts, and `git ls-tree -r origin/main -- agent_utilities/mcp/kg_server.py agent_utilities/mcp/_graphos_action_manifest.py` lists both files. `git grep -n _ingest_capabilities origin/main -- agent_utilities/sdd/watcher.py` finds the function.
      requirementAU-BOUNDARYVERIFIED65d9961401fd
      tests/gates/test_boundary_landed_records.py:57
      AU-BOUNDARY-R003.5
      Decide the per-behavior graph-os operation mapping for `kg_server.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Decide the per-behavior graph-os operation mapping for `kg_server.py`.** Agent Utilities records, for every behavior `kg_server.py` implements, which approved graph-os operation it maps to, or a reviewed deletion reason if none is needed. | The mapping is recorded in this spec as an added table from `kg_server.py` behavior to graph-os operation (or deletion reason).
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.6
      Repoint `agent_utilities/mcp/tools/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/mcp/tools/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/mcp/tools/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.7
      Repoint `agent_utilities/mcp/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/mcp/** (excluding tools/)` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/mcp/** (excluding tools/)` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.8
      Repoint `agent_utilities/gateway/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/gateway/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/gateway/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.9
      Repoint `agent_utilities/knowledge_graph/core/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/knowledge_graph/core/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/knowledge_graph/core/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.10
      Repoint `agent_utilities/gateway/schemas/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/gateway/schemas/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/gateway/schemas/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.11
      Repoint `agent_utilities/deployment/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/deployment/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/deployment/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.12
      Repoint `agent_utilities/security/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/security/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/security/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.13
      Repoint `agent_utilities/orchestration/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/orchestration/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/orchestration/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.14
      Repoint `agent_utilities/knowledge_graph/ingestion/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/knowledge_graph/ingestion/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/knowledge_graph/ingestion/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.15
      Repoint `agent_utilities/knowledge_graph/retrieval/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/knowledge_graph/retrieval/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/knowledge_graph/retrieval/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.16
      Repoint `agent_utilities/knowledge_graph/backends/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/knowledge_graph/backends/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/knowledge_graph/backends/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.17
      Repoint `agent_utilities/core/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/core/** (excluding registry/)` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/core/** (excluding registry/)` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.18
      Repoint `agent_utilities/cli/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/cli/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/cli/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.19
      Repoint `agent_utilities/server/routers/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/server/routers/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/server/routers/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.20
      Repoint `agent_utilities/sdd/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/sdd/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/sdd/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.21
      Repoint `agent_utilities/observability/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/observability/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/observability/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.22
      Repoint `agent_utilities/messaging/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/messaging/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/messaging/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.23
      Repoint `agent_utilities/media/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/media/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/media/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.24
      Repoint `agent_utilities/knowledge_graph/live_artifacts/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/knowledge_graph/live_artifacts/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/knowledge_graph/live_artifacts/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.25
      Repoint `agent_utilities/harness/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/harness/** (including memorydata/)` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/harness/** (including memorydata/)` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.26
      Repoint `agent_utilities/ecosystem/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/ecosystem/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/ecosystem/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.27
      Repoint `agent_utilities/core/registry/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/core/registry/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/core/registry/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.28
      Repoint `agent_utilities/claude_harness/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `agent_utilities/claude_harness/**` importers off `agent_utilities/mcp/kg_server.py`.** Agent Utilities calls the graph-os operations decided in AU-BOUNDARY-R003.5 instead. | `git grep -l kg_server agent_utilities/claude_harness/**` finds no match outside tests.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.29
      Delete `agent_utilities/mcp/kg_server.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/mcp/kg_server.py`.** Every behavior is mapped and every importing package is repointed. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_mcp_kg_server_deleted` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.3
      Delete `agent_utilities/mcp/_graphos_action_manifest.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/mcp/_graphos_action_manifest.py`.** Agent Utilities removes the file and repoints or deletes its importers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_mcp_graphos_action_manifest_deleted` passes once the file and its production imports are gone.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R003.4
      Remove `_ingest_capabilities` from `agent_utilities/sdd/watcher.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Remove `_ingest_capabilities` from `agent_utilities/sdd/watcher.py`.** Agent Utilities deletes the function and repoints or deletes its callers. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_sdd_watcher_ingest_capabilities_removed` passes once the function and its callers are gone.
      requirementAU-BOUNDARYVERIFIED908c5080c0b5
      tests/gates/test_boundary_r003_4.py:29
      tests/gates/test_boundary_r003_4.py:55
      AU-BOUNDARY-R004
      Retire AU's multiplexer family duplicated in graph-os
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire AU's multiplexer family duplicated in graph-os.** Agent Utilities deletes its multiplexer modules, including `multiplexer.py`, `child_resilience`, `protocol_compat`, `shared_multiplexer`, `co_service_supervisor`, and `catalog_reconciliation`, once graph-os's fleet module provides equivalent behavior. Host-only modules such as `remote_oauth_broker`, `tasks_extension`, `eunomia_principal`, `harness_server`, `middlewares`, and `skill_coverage` move into graph-os, while `toolset_factory`, `tool_specs`, and `agent_manager` remain in AU. | Per-server attribution and failover tests against the graph-os fleet module confirm no duplicate multiplexer state remains in AU.
      requirementAU-BOUNDARYSPECIFIED2456745c1e4d
      AU-BOUNDARY-R004.1
      Record what actually landed for the multiplexer-family retirement
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record what actually landed for the multiplexer-family retirement.** Commit `2456745c1e4d` shipped only the boundary ownership and coverage gate scripts and moved `AU-BOUNDARY-R004` to LANDED in `status.json`. It deleted none of the multiplexer family, and `agent_utilities/mcp/multiplexer.py` (plus `agent_utilities/mcp/shared_multiplexer.py`) are still present at `origin/main`. | `git show --stat 2456745c1e4d` shows only gate scripts, and `git ls-tree -r origin/main -- agent_utilities/mcp/multiplexer.py agent_utilities/mcp/shared_multiplexer.py` lists both files.
      requirementAU-BOUNDARYVERIFIED65d9961401fd
      tests/gates/test_boundary_landed_records.py:70
      AU-BOUNDARY-R004.3
      Confirm graph-os's fleet module provides parity for `multiplexer.py`'s routing/dispatch API
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Confirm graph-os's fleet module provides parity for `multiplexer.py`'s routing/dispatch API.** The parent row names graph-os's fleet module as the replacement; Agent Utilities verifies the equivalent behavior exists there before any importer is repointed. | A per-server attribution and failover test against the graph-os fleet module passes for every behavior `multiplexer.py` provides.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.4
      Repoint agent_utilities/mcp/kg_server.py, agent_utilities/mcp/shared_multiplexer.py, and agent_utilities/mcp/tools/intent_tools.py off `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/mcp/kg_server.py, agent_utilities/mcp/shared_multiplexer.py, and agent_utilities/mcp/tools/intent_tools.py off `agent_utilities/mcp/multiplexer.py`.** Agent Utilities imports the graph-os fleet module instead, per AU-BOUNDARY-R004.3. | `git grep -n 'mcp.multiplexer\|mcp\.multiplexer' agent_utilities/mcp/kg_server.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.5
      Repoint agent_utilities/capabilities/fleet_tool_search.py off `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/capabilities/fleet_tool_search.py off `agent_utilities/mcp/multiplexer.py`.** Agent Utilities imports the graph-os fleet module instead, per AU-BOUNDARY-R004.3. | `git grep -n 'mcp.multiplexer\|mcp\.multiplexer' agent_utilities/capabilities/fleet_tool_search.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.6
      Repoint agent_utilities/deployment/doctor.py off `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/deployment/doctor.py off `agent_utilities/mcp/multiplexer.py`.** Agent Utilities imports the graph-os fleet module instead, per AU-BOUNDARY-R004.3. | `git grep -n 'mcp.multiplexer\|mcp\.multiplexer' agent_utilities/deployment/doctor.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.7
      Repoint agent_utilities/gateway/registry_api.py off `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/gateway/registry_api.py off `agent_utilities/mcp/multiplexer.py`.** Agent Utilities imports the graph-os fleet module instead, per AU-BOUNDARY-R004.3. | `git grep -n 'mcp.multiplexer\|mcp\.multiplexer' agent_utilities/gateway/registry_api.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.8
      Repoint agent_utilities/orchestration/agent_runner.py off `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/orchestration/agent_runner.py off `agent_utilities/mcp/multiplexer.py`.** Agent Utilities imports the graph-os fleet module instead, per AU-BOUNDARY-R004.3. | `git grep -n 'mcp.multiplexer\|mcp\.multiplexer' agent_utilities/orchestration/agent_runner.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.9
      Repoint agent_utilities/tools/dynamic_tool_orchestrator.py off `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/tools/dynamic_tool_orchestrator.py off `agent_utilities/mcp/multiplexer.py`.** Agent Utilities imports the graph-os fleet module instead, per AU-BOUNDARY-R004.3. | `git grep -n 'mcp.multiplexer\|mcp\.multiplexer' agent_utilities/tools/dynamic_tool_orchestrator.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R004.10
      Delete `agent_utilities/mcp/multiplexer.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/mcp/multiplexer.py`.** Parity is confirmed and every importer is repointed. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_mcp_multiplexer_deleted` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R005
      Migrate connector packages A-E onto the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Migrate connector packages A-E onto the SDK.** Connector packages in the A-E range stop importing AU's `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` modules and import the agent connector SDK instead. Each package replaces its use of `native_ingest` with the epistemic graph client and drops its dependency on `agent-utilities`. | A per-package import census plus a real read and write receipt against the SDK and the graph client prove each connector no longer depends on AU.
      requirementAU-BOUNDARYSPECIFIEDa754f1299033
      f0f5e51f6b47
      AU-BOUNDARY-R005.1
      A-E connector import census lands, naming its own blind spot
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **A-E connector import census lands, naming its own blind spot.** PR #150 (commit `79dc21bab`) adds a fleet census scanning connector packages in the A-E range for the banned AU imports and moves `AU-BOUNDARY-R005` to LANDED on a zero-unsanctioned-violator finding; `status.json`'s `landed_in` for the row is itself wrong, pointing at the unrelated `AU-HARNESS-R005.1` merge commit `a754f1299033`, not at any A-E connector change. | The census artifact and PR #150 exist at `origin/main`; `git show --stat a754f1299033` shows only `agent_utilities/harness/generative_model_policy.py`, no connector-package change.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R005.2
      Fix the A-E census blind spot and finish the migration
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Fix the A-E census blind spot and finish the migration.** `census(fleet_root,'a','e')` still flags `ansible-tower-mcp`, `audiobookshelf-mcp`, `ciso-assistant-api`, and `data-science-mcp` importing banned AU modules (`mcp`, `core.config`, `core.exceptions`, `core.transport_security`, `base_utilities`); each of these four connector packages drops the banned imports and its `native_ingest` call in favor of the agent connector SDK and the epistemic graph client. | A per-package import census over `ansible-tower-mcp`, `audiobookshelf-mcp`, `ciso-assistant-api`, and `data-science-mcp` shows zero banned imports, plus a real read and write receipt against the SDK and the graph client for each.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R006
      Migrate connector packages F-J onto the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Migrate connector packages F-J onto the SDK.** Connector packages in the F-J range stop importing AU's `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` modules and import the agent connector SDK instead. Each package replaces its use of `native_ingest` with the epistemic graph client and drops its dependency on `agent-utilities`. | A per-package import census plus a real read and write receipt against the SDK and the graph client prove each connector no longer depends on AU.
      requirementAU-BOUNDARYVERIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R006.1
      Ship AU's F-J connector import-census gate
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship AU's F-J connector import-census gate.** Agent Utilities owns and ships the per-package import census instrument that the F-J connector repos' own migration PRs will be checked against, scanning each sibling connector package in the F-J range for the banned `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` imports. The per-package migrations themselves (removing the banned imports in each connector repo) are tracked as further `AU-BOUNDARY-R006.n` rows against those repos and are out of scope for this child. | The census gate correctly classifies a known-compliant package and a known-still-importing package in the F-J range.
      requirementAU-BOUNDARYVERIFIED105559f760c3
      5a00da215c55
      fe5ca4e239ec
      tests/gates/test_connector_sdk_import_census_gate.py:35
      tests/gates/test_connector_sdk_import_census_gate.py:55
      AU-BOUNDARY-R007
      Migrate connector packages K-O onto the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Migrate connector packages K-O onto the SDK.** Connector packages in the K-O range stop importing AU's `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` modules and import the agent connector SDK instead. Each package replaces its use of `native_ingest` with the epistemic graph client and drops its dependency on `agent-utilities`. | A per-package import census plus a real read and write receipt against the SDK and the graph client prove each connector no longer depends on AU.
      requirementAU-BOUNDARYSPECIFIEDa754f1299033
      f0f5e51f6b47
      AU-BOUNDARY-R007.1
      K-O connector import census lands, naming its own blind spot
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **K-O connector import census lands, naming its own blind spot.** PR #150 (commit `79dc21bab`) adds a fleet census scanning connector packages in the K-O range for the banned AU imports and moves `AU-BOUNDARY-R007` to LANDED on a zero-unsanctioned-violator finding; `status.json`'s `landed_in` for the row is itself wrong, pointing at the unrelated `AU-HARNESS-R005.1` merge commit `a754f1299033`, not at any K-O connector change. | The census artifact and PR #150 exist at `origin/main`; `git show --stat a754f1299033` shows only `agent_utilities/harness/generative_model_policy.py`, no connector-package change.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R007.2
      Fix the K-O census blind spot and finish the migration
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Fix the K-O census blind spot and finish the migration.** `census(fleet_root,'k','o')` still flags `keycloak-agent`, `langfuse-agent`, `leanix-agent`, `microsoft-agent`, and `opensearch-mcp` importing banned AU modules (`mcp`, `core.config`, `core.exceptions`, `core.transport_security`, `base_utilities`); each of these five connector packages drops the banned imports and its `native_ingest` call in favor of the agent connector SDK and the epistemic graph client. | A per-package import census over `keycloak-agent`, `langfuse-agent`, `leanix-agent`, `microsoft-agent`, and `opensearch-mcp` shows zero banned imports, plus a real read and write receipt against the SDK and the graph client for each.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R008
      Migrate connector packages P-S onto the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Migrate connector packages P-S onto the SDK.** Connector packages in the P-S range, including repository-manager, stop importing AU's `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` modules and import the agent connector SDK instead, replacing `native_ingest` with the epistemic graph client and dropping the `agent-utilities` dependency. Repository-manager's own use of merge-queue and concept-reservation governance is covered by a separate requirement and is out of scope here. | A per-package import census plus a real read and write receipt against the SDK and the graph client prove each connector, including repository-manager, no longer depends on AU for transport.
      requirementAU-BOUNDARYSPECIFIEDa754f1299033
      f0f5e51f6b47
      AU-BOUNDARY-R008.1
      P-S connector import census lands, naming its own blind spot
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **P-S connector import census lands, naming its own blind spot.** PR #150 (commit `79dc21bab`) adds a fleet census scanning connector packages in the P-S range for the banned AU imports and moves `AU-BOUNDARY-R008` to LANDED on a zero-unsanctioned-violator finding; `status.json`'s `landed_in` for the row is itself wrong, pointing at the unrelated `AU-HARNESS-R005.1` merge commit `a754f1299033`, not at any P-S connector change. | The census artifact and PR #150 exist at `origin/main`; `git show --stat a754f1299033` shows only `agent_utilities/harness/generative_model_policy.py`, no connector-package change.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R008.2
      Fix the P-S census blind spot and finish the migration
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Fix the P-S census blind spot and finish the migration.** `census(fleet_root,'p','s')` still flags `paperless-ngx-mcp`, `pulselink-mcp`, `repository-manager`, `rom-manager`, and `systems-manager` importing banned AU modules (`mcp`, `core.config`, `core.exceptions`, `core.transport_security`, `base_utilities`); each of these five connector packages drops the banned imports and its `native_ingest` call in favor of the agent connector SDK and the epistemic graph client, with repository-manager's merge-queue/concept-reservation governance remaining out of scope per the parent row. | A per-package import census over `paperless-ngx-mcp`, `pulselink-mcp`, `repository-manager`, `rom-manager`, and `systems-manager` shows zero banned imports, plus a real read and write receipt against the SDK and the graph client for each.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R009
      Migrate connector packages T-Z onto the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Migrate connector packages T-Z onto the SDK.** Connector packages in the T-Z range stop importing AU's `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` modules and import the agent connector SDK instead, replacing `native_ingest` with the epistemic graph client and dropping the `agent-utilities` dependency. The universal-skills `agent-package-builder` templates are retargeted onto the SDK for every connector package, not only this range. | A per-package import census plus a real read and write receipt against the SDK and the graph client confirm no connector package, including those generated from the retargeted templates, still imports AU.
      requirementAU-BOUNDARYVERIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R009.1
      Ship AU's T-Z connector import-census gate
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship AU's T-Z connector import-census gate.** Agent Utilities owns and ships the per-package import census instrument that the T-Z connector repos' own migration PRs will be checked against, scanning each sibling connector package in the T-Z range for the banned `mcp`, `core.config`, `core.exceptions`, `core.transport_security`, and `base_utilities` imports. The per-package migrations themselves and the `agent-package-builder` template retargeting are tracked as further `AU-BOUNDARY-R009.n` rows and are out of scope for this child. | The census gate correctly classifies a known-compliant package and a known-still-importing package in the T-Z range.
      requirementAU-BOUNDARYVERIFIED5a00da215c55
      tests/gates/test_connector_sdk_import_census_gate.py:45
      AU-BOUNDARY-R010
      Delete AU's SDK-duplicated connector toolkit
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete AU's SDK-duplicated connector toolkit.** Agent Utilities deletes its connector toolkit and HTTP/credential helpers, including `mcp/server_factory`, `mcp/action_dispatch`, `mcp/concurrency`, `mcp/verbose_tools`, `mcp/context_helpers`, `mcp/client_credentials`, `mcp/delegated_auth`, `mcp/httpx_boundary`, `mcp/oauth_log_hygiene`, `core/transport_security`, `core/http_client`, `core/_env`, `core/decorators`, `core/credentials`, `core/exceptions`, `base_utilities.py`, `httpsupport/**`, and the duplicated `security/**` modules, once every connector repository has migrated onto the SDK. AU adds a release gate that fails the release if any connector repository still imports `agent_utilities`, with no compatibility alias retained. | A release-time import scan across all connector repositories shows zero imports of the deleted AU toolkit before the gate is enabled.
      requirementAU-BOUNDARYSPECIFIED2456745c1e4d
      AU-BOUNDARY-R010.1
      Record what actually landed for the connector-toolkit deletion
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record what actually landed for the connector-toolkit deletion.** `status.json` points `AU-BOUNDARY-R010`'s `landed_in` at commit `2456745c1e4d`, which shipped only the boundary ownership and coverage gate scripts. It deleted none of the listed connector-toolkit modules, and `agent_utilities/base_utilities.py` is still present at `origin/main`. | `git show --stat 2456745c1e4d` shows only gate scripts, and `git ls-tree -r origin/main -- agent_utilities/base_utilities.py` lists the file.
      requirementAU-BOUNDARYVERIFIED635f38f64aca
      tests/gates/test_boundary_r010_r048_landed_records.py:12
      AU-BOUNDARY-R010.3
      Decide target module for type coercion helpers (to_boolean, to_integer, to_list, and to_dict) currently in `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Decide target module for type coercion helpers (to_boolean, to_integer, to_list, and to_dict) currently in `base_utilities.py`.** No replacement module is named by the parent row for this group. Agent Utilities records which existing or new module owns it after deletion. | The decision is recorded in this spec as an added note naming the target module for type coercion helpers.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.4
      Add type coercion helpers (to_boolean, to_integer, to_list, and to_dict) to the module decided in AU-BOUNDARY-R010.3
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add type coercion helpers (to_boolean, to_integer, to_list, and to_dict) to the module decided in AU-BOUNDARY-R010.3.** Agent Utilities implements the group in its new home with equivalent behavior to the `base_utilities.py` originals. | A unit test for each symbol in the group passes against the new module.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.5
      Decide target module for env/host helpers (expand_env_vars, is_loopback_url, retrieve_package_name, advertised_self_hosts, and get_library_file_path) currently in `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Decide target module for env/host helpers (expand_env_vars, is_loopback_url, retrieve_package_name, advertised_self_hosts, and get_library_file_path) currently in `base_utilities.py`.** No replacement module is named by the parent row for this group; Agent Utilities records which existing or new module owns it after deletion. | The decision is recorded in this spec as an added note naming the target module for env/host helpers.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.6
      Add env/host helpers (expand_env_vars, is_loopback_url, retrieve_package_name, advertised_self_hosts, and get_library_file_path) to the module decided in AU-BOUNDARY-R010.5
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add env/host helpers (expand_env_vars, is_loopback_url, retrieve_package_name, advertised_self_hosts, and get_library_file_path) to the module decided in AU-BOUNDARY-R010.5.** Agent Utilities implements the group in its new home with equivalent behavior to the `base_utilities.py` originals. | A unit test for each symbol in the group passes against the new module.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.7
      Decide target module for model persistence helpers (safe_save_model and safe_load_model) currently in `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Decide target module for model persistence helpers (safe_save_model and safe_load_model) currently in `base_utilities.py`.** No replacement module is named by the parent row for this group. Agent Utilities records which existing or new module owns it after deletion. | The decision is recorded in this spec as an added note naming the target module for model persistence helpers.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.8
      Add model persistence helpers (safe_save_model and safe_load_model) to the module decided in AU-BOUNDARY-R010.7
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add model persistence helpers (safe_save_model and safe_load_model) to the module decided in AU-BOUNDARY-R010.7.** Agent Utilities implements the group in its new home with equivalent behavior to the `base_utilities.py` originals. | A unit test for each symbol in the group passes against the new module.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.9
      Decide target module for patch helpers (the Patch* family) currently in `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Decide target module for patch helpers (the Patch* family) currently in `base_utilities.py`.** No replacement module is named by the parent row for this group. Agent Utilities records which existing or new module owns it after deletion. | The decision is recorded in this spec as an added note naming the target module for patch helpers.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.10
      Add patch helpers (the Patch* family) to the module decided in AU-BOUNDARY-R010.9
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add patch helpers (the Patch* family) to the module decided in AU-BOUNDARY-R010.9.** Agent Utilities implements the group in its new home with equivalent behavior to the `base_utilities.py` originals. | A unit test for each symbol in the group passes against the new module.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.11
      Decide target module for core runtime helpers (Result, ModuleInfo, get_missing_imports, require_optional_import, get_logger, and ensure_package_installed) currently in `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Decide target module for core runtime helpers (Result, ModuleInfo, get_missing_imports, require_optional_import, get_logger, and ensure_package_installed) currently in `base_utilities.py`.** No replacement module is named by the parent row for this group; Agent Utilities records which existing or new module owns it after deletion. | The decision is recorded in this spec as an added note naming the target module for core runtime helpers.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.12
      Add core runtime helpers (Result, ModuleInfo, get_missing_imports, require_optional_import, get_logger, and ensure_package_installed) to the module decided in AU-BOUNDARY-R010.11
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add core runtime helpers (Result, ModuleInfo, get_missing_imports, require_optional_import, get_logger, and ensure_package_installed) to the module decided in AU-BOUNDARY-R010.11.** Agent Utilities implements the group in its new home with equivalent behavior to the `base_utilities.py` originals. | A unit test for each symbol in the group passes against the new module.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.13
      Repoint agent_utilities/core/config.py and agent_utilities/core/_env.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/core/config.py and agent_utilities/core/_env.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/core/config.py agent_utilities/core/_env.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.14
      Repoint agent_utilities/knowledge_graph/core/chunked_drain.py and agent_utilities/knowledge_graph/core/source_sync.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/knowledge_graph/core/chunked_drain.py and agent_utilities/knowledge_graph/core/source_sync.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/knowledge_graph/core/chunked_drain.py agent_utilities/knowledge_graph/core/source_sync.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.15
      Repoint agent_utilities/observability/custom_observability.py and agent_utilities/observability/__init__.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/observability/custom_observability.py and agent_utilities/observability/__init__.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/observability/custom_observability.py agent_utilities/observability/__init__.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.16
      Repoint agent_utilities/mcp/check_env_var_drift.py, agent_utilities/mcp/multiplexer.py, and agent_utilities/mcp/server_factory.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/mcp/check_env_var_drift.py, agent_utilities/mcp/multiplexer.py, and agent_utilities/mcp/server_factory.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/mcp/check_env_var_drift.py agent_utilities/mcp/multiplexer.py agent_utilities/mcp/server_factory.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.17
      Repoint agent_utilities/agent/factory.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/agent/factory.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/agent/factory.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.18
      Repoint agent_utilities/graph/builder.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/graph/builder.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/graph/builder.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.19
      Repoint agent_utilities/httpsupport/client.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/httpsupport/client.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/httpsupport/client.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.20
      Repoint agent_utilities/__init__.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/__init__.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/__init__.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.21
      Repoint agent_utilities/protocols/source_connectors/registry.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/protocols/source_connectors/registry.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/protocols/source_connectors/registry.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.22
      Repoint agent_utilities/rlm/config.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/rlm/config.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/rlm/config.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.23
      Repoint agent_utilities/server/app.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/server/app.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/server/app.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.24
      Repoint agent_utilities/tools/tool_registry.py off `base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint agent_utilities/tools/tool_registry.py off `base_utilities.py`.** Agent Utilities imports the migrated symbols from their new homes (per AU-BOUNDARY-R010.3-R010.12) instead of `base_utilities.py`. | `git grep -n base_utilities agent_utilities/tools/tool_registry.py` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R010.25
      Delete `agent_utilities/base_utilities.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/base_utilities.py`.** All symbol groups have a new home and every importer is repointed. | `tests/gates/test_boundary_r001_r010_deletion_census.py::test_base_utilities_deleted` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011
      Delete AU's source lifecycle and certification code
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete AU's source lifecycle and certification code.** Agent Utilities deletes `protocols/source_connectors/**`, `protocols/universal_connector.py`, `kg/integrations/connector_certification`, `kg/integrations/connector_source_attestation`, its certification command line interface, and `kg/ontology/connector_manifest` and `kg/ontology/connector_manifest_gate`, once the agent connector SDK owns cursors, conflict handling, mapping, and certification. AU removes the `graph-os-certify-connector` script and graph-os's import sites are repointed to the SDK. | Cursor, conflict, mapping, and certification conformance tests against the SDK confirm equivalent behavior before the AU modules are deleted.
      requirementAU-BOUNDARYSPECIFIED2456745c1e4d
      AU-BOUNDARY-R011.2
      ROLLUP: superseded by AU-BOUNDARY-R011.2.1...AU-BOUNDARY-R011.2.5
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **ROLLUP: superseded by AU-BOUNDARY-R011.2.1...AU-BOUNDARY-R011.2.5.** Delete `protocols/universal_connector.py`. Not deletable in one bite: the 1,025-line module is a live read-only SQL/MongoDB connector (`read`, `health_check`, `introspect`) used by two production importers and two test files, and `agent-connector-sdk` has no equivalent yet. | Superseded; see child rows.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.2.1
      Add the read-only multi-database connector (SQL and MongoDB: `read`, `health_check`, `introspect`) to `agent-connector-sdk`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add the read-only multi-database connector (SQL and MongoDB: `read`, `health_check`, `introspect`) to `agent-connector-sdk`**, with conformance tests equivalent to `tests/unit/protocols/test_universal_connector.py`. | `agent-connector-sdk` exports the connector and its conformance tests pass in that repo.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.2.2
      Repoint `protocols/source_connectors/connectors/database.py` to the SDK database connector
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `protocols/source_connectors/connectors/database.py` to the SDK database connector.** | `git grep -l universal_connector agent_utilities/protocols/source_connectors` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.2.3
      Repoint `tools/db_tools.py` to the SDK database connector
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `tools/db_tools.py` to the SDK database connector.** | `git grep -l universal_connector agent_utilities/tools` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.2.4
      Repoint `tests/unit/protocols/test_database_connector_connection_profile.py` and `tests/unit/test_db_tools.py` to the SDK connector, and delete `tests/unit/protocols/test_universal_connector.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Repoint `tests/unit/protocols/test_database_connector_connection_profile.py` and `tests/unit/test_db_tools.py` to the SDK connector, and delete `tests/unit/protocols/test_universal_connector.py`** (moved to the SDK in R011.2.1); also update `docs/concepts.yaml` and `docs/pillars/4_ecosystem_peripherals/ECO-4.33-Native_Database_Traversal.md`. | `git grep -l universal_connector tests docs` finds no match.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.2.5
      Delete `protocols/universal_connector.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `protocols/universal_connector.py`** once it has zero importers. | `tests/gates/test_boundary_r011_universal_connector_deleted.py::test_universal_connector_module_absent` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.3
      Delete the `protocols/source_connectors/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the `protocols/source_connectors/**` package** (base, checkpoint, registry, permission_sync, http_safety, tool_schema, `connectors/`) and fix its importers, once the SDK owns cursor/conflict/mapping handling. | `tests/gates/test_boundary_r011_source_connectors_deleted.py::test_source_connectors_package_absent` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.4
      Delete `knowledge_graph/integrations/connector_certification.py`, `connector_certification_cli.py`, and `connector_source_attestation.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `knowledge_graph/integrations/connector_certification.py`, `connector_certification_cli.py`, and `connector_source_attestation.py`** and fix their importers, once the SDK owns certification. | `tests/gates/test_boundary_r011_certification_deleted.py::test_certification_modules_absent` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R011.5
      Delete `knowledge_graph/ontology/connector_manifest.py`, `connector_manifest_gate.py`, and `connector_manifests/
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `knowledge_graph/ontology/connector_manifest.py`, `connector_manifest_gate.py`, and `connector_manifests/**`, and remove the `graph-os-certify-connector` script**, once graph-os's import sites are repointed to the SDK. | `tests/gates/test_boundary_r011_manifest_deleted.py::test_manifest_modules_and_script_absent` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R012
      Delete the second EG projection and leftover shims
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the second EG projection and leftover shims.** Agent Utilities deletes `protocols/epistemic_operations/**` and the `control_plane/` shim, so that every caller reaches durable graph state through the `epistemic_graph` client directly, with no second Python-side graph projection. | Cross-source tests exercising the generated EG client as the sole projection confirm the deleted modules have no remaining caller.
      requirementAU-BOUNDARYLANDED34a849a78973
      7b653dd102b9
      AU-BOUNDARY-R013
      Restrict graph-os to AU's public API only
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Restrict graph-os to AU's public API only.** Agent Utilities widens its public surface so that graph-os imports AU exclusively through `agent_utilities.api`, adding new public ports for the import sites graph-os currently reaches through internal modules. AU's layout test fence is updated so a non-API import of AU by graph-os fails. | An AST-based import census across graph-os, backed by a served agent operation exercised end to end, shows every graph-os import of AU goes through `agent_utilities.api`.
      requirementAU-BOUNDARYSPECIFIED4a5540dd2e3d
      5b4e8d0a31d0
      tests/unit/test_api_messaging.py:12
      AU-BOUNDARY-R013.1
      Export `persistence_reference` from `agent_utilities.api.persistence_privacy` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `persistence_reference` from `agent_utilities.api.persistence_privacy` with an import test.** Re-export from `agent_utilities/security/persistence_privacy` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.persistence_privacy` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIEDa2616c523584
      tests/unit/test_api_persistence_privacy.py:11
      AU-BOUNDARY-R013.2
      Export `Orchestrator` from `agent_utilities.api.orchestration` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `Orchestrator` from `agent_utilities.api.orchestration` with an import test.** Re-export from `agent_utilities/orchestration/manager` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.orchestration` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIEDa2616c523584
      tests/unit/test_api_orchestration.py:11
      AU-BOUNDARY-R013.3
      Export the `work_durability` module from `agent_utilities.api.work_durability` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export the `work_durability` module from `agent_utilities.api.work_durability` with an import test.** Re-export from `agent_utilities/knowledge_graph/core` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.work_durability` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIED811ea6463bb6
      tests/unit/test_api_work_durability.py:11
      AU-BOUNDARY-R013.4
      Export `KIND_ORCHESTRATOR_TASK`, `AgentTurnEnvelope`, `enqueue_agent_turn` from `agent_utilities.api.agent_dispatch` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `KIND_ORCHESTRATOR_TASK`, `AgentTurnEnvelope`, `enqueue_agent_turn` from `agent_utilities.api.agent_dispatch` with an import test.** Re-export from `agent_utilities/orchestration/agent_dispatch` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.agent_dispatch` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIED811ea6463bb6
      tests/unit/test_api_agent_dispatch.py:11
      AU-BOUNDARY-R013.5
      Export `trace_id` from `agent_utilities.api.trace_ontology` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `trace_id` from `agent_utilities.api.trace_ontology` with an import test.** Re-export from `agent_utilities/observability/trace_ontology` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.trace_ontology` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIEDbafa21805b51
      tests/unit/test_api_trace_ontology.py:11
      AU-BOUNDARY-R013.6
      Export `ACTION_APPROVAL_KIND`, `approval_lease_to_props` from `agent_utilities.api.action_policy` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `ACTION_APPROVAL_KIND`, `approval_lease_to_props` from `agent_utilities.api.action_policy` with an import test.** Re-export from `agent_utilities/orchestration/action_policy` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.action_policy` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIEDbafa21805b51
      tests/unit/test_api_action_policy.py:11
      AU-BOUNDARY-R013.7
      Export `ElevationRequest`, `ElevationApproval`, `ElevationRevocation` from `agent_utilities.api.elevation` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `ElevationRequest`, `ElevationApproval`, `ElevationRevocation` from `agent_utilities.api.elevation` with an import test.** Re-export from `agent_utilities/security/elevation` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.elevation` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIED2a5643693ab7
      tests/unit/test_api_elevation.py:11
      AU-BOUNDARY-R013.8
      Export `ElevationService`, `ElevationSurface` from `agent_utilities.api.elevation` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `ElevationService`, `ElevationSurface` from `agent_utilities.api.elevation` with an import test.** Re-export from `agent_utilities/security/elevation` so graph-os stops importing the internal module. Unblocks graph-os rows `GRAPHOS-HOST-R007.2.1` to `GRAPHOS-HOST-R007.2.3` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.elevation` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYVERIFIED2a5643693ab7
      tests/unit/test_api_elevation.py:18
      AU-BOUNDARY-R013.9
      Export `LiveArtifactStore`, `get_live_artifact_store`, `LiveArtifact` from `agent_utilities.api.live_artifacts` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `LiveArtifactStore`, `get_live_artifact_store`, `LiveArtifact` from `agent_utilities.api.live_artifacts` with an import test.** Re-export from `agent_utilities/knowledge_graph/live_artifacts/store.py` and `models.py` so graph-os stops importing the internal module. The store relocates to the epistemic graph under AU-BOUNDARY-R045, so the public export keeps the same names across that move. Unblocks graph-os row `GRAPHOS-GWC-R002.1` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.live_artifacts` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R013.10
      Export `RefreshService`, `RefreshResult` from `agent_utilities.api.live_artifacts` with an import test
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Export `RefreshService`, `RefreshResult` from `agent_utilities.api.live_artifacts` with an import test.** Re-export from `agent_utilities/knowledge_graph/live_artifacts/refresh.py` so graph-os stops importing the internal module. Unblocks graph-os row `GRAPHOS-GWC-R002.1` (graph-os change follows in graph-os). Rollup: `AU-BOUNDARY-R013`. | An import test asserts the names resolve from `agent_utilities.api.live_artifacts` and are the same objects as the internal definitions.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R014
      Move graph-os boundary modules out of AU
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move graph-os boundary modules out of AU.** Agent Utilities moves its graph-os-only boundary modules into graph-os, including `security/request_identity`, `security/error_surface`, `security/browser_auth`, `security/security_policy_middleware`, `security/auth`, `security/conformance/**`, its `observability` health and metrics modules, `core/profile_guard`, `core/unified_install`, `core/release_channel`, `core/live_mount_guard`, `core/paths`, `core/workspace`, `core/workspace_config`, `core/config_admin`, `core/frontend_providers`, `ecosystem/hook_installer`, `ecosystem/agent_manager_dashboard`, `release_catalogs.py`, `gateway_client/**`, and `kg/readiness.py`; `kg/core/connection_registry` and `kg/core/engine_mcp_discovery` move into graph-os's fleet module. | Principal, tenant, and context preservation tests plus deny-path tests against the moved graph-os modules confirm equivalent behavior before the AU copies are deleted.
      requirementAU-BOUNDARYSPECIFIED3254358d61d6
      63731a44a881
      6ffbecc433c4
      8b3510fcb2eb
      d09cad07e875
      AU-BOUNDARY-R014.2
      Move `knowledge_graph/readiness.py` to graph-os
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move `knowledge_graph/readiness.py` to graph-os** and delete the AU copy, fixing its importers, once graph-os's readiness module proves equivalent. | `tests/gates/test_boundary_r014_readiness_moved.py::test_readiness_module_absent_from_au` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R015
      Move the agent HTTP and A2A/ACP host out of AU
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move the agent HTTP and A2A/ACP host out of AU.** Agent Utilities moves `server/**` and `protocols/a2a`, `protocols/a2a_config`, `protocols/a2a_graph_skill`, `protocols/acp_adapter`, and `protocols/agui_emitter` into graph-os's A2A and web-UI hosting modules. AU deletes `protocols/a2a_epistemic.py`, because its broker and storage form a second task store, and drops the `agent-utilities-acp` script. | Endpoint and cancellation parity tests against the graph-os host confirm no AU listener remains active.
      requirementAU-BOUNDARYSPECIFIED2456745c1e4d
      AU-BOUNDARY-R015.2
      Delete `protocols/a2a_epistemic.py` and drop the `agent-utilities-acp` script
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `protocols/a2a_epistemic.py` and drop the `agent-utilities-acp` script**, fixing any importers, since it is a redundant second task store with no graph-os replacement to wait on. | `tests/gates/test_boundary_r015_a2a_epistemic_deleted.py::test_a2a_epistemic_module_and_script_absent` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R016
      Split AU's monolithic configuration module
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Split AU's monolithic configuration module.** Agent Utilities splits `core/config.py` so that connector base settings move to the agent connector SDK's configuration module and hosting and deployment settings move to graph-os, while agent and model settings remain in AU. | A configuration fixture matrix exercised against all three owners shows no duplicate environment reader remains.
      requirementAU-BOUNDARYVERIFIED13655b508554
      AU-BOUNDARY-R016.1
      Gate AU's retained config.py against duplicate environment readers
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Gate AU's retained config.py against duplicate environment readers.** Agent Utilities adds a regression gate over its own root, `core/config.py`, asserting that no environment variable name is read by more than one call site, as the invariant AU's agent-and-model-settings portion must keep once connector base settings move to the SDK and hosting settings move to graph-os. Moving the connector-base and hosting settings out to the SDK and graph-os owners is tracked as further `AU-BOUNDARY-R016.n` rows against those repos and is out of scope for this child. | The gate fails on an injected duplicate reader and passes on the current `core/config.py`.
      requirementAU-BOUNDARYVERIFIED5a00da215c55
      fe5ca4e239ec
      tests/gates/test_config_duplicate_reader_gate.py:65
      tests/gates/test_config_duplicate_reader_gate.py:71
      AU-BOUNDARY-R017
      Split messaging behavior and authority across AU, graph-os, and EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Split messaging behavior and authority across AU, graph-os, and EG.** Agent Utilities keeps agent presence, subscriptions, `ActionPolicy`, and command and planning decisions in `messaging/bus.py` and `orchestration/action_policy.py`, exposed behind `agent_utilities.api.messaging`, while graph-os serves the channel adapters, listener, service, daemon, polling, reaper, and host routing. `messaging/bus_log.py` remains a verified-tenant, sanitized-envelope adapter in AU, and the epistemic graph becomes the sole authority for durable message append, partition reads, cursors, dead letters, and depth; AU drops the `agent-utilities-messaging` script. | Delivery, replay, ordering, authorization, and outage tests across the split boundary confirm parity with the prior combined behavior.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      5b4e8d0a31d0
      tests/unit/test_api_messaging.py:25
      AU-BOUNDARY-R018
      Replace the AU graph engine facade with the EG client
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Replace the AU graph engine facade with the EG client.** Agent Utilities deletes its graph engine facade, including `kg/core/engine.py`, `kg/core/engine_tasks.py`, `kg/core/engine_ingestion.py`, `kg/core/engine_memory.py`, `kg/core/engine_task_query.py`, `kg/core/engine_resolver.py`, `kg/core/engine_transport.py`, `kg/core/engine_lock.py`, `kg/core/engine_breaker.py`, `kg/facade.py`, and `kg/orchestration/engine_*.py`, once the generated epistemic graph client provides the same operations. | Tests confirming no remaining Python-side graph authority or fallback path, run against the generated EG client, gate the deletion.
      requirementAU-BOUNDARYSPECIFIED8b325ddf1818
      8c6fb318c5d3
      AU-BOUNDARY-R018.1
      Ship a typed inventory of the AU-BOUNDARY-R018 facade modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship a typed inventory of the AU-BOUNDARY-R018 facade modules.** Agent Utilities records, as a parametrized pytest inventory, exactly which engine-facade modules `kg/core/engine.py`, `kg/core/engine_tasks.py`, `kg/core/engine_ingestion.py`, `kg/core/engine_memory.py`, `kg/core/engine_task_query.py`, `kg/core/engine_resolver.py`, `kg/core/engine_transport.py`, `kg/core/engine_lock.py`, `kg/core/engine_breaker.py`, `kg/facade.py`, and `kg/orchestration/engine_*.py` still exist as duplicates of EG's native engine, with a refusal test that fails if a listed module disappears without the inventory being updated in the same change. | `tests/.../test_boundary_r018_r022_eg_duplicate_inventory.py` passes and fails closed on an unrecorded module removal.
      requirementAU-BOUNDARYLANDED8b325ddf1818
      AU-BOUNDARY-R018.2
      Delete the AU-BOUNDARY-R018 facade modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the AU-BOUNDARY-R018 facade modules.** Agent Utilities deletes `kg/core/engine.py`, `kg/core/engine_tasks.py`, `kg/core/engine_ingestion.py`, `kg/core/engine_memory.py`, `kg/core/engine_task_query.py`, `kg/core/engine_resolver.py`, `kg/core/engine_transport.py`, `kg/core/engine_lock.py`, `kg/core/engine_breaker.py`, `kg/facade.py`, and `kg/orchestration/engine_*.py` — all still present as of 2026-10-09 — once the generated EG client proves equivalent operations. | Tests confirming no remaining Python-side graph authority or fallback path, run against the generated EG client, gate the deletion. The files above are absent from the tree.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R019
      Replace AU's graph-compute and state facades with the EG client
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Replace AU's graph-compute and state facades with the EG client.** Agent Utilities deletes `kg/core/graph_compute`, `kg/core/session`, `kg/core/epistemic_row`, `kg/core/ogm`, `kg/core/company_brain`, `kg/core/company_brain_runtime`, and `core/registry/kg_adapter.py`, replacing them with one typed epistemic graph composition kept in `api/`. | Connection-scope isolation, compute-budget enforcement, and typed-error-parity tests against the generated EG client confirm equivalence before the facades are deleted.
      requirementAU-BOUNDARYSPECIFIED8b325ddf1818
      8c6fb318c5d3
      AU-BOUNDARY-R019.1
      Ship a typed inventory of the AU-BOUNDARY-R019 facade modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship a typed inventory of the AU-BOUNDARY-R019 facade modules.** Agent Utilities records, as a parametrized pytest inventory, exactly which graph-compute/state-facade modules `kg/core/graph_compute.py`, `kg/core/session.py`, `kg/core/epistemic_row.py`, `kg/core/ogm.py`, `kg/core/company_brain.py`, `kg/core/company_brain_runtime.py`, and `core/registry/kg_adapter.py` still exist as duplicates of EG's native engine, with a refusal test that fails if a listed module disappears without the inventory being updated in the same change. | `tests/.../test_boundary_r018_r022_eg_duplicate_inventory.py` passes and fails closed on an unrecorded module removal.
      requirementAU-BOUNDARYVERIFIED0fbe4bf46720
      8b325ddf1818
      tests/gates/test_boundary_r018_r022_eg_duplicate_inventory.py:178
      tests/gates/test_boundary_r018_r022_eg_duplicate_inventory.py:185
      AU-BOUNDARY-R019.2
      Delete the AU-BOUNDARY-R019 facade modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the AU-BOUNDARY-R019 facade modules.** Agent Utilities deletes `kg/core/graph_compute.py`, `kg/core/session.py`, `kg/core/epistemic_row.py`, `kg/core/ogm.py`, `kg/core/company_brain.py`, `kg/core/company_brain_runtime.py`, and `core/registry/kg_adapter.py` — all still present as of 2026-10-09 — replacing them with the typed epistemic graph composition in `api/`. | Connection-scope isolation, compute-budget enforcement, and typed-error-parity tests against the generated EG client confirm equivalence. The files above are absent from the tree.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R020
      Move durable work, queues, and state to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move durable work, queues, and state to EG.** Agent Utilities deletes `kg/core/work_durability`, `kg/core/kafka_queue_backend`, `kg/core/postgres_queue_backend`, `kg/core/queue_backend`, `kg/core/worker_scheduler`, `kg/core/chunked_drain`, `kg/core/ingest_routing`, `kg/core/ingest_profile`, `kg/core/event_backend`, `kg/core/knowledge_stream`, `kg/core/bitemporal`, `kg/core/kg_versioning`, `kg/ingest_worker`, `kg/analytics_worker`, `core/shared_resource_leases.py`, `core/state_store`, and `core/chat_persistence`, moving durable jobs, resource leases, and state to the epistemic graph. AU drops the `kg-ingest-worker` and `graph-os-analytics-worker` scripts. | Claim-fencing, restart, idempotency, and tenant-isolation tests against the epistemic graph's durable job and lease handling confirm parity before deletion.
      requirementAU-BOUNDARYSPECIFIED8b325ddf1818
      8c6fb318c5d3
      92974bae8c3e
      AU-BOUNDARY-R020.1
      Ship a typed inventory of the AU-BOUNDARY-R020 durable-work modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship a typed inventory of the AU-BOUNDARY-R020 durable-work modules.** Agent Utilities records, as a parametrized pytest inventory, exactly which durable work/queue/state modules `kg/core/work_durability.py`, `kg/core/kafka_queue_backend.py`, `kg/core/postgres_queue_backend.py`, `kg/core/queue_backend.py`, `kg/core/worker_scheduler.py`, `kg/core/chunked_drain.py`, `kg/core/ingest_routing.py`, `kg/core/ingest_profile.py`, `kg/core/event_backend.py`, `kg/core/knowledge_stream.py`, `kg/core/bitemporal.py`, `kg/core/kg_versioning.py`, `kg/ingest_worker.py`, `kg/analytics_worker.py`, `core/shared_resource_leases.py`, `core/state_store.py`, and `core/chat_persistence.py` still exist as duplicates of EG's native engine, with a refusal test that fails if a listed module disappears without the inventory being updated in the same change. | `tests/.../test_boundary_r018_r022_eg_duplicate_inventory.py` passes and fails closed on an unrecorded module removal.
      requirementAU-BOUNDARYLANDED8b325ddf1818
      AU-BOUNDARY-R020.2
      Move the AU-BOUNDARY-R020 durable-work modules and drop their scripts
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move the AU-BOUNDARY-R020 durable-work modules and drop their scripts.** Agent Utilities deletes `kg/core/work_durability.py`, `kg/core/kafka_queue_backend.py`, `kg/core/postgres_queue_backend.py`, `kg/core/queue_backend.py`, `kg/core/worker_scheduler.py`, `kg/core/chunked_drain.py`, `kg/core/ingest_routing.py`, `kg/core/ingest_profile.py`, `kg/core/event_backend.py`, `kg/core/knowledge_stream.py`, `kg/core/bitemporal.py`, `kg/core/kg_versioning.py`, `kg/ingest_worker.py`, `kg/analytics_worker.py`, `core/shared_resource_leases.py`, `core/state_store.py`, and `core/chat_persistence.py` — all still present as of 2026-10-09 — and drops the `kg-ingest-worker` and `graph-os-analytics-worker` scripts, moving durable jobs, resource leases, and state to the epistemic graph. | Claim-fencing, restart, idempotency, and tenant-isolation tests against the epistemic graph's durable job and lease handling confirm parity; the files above and both scripts are absent.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R021
      Move graph tenancy, topology, and admission to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move graph tenancy, topology, and admission to EG.** Agent Utilities deletes `kg/core/tenant_sharing`, `kg/core/tenant_registry`, `kg/core/tenant_engine_pool`, `kg/core/shard_topology`, `kg/core/cluster_discovery`, `kg/core/placement_catalog`, `kg/core/secured_reads`, `kg/core/cypher_scoping`, `kg/core/cypher_scope_vars`, `kg/core/bounded_read`, `kg/core/host_lock`, `kg/core/file_lock`, its `security/system_rbac_admission`, `security/tenant_rbac_admission`, and `security/engine_rbac_admission` modules, `admission_authority`, its admission command line interfaces, `permissions_kernel`, and `entitlements`, moving identity, RBAC admission, and graph access-control isolation authority to the epistemic graph. | Cross-tenant denial tests and authoritative graph-selection tests against the epistemic graph's admission path confirm fail-closed behavior before deletion.
      requirementAU-BOUNDARYSPECIFIED8b325ddf1818
      8c6fb318c5d3
      d330871d37af
      AU-BOUNDARY-R021.1
      Ship a typed inventory of the AU-BOUNDARY-R021 tenancy/admission modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship a typed inventory of the AU-BOUNDARY-R021 tenancy/admission modules.** Agent Utilities records, as a parametrized pytest inventory, exactly which tenancy/topology/admission modules `kg/core/tenant_sharing.py`, `kg/core/tenant_registry.py`, `kg/core/tenant_engine_pool.py`, `kg/core/shard_topology.py`, `kg/core/cluster_discovery.py`, `kg/core/placement_catalog.py`, `kg/core/secured_reads.py`, `kg/core/cypher_scoping.py`, `kg/core/cypher_scope_vars.py`, `kg/core/bounded_read.py`, `kg/core/host_lock.py`, `kg/core/file_lock.py`, `security/system_rbac_admission.py`, `security/tenant_rbac_admission.py`, `security/engine_rbac_admission.py`, `security/admission_authority.py`, its admission command line interfaces (`security/system_admission_cli.py`, `security/tenant_admission_cli.py`), `security/permissions_kernel.py`, and `security/entitlements.py` still exist as duplicates of EG's native engine, with a refusal test that fails if a listed module disappears without the inventory being updated in the same change. | `tests/.../test_boundary_r018_r022_eg_duplicate_inventory.py` passes and fails closed on an unrecorded module removal.
      requirementAU-BOUNDARYLANDED8b325ddf1818
      AU-BOUNDARY-R021.2
      Delete the AU-BOUNDARY-R021 tenancy/admission modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the AU-BOUNDARY-R021 tenancy/admission modules.** Agent Utilities deletes `kg/core/tenant_sharing.py`, `kg/core/tenant_registry.py`, `kg/core/tenant_engine_pool.py`, `kg/core/shard_topology.py`, `kg/core/cluster_discovery.py`, `kg/core/placement_catalog.py`, `kg/core/secured_reads.py`, `kg/core/cypher_scoping.py`, `kg/core/cypher_scope_vars.py`, `kg/core/bounded_read.py`, `kg/core/host_lock.py`, `kg/core/file_lock.py`, `security/system_rbac_admission.py`, `security/tenant_rbac_admission.py`, `security/engine_rbac_admission.py`, `security/admission_authority.py`, its admission command line interfaces, `security/permissions_kernel.py`, and `security/entitlements.py` — all still present as of 2026-10-09 — moving identity, RBAC admission, and graph access-control isolation authority to the epistemic graph. | Cross-tenant denial tests and authoritative graph-selection tests against the epistemic graph's admission path confirm fail-closed behavior; the files above are absent from the tree.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R022
      Retire AU's reasoning and graph-analytics duplicates
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire AU's reasoning and graph-analytics duplicates.** Agent Utilities deletes its reasoning and analytics modules once each has proven native coverage in the epistemic graph, including `kg/core/formal_reasoning_core`, `kg/core/graph_primitives`, `kg/core/inference_engine`, `kg/core/reasoner`, `kg/core/semantic_subsumption`, the `kg/core/topological_*` modules, `kg/core/spectral_navigator`, `kg/core/synergy_engine`, `kg/core/analogy_engine`, `kg/core/hypergraph`, `kg/core/blast_radius`, `kg/core/nl_query`, `kg/core/hydration`, `kg/core/maintainer`, `kg/core/world_model`, `kg/core/ownership_claim`, `kg/core/fingerprint`, and the `kg/maintenance`, `kg/id_management`, `kg/argumentation`, and `kg/actions` subpackages. | Method-by-method golden comparisons against the epistemic graph's native implementation prove parity for each module before its AU copy is deleted.
      requirementAU-BOUNDARYSPECIFIED8b325ddf1818
      8c6fb318c5d3
      AU-BOUNDARY-R022.1
      Ship a typed inventory of the AU-BOUNDARY-R022 reasoning/analytics modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Ship a typed inventory of the AU-BOUNDARY-R022 reasoning/analytics modules.** Agent Utilities records, as a parametrized pytest inventory, exactly which reasoning/analytics modules `kg/core/formal_reasoning_core.py`, `kg/core/graph_primitives.py`, `kg/core/inference_engine.py`, `kg/core/reasoner.py`, `kg/core/semantic_subsumption.py`, `kg/core/topological_analysis_engine.py`, `kg/core/topological_partition.py`, `kg/core/spectral_navigator.py`, `kg/core/synergy_engine.py`, `kg/core/analogy_engine.py`, `kg/core/hypergraph.py`, `kg/core/blast_radius.py`, `kg/core/nl_query.py`, `kg/core/hydration.py`, `kg/core/maintainer.py`, `kg/core/world_model.py`, `kg/core/ownership_claim.py`, `kg/core/fingerprint.py`, and the `kg/maintenance`, `kg/id_management`, `kg/argumentation`, and `kg/actions` subpackages still exist as duplicates of EG's native engine, with a refusal test that fails if a listed module disappears without the inventory being updated in the same change. | `tests/.../test_boundary_r018_r022_eg_duplicate_inventory.py` passes and fails closed on an unrecorded module removal.
      requirementAU-BOUNDARYLANDED8b325ddf1818
      AU-BOUNDARY-R022.2
      Delete the AU-BOUNDARY-R022 reasoning/analytics modules
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete the AU-BOUNDARY-R022 reasoning/analytics modules.** Agent Utilities deletes `kg/core/formal_reasoning_core.py`, `kg/core/graph_primitives.py`, `kg/core/inference_engine.py`, `kg/core/reasoner.py`, `kg/core/semantic_subsumption.py`, `kg/core/topological_analysis_engine.py`, `kg/core/topological_partition.py`, `kg/core/spectral_navigator.py`, `kg/core/synergy_engine.py`, `kg/core/analogy_engine.py`, `kg/core/hypergraph.py`, `kg/core/blast_radius.py`, `kg/core/nl_query.py`, `kg/core/hydration.py`, `kg/core/maintainer.py`, `kg/core/world_model.py`, `kg/core/ownership_claim.py`, `kg/core/fingerprint.py`, and the `kg/maintenance`, `kg/id_management`, `kg/argumentation`, and `kg/actions` subpackages — all still present as of 2026-10-09 — once each has proven native coverage in the epistemic graph. | Method-by-method golden comparisons against the epistemic graph's native implementation prove parity; the files and subpackages above are absent from the tree.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R023
      Split ingestion commit and derivation into EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Split ingestion commit and derivation into EG.** Agent Utilities moves the commit and derivation half of `kg/ingestion/**` to the epistemic graph's source-ingest path, including `envelope_ingest`, `change_envelope`, `evidence_spine`, `semantic_event_model`, `object_centric_derivation`, `process_conformance`, `embedding_admission`, `gpu_slot_scheduler`, `promotion`, `supersession`, `dead_letter`, `hydration_manifest`, `skill_workflow_ingest`, and `governed_documentation`. `ingestion/engine.py` is dissolved across its destination owners, and AU retains only model-backed candidate claims. | Atomic cursor-and-receipt tests, including a failure-rollback case showing no AU-side writer remains, confirm parity before the AU modules are deleted.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:199
      AU-BOUNDARY-R024
      Move enterprise source synchronization to the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move enterprise source synchronization to the SDK.** Agent Utilities moves `kg/core/source_sync.py` to become a runner on the agent connector SDK, backed by the epistemic graph's source-ingest path and manifest presets. AU also moves `kg/ingestion/external_graph*`, `kg/ingestion/graphql_connection`, `kg/ingestion/debezium_envelope`, `kg/ingestion/event_log_adapter`, `kg/ingestion/ocel_adapter`, `kg/governance_import.py`, `ecosystem/ea_clients.py`, `data_prep/**`, `kg/core/connection_profiler`, `kg/core/data_prep_runtime`, and `kg/core/source_resolver`. | Full-sync, delta-sync, reconcile, and withdrawal-receipt tests against the SDK runner confirm parity before the AU modules are deleted.
      requirementAU-BOUNDARYSPECIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:200
      AU-BOUNDARY-R024.2
      Move `knowledge_graph/core/source_sync.py` to the agent connector SDK as a runner
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move `knowledge_graph/core/source_sync.py` to the agent connector SDK as a runner** and delete the AU copy, fixing its importers, once the SDK runner proves full-sync/delta-sync/reconcile parity. | `tests/gates/test_boundary_r024_source_sync_moved.py::test_source_sync_module_absent_from_au` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R024.3
      Move `knowledge_graph/governance_import.py` to the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move `knowledge_graph/governance_import.py` to the SDK** and delete the AU copy, fixing its importers, once the SDK's governance-import path proves parity. | `tests/gates/test_boundary_r024_governance_import_moved.py::test_governance_import_module_absent_from_au` passes.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R025
      Move document, conversation, and feed sources to the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move document, conversation, and feed sources to the SDK.** Agent Utilities moves the repository-indexer module in `kg/core/` (the single `*_indexer` module there), `kg/core/conversation_ingestion`, `kg/ingestion/web_fetch`, `kg/ingestion/package_install_ingest`, `kg/ingestion/repo_*`, the top-level `ingestion/**`, `automation/worldmodel_pipeline`, `automation/feed_sources`, `automation/file_watcher`, `sdd/watcher.py`, the non-model half of `kg/kb/**`, `kg/extraction/readers*`, `kg/extraction/pdf`, and `ecosystem/media/**` to the agent connector SDK. | Typed source-envelope tests and recovery tests after an interrupted source read confirm parity before the AU modules are deleted.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:201
      AU-BOUNDARY-R026
      Move vendor enrichment extractors and write-back to the SDK
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move vendor enrichment extractors and write-back to the SDK.** Agent Utilities moves `kg/enrichment/extractors/**` to become connector-manifest presets and SDK adapters, moves `kg/enrichment/writeback/**` behind the SDK's write-back module and the epistemic graph's governed write-back path, and moves `enrichment/git_history` and `enrichment/source_adapters` to the SDK's repository adapter. | Vendor-transport, schema-mapping, and conflict tests against the SDK and the epistemic graph's governed write-back confirm parity before the AU modules are deleted.
      requirementAU-BOUNDARYLANDED00234474001c
      0e44186eac39
      743e98cda405
      AU-BOUNDARY-R027
      Move deterministic enrichment and derivation to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move deterministic enrichment and derivation to EG.** Agent Utilities moves `kg/enrichment/semantic`, `kg/enrichment/relation_projection`, `kg/enrichment/materialize`, `kg/enrichment/git_coupling`, `kg/enrichment/graph_collapse`, `kg/enrichment/provenance`, `kg/assimilation/**`, `kg/etl/**`, `kg/streams/**`, and `kg/memory/timeseries/**` to the epistemic graph. | Golden-output comparisons confirm no model-dependent graph writer remains in AU after the modules are deleted.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:202
      AU-BOUNDARY-R028
      Move remaining graph standardization and security modules to EG (rollup)
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move remaining graph standardization and security modules to EG (rollup).** Agent Utilities moves its remaining EG-bound modules to the epistemic graph, including `kg/standardization/**` except drift handling, `kg/infra/**`, `kg/quantum/**`, `kg/security/**`, `protocols/enterprise/**`, `ecosystem/ard_*`, `observability/trace_ontology`, `observability/self_ingest`, `observability/audit_logger`, `governance/relational_authority.py`, and `research/placement_mining.py`. Split by code root into `AU-BOUNDARY-R028.1`-`.8`; this parent lands when every child lands. | Public method coverage tests against the epistemic graph confirm every moved capability is reachable before the matching AU import is deleted.
      requirementAU-BOUNDARYLANDED4d0883da01d2
      5c70aeb872d9
      743e98cda405
      8edddc8b0a00
      9fec85433f51
      AU-BOUNDARY-R028.1
      Retire `kg/standardization/{cohorts,consolidation,standards}.py` (excludes `drift.py`)
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `kg/standardization/{cohorts,consolidation,standards}.py` (excludes `drift.py`).** Delete once EG exposes an equivalent client; today `drift.py` (retained) imports `read_assets` from `cohorts.py` and `drift_score`/`standard_node_id` from `standards.py`, and `kg/ontology/__init__.py` plus `mcp/tools/{evolution_tools,ontology_tools}.py` import `standards.py` directly in production, so the cut is blocked on an EG client existing and `drift.py` being ported to call it. | A consumer test confirms the three files are deleted, `drift.py` calls the EG client for the same data, and the production importers resolve through EG.
      requirementAU-BOUNDARYLANDED4d0883da01d2
      AU-BOUNDARY-R028.2
      Retire `kg/infra/{placement_optimizer,inventory_collector}.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `kg/infra/{placement_optimizer,inventory_collector}.py`.** Delete the two modules and the package `__init__.py` that only re-exports them. Corrected: `mcp/tools/analysis_tools.py` is a real production caller (`optimize_from_graph`/`collect_and_persist`), in addition to the test importers. The deletion is blocked on that caller moving to an EG client. | An import census confirms no production or test caller remains after deletion.
      requirementAU-BOUNDARYVERIFIED32bdd70f5ea4
      AU-BOUNDARY-R028.2.1
      Pin the `kg/infra` production-importer set
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the `kg/infra` production-importer set.** A census test records today's one production importer (`mcp/tools/analysis_tools.py`) so the set can only shrink as callers are redirected ahead of `AU-BOUNDARY-R028.2`'s deletion. | `tests/gates/test_r028x_module_census.py::test_r028_2_1_infra_importer_set_has_not_grown` fails on a grown set and passes today.
      requirementAU-BOUNDARYVERIFIED32bdd70f5ea4
      4a5540dd2e3d
      tests/gates/test_r028x_module_census.py:125
      AU-BOUNDARY-R028.3
      Retire `kg/quantum/{budget,__init__}.py` and `observability/quantum_trace.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `kg/quantum/{budget,__init__}.py` and `observability/quantum_trace.py`.** Delete all three files; none has a production importer, no MCP tool wires `reserve_quantum_budget`/`QuantumBudgetExceeded`/`persist_quantum_job`, and no test file exercises them. | An import census confirms no caller and no test referenced the deleted symbols before removal.
      requirementAU-BOUNDARYVERIFIED8c6fb318c5d3
      8edddc8b0a00
      tests/gates/test_r028_3_r028_4_retirement.py:27
      AU-BOUNDARY-R028.4
      Retire `kg/security/{cognitive_trap_defense,policy_ingestor,graph_validator,rule_ingestor}.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `kg/security/{cognitive_trap_defense,policy_ingestor,graph_validator,rule_ingestor}.py`.** `cognitive_trap_defense.py` has only a test importer and deletes cleanly. `policy_ingestor.py` and `rule_ingestor.py` are production-imported by `kg/core/engine_ingestion.py`, and `graph_validator.py` by `kg/pipeline/phases/validate.py`, with no EG client equivalent found, so those three remain until EG exposes one. | A consumer test confirms `cognitive_trap_defense.py` is deleted and the remaining three either call an EG client or are reported blocked.
      requirementAU-BOUNDARYVERIFIED5c70aeb872d9
      8c6fb318c5d3
      9fec85433f51
      tests/gates/test_r028_3_r028_4_retirement.py:57
      AU-BOUNDARY-R028.5
      Retire `protocols/enterprise/{__init__,read_models}.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `protocols/enterprise/{__init__,read_models}.py`.** Delete both files; only `tests/unit/protocols/enterprise/test_read_models_github_gitlab.py` imports the package, with no production caller (the `read_models` field on `core/frontend_providers.py`'s descriptor is an unrelated same-named attribute, not an import). | An import census confirms no production or test caller remains after deletion.
      requirementAU-BOUNDARYLANDED4d0883da01d2
      AU-BOUNDARY-R028.6
      Retire `observability/{trace_ontology,self_ingest,audit_logger}.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `observability/{trace_ontology,self_ingest,audit_logger}.py`.** Blocked: all three are core, heavily used production primitives (`trace_ontology.trace_id`/`RunTrace`/`ToolCall` alone has over 100 production call sites across orchestration, capabilities, harness and mcp) with no EG client equivalent found; migrating callers is a multi-file rewrite outside one lane. | A consumer test confirms every production call site resolves through an EG client before the AU modules are deleted.
      requirementAU-BOUNDARYVERIFIED26b087dd3b2f
      AU-BOUNDARY-R028.6.1
      Pin the `observability/{trace_ontology,self_ingest,audit_logger}` production-importer set
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the `observability/{trace_ontology,self_ingest,audit_logger}` production-importer set.** A census test records today's ~49 production importers so the set can only shrink as callers are redirected ahead of `AU-BOUNDARY-R028.6`'s deletion. | `tests/gates/test_r028x_module_census.py::test_r028_6_1_observability_triad_importer_set_has_not_grown` fails on a grown set and passes today.
      requirementAU-BOUNDARYVERIFIED26b087dd3b2f
      32bdd70f5ea4
      4a5540dd2e3d
      tests/gates/test_r028x_module_census.py:136
      AU-BOUNDARY-R028.7
      Retire `governance/relational_authority.py` and `.json`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `governance/relational_authority.py` and `.json`.** Blocked: no Python module imports it outside its own test and `scripts/security/check_relational_authority.py`, but that script is an active fail-closed CI gate auto-discovered by `scripts/security/run_contract_checks.py`'s `check_*.py` glob, documented in `docs/architecture/relational-authority.md`; no EG equivalent exists yet, so retiring it now would remove a live governance gate with nothing to replace it. | A consumer test confirms the EG equivalent gate runs in CI before the AU module, its gate script and the ADR are deleted.
      requirementAU-BOUNDARYVERIFIED26b087dd3b2f
      AU-BOUNDARY-R028.7.1
      Pin the `governance/relational_authority` importer set
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the `governance/relational_authority` importer set.** A census test records that no module under `agent_utilities/` imports it (the live blocker is `scripts/security/check_relational_authority.py`, outside the package), so the in-package set can only shrink further. | `tests/gates/test_r028x_module_census.py::test_r028_7_1_relational_authority_importer_set_has_not_grown` fails on a grown set and passes today.
      requirementAU-BOUNDARYVERIFIED26b087dd3b2f
      32bdd70f5ea4
      4a5540dd2e3d
      tests/gates/test_r028x_module_census.py:159
      AU-BOUNDARY-R028.8
      Retire `kg/research/placement_mining.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retire `kg/research/placement_mining.py`.** Blocked: production-imported by `kg/core/engine_tasks.py` and `mcp/tools/state_tools.py`, with no EG client equivalent found. | A consumer test confirms both production importers resolve through an EG client before the AU module is deleted.
      requirementAU-BOUNDARYVERIFIED26b087dd3b2f
      32bdd70f5ea4
      AU-BOUNDARY-R028.8.1
      Pin the `kg/research/placement_mining` production-importer set
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the `kg/research/placement_mining` production-importer set.** A census test records today's six production importers (corrected: also `knowledge_graph/research/candidate_insight.py`, `knowledge_graph/research/loop_controller.py`, and `orchestration/action_policy.py`, beyond the two named in `AU-BOUNDARY-R028.8`) so the set can only shrink. | `tests/gates/test_r028x_module_census.py::test_r028_8_1_placement_mining_importer_set_has_not_grown` fails on a grown set and passes today.
      requirementAU-BOUNDARYVERIFIED26b087dd3b2f
      32bdd70f5ea4
      4a5540dd2e3d
      tests/gates/test_r028x_module_census.py:171
      AU-BOUNDARY-R029
      Move the ontology object model to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move the ontology object model to EG.** Agent Utilities moves `kg/ontology/**` to the epistemic graph, except the files kept for AU's own semantic typing, the hand-written emitters covered by a separate requirement, and the SDK manifest files. The move includes `object_set`, `property_types`, `derived_properties`, `links`, `functions/**`, `edits/**`, `indexing/**`, `classification_claims`, `permissioning*`, `document_processing`, `schema_graph`, `ops_causal_crosswalk`, `repository_provenance`, `style_lint`, the `*_objects` modules, and `object_path`; `sync_conflict` and `leanix_metamodel` move to the agent connector SDK instead. | Exact source-identity and graph-isomorphism tests against the epistemic graph confirm no AU RDF parser remains after the deletion.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:203
      AU-BOUNDARY-R030
      Move hand-written ontology emitters behind EG pack compilation
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move hand-written ontology emitters behind EG pack compilation.** Agent Utilities puts its hand-written RDF, OWL, and SHACL text emitters behind epistemic graph pack compilation, moving `ontology/value_types`, `ontology/interfaces`, `ontology/manifest_compiler`, `extraction/schema_discovery.py`, `core/ontology_publisher.py`, `scripts/scaffold_ontology_leg.py`, and the declared semantic validation in connector certification. AU keeps only typed declarations, and connector-manifest-to-ontology compilation becomes pack compilation in the epistemic graph. | Conflict tests comparing the typed AU declaration against the generated epistemic-graph artifact confirm equivalence before the emitters are deleted.
      requirementAU-BOUNDARYSPECIFIED1446fc4c3db5
      5e15da9f9e40
      743e98cda405
      bcdde1ec1a57
      c7fc09d3d2f6
      AU-BOUNDARY-R030.1
      Record what has already landed for the emitter cutover
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Record what has already landed for the emitter cutover.** The SDK half landed as `agent_connector_sdk.manifest.ontology_pack.compile_manifest_ontology`, and AU's compile-before-sync gate (`connector_manifest_gate._compiled_manifest_graph`) already calls it instead of rendering Turtle locally. `agent_utilities/knowledge_graph/ontology/manifest_compiler.py` is not yet deleted because `scripts/generate_connector_manifests.py`, `scripts/update_ontology_lock.py`, `scripts/generate_native_connector_manifest.py`, and `agent_utilities/knowledge_graph/domain_packs/pack_loader.py` still import it directly, and `extraction/schema_discovery.py`, `core/ontology_publisher.py`, and `scripts/scaffold_ontology_leg.py` do not exist yet. | `tests/gates/test_boundary_r036_r047_relocation_census.py` (or an equivalent R030 census) records this importer set so a future edit notices drift.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R030.2
      Wire `scripts/generate_connector_manifests.py` off the local manifest compiler
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Wire `scripts/generate_connector_manifests.py` off the local manifest compiler.** Point its call site at `agent_connector_sdk.manifest.ontology_pack.compile_manifest_ontology` instead of importing `agent_utilities/knowledge_graph/ontology/manifest_compiler.py` directly. | `tests/unit/knowledge_graph/ontology/test_generate_connector_manifests_uses_sdk_pack.py` confirms the script no longer imports the local compiler.
      requirementAU-BOUNDARYVERIFIED6825115f4ac3
      tests/unit/knowledge_graph/ontology/test_generate_connector_manifests_uses_sdk_pack.py:34
      AU-BOUNDARY-R030.3
      Wire `scripts/update_ontology_lock.py` off the local manifest compiler
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Wire `scripts/update_ontology_lock.py` off the local manifest compiler.** Point its call site at `agent_connector_sdk.manifest.ontology_pack.compile_manifest_ontology` instead of importing `agent_utilities/knowledge_graph/ontology/manifest_compiler.py` directly. | `tests/unit/knowledge_graph/ontology/test_update_ontology_lock_uses_sdk_pack.py` confirms the script no longer imports the local compiler.
      requirementAU-BOUNDARYVERIFIED62e0b302ed8e
      tests/unit/knowledge_graph/ontology/test_update_ontology_lock_uses_sdk_pack.py:24
      tests/unit/knowledge_graph/ontology/test_update_ontology_lock_uses_sdk_pack.py:29
      AU-BOUNDARY-R030.4
      Wire `scripts/generate_native_connector_manifest.py` off the local manifest compiler
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Wire `scripts/generate_native_connector_manifest.py` off the local manifest compiler.** Point its call site at `agent_connector_sdk.manifest.ontology_pack.compile_manifest_ontology` instead of importing `agent_utilities/knowledge_graph/ontology/manifest_compiler.py` directly. | `tests/unit/knowledge_graph/ontology/test_generate_native_connector_manifest_uses_sdk_pack.py` confirms the script no longer imports the local compiler.
      requirementAU-BOUNDARYVERIFIEDc5d1bf3f8286
      tests/unit/knowledge_graph/ontology/test_generate_native_connector_manifest_uses_sdk_pack.py:28
      tests/unit/knowledge_graph/ontology/test_generate_native_connector_manifest_uses_sdk_pack.py:33
      AU-BOUNDARY-R030.5
      Wire `agent_utilities/knowledge_graph/domain_packs/pack_loader.py` off the local manifest compiler
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Wire `agent_utilities/knowledge_graph/domain_packs/pack_loader.py` off the local manifest compiler.** Point its call site at `agent_connector_sdk.manifest.ontology_pack.compile_manifest_ontology` instead of importing `agent_utilities/knowledge_graph/ontology/manifest_compiler.py` directly. | `tests/unit/knowledge_graph/domain_packs/test_pack_loader_uses_sdk_pack.py` confirms the loader no longer imports the local compiler.
      requirementAU-BOUNDARYVERIFIEDd93381eba0db
      tests/unit/knowledge_graph/domain_packs/test_pack_loader_uses_sdk_pack.py:22
      tests/unit/knowledge_graph/domain_packs/test_pack_loader_uses_sdk_pack.py:34
      AU-BOUNDARY-R030.6
      Delete `agent_utilities/knowledge_graph/ontology/manifest_compiler.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/ontology/manifest_compiler.py`.** Remove the module once `AU-BOUNDARY-R030.2`–`R030.5` leave it with zero importers. | An import census confirms no production or test caller remains before the file is deleted.
      requirementAU-BOUNDARYVERIFIEDc4c654815738
      tests/gates/test_au_boundary_r030_6_deleted.py:16
      AU-BOUNDARY-R030.7
      Add `agent_utilities/knowledge_graph/core/ontology_publisher.py`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add `agent_utilities/knowledge_graph/core/ontology_publisher.py`.** Add the typed AU declaration publisher that feeds the epistemic graph's pack compiler, replacing the hand-written emitter path. | `tests/unit/knowledge_graph/core/test_ontology_publisher.py` exercises the publisher against a fixture declaration.
      requirementAU-BOUNDARYVERIFIEDc0dc104b77a9
      tests/unit/knowledge_graph/core/test_ontology_publisher.py:22
      tests/unit/knowledge_graph/core/test_ontology_publisher.py:31
      AU-BOUNDARY-R031
      Replace AU's graph-schema DTOs with EG-generated types
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Replace AU's graph-schema DTOs with EG-generated types.** Agent Utilities replaces `models/knowledge_graph`, `models/schema_definition`, `models/evidence_bundle`, `models/knowledge_pack`, `models/codemap`, `models/graph`, `models/knowledge_base`, `models/schema_pack*`, and `models/schema_packs/**` with epistemic-graph-generated types. `kg/domain_packs/**` is moved once the shared pack loader has been cut over to the generated types. | Exact contract-digest checks and unknown-field rejection tests confirm no hand-copied model remains after the DTOs are replaced.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:204
      AU-BOUNDARY-R032
      Delete AU's legacy SPARQL backend and setup path
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Delete AU's legacy SPARQL backend and setup path.** Agent Utilities deletes `kg/backends/sparql/**`, `kg/setup/**`, the `setup-databases` script, and `kg/integrations/stardog_sync` and `kg/integrations/sparql_ingestor`, because the external SPARQL stores they target are already legacy and unaffected by AU's broader federation work. | Tests confirming no runtime or command line caller remains, and that a typed unavailable response is returned for the removed path, gate the deletion.
      requirementAU-BOUNDARYLANDED743e98cda405
      a05257fb6541
      AU-BOUNDARY-R033
      Move external graph and database federation to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move external graph and database federation to EG.** Agent Utilities moves all of its remaining external graph and database backends into the epistemic graph as federation and mirror targets, including `fanout_backend`, `postgresql_backend`, `cypher_transpiler`, `age_backend`, `contrib/**`, `mirror_target`, `outbox`, `brain_guarded_backend`, `trino_backend`, and `spark_jobs`. None of these backends are deleted outright; each becomes a federated source reachable through the epistemic graph. | Scoped foreign-source query tests and a fail-closed outage test against the epistemic graph's federation path confirm parity before the AU backends are deleted.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:205
      AU-BOUNDARY-R034
      Move retrieval engines to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move retrieval engines to EG.** Agent Utilities moves its retrieval engines to the epistemic graph, including `kg/retrieval/hybrid_retriever`, `kg/retrieval/semantic_retrieval_engine`, `kg/retrieval/neural_reranker`, `kg/retrieval/hierarchical_document_retriever`, `kg/retrieval/memory_retriever`, `kg/retrieval/code_context`, `kg/retrieval/code_metrics`, `kg/retrieval/graph_engineering`, `kg/retrieval/analytics_job_registry`, `kg/retrieval/temporal_semantic_id`, `kg/retrieval/embedding_versioning`, `kg/retrieval/generative_recommender`, `kg/retrieval/iterative_expansion`, `kg/retrieval/lineage`, `kg/retrieval/direct_corpus`, `kg/retrieval/latent_topology_rag`, `kg/retrieval/reasoning_reranker`, `kg/retrieval/autocut`, `kg/neural/**`, and `kg/search/**`. AU retains context compilation and the capability index. | Same-snapshot tenant and source proofs plus cited-ranking parity tests against the epistemic graph confirm equivalence before the retrieval modules are deleted.
      requirementAU-BOUNDARYVERIFIED4a5540dd2e3d
      743e98cda405
      tests/gates/test_boundary_r023_r034_relocation_inventory.py:206
      AU-BOUNDARY-R035
      Re-home the schema-drift package before it lands
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Re-home the schema-drift package before it lands.** Agent Utilities places the schema-drift gate, shape, classify, and report steps in the agent connector SDK's connector-sync runner, running between drain and apply. AU moves `candidate.py`'s SHACL rendering, `contract_store`, and `activation` to the epistemic graph rather than keeping them in AU. | A quarantine test showing no cursor advance on a rejected candidate, paired with an approved-activation test, confirms the moved behavior before the AU-side SHACL rendering is deleted.
      requirementAU-BOUNDARYLANDED5e15da9f9e40
      bcfbc23cd1e6
      c7fc09d3d2f6
      AU-BOUNDARY-R036
      Move the usage fact store to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move the usage fact store to EG.** Agent Utilities moves `usage/**` off its local SQLite and SQL analytics store so that usage becomes durable, tenant-scoped facts with provenance in the epistemic graph; AU only emits usage events, and graph-os's usage API reads from the epistemic graph. | Restart tests, tenant-scoped read tests, and a duplicate-event test against the epistemic graph's usage facts confirm durability before the AU store is deleted.
      requirementAU-BOUNDARYLANDED795afc53f54d
      8ea6bd529b0f
      AU-BOUNDARY-R036.1
      Pin the usage-store relocation inventory
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the usage-store relocation inventory.** A typed, parametrized census test records the AU `usage/` paths pending move to the epistemic graph's usage facts (`usage/backend.py`, `usage/authorization.py`, `usage/backends`), so the set is provable from AU's side before deletion. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_inventoried_relocation_still_present` fails if a listed path disappears without this inventory being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R037
      Move development-governance tooling to repository-manager
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move development-governance tooling to repository-manager.** Agent Utilities moves its development-governance modules, including merge-queue sequencing, concept-reservation tracking, and related coordination code, out of `governance/**` and into `agents/repository-manager`, since repository-manager's commit and task-queue code are the only consumers. | Recovery testing of an interrupted merge-queue operation, plus a check that zero AU governance import remains, confirms the move before the AU modules are deleted.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R037.1
      Pin the governance-tooling relocation inventory
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the governance-tooling relocation inventory.** A typed, parametrized census test records the AU `governance/` modules pending move to repository-manager (`concept_allocator.py`, `concept_hierarchy.py`, `concept_lineage.py`), so the set is provable from AU's side before deletion. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_inventoried_relocation_still_present` fails if a listed path disappears without this inventory being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R038
      Add a cross-owner component registry and path guard
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Add a cross-owner component registry and path guard.** Agent Utilities adds graph-os and SDK boundary seeds, plus owner manifests, to `architecture/component-registry*`, closing the coverage gaps left by the existing AU and EG seams. AU adds a generated gate that fails when AU declares a console script whose module belongs to graph-os, or when new AU code lands outside an AU-owned destination path. | A hermetic test using public checkout fixtures and no live service shows the new gate rejects a wrong-owner module or script addition.
      requirementAU-BOUNDARYLANDED8821aee3c37f
      aa5eba73e0f7
      AU-BOUNDARY-R039
      Move front ends off AU internals
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move front ends off AU internals.** Agent Utilities ensures that the front ends layered on top of it, a web UI, a chat assistant front end, and a terminal UI, import only `agent_utilities.api`, graph-os, or the epistemic graph client, with no direct import of AU internals. This folds into the graph-os web UI's broader rebrand. | An import census across each front end plus an end-to-end user route exercised against the rebranded web UI confirm no AU-internal import remains.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R039.1
      Pin AU's public front-end import surface
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin AU's public front-end import surface.** A typed, parametrized census test records the `agent_utilities/api/` modules external front ends (web UI, chat front end, terminal UI) are allowed to import, so a shrink of that surface is caught on the AU side before the front-end import census goes stale. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_front_end_surface_module_still_present` fails if a listed surface module disappears without the front-end import census being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R040
      Move agent memory and the learning engine to EG
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move agent memory and the learning engine to EG.** Agent Utilities moves `knowledge_graph/memory/**`, except `timeseries/`, entirely into the epistemic graph: agent memory, the learning engine, reinforcement-learning memory, and the media store. AU becomes a thin epistemic-graph client for agent-run memory, and `media_store` becomes a thin client as well. | A trusted-migration-and-quarantine test, plus a scoped read and a restart test against the epistemic graph's memory store, confirm durability before the AU modules are deleted.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R040.1
      Pin the agent-memory relocation inventory
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the agent-memory relocation inventory.** A typed, parametrized census test records the AU `knowledge_graph/memory/` paths pending move to the epistemic graph (`agent_context.py`, `learning_engine.py`, `memory_engine.py`, `rlm_memory.py`, `media_store.py`, `distillation.py`, `lifecycle.py`, `observer.py`), so the set is provable from AU's side before deletion. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_inventoried_relocation_still_present` fails if a listed path disappears without this inventory being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R041
      Finance modules that produced fabricated data are removed
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Finance modules that produced fabricated data are removed.** agent-utilities does not retain trade_journal, the strategy_export, strategy_sharing, and strategy_engine modules, streaming, market_feeds, market_data, crypto_connector, exchange_bridge, banking and its models, payments, `knowledge_graph/core/quant_tasks.py`, the candle rule sets, the credit dividend and Merton-KMV specifics, the sentiment lexicon, or the copy-trade gating and exit rules, because they produced fabricated data such as synthetic prediction-market prices, mock exchange fills, and a fixed Sharpe ratio. | A repository import census confirms none of these modules exist in agent-utilities and that no caller references them.
      requirementAU-BOUNDARYLANDEDdbe24ea1b0d3
      AU-BOUNDARY-R042
      Every package directory has one recorded disposition
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Every package directory has one recorded disposition.** Each directory in the top two levels under `agent_utilities/` has exactly one row in the deletion and relocation inventory in `coverage.md`, stating keep, delete, or relocate with the destination repository, and no row is undecided. A repository check fails when a directory exists without a row or a row names a path that is not in the tree. | A tree-versus-inventory test fails on an unlisted directory, an undecided row, or a stale path.
      requirementAU-BOUNDARYLANDED2456745c1e4d
      29d80148b462
      8821aee3c37f
      a4079bc8d2ed
      AU-BOUNDARY-R043
      Retained agent surface is declared and import-bounded
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Retained agent surface is declared and import-bounded.** The inventory names the packages Agent Utilities keeps as its agent library — agent execution and orchestration (`agent/`, `graph/`, `capabilities/`, `patterns/`, `workflows/`, `tools/`, `core/checkpoint/`, `core/execution/`), evaluation and self-improvement (`harness/`, `measurement/`, `rlm/`), runtime and developer tooling (`runtime/`, `cli/`, `claude_harness/`, `integrations/`, `analysis/`, `agent_chat/`), and prompts, pricing and policy data (`prompts/`, `prompting/`, `pricing/`, `policies/`) — or assigns any of them elsewhere. Retained packages import the engine only through its public client and contain no serving, storage, or graph-compute implementation. | An import-boundary test over the retained packages rejects engine-internal, storage, and serving imports.
      requirementAU-BOUNDARYLANDED8a45ab8013ad
      fdeabad709b3
      AU-BOUNDARY-R044
      Fleet, scaling and deployment modules leave orchestration
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Fleet, scaling and deployment modules leave orchestration.** The fleet reconciler, autoscaler, scaling-authority, and deploy-watch modules in `orchestration/` receive an explicit owner in the inventory; fleet, scaling, and deployment behavior is served by graph-os and does not remain in Agent Utilities, while the agent runner and its planning code stay. Callers use the graph-os operation or the retained runner, never a moved module. | A caller census finds no Agent Utilities import of a moved fleet, scaling, or deployment module, and graph-os consumer tests cover the moved behavior.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R044.1
      Pin the orchestration relocation inventory
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the orchestration relocation inventory.** A typed, parametrized census test records the AU `orchestration/` modules pending move to graph-os (`agent_activation.py`, `agent_digital_twin.py`, `action_policy.py`), so the set is provable from AU's side before deletion, while the agent runner and its planning code stay out of this inventory. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_inventoried_relocation_still_present` fails if a listed path disappears without this inventory being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R045
      Unplaced knowledge-graph packages receive file-level owners
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Unplaced knowledge-graph packages receive file-level owners.** `knowledge_graph/distillation/`, `adaptation/`, `pipeline/`, `search_synthesis/`, `shapes/`, and `live_artifacts/` each receive a disposition, and the partly covered packages `retrieval/`, `research/`, `core/`, `enrichment/`, `extraction/`, `kb/`, `ingestion/`, `backends/`, `domain_packs/`, `orchestration/`, `ontology/`, and the files directly under `knowledge_graph/` list every file with its owner. Model-backed extraction, research, and retrieval-planning code that Agent Utilities keeps is named by path; everything else moves to the engine or the connector SDK or is deleted. | The inventory check confirms every tracked file under `knowledge_graph/` maps to exactly one owner, and parity tests cover each moved or deleted module.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R045.1
      Pin the unplaced knowledge_graph package relocation inventory
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the unplaced knowledge_graph package relocation inventory.** A typed, parametrized census test records the AU `knowledge_graph/` packages pending move to the epistemic graph (`distillation`, `adaptation`, `pipeline`, `search_synthesis`, `shapes`, `live_artifacts`), so the set is provable from AU's side before the file-level owner audit in this row's main acceptance criterion runs. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_inventoried_relocation_still_present` fails if a listed path disappears without this inventory being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R046
      Partly covered packages list every file with its owner
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Partly covered packages list every file with its owner.** `observability/`, `core/`, `core/registry/`, `messaging/`, `messaging/backends/`, `security/`, `skills/`, `models/`, `mcp/`, `ecosystem/`, `automation/`, `sdd/`, `domains/finance/`, and the top-level modules of `agent_utilities/` list every file with keep, delete, or relocate and the destination, replacing descriptions such as “the duplicated modules” with exact paths. | The inventory check confirms no tracked file in these packages lacks an owner and no requirement refers to them only by description.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R047
      Engine-facing adapters and caches are thin clients or removed
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Engine-facing adapters and caches are thin clients or removed.** `kvcache/`, `numeric/`, `caching/`, and `media/` either become thin clients over the engine's public interface or are deleted as duplicates of engine behavior; none keeps its own durable store, numeric kernel, or cache authority. | Differential tests against the engine show equal results for retained adapters, and a census shows no second store or kernel implementation.
      requirementAU-BOUNDARYLANDED795afc53f54d
      fed30c0982ae
      AU-BOUNDARY-R047.1
      Pin the engine-facing-adapter relocation inventory
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Pin the engine-facing-adapter relocation inventory.** A typed, parametrized census test records the AU `kvcache/`, `numeric/`, `caching/`, and `media/` packages pending the thin-client cutover against the epistemic graph's public interface, so the set is provable from AU's side before deletion or conversion. | `tests/gates/test_boundary_r036_r047_relocation_census.py::test_inventoried_relocation_still_present` fails if a listed path disappears without this inventory being updated in the same change.
      requirementAU-BOUNDARYLANDED795afc53f54d
      AU-BOUNDARY-R048
      Domain models, shapes, assets and skill content are placed
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Domain models, shapes, assets and skill content are placed.** The domain packages (`domains/government/`, `domains/hr/`, `domains/law/`, `domains/medical/`, `models/domains/`) relocate to the epistemic graph as typed domain packs and are then deleted from Agent Utilities; the MCP tool in `mcp/tools/analysis_tools.py` that reads the HR workforce models moves separately to graph-os with MCP tool hosting. `ontology/shapes/`, `images/`, `data/`, `protocols/voice_supply_chain/`, and the skill-content directories under `skills/` each receive an owner: kept as agent content, published as engine packs, moved to the shared skills repository, or deleted. | The inventory check shows each directory placed, and pack or skill validation passes in the receiving repository.
      requirementAU-BOUNDARYSPECIFIED49b087cb97e4
      fca0c5ee42b3
      AU-BOUNDARY-R048.1
      `images/` is already relocated
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **`images/` is already relocated.** `agent_utilities/images/` no longer exists on `origin/main`; it has already been deleted/relocated, closing that one directory of `AU-BOUNDARY-R048`. | `git ls-tree -r origin/main -- agent_utilities/images` returns empty.
      requirementAU-BOUNDARYVERIFIED635f38f64aca
      tests/gates/test_boundary_r010_r048_landed_records.py:18
      AU-BOUNDARY-R048.2
      Relocate `domains/government/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Relocate `domains/government/`.** Move `agent_utilities/domains/government/` to its epistemic-graph domain pack and delete it from Agent Utilities, fixing any importer left pointing at the old path. | A census test shows no remaining `agent_utilities/domains/government/` path and no AU import of it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.3
      Relocate `domains/hr/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Relocate `domains/hr/`.** Move `agent_utilities/domains/hr/` to its epistemic-graph domain pack and delete it from Agent Utilities, fixing any importer left pointing at the old path. | A census test shows no remaining `agent_utilities/domains/hr/` path and no AU import of it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.4
      Relocate `domains/law/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Relocate `domains/law/`.** Move `agent_utilities/domains/law/` to its epistemic-graph domain pack and delete it from Agent Utilities, fixing any importer left pointing at the old path. | A census test shows no remaining `agent_utilities/domains/law/` path and no AU import of it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.5
      Relocate `domains/medical/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Relocate `domains/medical/`.** Move `agent_utilities/domains/medical/` to its epistemic-graph domain pack and delete it from Agent Utilities, fixing any importer left pointing at the old path. | A census test shows no remaining `agent_utilities/domains/medical/` path and no AU import of it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.6
      Relocate `models/domains/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Relocate `models/domains/`.** Move `agent_utilities/models/domains/` to its epistemic-graph domain pack and delete it from Agent Utilities, fixing any importer left pointing at the old path. | A census test shows no remaining `agent_utilities/models/domains/` path and no AU import of it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.7
      Move the HR workforce MCP tool to graph-os
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Move the HR workforce MCP tool to graph-os.** `agent_utilities/mcp/tools/analysis_tools.py`, which reads HR workforce models, moves to graph-os with MCP tool hosting and is deleted from Agent Utilities. | A census test shows `agent_utilities/mcp/tools/analysis_tools.py` no longer exists and graph-os serves the equivalent tool.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.8
      Assign an owner to `ontology/shapes/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Assign an owner to `ontology/shapes/`.** `agent_utilities/ontology/shapes/` is kept as agent content, published as an engine pack, moved to the shared skills repository, or deleted — one disposition is recorded and acted on. | The inventory check shows `ontology/shapes/` has one recorded disposition and the directory matches it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.9
      Assign an owner to `data/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Assign an owner to `data/`.** `agent_utilities/data/` is kept as agent content, published as an engine pack, moved to the shared skills repository, or deleted — one disposition is recorded and acted on. | The inventory check shows `data/` has one recorded disposition and the directory matches it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.10
      Assign an owner to `protocols/voice_supply_chain/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Assign an owner to `protocols/voice_supply_chain/`.** `agent_utilities/protocols/voice_supply_chain/` is kept as agent content, published as an engine pack, moved to the shared skills repository, or deleted — one disposition is recorded and acted on. | The inventory check shows `protocols/voice_supply_chain/` has one recorded disposition and the directory matches it.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R048.11
      Assign an owner to the skill-content directories under `skills/`
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Assign an owner to the skill-content directories under `skills/`.** Each skill-content directory under `agent_utilities/skills/` is kept as agent content, published as an engine pack, moved to the shared skills repository, or deleted — one disposition per directory is recorded and acted on. | The inventory check shows every `skills/` content directory has one recorded disposition and pack/skill validation passes in the receiving repository where relocated.
      requirementAU-BOUNDARYSPECIFIEDNo recorded commit/test evidence
      AU-BOUNDARY-R049
      Every AU write-back sink runs through the SDK governed write-back contract
      Definition — AU-BOUNDARY / AU-BOUNDARY — AU boundary deconstructionCanonical requirement and verification source
      **Every AU write-back sink runs through the SDK governed write-back contract.** `run_writeback` builds one canonical SDK `SourceChangeSet` per sink invocation. It runs that change set through `DurableWritableConnector`, with each AU sink wrapped as a `WriteBackTransport`. The SDK validates the digest, expiry, field scope, base version and authorization before a live sink call. A live apply reserves an audit record and appends its attempt to a durable `WriteBackLedger`. A sink failure during apply is recorded as an uncertain outcome. `graph_writeback` and every other `run_writeback` caller reach sinks only through this path. `dry_run=True` stays the default, and the per-sink enable flag stays fail-closed. This is the first step of AU-BOUNDARY-R026; the sinks move to SDK packs later. | `tests/unit/knowledge_graph/enrichment/test_writeback_governed.py` proves the dry-run route and the applied and uncertain receipts. It also proves SDK refusal before the sink for denied authorization and a stale version. The existing write-back suites pass unchanged.
      requirementAU-BOUNDARYLANDED00234474001c
      0e44186eac39
      AU-QUAL
      AU-QUAL — Reproducible AU boundary and quality gates
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R001
      Liveness deferrals fail visibly when they expire
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Liveness deferrals fail visibly when they expire.** Every liveness deferral in agent-utilities carries a visible owner and review date, and an expired deferral fails a deterministic hosted or scheduled check with a clear message rather than aging unnoticed. The guardrail-liveness gate enforces this on every entry. | A time-frozen unit test advances past a deferral's review date and confirms the scheduled check fails with an actionable message.
      requirementAU-QUALLANDEDc15d278239d3
      AU-QUAL-R002
      Tiny-profile RBAC and bootstrap-isolation tests cover real code
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Tiny-profile RBAC and bootstrap-isolation tests cover real code.** The tiny profile's gateway test asserts that a disallowed write is denied under zero-container serving. The bootstrap-isolation tests patch the actual public seams in agent-utilities' MCP bootstrap module rather than functions that no longer exist. Evidence resolves the liveness deferrals for formal_reasoning_core.py and models/knowledge_graph.py. Nobody extends them again. | The named test suite passes against the current gateway and bootstrap code. Both named liveness deferrals show a resolved, evidenced status.
      requirementAU-QUALLANDEDce632099b6b9
      AU-QUAL-R003
      Connector validation uses EG's composed GraphSchema
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Connector validation uses EG's composed GraphSchema.** Connector validation in agent-utilities validates incoming data against epistemic-graph's composed GraphSchema and returns typed errors. It never loads or treats agent-utilities' own SHACL shapes pack as the source of schema authority. | A contract test confirms connector validation calls the composed GraphSchema and that no AU-owned shapes pack is consulted during validation.
      requirementAU-QUALLANDED50f312aeb06c
      c62dfed3c869
      AU-QUAL-R004
      Named AU test failures are fixed, not skipped
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Named AU test failures are fixed, not skipped.** agent-utilities fixes its placement-mining, trace-miner, claim-flywheel, policy-drift, ingestion, and observability test failures with causal tests rather than skips. Widget tests that need connector packages have those packages declared and provisioned rather than skipped, and the assimilation-benchmark tests pass with seeded randomness after the numpy-to-epistemic-graph random-number-generator move. | The full named test list runs green in continuous integration with no skip markers added to mask a failure.
      requirementAU-QUALLANDED0fa2df86ace4
      4771f8a9ee09
      576cf41ee890
      AU-QUAL-R005
      Test files are included in mypy with real fixes
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Test files are included in mypy with real fixes.** agent-utilities' mypy configuration includes tests/ rather than excluding it, and every reported error is resolved with a correct type rather than a new type: ignore comment, an Any cast, or an additional exclusion. Errors are worked through in small, owned source-directory batches until the exclusion is fully removed. | A mypy configuration diff confirms the test exclusion is removed and a clean mypy run covers all test files with zero new ignores.
      requirementAU-QUALLANDEDd9d7cc7b59c0
      ed6485573f1e
      AU-QUAL-R005.1
      Remaining scope of AU-QUAL-R005 (slice .1): Test files are included in mypy with real fixes
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Remaining scope of AU-QUAL-R005 (slice .1): Test files are included in mypy with real fixes.** Child slice of `AU-QUAL-R005` (see tasks.md). | A mypy configuration diff confirms the test exclusion is removed and a clean mypy run covers all test files with zero new ignores
      requirementAU-QUALLANDEDf25a287bac6c
      AU-QUAL-R005.2
      Remaining scope of AU-QUAL-R005 (slice .2): Test files are included in mypy with real fixes
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Remaining scope of AU-QUAL-R005 (slice .2): Test files are included in mypy with real fixes.** Child slice of `AU-QUAL-R005` (see tasks.md). | A mypy configuration diff confirms the test exclusion is removed and a clean mypy run covers all test files with zero new ignores
      requirementAU-QUALVERIFIEDd9d7cc7b59c0
      AU-QUAL-R005.2.1
      Per-directory grandchild slice of AU-QUAL-R005.2 — `tests/unit/patterns/`
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Per-directory grandchild slice of AU-QUAL-R005.2 — `tests/unit/patterns/`.** The mypy pre-commit hook's exclusion is narrowed so `tests/unit/patterns/` is included in mypy coverage, and any real type errors mypy reports there are fixed with a correct type rather than an ignore, an `Any` cast, or a further exclusion. Remaining test directories are tracked as further `AU-QUAL-R005.2.n` grandchildren in tasks.md. | The mypy pre-commit hook's `exclude` regex no longer matches `tests/unit/patterns/`, and a mypy run against that directory reports zero errors with zero new ignores.
      requirementAU-QUALVERIFIEDd9d7cc7b59c0
      tests/unit/quality/test_mypy_config_includes_patterns_dir.py:33
      tests/unit/quality/test_mypy_config_includes_patterns_dir.py:41
      AU-QUAL-R006
      A privacy check covers the final tree and commit history
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **A privacy check covers the final tree and commit history.** Before code reaches a public remote, agent-utilities runs a privacy check across the complete working tree and every commit message, confirming no credential, private path, or internal identifier is present. | The privacy check runs as a required gate and fails the build when it finds a disallowed pattern in tracked content or commit messages.
      requirementAU-QUALVERIFIED0fa2df86ace4
      4a5540dd2e3d
      576cf41ee890
      tests/gates/test_tracked_privacy_commit_history.py:112
      tests/gates/test_tracked_privacy_commit_history.py:88
      AU-QUAL-R007
      Liveness placeholder detector ignores documentation prose
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Liveness placeholder detector ignores documentation prose.** The guardrail-liveness placeholder detector does not flag a trigger phrase that appears in a docstring or comment describing an accurate, documented design decision; it flags only code bodies whose only substantive content is an unimplemented placeholder. | A regression test feeds the detector a prose docstring containing a trigger phrase and confirms no false-positive finding is raised, alongside a true-positive case that still fails.
      requirementAU-QUALVERIFIED4a5540dd2e3d
      f93efd64d001
      tests/gates/test_liveness_analyzer_compat.py:163
      tests/gates/test_liveness_analyzer_compat.py:174
      AU-QUAL-R008
      Liveness reconciler rescues exact service-registry targets
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Liveness reconciler rescues exact service-registry targets.** The liveness reconciler reads the literal `_SERVICE_DEFINITIONS` registry without importing services. It rescues only the effective target for each capability; a later row replaces an earlier one. A nonliteral registry, a malformed row, or an unrelated dictionary rescues nothing. | Fixture tests confirm last-row-wins rescue and no rescue for a nonliteral registry. A parity test compares the static targets with real registry dispatch.
      requirementAU-QUALLANDEDcf1cdce6a6e4
      eb077e60c21b
      AU-QUAL-R009
      Red-team runs follow the received probe sequence and emit trace events, and abstain without a scorer verdict
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Red-team runs follow the received probe sequence and emit trace events, and abstain without a scorer verdict.** agent-utilities runs the probe sequence it receives and emits each attack, transform and scorer verdict as trace events. A run with no received scorer verdict reports abstention and never pass. [arXiv:2605.04019] | `See children `AU-QUAL-R009.1` to `AU-QUAL-R009.6`.`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R009.1
      Model
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Model.** `ProbeResult` at `agent_utilities/harness/red_team.py:44` gains `transform`, `scorer_id` and a received `verdict`. EG-DECISION-ENGINE-R138 produces the attack, transform and scorer records and the verdict. GRAPHOS-OPS carries them to the harness. The optional engine `ProbeVerdict` retains `resisted`, `compromised` or `inconclusive` unchanged. Separate local `execution_status` values are `completed` and `abstained`; `abstained` is never a scoring verdict. `RedTeamReport` (`red_team.py:56`) counts execution abstentions separately. | `tests/unit/harness/test_red_team_evidence.py::test_probe_result_verdict_fields`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R009.2
      Behavior
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Behavior.** `RedTeamRunner.assess` (`red_team.py:149`) must run the given probes in order. Without a received verdict, it records `execution_status=abstained`, reason `no_scorer_verdict` and no verdict. A target error records reason `probe_execution_failed` without inventing a verdict. Defense-rate counts exclude execution abstentions and engine `inconclusive` verdicts. | `tests/unit/harness/test_red_team_evidence.py::test_no_scorer_abstains`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R009.3
      Wiring
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Wiring.** `red_team_assess` (`agent_utilities/mcp/harness_server.py:574`) must emit the events through the audit sink record at `capabilities/kg_audit_sink.py:385`. `RedTeamRunner.run` (`red_team.py:175`) has no production caller today; this row creates the call site in the same tool. | `tests/unit/harness/test_red_team_evidence.py::test_assess_writes_trace_evidence`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R009.4
      Refusal
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Refusal.** A run without received verdicts records an execution abstention with reason `no_scorer_verdict`. Without conclusive engine verdicts, the defense rate stays absent. Missing scores and execution failures must never become `resisted` or `compromised`. | `tests/unit/harness/test_red_team_evidence.py::test_all_abstained_is_not_pass`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R009.5
      Evidence
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Evidence.** Each probe emits the attack, transform and scorer identifiers plus the response digest. Separate trace fields carry the unchanged optional engine verdict, execution status and reason. A second run with the same inputs must emit equal events. | `tests/unit/harness/test_red_team_evidence.py::test_evidence_reproduces`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-QUAL-R009.6
      Hot-path proof
      Definition — AU-QUAL / AU-QUAL — Reproducible AU boundary and quality gatesCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `red_team_assess` operation. Each received engine verdict must trace unchanged, including `inconclusive`. Missing verdicts and target errors must trace execution abstentions with no fabricated verdict. Test path: `tests/integration/test_red_team_assess_served.py`. | `tests/integration/test_red_team_assess_served.py::test_served_assess_records_evidence`
      requirementAU-QUALSPECIFIEDNo recorded commit/test evidence
      AU-DEV
      AU-DEV — Public AU development environment and skill lifecycle
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-DEV-R001
      A development skill documents AU's contribution workflow
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **A development skill documents AU's contribution workflow.** agent-utilities provides and keeps current a development skill that documents its architecture boundaries, supported build hosts, quality gates, contract regeneration, and identity setup, alongside equivalent per-repository skills for epistemic-graph, graph-os, and the connector SDK. Each repository's AGENTS.md is trimmed to navigation and a pointer into its development skill. | A skill-content check confirms each listed development skill documents the required topics and that no AGENTS.md duplicates that content.
      requirementAU-DEVSPECIFIEDed6485573f1e
      AU-DEV-R001.1
      typed DevelopmentSkillTopicInventory model (agent_utilities/skills/dev_skill_topics.py) that refuses a skill missing any required topic, plus its refusal test (
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **typed DevelopmentSkillTopicInventory model (agent_utilities/skills/dev_skill_topics.py) that refuses a skill missing any required topic, plus its refusal test (.** Child slice of `AU-DEV-R001` (see tasks.md). | A skill-content check confirms each listed development skill documents the required topics and that no AGENTS.md duplicates that content
      requirementAU-DEVLANDEDc48cba9d3f95
      f25a287bac6c
      AU-DEV-R001.2
      The real agent-utilities-development skill declares every `DevelopmentSkillTopicInventory` required topic
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **The real agent-utilities-development skill declares every `DevelopmentSkillTopicInventory` required topic.** Applies the AU-DEV-R001.1 model to the checked-in `agent-utilities-development` SKILL.md (not a synthetic fixture). Auditing the sibling epistemic-graph/graph-os/connector-sdk skills and trimming each repository's AGENTS.md remain `AU-DEV-R001.3+`. | `tests/unit/skills/test_dev_skill_topics_audit.py` builds `DevelopmentSkillTopicInventory` from the real SKILL.md's declared topics and asserts it does not refuse.
      requirementAU-DEVVERIFIEDc48cba9d3f95
      tests/unit/skills/test_dev_skill_topics_audit.py:35
      AU-DEV-R001.3
      Audit the sibling development skills and trim each AGENTS.md
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Audit the sibling development skills and trim each AGENTS.md.** Remaining scope of `AU-DEV-R001` after `.2`: apply the `DevelopmentSkillTopicInventory` audit to the epistemic-graph, graph-os and agent-connector-sdk development skills and trim each repository's AGENTS.md to the contract the skill now owns. | A test loads each sibling SKILL.md through `DevelopmentSkillTopicInventory` and asserts every required topic is declared; each AGENTS.md links its development skill instead of restating it.
      requirementAU-DEVSPECIFIEDNo recorded commit/test evidence
      AU-DEV-R002
      Deployment and genesis tooling move to graph-os
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Deployment and genesis tooling move to graph-os.** agent-utilities deletes its agent-os-genesis workflow and agent-utilities-deployment skill once graph-os hosts their replacements covering single-host Docker Compose and Kubernetes/Helm deployment, identity modes with a forced first administrator, per-mode secret backends, and first-boot verification. Symlinks, AGENTS.md references, and the workspace navigation index are updated to point at the graph-os skills. | A repository check confirms the AU deployment and genesis copies no longer exist and that a fresh deployment following the graph-os skill passes first-boot verification.
      requirementAU-DEVLANDED29d80148b462
      AU-DEV-R003
      Skill inventory refresh stays deterministic after moves
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Skill inventory refresh stays deterministic after moves.** agent-utilities' source-to-installed skill inventory detects a moved or renamed graph-os provider skill and a stale installed copy, and its refresh is idempotent: it prints its plan before mutating anything and verifies the resulting hashes and IDs so the skill remains discoverable in both Codex and the runtime XDG skill path after an ecosystem refactor. | A refresh test renames a source skill, runs the inventory refresh, and confirms the installed copy is updated and discoverable with matching hashes in both environments.
      requirementAU-DEVSPECIFIEDed6485573f1e
      AU-DEV-R003.1
      typed SkillInventoryRefreshEntry model (agent_utilities/skills/inventory_refresh_model.py) that refuses a refresh which mutates before printing its plan, or cla
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **typed SkillInventoryRefreshEntry model (agent_utilities/skills/inventory_refresh_model.py) that refuses a refresh which mutates before printing its plan, or cla.** Child slice of `AU-DEV-R003` (see tasks.md). | A refresh test renames a source skill, runs the inventory refresh, and confirms the installed copy is updated and discoverable with matching hashes in both environments
      requirementAU-DEVLANDEDc48cba9d3f95
      f25a287bac6c
      AU-DEV-R003.2
      The real runtime XDG skills refresh prints its plan before mutating and verifies hashes through `SkillInventoryRefreshEntry`
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **The real runtime XDG skills refresh prints its plan before mutating and verifies hashes through `SkillInventoryRefreshEntry`.** `agent_utilities.skills.inventory_refresh_runtime` wires the AU-DEV-R003.1 model to the real `install_unified()` skills leg: it prints the planned action per registered provider before mutating, then builds one refusal-checked entry per provider from the real installed marker. The Codex discovery path remains `AU-DEV-R003.3+`. | `tests/unit/skills/test_inventory_refresh_runtime.py` confirms the plan is printed and the XDG tree is untouched before the real refresh runs, and that the resulting entries do not raise.
      requirementAU-DEVVERIFIEDc48cba9d3f95
      tests/unit/skills/test_inventory_refresh_runtime.py:10
      tests/unit/skills/test_inventory_refresh_runtime.py:26
      AU-DEV-R003.3
      ROLLUP: Codex skill discovery path joins the refresh inventory (superseded by AU-DEV-R003.3.1...AU-DEV-R003.3.3)
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **ROLLUP: Codex skill discovery path joins the refresh inventory (superseded by AU-DEV-R003.3.1...AU-DEV-R003.3.3).** Not bite-sized: `agent_utilities` has no Codex skill discovery path at all (only Codex hook registration in `ecosystem/hook_installer.py` and MCP registration in `deployment/codex_registration.py`; `install_unified()` writes only the XDG skills tree), so the path must be defined, materialized, then refreshed. Remaining scope of `AU-DEV-R003` after `.2`: the Codex discovery path is refreshed through the same plan-before-mutate, hash-verified `SkillInventoryRefreshEntry` flow as the XDG leg. | A unit test asserts the Codex leg prints its plan before mutating and refuses a hash mismatch.
      requirementAU-DEVSPECIFIEDNo recorded commit/test evidence
      AU-DEV-R003.3.1
      Define the Codex skill discovery path
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Define the Codex skill discovery path.** Add one typed resolver `codex_skills_dir()` (honouring `CODEX_HOME`, defaulting to `~/.codex/skills`) beside `unified_skills_dir()` with its validation and refusal tests for link-like or unsafe directories. | A unit test asserts the resolved path under `CODEX_HOME` and refusal of a symlinked root.
      requirementAU-DEVVERIFIED87539533cf33
      tests/unit/core/test_codex_skills_dir.py:10
      tests/unit/core/test_codex_skills_dir.py:19
      AU-DEV-R003.3.2
      Materialize registered skill providers into the Codex path
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Materialize registered skill providers into the Codex path.** Wire `install_unified()` to also write each registered provider's managed marker and assets under `codex_skills_dir()`, reusing `_materialize_provider`. | A unit test asserts a registered provider is installed under the Codex path with a managed marker.
      requirementAU-DEVVERIFIED4d6f3ab2ae2b
      tests/unit/core/test_codex_skills_install.py:38
      tests/unit/core/test_codex_skills_install.py:56
      tests/unit/core/test_codex_skills_install.py:75
      AU-DEV-R003.3.3
      Codex leg prints its plan before mutating and refuses a hash mismatch
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Codex leg prints its plan before mutating and refuses a hash mismatch.** Extend `inventory_refresh_runtime` with a Codex leg that prints per-provider plan lines before mutating and builds `SkillInventoryRefreshEntry` from the Codex marker. | A unit test asserts the Codex plan prints before mutation and a hash mismatch raises.
      requirementAU-DEVSPECIFIEDNo recorded commit/test evidence
      AU-DEV-R003.3.4
      Define the Claude Code skills discovery path
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **Define the Claude Code skills discovery path.** Add `claude_skills_dir()` beside `codex_skills_dir()` (honouring `CLAUDE_CONFIG_DIR`, defaulting to `~/.claude/skills`) through one shared `_harness_skills_dir` resolver with the same relative, link-like, and non-directory refusals. | A unit test asserts the path under `CLAUDE_CONFIG_DIR`/`HOME` and refusal of a relative, symlinked, or non-directory root.
      requirementAU-DEVVERIFIEDd330871d37af
      tests/unit/core/test_claude_skills_install.py:35
      tests/unit/core/test_claude_skills_install.py:46
      AU-DEV-R003.3.5
      One harness-target install feeds Claude and Codex together
      Definition — AU-DEV / AU-DEV — Public AU development environment and skill lifecycleCanonical requirement and verification source
      **One harness-target install feeds Claude and Codex together.** Generalize the Codex-only install into `_install_harness_skills` driven by a `HARNESS_TARGETS` table (codex, claude), reusing `_install_registration`, `_materialize_provider` and `_prune_removed_managed`; `install_unified()` reports a `claude_skills` key next to `codex_skills`. | A unit test asserts one `install_unified()` call materializes the same provider into both harness directories and pruning removes only managed-marker directories.
      requirementAU-DEVVERIFIEDd330871d37af
      tests/unit/core/test_claude_skills_install.py:67
      tests/unit/core/test_claude_skills_install.py:91
      AU-RETIRE
      AU-RETIRE — Retire duplicate graph engine authority in AU
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-RETIRE-R001
      Complete inventory and retirement of duplicate graph engine code
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Complete inventory and retirement of duplicate graph engine code.** AU produces a complete, reconciled inventory of every knowledge_graph module, giving each one a single disposition of retained for agent/planning use, migrated to the engine, migrated to an SDK, or deleted as a duplicate. Modules proven to duplicate the engine's native OWL/SPARQL/compute authority, including `knowledge_graph/core/graph_compute.py`, `knowledge_graph/core/formal_reasoning_core.py`, `knowledge_graph/backends/sparql/`, and any OWL bridge or backend module, are deleted once a parity-verified epistemic-graph client replaces them. | An inventory audit confirms no knowledge_graph module lacks a disposition, and before/after parity tests on a synthetic graph show the deleted modules have no remaining import or caller.
      requirementAU-RETIRESPECIFIED4a5540dd2e3d
      6a408267e403
      tests/unit/knowledge_graph/test_retirement_inventory.py:24
      AU-RETIRE-R001.1
      Census recorded no safe disposition yet for `graph_compute.py` or `formal_reasoning_core.py`
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Census recorded no safe disposition yet for `graph_compute.py` or `formal_reasoning_core.py`.** The 2026-10-08 census found `knowledge_graph/core/graph_compute.py` (`GraphComputeEngine`, 281 non-test importers) is load-bearing core infrastructure, not an isolable duplicate, and every exported symbol of `knowledge_graph/core/formal_reasoning_core.py` has a real caller or registered capability; neither has a disposition assigned, and no code was cut for either. This is a factual record of the census outcome, not new work. | `specs/au-engine-duplicate-retirement/tasks.md` records the census outcome verbatim; both files remain present and imported on `origin/main`.
      requirementAU-RETIRELANDED6a408267e403
      AU-RETIRE-R001.2
      Open the cross-repo spec item enumerating EG-native equivalents
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Open the cross-repo spec item enumerating EG-native equivalents.** Open one spec item against epistemic-graph that lists, per exported AU symbol in `graph_compute.py` and `formal_reasoning_core.py`, either its EG-native equivalent operation or "no replacement exists" — the census's named next step, and the blocker for any AU-side deletion slice on either file. | The epistemic-graph spec item exists, is linked back from this row, and names an EG-native equivalent or "no replacement exists" for every exported symbol in both files.
      requirementAU-RETIRESPECIFIEDNo recorded commit/test evidence
      AU-RETIRE-R002
      Enrichment edges carry a provenance rung and confidence
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Enrichment edges carry a provenance rung and confidence.** Each enrichment edge in agent_utilities/knowledge_graph/enrichment/models.py records an explicit provenance rung distinguishing a directly extracted relationship from an inferred one, plus a confidence value, instead of leaving certainty to ride opportunistically in free-form properties. When two edges would write the same relationship, the edge with the more certain rung is kept. | Unit tests confirm edge rungs order from most to least certain, a less-certain write cannot overwrite a more-certain edge, and deduplication keeps the more certain edge.
      requirementAU-RETIRELANDEDd165697978b7
      AU-RETIRE-R003
      OBO ontology terms ingest as typed ReferenceTerm individuals
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **OBO ontology terms ingest as typed ReferenceTerm individuals.** AU ingests OBO ontology terms from GO biological process, UBERON/CL, ENVO, PATO and ChEBI as ReferenceTerm individuals keyed by their CURIE, aggregates GO annotations into a taxonCapableOf relation, and types ChEBI nutrient-role entries as kg:Nutrient. | Integration tests load each OBO source and assert the resulting ReferenceTerm, taxonCapableOf and kg:Nutrient individuals match the expected CURIEs and types.
      requirementAU-RETIRELANDED6a408267e403
      AU-RETIRE-R003.1
      Typed ReferenceTerm model refuses an invalid CURIE
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Typed ReferenceTerm model refuses an invalid CURIE.** `ReferenceTerm` refuses a `curie` that is not `PREFIX:local_id` shaped or whose prefix does not match its declared `source`. | Unit tests assert a non-CURIE identifier and a source-mismatched CURIE both raise `ValidationError` referencing AU-RETIRE-R003.
      requirementAU-RETIRELANDED82c3c3016b15
      f25a287bac6c
      AU-RETIRE-R003.2
      Ingest raw OBO records into keyed, deduplicated ReferenceTerm individuals
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Ingest raw OBO records into keyed, deduplicated ReferenceTerm individuals.** `ingest_reference_terms` turns an iterable of raw OBO term records into `ReferenceTerm` individuals keyed by CURIE, validating each record through `ReferenceTerm` and keeping the first record when a CURIE repeats. | Unit tests assert ingest keys individuals by CURIE, keeps the first of a repeated CURIE, and propagates `ValidationError` for an invalid record.
      requirementAU-RETIREVERIFIED82c3c3016b15
      tests/unit/knowledge_graph/ontology/test_reference_term.py:29
      tests/unit/knowledge_graph/ontology/test_reference_term.py:40
      tests/unit/knowledge_graph/ontology/test_reference_term.py:51
      AU-RETIRE-R003.3
      Load the real OBO sources and aggregate taxonCapableOf / kg:Nutrient
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Load the real OBO sources and aggregate taxonCapableOf / kg:Nutrient.** Remaining scope of `AU-RETIRE-R003` after the `.1` model and `.2` keyed ingest: load GO biological process, UBERON/CL, ENVO, PATO and ChEBI through `ingest_reference_terms`, aggregate GO annotations into a `taxonCapableOf` relation, and type ChEBI nutrient-role entries as `kg:Nutrient`. | Integration tests load each OBO source and assert the resulting ReferenceTerm, taxonCapableOf and kg:Nutrient individuals match the expected CURIEs and types.
      requirementAU-RETIRELANDED82c3c3016b15
      AU-RETIRE-R004
      Fix doubled node_type text in embedding composition
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Fix doubled node_type text in embedding composition.** The derived text composed for embedding in enrichment/semantic.py does not duplicate a bare node_type label; a node with no other descriptive fields produces a single label such as "Order" rather than a doubled string such as "Order and Order". | A unit test asserts the composed embedding text for a node carrying only node_type equals the single label, not a duplicated compound string.
      requirementAU-RETIREVERIFIEDbc7bba33932d
      f0f5e51f6b47
      tests/unit/knowledge_graph/enrichment/test_entity_text_bare_node_type.py:38
      AU-RETIRE-R005
      Per-stage timing instrumentation across the full ingest path
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Per-stage timing instrumentation across the full ingest path.** The code and repository ingest path in enrichment/pipeline.py and the repository-indexer module in core/ records per-stage timing through the same ingest-profile instrumentation already used on the document path, covering stages such as enumeration, parsing and resolution, filtering, call resolution, community detection, card generation, embedding and write, so ingest duration is measurable end to end. | Unit tests assert each pipeline stage emits a timing record through the ingest-profile instrumentation, and a full ingest run reports a non-zero duration for every stage.
      requirementAU-RETIRELANDEDdd925ea09bf7
      AU-RETIRE-R006
      Delta ingest reaps nodes for deleted files
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Delta ingest reaps nodes for deleted files.** The incremental delta ingest path in ingestion/engine.py removes graph nodes for files that were deleted from the source, so a deleted file leaves no stale node behind after a delta run. | An integration test deletes a previously ingested file, runs a delta ingest, and asserts the corresponding node no longer exists in the graph.
      requirementAU-RETIREVERIFIED42f6dada3749
      4a5540dd2e3d
      5822ee9bef09
      bc7bba33932d
      tests/unit/knowledge_graph/test_ingestion_perf_optimizations.py:362
      tests/unit/knowledge_graph/test_ingestion_perf_optimizations.py:380
      tests/unit/knowledge_graph/test_ingestion_perf_optimizations.py:393
      AU-RETIRE-R007
      Deterministic embedding admission classifier at the ingest chokepoint
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Deterministic embedding admission classifier at the ingest chokepoint.** The embedding admission classifier in ingestion/embedding_admission.py deterministically excludes lockfile, generated, vendored, minified and binary content, excludes typed SQL/CDC columns such as enums, foreign keys, timestamps, booleans and numerics, and excludes exact-duplicate content by hash, while its structured-token rule stays narrow enough that ordinary hyphenated entity names still reach the embedder. The classifier is enforced at the single envelope-preparation chokepoint so no connector can bypass it. | Unit and integration tests against the real chokepoint confirm each exclusion class is skipped, duplicate content is deduplicated, and a known set of ordinary entity names still reach the embedder.
      requirementAU-RETIRELANDED82eff59f049d
      AU-RETIRE-R008
      Sequence ingestion-economics work ahead of file relocation
      Definition — AU-RETIRE / AU-RETIRE — Retire duplicate graph engine authority in AUCanonical requirement and verification source
      **Sequence ingestion-economics work ahead of file relocation.** Design work on ingestion timing, edge provenance and embedding admission lands against AU's current ingestion/engine.py, enrichment/pipeline.py and the repository-indexer module in core/ and is inherited by any later relocation of those files, rather than the two efforts proceeding as independent, unreconciled changes to the same files. | A review confirms the ingestion-economics changes are merged before any in-scope module is migrated out of AU, with no conflicting concurrent rewrite of the same files.
      requirementAU-RETIRELANDED6a408267e403
      AU-INTEGRATION
      AU-INTEGRATION — AU integration and release reliability
      specNoneLANDEDNo recorded commit/test evidence
      AU-INTEGRATION-R001
      Clustered mode deliberately refuses local-only agent writes
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Clustered mode deliberately refuses local-only agent writes.** In clustered mode, direct writes to AgentComponent, AgentLibrary, AgentGraph, AgentTemplate and ConnectorPack are deliberately refused through an explicit local-only method list in the mutation planner (src/server/mutation/plan.rs), not as an accidental side effect, and the inventory of clustered-refused mutation methods stays complete. | An inventory test asserts every local-only mutation method is enumerated and refused when running in clustered mode.
      requirementAU-INTEGRATIONVERIFIED34481f825411
      42f6dada3749
      daa321626142
      tests/unit/orchestration/test_agent_library.py:204
      tests/unit/test_native_cypher_routing.py:294
      AU-INTEGRATION-R002
      Control graph auto-creation and messaging intake propagation
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Control graph auto-creation and messaging intake propagation.** The reserved __control__ graph is created automatically, or a typed error is returned, before the first WorkItem is processed on a fresh engine, rather than failing silently, and the messaging_intake_enabled setting is threaded through to InProcessBackend.apply so it actually takes effect. | Unit tests cover a fresh engine's first WorkItem against the control graph and confirm that toggling messaging_intake_enabled changes InProcessBackend.apply's behavior.
      requirementAU-INTEGRATIONLANDED46da005a6c4c
      AU-INTEGRATION-R003
      Reconcile previously tracked fixes against current main
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Reconcile previously tracked fixes against current main.** AU's dependency, contract-generation and test-baseline fixes are verified as already present and tested at the current merged head rather than tracked as separate pending work, so no duplicate fix remains open against code that already carries it. | A source and test audit at the current merged head confirms each fix is present in code and covered by an existing test, with no separate pending fix left open for the same defect.
      requirementAU-INTEGRATIONLANDEDeabd68d558c0
      AU-INTEGRATION-R004
      Remove the unintended nltk dependency from AU's lock
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Remove the unintended nltk dependency from AU's lock.** AU's dependency lock does not pull in nltk indirectly for AU itself. Any nltk dependency is declared by the extra that actually needs it rather than leaking into AU's base lock. | A lockfile audit confirms no nltk entry appears outside the dependency set of the extra that declares it.
      requirementAU-INTEGRATIONVERIFIED5061f520d040
      eabd68d558c0
      tests/unit/release/test_lock_no_nltk.py:11
      AU-INTEGRATION-R005
      Contract compatibility hook validates against a pinned artifact
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Contract compatibility hook validates against a pinned artifact.** The epistemic-graph contract-compatibility hook validates AU's code against a pinned, published EG contract artifact, never by reading a sibling repository checkout from the local filesystem. | The hook runs correctly with no sibling repository present and still detects a deliberately introduced contract mismatch.
      requirementAU-INTEGRATIONLANDEDc15d278239d3
      AU-INTEGRATION-R006
      epistemic-graph is a core AU dependency
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **epistemic-graph is a core AU dependency.** epistemic-graph[full] is declared as a core, always-installed AU dependency rather than an opt-in extra. | A dependency-manifest check confirms epistemic-graph[full] appears in AU's base dependency set with no extras flag required to install it.
      requirementAU-INTEGRATIONLANDEDeabd68d558c0
      AU-INTEGRATION-R007
      Gold-set generation is synthetic, not manually labelled
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Gold-set generation is synthetic, not manually labelled.** Gold-set generation for retrieval and evaluation work is produced synthetically by construction, consistent with evaluation requirement EG-DECISION-ENGINE-R053, and AU does not maintain a separate manual or human-labelling pipeline for this data. | An audit confirms the synthetic gold-set generator produces the required evaluation data and that no parallel manual-labelling process exists in AU.
      requirementAU-INTEGRATIONLANDEDe48977329379
      AU-INTEGRATION-R008
      Regression baseline stays green with EG installed
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Regression baseline stays green with EG installed.** AU's regression baseline, including tests for lazy configuration attribute resolution, shared-resource-lease fencing, Cypher session boundary handling, model-factory routing, the sessions gateway, and deployment-backend threading timeouts, passes with EG installed. | The full test baseline, including each of these specific tests, passes with EG installed.
      requirementAU-INTEGRATIONLANDEDff819b4cc434
      AU-INTEGRATION-R009
      Resolve expired liveness deferrals with recorded evidence
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Resolve expired liveness deferrals with recorded evidence.** AU's liveness gate carries no expired deferral: unused modules such as api/sparql_server.py, protocols/dataflows.py and protocols/quant_agent.py are removed, the harness/memorydata deferral is resolved, and ecosystem/agent_manager_dashboard.py is wired to a live caller, each with evidence recorded against its deferral. | The liveness gate runs with zero expired deferrals, and each resolved item's deletion or live-wiring evidence is checked in.
      requirementAU-INTEGRATIONLANDEDc15d278239d3
      AU-INTEGRATION-R010
      Kafka enqueue-only-proof contract runs and passes honestly
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Kafka enqueue-only-proof contract runs and passes honestly.** The engine-owned Kafka enqueue-only-proof contract executes its build, unconstrained and constrained steps to completion without being short-circuited by an earlier failing tier, and AU reports its result as external dependency evidence rather than claiming it as AU-authored proof. | The constrained-parallelism gate runs end to end and all three Kafka steps complete with a zero exit code, visible in the run log.
      requirementAU-INTEGRATIONLANDED35fde39bdb9d
      AU-INTEGRATION-R011
      Prove disposability before pruning a branch checkout
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Prove disposability before pruning a branch checkout.** Before a development branch or its local checkout is removed, its commits and any uncommitted changes must be shown to already exist in an accepted public branch, or recorded in an explicit recovery artifact; having zero commits ahead of main is not by itself proof that a checkout is disposable. | A checkout audit records, for each candidate removal, either its containment in an accepted branch or a retained recovery reference, before the checkout is deleted.
      requirementAU-INTEGRATIONLANDED79694ed969b6
      AU-INTEGRATION-R012
      External-graph contract check follows relocated docs
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **External-graph contract check follows relocated docs.** AU's external-graph contract check keeps covering the two documents that moved out of AU by requiring an equivalent content-marker and environment-literal check exist in their new location, rather than silently covering zero documents once they move. | A test proves the relocated check fails against a deliberately broken input, and AU's own check inventory shows no orphaned entry for the moved documents.
      requirementAU-INTEGRATIONLANDED37eadb5dab34
      AU-INTEGRATION-R013
      Privacy gate accepts canonical automation author identities
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Privacy gate accepts canonical automation author identities.** AU's author-identity privacy gate accepts the exact canonical automation author identities, including the fully qualified Claude and Codex identities, as valid commit authors, instead of rejecting any author name that contains the bare word used inside those identities. | A test commits using each canonical identity string and confirms the gate accepts it, while an unrelated bare token, leaked credential, or private endpoint is still rejected.
      requirementAU-INTEGRATIONLANDED37eadb5dab34
      AU-INTEGRATION-R014
      Benchmark query-serving improvements against the existing path
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Benchmark query-serving improvements against the existing path.** Any proposed AI predicate-grouping, prompt or key-value reuse, or GPU-fairness improvement is measured against AU's existing typed query and model-serving path before integration, preserving tenant and purpose authorization gates, and is adopted only as an optimization inside that path rather than as a second independent query or storage authority. A component whose access control relies on a single shared token rather than a verified per-tenant, per-purpose identity does not meet the bar for integration. | A benchmark compares the candidate against the existing serving path on identical workloads, and an authorization test confirms tenant and purpose gates are enforced before any integration is accepted.
      requirementAU-INTEGRATIONLANDED35fde39bdb9d
      64d317c9e385
      AU-INTEGRATION-R014.1
      Remaining scope of AU-INTEGRATION-R014 (slice .1): Benchmark query-serving improvements against the existing path
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Remaining scope of AU-INTEGRATION-R014 (slice .1): Benchmark query-serving improvements against the existing path.** Child slice of `AU-INTEGRATION-R014` (see tasks.md). | A benchmark compares the candidate against the existing serving path on identical workloads, and an authorization test confirms tenant and purpose gates are enforced before any integration is accepted
      requirementAU-INTEGRATIONLANDED64d317c9e385
      AU-INTEGRATION-R015
      Remove the unused legacy ontology publisher surface
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Remove the unused legacy ontology publisher surface.** AU removes the unused ontology_publisher module, the Fuseki/Stardog publish schedule token, the related vendor configuration, and the doctor, health and widget surfaces and documentation referencing them once no live caller exists, verified against a full module and catalog inventory. AU does not reintroduce a local named-graph publisher; if atomic named-graph publication is needed, the engine exposes the single method for it. | A caller and catalog census confirms zero remaining references to the removed publisher, schedule token, and related configuration, and the targeted test suite for the surrounding module continues to pass.
      requirementAU-INTEGRATIONLANDED23920f0ed817
      acab91a1b198
      AU-INTEGRATION-R016
      Published ontology-deletion commit matches its source patch
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Published ontology-deletion commit matches its source patch.** The publicly published commit that deletes all local ontology files and local semantic-authority code is verifiably the same change, by patch content rather than only by message, as the corresponding source change it replaces, with both the focused and the expanded ontology overlay test suites passing at that commit. | A patch-identity comparison confirms the published commit's patch matches the source change, and both the focused and expanded overlay test suites pass.
      requirementAU-INTEGRATIONLANDED43197d7c65a3
      AU-INTEGRATION-R017
      Published source history is an ancestor of main
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Published source history is an ancestor of main.** AU's publicly published source history is fully contained within the ancestry of the local main branch, so public history is a strict subset of main rather than a divergent line. | A history-ancestry check confirms each published commit is reachable as an ancestor of local main.
      requirementAU-INTEGRATIONLANDED43197d7c65a3
      AU-INTEGRATION-R018
      Public docs site passes the full documentation gate suite
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Public docs site passes the full documentation gate suite.** AU's public documentation site matches the canonical README and theme, presents its home page in present tense, has zero orphan pages with full page-count parity against the site navigation, builds under strict MkDocs settings, and passes the current-only, privacy, accessibility, theme, workflow and version gates. | The documentation build and its current-only, privacy, accessibility, theme, workflow and version gates all run green against the published site, and a page-count and orphan-page check confirms full coverage.
      requirementAU-INTEGRATIONLANDED35fde39bdb9d
      64d317c9e385
      bf0a31f534e1
      AU-INTEGRATION-R018.1
      Remaining scope of AU-INTEGRATION-R018 (slice .1): Public docs site passes the full documentation gate suite
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Remaining scope of AU-INTEGRATION-R018 (slice .1): Public docs site passes the full documentation gate suite.** Child slice of `AU-INTEGRATION-R018` (see tasks.md). | The documentation build and its current-only, privacy, accessibility, theme, workflow and version gates all run green against the published site, and a page-count and orphan-page check confirms full coverage
      requirementAU-INTEGRATIONLANDED64d317c9e385
      AU-INTEGRATION-R019
      Messaging direct turns use a configured budget and never discard an over-budget run
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Messaging direct turns use a configured budget and never discard an over-budget run.** The direct/chat reply budget comes from `MESSAGING_DIRECT_REPLY_BUDGET_S` (default 60 s), not a literal. Direct turns stay interactive. When a messaging turn passes its budget, the run continues. Its final reply is sent once as a follow-up message to the same chat. The timeout text states that the reply follows. | Unit tests prove the setting sets the direct budget. A test proves an overrun returns the follow-up notice and delivers the late reply exactly once.
      requirementAU-INTEGRATIONVERIFIED003679966f78
      42f6dada3749
      f94a3c109517
      tests/unit/messaging/test_direct_reply_budget.py:20
      tests/unit/messaging/test_direct_reply_budget.py:30
      tests/unit/messaging/test_direct_reply_budget.py:39
      AU-INTEGRATION-R020
      Outbound chat text never carries the run envelope
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Outbound chat text never carries the run envelope.** One helper turns a run result into outbound text. It accepts a dict or JSON string envelope and returns only `output`. The envelope key set is shared with the renderer. `run_summary` stays for logs and trace links. | A regression test feeds the exact leaked Telegram envelope and asserts only the answer text. A second test unwraps every key the renderer emits.
      requirementAU-INTEGRATIONVERIFIED42f6dada3749
      6778d5dfd79b
      b1fd0469c010
      tests/unit/messaging/test_run_envelope_unwrap.py:29
      tests/unit/messaging/test_run_envelope_unwrap.py:36
      tests/unit/messaging/test_run_envelope_unwrap.py:43
      AU-INTEGRATION-R021
      An aggregate ask answers with its own rows, never a silent empty answer
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **An aggregate ask answers with its own rows, never a silent empty answer.** `nl_planner.nl_query` recognizes the engine's "without a governed node id" denial of a sql/sparql aggregate projection and steers its bounded retry to the cypher dialect, the one dialect the engine authorizes for an aggregate/grouped read. `EvidenceBundle.from_nl_query` folds a successful result's first rows into `answer_candidate`, not just a row count. An execution denial that exhausts every retry still surfaces through the `error` field; it never reports as an empty, successful-looking answer. | Unit tests cover a sql-denied aggregate self-correcting to a successful cypher aggregate, an exhausted retry surfacing its denial through `error`, and `EvidenceBundle.from_nl_query` mapping aggregate rows into `answer_candidate`.
      requirementAU-INTEGRATIONLANDED00220bc40313
      671acde661a3
      AU-INTEGRATION-R022
      The maintenance scheduler syncs every configured connector source on an interval
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **The maintenance scheduler syncs every configured connector source on an interval.** A recurring sweep enumerates the sources `sync_source` knows (its registry/dispatch table in `source_sync.py`), skips unconfigured ones exactly as the existing `_*_configured()` checks do, and dispatches `sync_source(engine, name, mode="delta")` for each configured one — not just the three hardcoded research-feed sources (rss/freshrss/arxiv). One source failing does not stop the others. | A test with a fake engine and a monkeypatched registry proves configured sources are dispatched, unconfigured ones are skipped, and one source raising does not stop the rest from running.
      requirementAU-INTEGRATIONVERIFIED0f6916669b59
      7475a78b2fb3
      tests/unit/core/test_connector_sync_sweep.py:19
      tests/unit/core/test_connector_sync_sweep.py:63
      AU-INTEGRATION-R023
      Native ChangeEnvelope mutations carry only the fields the engine contract allows
      Definition — AU-INTEGRATION / AU-INTEGRATION — AU integration and release reliabilityCanonical requirement and verification source
      **Native ChangeEnvelope mutations carry only the fields the engine contract allows.** The mutation dict `_native_mutation()` builds for `client.changes.apply()` in `envelope_ingest.py` contains only `epistemic_graph.client`'s closed mutation fields (`batch_id`, `graph`, `idempotency_key`, `operations`, `outbox`, plus the optional `placement_epoch`, `expected_graph_version`, `fencing_token`); `schema_version`, `context`, `tenant` and `created_at_ms` are never drafted into it, since the engine mints tenant, context and timing from the already-verified session rather than accepting them from the caller. | The mutation built through the real `_native_mutation()`/`ingest_envelope()` path has a key set that is a subset of `epistemic_graph.client._CHANGE_MUTATION_REQUIRED` / `_CHANGE_MUTATION_OPTIONAL` and passes that module's own `_closed_mapping` validator offline.
      requirementAU-INTEGRATIONVERIFIED6a43f914f823
      tests/unit/knowledge_graph/ingestion/test_native_envelope_ingest.py:615
      AU-SEMANTIC
      AU-SEMANTIC — AU semantic client and generated contract
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R001
      OntologyLifecycle.set_active() fails closed, not a silent local fallback
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **OntologyLifecycle.set_active() fails closed, not a silent local fallback.** `OntologyLifecycle.set_active()` must not silently instantiate a local fallback implementation in place of the EG-served ontology lifecycle method; when that served method cannot be reached it fails closed instead of masking the condition. | A fault test forces the EG ontology-lifecycle method to be unavailable. It asserts `set_active()` raises rather than returning a local fallback instance.
      requirementAU-SEMANTICLANDED2648d0b28ad0
      42f6dada3749
      43197d7c65a3
      AU-SEMANTIC-R002
      AU verifies domain-pack class names against EG's schema-class list
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU verifies domain-pack class names against EG's schema-class list.** AU resolves every domain-pack class and property reference through EG's served graph-schema-classes read. It refuses to use a reference to an unknown class. It does not only flag the reference as unverified. | A negative test that references an unknown class in a domain pack asserts AU refuses it. AU does not merely record it as unverified.
      requirementAU-SEMANTICVERIFIED0e5fc3801885
      2648d0b28ad0
      tests/unit/knowledge_graph/domain_packs/test_pack_loader.py:355
      tests/unit/knowledge_graph/domain_packs/test_pack_loader.py:365
      AU-SEMANTIC-R003
      AU's knowledge_graph shape files are published to the EG pack or removed
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU's knowledge_graph shape files are published to the EG pack or removed.** Every SHACL shape file under `knowledge_graph/shapes/` is either published into the EG-validated schema pack so EG applies it during validation, or deleted from AU together with the tests that reference it; AU holds no SHACL shape outside a published pack. | The previously skipped shape tests run and pass against EG-served validation, or are deleted along with the removed shape file.
      requirementAU-SEMANTICLANDED83a157bf120b
      AU-SEMANTIC-R004
      AU's remaining SHACL shape files move into EG-owned schema packs
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU's remaining SHACL shape files move into EG-owned schema packs.** AU's `knowledge_graph/shapes/*.ttl` files and `ontology/shapes/governance.shapes.ttl` are removed from AU and hosted only in EG-owned schema packs or sources. AU references each shape by IRI and performs no local SHACL parsing. | A forbidden-file census confirms the shape files are absent from AU and shape references resolve only through the EG-served contract.
      requirementAU-SEMANTICLANDED981194f50ab4
      afe05ab38e0f
      AU-SEMANTIC-R005
      Ontology lifecycle, integrity and schema parsing become EG client calls
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Ontology lifecycle, integrity and schema parsing become EG client calls.** `knowledge_graph/ontology/lifecycle.py`, `ontology_integrity.py`, the pack/schema loaders (`domain_packs/pack_loader.py`, `models/schema_pack_loader.py`) and `extraction/extraction_schema.py` no longer parse or hash RDF/OWL/RDFS locally. Each becomes a typed call to the generated EG ontology-inspection client. | Generated-client conformance tests and a forbidden-import census confirm no local graph parsing remains in these modules.
      requirementAU-SEMANTICLANDED83a157bf120b
      AU-SEMANTIC-R006
      AU removes rdflib and submits typed payloads to EG instead
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU removes rdflib and submits typed payloads to EG instead.** AU's runtime modules that build RDF documents for validation, including the harness, workflow, SHACL, connector-certification, connector-manifest and team-sharing gates, submit typed request payloads to the generated EG client instead of constructing RDF graphs; the `rdflib` dependency and its extras are removed from AU. Split: size score above 6, more than 2 code roots named, each gate module has independent call sites and tests; children land one gate module at a time. | `tests/gates/test_epistemic_graph_schema_authority_cutover.py` statically forbids `rdflib`, `pyshacl`, `owlrl` and `owlready2` imports across AU runtime and test code.
      requirementAU-SEMANTICSPECIFIEDb8ef12acba3c
      AU-SEMANTIC-R006.1
      The harness gate submits a typed payload instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The harness gate submits a typed payload instead of an rdflib graph.** `agent_utilities/harness/harness_gate.py` no longer imports `rdflib`; it builds the EG `shacl_validate_ad_hoc` request from a typed payload (dict/dataclass of parsed fields) rather than an `rdflib.Graph()`. | A forbidden-import test over `harness_gate.py` fails on any `rdflib` import, and the gate's existing validation tests still pass against the typed payload path.
      requirementAU-SEMANTICLANDEDb8ef12acba3c
      AU-SEMANTIC-R006.2
      The workflow gate submits a typed payload instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The workflow gate submits a typed payload instead of an rdflib graph.** `agent_utilities/knowledge_graph/core/workflow_gate.py` no longer imports `rdflib`; it builds its EG validation request from a typed payload rather than an `rdflib.Graph()`. | A forbidden-import test over `workflow_gate.py` fails on any `rdflib` import, and the gate's existing tests still pass against the typed payload path.
      requirementAU-SEMANTICVERIFIEDeb94d8306a5b
      tests/unit/knowledge_graph/test_workflow_gate.py:201
      tests/unit/knowledge_graph/test_workflow_gate.py:218
      tests/unit/knowledge_graph/test_workflow_gate.py:236
      AU-SEMANTIC-R006.3
      The SHACL pipeline gate and pack loader submit typed payloads instead of rdflib graphs
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The SHACL pipeline gate and pack loader submit typed payloads instead of rdflib graphs.** `agent_utilities/knowledge_graph/pipeline/phases/shacl_gate.py` and `agent_utilities/knowledge_graph/domain_packs/pack_loader.py` no longer import `rdflib`; each builds its EG request from a typed payload rather than an `rdflib.Graph()`. | A forbidden-import test over both modules fails on any `rdflib` import, and their existing tests still pass against the typed payload path.
      requirementAU-SEMANTICVERIFIEDf235aa252a91
      tests/unit/knowledge_graph/pipeline/phases/test_shacl_gate_no_rdflib.py:22
      tests/unit/knowledge_graph/pipeline/phases/test_shacl_gate_no_rdflib.py:51
      tests/unit/knowledge_graph/pipeline/phases/test_shacl_gate_no_rdflib.py:76
      AU-SEMANTIC-R006.4
      The connector-certification gate submits a typed payload instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The connector-certification gate submits a typed payload instead of an rdflib graph.** `agent_utilities/knowledge_graph/integrations/connector_certification.py` no longer imports `rdflib`; it builds its EG validation request from a typed payload rather than an `rdflib.Graph()`. | A forbidden-import test over `connector_certification.py` fails on any `rdflib` import, and the gate's existing tests still pass against the typed payload path.
      requirementAU-SEMANTICVERIFIED98efc7009d5f
      tests/unit/knowledge_graph/integrations/test_connector_certification_no_rdflib.py:17
      tests/unit/knowledge_graph/integrations/test_connector_certification_no_rdflib.py:27
      AU-SEMANTIC-R006.5
      The connector-manifest gate and generation scripts submit typed payloads instead of rdflib graphs
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The connector-manifest gate and generation scripts submit typed payloads instead of rdflib graphs.** `agent_utilities/knowledge_graph/ontology/connector_manifest_gate.py` and the `scripts/generate_connector_manifests.py`/`generate_native_connector_manifest.py`/`check_connector_capability_bundles.py`/`generate_connector_capability_bundles.py` scripts no longer import `rdflib`. Each builds its EG request from a typed payload rather than an `rdflib.Graph()`. | Rollup: closes when children R006.5.1 to R006.5.5 are all verified. The gate module is EG-dependent (canonical hash), the scripts are independent call sites.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R006.5.1
      connector_manifest_gate.py submits typed payloads instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **connector_manifest_gate.py submits typed payloads instead of an rdflib graph.** `agent_utilities/knowledge_graph/ontology/connector_manifest_gate.py` no longer imports `rdflib`; `_compiled_manifest_graph` and the integrity hash use a typed payload. Depends on epistemic-graph: it must serve a canonical (URDNA2015-equivalent) ontology hash for a Turtle payload, because `ontology_integrity.canonical_hash` is the only rdflib consumer and has no engine-native replacement yet. | A forbidden-import test over `connector_manifest_gate.py` fails on any `rdflib` import, and its existing tests still pass against the typed payload path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R006.5.2
      generate_connector_manifests.py submits typed payloads instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **generate_connector_manifests.py submits typed payloads instead of an rdflib graph.** `scripts/generate_connector_manifests.py` no longer imports `rdflib`; its ontology class/property extraction and hashing consume typed payloads. Depends on epistemic-graph for the canonical ontology hash. | A forbidden-import test over `generate_connector_manifests.py` fails on any `rdflib` import, and its existing tests still pass against the typed payload path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R006.5.3
      generate_native_connector_manifest.py submits typed payloads instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **generate_native_connector_manifest.py submits typed payloads instead of an rdflib graph.** `scripts/generate_native_connector_manifest.py` no longer imports `rdflib`; its integrity digest uses the typed canonical-hash payload. Depends on epistemic-graph for the canonical ontology hash. | A forbidden-import test over `generate_native_connector_manifest.py` fails on any `rdflib` import, and its existing tests still pass against the typed payload path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R006.5.4
      check_connector_capability_bundles.py submits typed payloads instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **check_connector_capability_bundles.py submits typed payloads instead of an rdflib graph.** `scripts/check_connector_capability_bundles.py` no longer imports `rdflib`; the `sh:targetClass` check reads the shapes via a typed payload or the existing text extraction. | A forbidden-import test over `check_connector_capability_bundles.py` fails on any `rdflib` import, and its existing tests still pass against the typed payload path.
      requirementAU-SEMANTICVERIFIED4463e2ba37cc
      tests/unit/scripts/test_check_connector_capability_bundles_no_rdflib.py:25
      tests/unit/scripts/test_check_connector_capability_bundles_no_rdflib.py:35
      AU-SEMANTIC-R006.5.5
      generate_connector_capability_bundles.py submits typed payloads instead of an rdflib graph
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **generate_connector_capability_bundles.py submits typed payloads instead of an rdflib graph.** `scripts/generate_connector_capability_bundles.py` no longer imports `rdflib`; shapes parsing uses a typed payload or text extraction. | A forbidden-import test over `generate_connector_capability_bundles.py` fails on any `rdflib` import, and its existing tests still pass against the typed payload path.
      requirementAU-SEMANTICVERIFIEDfd044131b941
      tests/unit/scripts/test_generate_connector_capability_bundles_no_rdflib.py:19
      tests/unit/scripts/test_generate_connector_capability_bundles_no_rdflib.py:29
      AU-SEMANTIC-R006.6
      The team-sharing gate, remaining ontology modules and `rdflib` dependency removal close R006
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The team-sharing gate, remaining ontology modules and `rdflib` dependency removal close R006.** `agent_utilities/knowledge_graph/core/ontological_team_sharing.py`, `extraction/extraction_schema.py`, `observability/portfolio_intelligence.py`, `ontology/ontology_integrity.py` and `scripts/format_ttl.py`/`update_ontology_lock.py` no longer import `rdflib`, and the `rdflib` dependency and its extras are removed from AU's packaging metadata, closing `AU-SEMANTIC-R006`. | `tests/gates/test_epistemic_graph_schema_authority_cutover.py` statically forbids `rdflib`, `pyshacl`, `owlrl` and `owlready2` imports across AU runtime and test code, and passes with `rdflib` absent from AU's dependency metadata.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R007
      AU tests drop pyshacl and assert through EG shape validation
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU tests drop pyshacl and assert through EG shape validation.** AU test files no longer import `pyshacl` or use an `importorskip('pyshacl')` guard that silently skips the assertion; every shape assertion runs against the EG-served `shacl_validate_ad_hoc` method or a committed validation path. | A forbidden-import census over AU tests fails on any `pyshacl` import, and the affected tests execute, rather than skip, against served EG validation.
      requirementAU-SEMANTICLANDED981194f50ab4
      afe05ab38e0f
      AU-SEMANTIC-R008
      Reasoning-topology selection uses a served policy, not a local outcome store
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Reasoning-topology selection uses a served policy, not a local outcome store.** `agent_utilities/graph/reasoning/topology.py` selects a reasoning-graph topology, such as chain-of-thought or tree-of-thought, through a served, calibrated decision policy with explicit abstention rather than from its own self-reported outcome store; the local exponential-moving-average outcome store is deleted. Split producer-first: no served topology-decision-policy op exists yet to call; see `AU-SEMANTIC-R008.1`/`.2`. | `check_topology_authority.py` is extended to fail if topology selection reads from a local outcome store instead of the served decision policy.
      requirementAU-SEMANTICSPECIFIEDb8ef12acba3c
      AU-SEMANTIC-R008.1
      A typed topology decision-policy client contract fails closed while no served policy exists
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **A typed topology decision-policy client contract fails closed while no served policy exists.** `api/topology_decision_policy_client.py` declares the typed request/response shape (including an explicit abstention response) and `TopologyDecisionPolicyClient` Protocol `topology.py` will call once a served, calibrated decision policy is available, and `resolve_topology_decision_policy_client()` raises `TopologyDecisionPolicyUnavailableError` rather than falling back to the local EMA outcome store while no such policy is served. | A test confirms `resolve_topology_decision_policy_client()` raises with no served policy client installed, and that the Protocol/dataclasses have the declared shape including the abstention case.
      requirementAU-SEMANTICVERIFIEDb8ef12acba3c
      tests/unit/api/test_topology_decision_policy_client.py:16
      tests/unit/api/test_topology_decision_policy_client.py:31
      tests/unit/api/test_topology_decision_policy_client.py:40
      tests/unit/api/test_topology_decision_policy_client.py:55
      tests/unit/api/test_topology_decision_policy_client.py:66
      AU-SEMANTIC-R008.2
      Topology selection consumes the served decision policy and the local outcome store is deleted
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Topology selection consumes the served decision policy and the local outcome store is deleted.** Once a served, calibrated topology decision policy is reachable, `topology.py`'s `record_topology_outcome`/selection path is wired to call `resolve_topology_decision_policy_client()` instead of writing the local exponential-moving-average outcome store, and the EMA store is deleted, closing `AU-SEMANTIC-R008`. | `check_topology_authority.py` is extended to fail if topology selection reads from a local outcome store instead of the served decision policy.
      requirementAU-SEMANTICSPECIFIEDb8ef12acba3c
      AU-SEMANTIC-R008.2.2
      `topology.py` calls the served decision-policy client instead of the local EMA store
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`topology.py` calls the served decision-policy client instead of the local EMA store.** `record_topology_outcome()` in `agent_utilities/graph/reasoning/topology.py` is wired to call `resolve_topology_decision_policy_client()` for its outcome update and the selection path consumes the client's decision, rather than reading/writing the local EMA state. **BLOCKED (epistemic-graph):** the installed engine client has no `epistemic_graph.generated.reasoning_policy` module and no `ReasoningPolicyClient.select_topology` method (the served `select_topology` decision-policy op), so `resolve_topology_decision_policy_client()` fails closed with `TopologyDecisionPolicyUnavailableError`; wiring `topology.py` to it would make selection permanently unavailable. Unblock by landing the served `select_topology` op and regenerated client in epistemic-graph. | A test confirms `record_topology_outcome()` calls `resolve_topology_decision_policy_client()` and performs no local EMA read/write.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R008.2.3
      The local EMA outcome-store code is deleted from `topology.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The local EMA outcome-store code is deleted from `topology.py`.** Once `AU-SEMANTIC-R008.2.2` lands, the now-dead local exponential-moving-average state and its helper code are removed from `agent_utilities/graph/reasoning/topology.py`. | `check_topology_authority.py` passes with no local-outcome-store code present in `topology.py`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R009
      The local engine facade is deleted in favor of the generated EG client
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The local engine facade is deleted in favor of the generated EG client.** AU removes its local engine facade and orchestration modules, including `kg/core/engine.py` and its task, ingestion, memory, query, resolver, transport, lock and breaker companions, `kg/facade.py`, and `kg/orchestration/engine_*.py`, and reaches the equivalent functionality only through the generated EG client. Split producer-first: this requirement depends on EG's not-yet-shipped `runnable_skill_derivation` op (tracked by `EG-REPO-INGEST-R002`'s `skill_workflow_ingest` capability); see `AU-SEMANTIC-R009.1`/`.2`. | A caller-inventory and import census confirm every public entry point that used the deleted facade now resolves through the generated client with equivalent authorization and error semantics.
      requirementAU-SEMANTICLANDED703c3eb9d88d
      AU-SEMANTIC-R009.1
      A typed `runnable_skill_derivation` client contract fails closed while EG's op is absent
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **A typed `runnable_skill_derivation` client contract fails closed while EG's op is absent.** `api/skill_derivation_client.py` declares the typed request/response shape and `RunnableSkillDerivationClient` Protocol AU will call once EG's generated `SourceIngest` client exposes `runnable_skill_derivation` (producer: `EG-REPO-INGEST-R002`), and `resolve_runnable_skill_derivation_client()` raises `RunnableSkillDerivationUnavailableError` rather than deriving locally or returning a default while that op is absent. | A test confirms `resolve_runnable_skill_derivation_client()` raises with EG's generated client absent or lacking the op, and that the Protocol/dataclasses have the declared shape.
      requirementAU-SEMANTICLANDED4eac8c6dc419
      AU-SEMANTIC-R009.2
      AU's engine-facade callers consume the shipped `runnable_skill_derivation` op
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU's engine-facade callers consume the shipped `runnable_skill_derivation` op.** Once `EG-REPO-INGEST-R002` ships `runnable_skill_derivation` on the generated `SourceIngest` client, `resolve_runnable_skill_derivation_client()` is wired to the real call, and the local engine-facade modules this requirement names are deleted, closing `AU-SEMANTIC-R009`. Split: wiring the real call and deleting the facade (`kg/core/engine.py` and its task/ingestion/memory/query/resolver/transport/lock/breaker companions, `kg/facade.py`, `kg/orchestration/engine_*.py`) are independent steps with more than 2 code roots in the deletion; see `AU-SEMANTIC-R009.2.1`/`.2.2`. | A caller-inventory and import census confirm every public entry point that used the deleted facade now resolves through the generated client with equivalent authorization and error semantics.
      requirementAU-SEMANTICLANDEDb8ef12acba3c
      AU-SEMANTIC-R009.2.1
      `resolve_runnable_skill_derivation_client()` wires the real call when EG's op is present
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`resolve_runnable_skill_derivation_client()` wires the real call when EG's op is present.** `api/skill_derivation_client.py`'s resolver calls the installed generated `SourceIngestClient.runnable_skill_derivation` method and returns its typed response when the op is present on the installed client, continuing to raise `RunnableSkillDerivationUnavailableError` only while it is genuinely absent (import failure or missing attribute); it no longer refuses a detected, present op. | A test installs a fake generated client exposing `runnable_skill_derivation` and asserts the resolver returns a working client that delegates to it, while a test with the op absent still raises.
      requirementAU-SEMANTICVERIFIEDb8ef12acba3c
      tests/unit/api/test_skill_derivation_client.py:63
      AU-SEMANTIC-R009.2.2
      The local engine-facade modules are deleted once callers consume the wired client
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The local engine-facade modules are deleted once callers consume the wired client.** `kg/core/engine.py` and its task, ingestion, memory, query, resolver, transport, lock and breaker companions, `kg/facade.py`, and `kg/orchestration/engine_*.py` are deleted, and every caller that used them is migrated to `resolve_runnable_skill_derivation_client()` or the generated EG client directly, closing `AU-SEMANTIC-R009.2` and `AU-SEMANTIC-R009`. | A caller-inventory and import census confirm every public entry point that used the deleted facade now resolves through the generated client with equivalent authorization and error semantics.
      requirementAU-SEMANTICLANDEDb8ef12acba3c
      AU-SEMANTIC-R010
      Graph-compute and session facades route through the generated EG client
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Graph-compute and session facades route through the generated EG client.** AU's graph-compute and session modules, including `kg/core/graph_compute.py`, `session.py`, `epistemic_row.py`, `ogm.py`, the `company_brain*` modules, and `core/registry/kg_adapter.py`, are replaced by calls into the generated EG client, with AU keeping exactly one typed composition of that client under `api/`. | Caller-parity tests confirm callers of the removed facades now use the single `api/` client composition with equivalent behavior.
      requirementAU-SEMANTICLANDED5d44f029d3fd
      AU-SEMANTIC-R010.1
      AU holds one typed composition of the generated EG client for graph-compute/session ops
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU holds one typed composition of the generated EG client for graph-compute/session ops.** AU defines `GraphComputeClient`/`GeneratedGraphComputeSurface` under `api/graph_compute_client.py` as the single typed model callers will compose against for the surface `kg/core/graph_compute.py`, `session.py`, `epistemic_row.py`, `ogm.py`, the `company_brain*` modules, and `core/registry/kg_adapter.py` currently serve locally; it holds no local graph-compute/session logic of its own. | A negative test confirms construction fails closed with `GraphComputeClientUnavailable` when the installed EG client is `None` or does not implement the required surface, and succeeds and delegates when it does.
      requirementAU-SEMANTICLANDED5d44f029d3fd
      AU-SEMANTIC-R011
      Durable jobs, queues and state move to EG
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Durable jobs, queues and state move to EG.** AU's durable-work modules, including `kg/core/work_durability.py` and its queue-backend, scheduler, drain, ingest-routing, event and bitemporal companions, its ingest/analytics worker entry points, `core/shared_resource_leases.py`, and `core/state_store.py`/`chat_persistence.py`, are replaced by calls to EG's served durable-job, capacity-lease and state methods; AU holds no durable queue or state authority of its own. | A restart/fault test confirms durable work and state survive through EG rather than a local store, and the removed worker scripts are absent.
      requirementAU-SEMANTICSPECIFIEDb881d5bca432
      AU-SEMANTIC-R011.2
      Delete `agent_utilities/knowledge_graph/core/queue_backend.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/queue_backend.py`.** The local queue-backend abstraction is removed and its importers switched to the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/core/queue_backend.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.3
      Delete `agent_utilities/knowledge_graph/core/kafka_queue_backend.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/kafka_queue_backend.py`.** The local Kafka queue-backend implementation is removed and its importers switched to the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/core/kafka_queue_backend.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.4
      Delete `agent_utilities/knowledge_graph/core/postgres_queue_backend.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/postgres_queue_backend.py`.** The local Postgres queue-backend implementation is removed and its importers switched to the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/core/postgres_queue_backend.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.5
      Delete `agent_utilities/knowledge_graph/core/worker_scheduler.py` (rollup of R011.5.1 to R011.5.5)
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/worker_scheduler.py` (rollup of R011.5.1 to R011.5.5).** The local work-item scheduler companion is removed and its importers switched to the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/core/worker_scheduler.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.5.1
      Repoint `engine_tasks.py` off the local worker scheduler
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint `engine_tasks.py` off the local worker scheduler.** `knowledge_graph/core/engine_tasks.py` stops importing `WorkerRegistry`, `AdmissionPolicy`, `scheduler_config_from_env`, `resolve_engine_shard_writers` and `durable_shard_writers` from `worker_scheduler.py` (five import sites) and takes worker admission, lane floors and shard-writer width from EG's served durable-job and capacity-lease methods. | A census confirms ``engine_tasks.py`` no longer imports `knowledge_graph/core/worker_scheduler`, and its tests pass against the EG-served path. **BLOCKED on an epistemic-graph capability:** the installed client and EG origin/main serve only `SubmitWorkItem` admission and resource capacity leases (`_validate_capacity_lease_fences`); they serve no worker registry (`WorkerRegistry`), no reserved-worker fair admission decision (`AdmissionPolicy`), no scheduler config / lane-floor policy (`scheduler_config_from_env`) and no shard-writer width (`resolve_engine_shard_writers`, `durable_shard_writers`). EG must add those served methods before this row can be delivered.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.5.2
      Repoint `ingest_routing.py` off the local worker scheduler
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint `ingest_routing.py` off the local worker scheduler.** `knowledge_graph/core/ingest_routing.py` stops importing `durable_shard_writers` and reads the engine's shard-writer width from the EG-served path. | A census confirms ``ingest_routing.py`` no longer imports `knowledge_graph/core/worker_scheduler`, and its tests pass against the EG-served path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.5.3
      Repoint scheduler tests, part 1
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint scheduler tests, part 1.** `tests/unit/knowledge_graph/test_worker_scheduler.py` and `test_admission_policy_live_path.py` are deleted or rewritten against the EG-served admission path. | A census confirms `those tests` no longer imports `knowledge_graph/core/worker_scheduler`, and its tests pass against the EG-served path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.5.4
      Repoint scheduler tests, part 2
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint scheduler tests, part 2.** `test_ingest_graph_routing.py`, `test_ingest_tail_optimization.py`, `test_workitem_claim_metrics.py` and `tests/unit/mcp/test_graphos_bootstrap_isolation.py` stop patching or importing `worker_scheduler`. | A census confirms `those tests` no longer imports `knowledge_graph/core/worker_scheduler`, and its tests pass against the EG-served path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.5.5
      Delete the module once no importer remains
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete the module once no importer remains.** `knowledge_graph/core/worker_scheduler.py` is removed along with its entries in `docs/concepts.yaml`, `docs/architecture/*.md`, `scripts/constrained_parallelism_gate.sh` and the R020 duplicate inventory, and a `@pytest.mark.spec` deletion test binds the absence. | A forbidden-module census confirms `knowledge_graph/core/worker_scheduler.py` is absent and nothing under `agent_utilities/` or `scripts/` imports it.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.6
      Delete `agent_utilities/knowledge_graph/core/chunked_drain.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/chunked_drain.py`.** The local drain companion is removed and its importers switched to the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/core/chunked_drain.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.7
      Delete `agent_utilities/knowledge_graph/core/ingest_routing.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/ingest_routing.py`.** The local ingest-routing companion is removed and its importers switched to the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/core/ingest_routing.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.8
      Delete `agent_utilities/knowledge_graph/core/bitemporal.py` (rollup of R011.8.1 to R011.8.5)
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/core/bitemporal.py` (rollup of R011.8.1 to R011.8.5).** The local bitemporal companion is removed once every importer is repointed to a served replacement. | A forbidden-module census confirms `knowledge_graph/core/bitemporal.py` is absent and nothing under `agent_utilities/` or `scripts/` imports it.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.8.1
      Repoint `core/engine.py` off local bitemporal stamping
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint `core/engine.py` off local bitemporal stamping.** `engine.py` stops importing `stamp_bitemporal` (two sites: node and relationship creation) and takes `storage_time`/`event_time`/`valid_from`/`valid_to` stamping from the EG-served write path. | A census confirms `engine.py` no longer imports `knowledge_graph/core/bitemporal`, and its tests pass against the served path. **BLOCKED on a served replacement:** the installed epistemic-graph client and EG origin/main serve no write-time bitemporal stamping (`stamp_bitemporal`); EG must add it before this row can be delivered, and the caller must not be made to fail closed in its place.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.8.2
      Repoint `memory/learning_engine.py` off local bitemporal stamping
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint `memory/learning_engine.py` off local bitemporal stamping.** `learning_engine.py` stops importing `stamp_bitemporal` (two sites) and gets edit-edge validity stamping from the EG-served write path. | A census confirms `learning_engine.py` no longer imports `knowledge_graph/core/bitemporal`, and its tests pass against the served path. **BLOCKED on a served replacement:** the installed epistemic-graph client and EG origin/main serve no write-time bitemporal stamping (`stamp_bitemporal`); EG must add it before this row can be delivered, and the caller must not be made to fail closed in its place.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.8.3
      Repoint writeback and envelope ingest off source-validity stamping
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint writeback and envelope ingest off source-validity stamping.** `enrichment/writeback/core.py` (`stamp_bitemporal`) and `ingestion/envelope_ingest.py` (`stamp_valid_from_source`, `stamp_valid_until_from_source`) stop importing the local module and take valid-from/valid-until stamping from the EG-served ingest path. | A census confirms those files no longer imports `knowledge_graph/core/bitemporal`, and its tests pass against the served path. **BLOCKED on a served replacement:** the installed epistemic-graph client and EG origin/main serve no source-reported valid-from/valid-until stamping (`stamp_valid_from_source`, `stamp_valid_until_from_source`); EG must add it before this row can be delivered, and the caller must not be made to fail closed in its place.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.8.4
      Repoint `orchestration/engine_query.py` off local as-of filtering and supersession
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Repoint `orchestration/engine_query.py` off local as-of filtering and supersession.** `engine_query.py` stops importing `filter_as_of`, `resolve_precedence` and `supersede` and uses EG's served as-of read and supersession methods. | A census confirms `engine_query.py` no longer imports `knowledge_graph/core/bitemporal`, and its tests pass against the served path. **BLOCKED on a served replacement:** the installed epistemic-graph client and EG origin/main serve no as-of row filter (`filter_as_of`) or event-time contradiction precedence/supersession (`resolve_precedence`, `supersede`); EG must add it before this row can be delivered, and the caller must not be made to fail closed in its place.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.8.5
      Delete the module once no importer remains
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete the module once no importer remains.** `knowledge_graph/core/bitemporal.py` is removed along with `tests/unit/knowledge_graph/test_kg_2_11_bitemporal.py` and its entry in `tests/gates/test_boundary_r018_r022_eg_duplicate_inventory.py`, and a `@pytest.mark.spec` deletion test binds the absence. | A forbidden-module census confirms `knowledge_graph/core/bitemporal.py` is absent and nothing under `agent_utilities/` or `scripts/` imports it.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.9
      Delete `agent_utilities/knowledge_graph/ingest_worker.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/ingest_worker.py`.** The local ingest-worker entry point is removed in favor of the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/ingest_worker.py` is absent.
      requirementAU-SEMANTICVERIFIEDb02e3995039e
      tests/gates/test_semantic_r011_9_deleted.py:19
      tests/gates/test_semantic_r011_9_deleted.py:29
      tests/gates/test_semantic_r011_9_deleted.py:60
      AU-SEMANTIC-R011.10
      Delete `agent_utilities/knowledge_graph/analytics_worker.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/analytics_worker.py`.** The local analytics-worker entry point is removed in favor of the EG-served durable-job path. | A forbidden-module census confirms `knowledge_graph/analytics_worker.py` is absent.
      requirementAU-SEMANTICVERIFIED92974bae8c3e
      tests/gates/test_semantic_r011_10_deleted.py:33
      tests/gates/test_semantic_r011_10_deleted.py:42
      tests/gates/test_semantic_r011_10_deleted.py:62
      AU-SEMANTIC-R011.11
      Delete `agent_utilities/core/shared_resource_leases.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/core/shared_resource_leases.py`.** The local capacity-lease module is removed and its importers switched to EG's served capacity-lease methods. | A forbidden-module census confirms `core/shared_resource_leases.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.12
      Delete `agent_utilities/core/state_store.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/core/state_store.py`.** The local state-store module is removed and its importers switched to EG's served state methods. | A forbidden-module census confirms `core/state_store.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R011.13
      Delete `agent_utilities/core/chat_persistence.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/core/chat_persistence.py`.** The local chat-persistence module is removed and its importers switched to EG's served state methods. | A forbidden-module census confirms `core/chat_persistence.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R012
      Tenancy, topology and admission authority move to EG
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Tenancy, topology and admission authority move to EG.** AU's tenancy, shard-topology, cluster-discovery, scoped-read and admission modules, including `tenant_sharing.py`, `tenant_registry.py`, `tenant_engine_pool.py`, `shard_topology.py`, `cluster_discovery.py`, `placement_catalog.py`, `secured_reads.py`, `cypher_scoping.py`, `host_lock.py`, `file_lock.py`, the `security/*_rbac_admission` modules, `admission_authority.py`, `permissions_kernel.py` and `entitlements.py`, are replaced by calls to EG's served identity-RBAC-admission and graph-ACL-isolation capabilities. | Negative tenant-isolation and admission tests confirm access decisions are made by the served EG capability and fail closed when it is unavailable.
      requirementAU-SEMANTICLANDED8b325ddf1818
      AU-SEMANTIC-R013
      Reasoning and analytics duplicates are deleted only with proven EG parity
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Reasoning and analytics duplicates are deleted only with proven EG parity.** AU's local reasoning and graph-analytics modules, including `formal_reasoning_core.py`, `graph_primitives.py`, `inference_engine.py`, `reasoner.py`, `semantic_subsumption.py`, the topological, spectral, synergy, analogy, hypergraph, blast-radius, natural-language-query, hydration, world-model, ownership-claim and fingerprint modules, and the `kg/maintenance`, `id_management`, `argumentation` and `actions` packages, are deleted only after each one has documented, per-method parity evidence against its EG-native replacement. Split: size score above 6, more than 2 code roots named; children land the typed migration-scope manifest first, then per-module parity reports and deletion one group at a time. | A per-method parity report pairs each deleted AU function with its EG-native replacement and a passing equivalence test before the deletion lands.
      requirementAU-SEMANTICVERIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R013.1
      The AU-SEMANTIC-R013 core-reasoning migration scope is a typed, validated manifest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The AU-SEMANTIC-R013 core-reasoning migration scope is a typed, validated manifest.** `agent_utilities/core/r013_migration_scope.py` enumerates the core reasoning modules (`formal_reasoning_core.py`, `graph_primitives.py`, `inference_engine.py`, `reasoner.py`, `semantic_subsumption.py`) in this first slice of the R013 migration scope as a typed tuple of repository-relative paths, with a validator that fails loud when a listed path is absent from the checkout, so the scope cannot silently drift from the requirement prose before the per-method parity reports and deletion children land. | `tests/unit/core/test_r013_migration_scope.py` asserts every listed path exists in the checkout and that the validator refuses (raises) on a manifest naming a missing path.
      requirementAU-SEMANTICVERIFIED1558cd9d0726
      tests/unit/core/test_r013_migration_scope.py:17
      tests/unit/core/test_r013_migration_scope.py:23
      tests/unit/core/test_r013_migration_scope.py:28
      AU-SEMANTIC-R014
      Ingestion commit and derivation logic moves to EG's SourceIngest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Ingestion commit and derivation logic moves to EG's SourceIngest.** The EG-owned half of AU's ingestion pipeline, including envelope ingest, change envelope, evidence spine, semantic event model, object-centric derivation, process conformance, embedding admission, GPU slot scheduling, promotion, supersession, dead letter, hydration manifest, skill/workflow ingest and governed documentation, is removed from AU and performed by the generated `SourceIngest` method on EG; `kg/ingestion/engine.py` is dissolved rather than kept as a single module. | Caller-parity tests confirm ingestion commit and derivation reach the served `SourceIngest` method with no remaining AU authority over the deleted modules.
      requirementAU-SEMANTICLANDED743e98cda405
      AU-SEMANTIC-R015
      Enterprise source sync becomes an SDK runner over EG SourceIngest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Enterprise source sync becomes an SDK runner over EG SourceIngest.** `kg/core/source_sync.py` is replaced by an SDK-hosted runner that calls EG's `SourceIngest` method and EG-provided manifest presets. The related external-graph, GraphQL-connection, Debezium-envelope, event-log and OCEL adapters, `governance_import.py`, `ecosystem/ea_clients.py`, `data_prep/**`, and `core/connection_profiler.py`/`data_prep_runtime.py`/`source_resolver.py` move out of AU accordingly. Split producer-first: this requirement depends on EG's not-yet-shipped `workflow_derivation` op (tracked by `EG-REPO-INGEST-R002`'s `skill_workflow_ingest` capability). See `AU-SEMANTIC-R015.1`/`.2`. | Source-ingestion ACL/admission negative tests confirm a denied source fails closed through the SDK runner and served EG manifest.
      requirementAU-SEMANTICLANDED703c3eb9d88d
      AU-SEMANTIC-R015.1
      A typed `workflow_derivation` client contract fails closed while EG's op is absent
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **A typed `workflow_derivation` client contract fails closed while EG's op is absent.** `api/workflow_derivation_client.py` declares the typed request/response shape and `WorkflowDerivationClient` Protocol the SDK-hosted source-sync runner will call once EG's generated `SourceIngest` client exposes `workflow_derivation` (producer: `EG-REPO-INGEST-R002`), and `resolve_workflow_derivation_client()` raises `WorkflowDerivationUnavailableError` rather than deriving locally via `kg/core/source_sync.py` or returning a default while that op is absent. | A test confirms `resolve_workflow_derivation_client()` raises with EG's generated client absent or lacking the op, and that the Protocol/dataclasses have the declared shape.
      requirementAU-SEMANTICLANDED4eac8c6dc419
      AU-SEMANTIC-R015.2
      The SDK-hosted source-sync runner consumes the shipped `workflow_derivation` op
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The SDK-hosted source-sync runner consumes the shipped `workflow_derivation` op.** Once `EG-REPO-INGEST-R002` ships `workflow_derivation` on the generated `SourceIngest` client, `resolve_workflow_derivation_client()` is wired to the real call and `kg/core/source_sync.py` and its listed adapters are removed from AU, closing `AU-SEMANTIC-R015`. Split producer-first: this requirement depends on EG's not-yet-shipped `workflow_derivation` op; `AU-SEMANTIC-R015.2.1` ships the typed migration-scope manifest the later cutover-and-deletion child builds against once the producer op ships. | Source-ingestion ACL/admission negative tests confirm a denied source fails closed through the SDK runner and served EG manifest.
      requirementAU-SEMANTICVERIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R015.2.1
      The AU-SEMANTIC-R015.2 migration scope is a typed, validated manifest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The AU-SEMANTIC-R015.2 migration scope is a typed, validated manifest.** `agent_utilities/core/r015_2_migration_scope.py` enumerates `kg/core/source_sync.py` and its named adapters (`governance_import.py`, `ecosystem/ea_clients.py`, `connection_profiler.py`, `data_prep_runtime.py`, `source_resolver.py`) as a typed tuple of repository-relative paths, with a validator that fails loud when a listed path is absent from the checkout, so the scope cannot silently drift from the requirement prose before the EG-producer-blocked cutover and deletion land. | `tests/unit/core/test_r015_2_migration_scope.py` asserts every listed path exists in the checkout and that the validator refuses (raises) on a manifest naming a missing path.
      requirementAU-SEMANTICVERIFIED1558cd9d0726
      tests/unit/core/test_r015_2_migration_scope.py:17
      tests/unit/core/test_r015_2_migration_scope.py:23
      tests/unit/core/test_r015_2_migration_scope.py:28
      AU-SEMANTIC-R016
      Document, session and feed source ingestion moves to the SDK
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Document, session and feed source ingestion moves to the SDK.** AU's document, repository, feed and conversation-ingestion modules, including its hosted-repository indexer, `conversation_ingestion.py`, `kg/ingestion/web_fetch.py`/`package_install_ingest.py`/`repo_*`, the top-level `ingestion/**`, `automation/worldmodel_pipeline.py`/`feed_sources.py`/`file_watcher.py`, `sdd/watcher.py`, the non-model-backed half of `kg/kb/**`, `kg/extraction/readers*`/`pdf`, and `ecosystem/media/**`, move to the connector SDK. Split: size score above 6, more than 2 code roots named, and cross-repo (AU → connector SDK). Children land producer (SDK) first, then the AU importer switch and deletion; `AU-SEMANTIC-R016.1` ships the AU-side typed migration-scope manifest the later children build against. | Caller-parity tests confirm document, session and feed ingestion reach the SDK connector path with equivalent behavior after the AU modules are removed.
      requirementAU-SEMANTICLANDED76d440ff79dc
      AU-SEMANTIC-R016.1
      The AU-SEMANTIC-R016 migration scope is a typed, validated manifest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The AU-SEMANTIC-R016 migration scope is a typed, validated manifest.** `agent_utilities/core/r016_migration_scope.py` enumerates the AU modules in the R016 migration scope as a typed tuple of repository-relative paths, with a validator that fails loud when a listed path is absent from the checkout, so the scope cannot silently drift from the requirement prose before the SDK copy and AU deletion children land. | `tests/unit/core/test_r016_migration_scope.py` asserts every listed path exists in the checkout and that the validator refuses (raises) on a manifest naming a missing path.
      requirementAU-SEMANTICLANDED117359dabc9a
      1558cd9d0726
      76d440ff79dc
      AU-SEMANTIC-R017
      Vendor enrichment extraction and writeback move to the SDK and EG
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Vendor enrichment extraction and writeback move to the SDK and EG.** AU's vendor-enrichment extractors under `kg/enrichment/extractors/**` become SDK manifest presets and adapters, its writeback logic under `kg/enrichment/writeback/**` moves behind the SDK `writeback/` module and EG's served `WriteBack` method, and `enrichment/git_history.py`/`source_adapters.py` move into the SDK's repository adapter. | Caller-parity and generated-contract tests confirm enrichment and writeback calls reach the SDK/EG path with no remaining AU-local writeback authority.
      requirementAU-SEMANTICLANDED2e5c8d7f2d8b
      AU-SEMANTIC-R018
      Deterministic derivation modules move to EG
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Deterministic derivation modules move to EG.** AU's deterministic derivation modules, including `kg/enrichment/semantic.py`/`relation_projection.py`/`materialize.py`/`git_coupling.py`/`graph_collapse.py`/`provenance.py`, `kg/assimilation/**`, `kg/etl/**`, `kg/streams/**`, and the time-series portion of `kg/memory/**`, are removed from AU and performed by EG. Split: size score above 6, more than 2 code roots named. `AU-SEMANTIC-R018.1` ships the typed migration-scope manifest for the named `kg/enrichment` modules the later deletion and forbidden-module-census children build against. | Caller-parity tests and a forbidden-module census confirm the deleted paths resolve only through the served EG derivation methods.
      requirementAU-SEMANTICVERIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R018.1
      The AU-SEMANTIC-R018 enrichment migration scope is a typed, validated manifest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The AU-SEMANTIC-R018 enrichment migration scope is a typed, validated manifest.** `agent_utilities/core/r018_migration_scope.py` enumerates the named `kg/enrichment` derivation modules (`semantic.py`, `relation_projection.py`, `materialize.py`, `git_coupling.py`, `graph_collapse.py`, `provenance.py`) in this first slice of the R018 migration scope as a typed tuple of repository-relative paths, with a validator that fails loud when a listed path is absent from the checkout, so the scope cannot silently drift from the requirement prose before the `kg/assimilation`/`kg/etl`/`kg/streams` children, deletion, and forbidden-module census land. | `tests/unit/core/test_r018_migration_scope.py` asserts every listed path exists in the checkout and that the validator refuses (raises) on a manifest naming a missing path.
      requirementAU-SEMANTICVERIFIED1558cd9d0726
      tests/unit/core/test_r018_migration_scope.py:17
      tests/unit/core/test_r018_migration_scope.py:23
      tests/unit/core/test_r018_migration_scope.py:28
      AU-SEMANTIC-R019
      Remaining EG-bound standardization, infra and governance modules move out
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Remaining EG-bound standardization, infra and governance modules move out.** AU's remaining EG-bound modules, including `kg/standardization/**` excluding drift detection, `kg/infra/**`, `kg/quantum/**`, `kg/security/**`, `protocols/enterprise/**`, the `ecosystem/ard_*` modules, `observability/trace_ontology.py`/`self_ingest.py`/`audit_logger.py`, `governance/relational_authority.py`, and `research/placement_mining.py`, are removed from AU and their function is performed by EG. | A forbidden-module census and caller-parity tests confirm these modules are absent from AU and equivalent behavior is served by EG.
      requirementAU-SEMANTICSPECIFIED2e5c8d7f2d8b
      AU-SEMANTIC-R019.2
      Delete `agent_utilities/observability/trace_ontology.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/observability/trace_ontology.py`.** The local trace-ontology module (including `TraceCursor`/`load_trace_cursor`) is removed and its importers switched to EG's served equivalent. | A forbidden-module census confirms `observability/trace_ontology.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.3
      Delete `agent_utilities/observability/self_ingest.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/observability/self_ingest.py`.** The local self-ingest module is removed and its importers switched to EG's served equivalent. Split: four production importers (`__main__.py`, `gateway/daemon.py`, `orchestration/engine.py`, `observability/__init__.py`) and two test files (`tests/unit/test_self_ingest.py`, `tests/gates/test_r028x_module_census.py`) need log-handler install and `emit_run_trace` behaviour that has no served EG replacement yet. Each importer is repointed in its own child before the module is deleted. See `AU-SEMANTIC-R019.3.1` to `.5`. | A forbidden-module census confirms `observability/self_ingest.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.3.1
      `__main__.py` installs self-ingest logging through the EG-served client
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`__main__.py` installs self-ingest logging through the EG-served client.** `agent_utilities/__main__.py`'s `install_self_ingest_logging` call is repointed; the missing replacement is an EG-served OTLP log and RunTrace ingestion client (a generated `SelfIngest`/telemetry-ingest op on the EG client or SDK), which no served EG surface provides today, so this caller must be repointed to it once it ships and must not be stubbed or made to fail closed. | A test asserts `agent_utilities/__main__.py` does not import `observability.self_ingest`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.3.2
      `gateway/daemon.py` installs self-ingest logging through the EG-served client
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`gateway/daemon.py` installs self-ingest logging through the EG-served client.** `agent_utilities/gateway/daemon.py`'s `install_self_ingest_logging` call is repointed; the missing replacement is an EG-served OTLP log and RunTrace ingestion client (a generated `SelfIngest`/telemetry-ingest op on the EG client or SDK), which no served EG surface provides today, so this caller must be repointed to it once it ships and must not be stubbed or made to fail closed. | A test asserts `gateway/daemon.py` does not import `observability.self_ingest`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.3.3
      `orchestration/engine.py` exports run traces through the EG-served client
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`orchestration/engine.py` exports run traces through the EG-served client.** `_export_self_ingest_run_trace`'s `emit_run_trace` call is repointed; the missing replacement is an EG-served OTLP log and RunTrace ingestion client (a generated `SelfIngest`/telemetry-ingest op on the EG client or SDK), which no served EG surface provides today, so this caller must be repointed to it once it ships and must not be stubbed or made to fail closed. | A test asserts `orchestration/engine.py` does not import `observability.self_ingest`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.3.4
      `observability/__init__.py` no longer re-exports the self-ingest sink API
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`observability/__init__.py` no longer re-exports the self-ingest sink API.** The `from .self_ingest import ...` block and the matching `__all__` entries are removed after every consumer of those names is repointed; the missing replacement is an EG-served OTLP log and RunTrace ingestion client (a generated `SelfIngest`/telemetry-ingest op on the EG client or SDK), which no served EG surface provides today, so this caller must be repointed to it once it ships and must not be stubbed or made to fail closed. | A test asserts `observability/__init__.py` does not import `self_ingest`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.3.5
      `observability/self_ingest.py` is deleted
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`observability/self_ingest.py` is deleted.** With no importer left after `AU-SEMANTIC-R019.3.1` to `.4`, the module, `tests/unit/test_self_ingest.py`, its entries in `tests/gates/test_r028x_module_census.py`, and its `docs/concepts.yaml` references are removed. | A forbidden-module census confirms `observability/self_ingest.py` is absent and nothing under `agent_utilities/` or `scripts/` imports it.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.4
      Delete `agent_utilities/observability/audit_logger.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/observability/audit_logger.py`.** The local audit-logger module is removed and its importers switched to EG's served equivalent. | A forbidden-module census confirms `observability/audit_logger.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.5
      Delete `agent_utilities/governance/relational_authority.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/governance/relational_authority.py`.** The local relational-authority module is removed and its importers switched to EG's served equivalent. | A forbidden-module census confirms `governance/relational_authority.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.6
      Delete `agent_utilities/knowledge_graph/research/placement_mining.py`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Delete `agent_utilities/knowledge_graph/research/placement_mining.py`.** The local placement-mining module is removed and its importers switched to EG's served equivalent. Split: three production importer surfaces (`core/engine_tasks.py`, `research/loop_controller.py`, `mcp/tools/state_tools.py`) plus the generated action manifests, the `PLACEMENT_CONTROL_LOOP_ENABLED` flag and five test files have no EG replacement to repoint to, so each surface is removed in its own child before the module itself is deleted; see `AU-SEMANTIC-R019.6.1` to `.4`. | A forbidden-module census confirms `knowledge_graph/research/placement_mining.py` is absent and prior importers' tests pass against the EG path.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.6.1
      The reactive placement-mining tick is removed from the engine scheduler
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The reactive placement-mining tick is removed from the engine scheduler.** `_placement_mining_subscription`/`_tick_placement_mining_reactive` and the `placement_mining_reactive` maintenance job registration in `knowledge_graph/core/engine_tasks.py`, and its job-name entry in `core/schedule_engine.py`, are removed along with `tests/unit/graph/test_engine_subscription_reactive.py`'s placement-mining case and the related `test_concept_matcher.py` note. | A test asserts `engine_tasks.py` and `schedule_engine.py` contain no `placement_mining` reference and the engine's scheduled-job set no longer lists `placement_mining_reactive`.
      requirementAU-SEMANTICVERIFIED6b889c64f003
      tests/gates/test_au_semantic_r019_6_1_tick_removed.py:18
      tests/gates/test_au_semantic_r019_6_1_tick_removed.py:24
      AU-SEMANTIC-R019.6.2
      The `placement_control` stage and its setting are removed from the loop controller and config
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The `placement_control` stage and its setting are removed from the loop controller and config.** Split: the setting is referenced by seven files (`research/loop_controller.py`, `core/config.py`, `research/placement_mining.py` and the tests `test_loop_controller.py`, `test_config.py`, `test_config_generator.py`, `test_placement_mining.py`), more than one bite-sized change; see `AU-SEMANTIC-R019.6.2.1` and `.2`. | A test asserts a loop cycle report has no `placement_control` key and `config` has no `placement_control_loop_enabled` field.
      requirementAU-SEMANTICVERIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.6.2.1
      The `placement_control` stage is removed from the loop controller
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The `placement_control` stage is removed from the loop controller.** The `placement_control` report key, its `stage(...)` call and docstring mentions in `knowledge_graph/research/loop_controller.py` are removed, with `test_run_one_cycle_placement_control_uses_typed_opt_in` in `tests/unit/knowledge_graph/test_loop_controller.py`. | A test asserts a `run_one_cycle` report has no `placement_control` key.
      requirementAU-SEMANTICVERIFIED8e7d9986a683
      tests/unit/knowledge_graph/test_loop_controller.py:590
      AU-SEMANTIC-R019.6.2.2
      The `placement_control_loop_enabled` setting is removed from config
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The `placement_control_loop_enabled` setting is removed from config.** The field in `core/config.py`, its opt-in read in `placement_control_loop` (`research/placement_mining.py`, which then requires an explicit `enabled`), `tests/unit/core/test_config.py`'s typed-opt-in test, `test_config_reference_exposes_placement_control_opt_in` in `tests/unit/deployment/test_config_generator.py` and the config monkeypatches in `tests/unit/knowledge_graph/test_placement_mining.py` are removed or updated. Depends on `AU-SEMANTIC-R019.6.2.1`. | A test asserts `AgentConfig` has no `placement_control_loop_enabled` field.
      requirementAU-SEMANTICVERIFIEDbb4178637fc9
      tests/unit/core/test_config.py:20
      AU-SEMANTIC-R019.6.3
      The `graph_loops` `placement_control` action is removed
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The `graph_loops` `placement_control` action is removed.** Split: removing the action changes `mcp/tools/state_tools.py` and three generated artifacts (`mcp/_graphos_action_manifest.py`, `docs/capabilities-power.json`/`.md`, `knowledge_graph/retrieval/capabilities-power.json`), and the generators (`scripts/gen_graphos_manifest.py`, `scripts/gen_capability_power.py`) only reproduce the committed manifests in an environment that has the full engine tool surface installed (a bare worktree venv drops the `engine_*` tools and rewrites unrelated entries); see `AU-SEMANTIC-R019.6.3.1` and `.2`. | A test asserts the `graph_loops` action list and generated manifests no longer name `placement_control`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.6.3.1
      The `placement_control` action and its parameters are removed from `graph_loops`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The `placement_control` action and its parameters are removed from `graph_loops`.** `_loops_placement_control_action`, its dispatch entry, the action-list description text, the `placement_scan_limit`/`placement_canary_tolerance` fields of `_LoopsParams` and the tool signature, and their pass-through, are removed from `mcp/tools/state_tools.py`. | A test asserts `mcp/tools/state_tools.py` contains no `placement_control`, `placement_scan_limit` or `placement_canary_tolerance`.
      requirementAU-SEMANTICVERIFIEDe21a74412b1b
      tests/unit/mcp/test_graph_loops_placement_removed.py:12
      AU-SEMANTIC-R019.6.3.2
      The generated manifests are regenerated without `placement_control`
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The generated manifests are regenerated without `placement_control`.** Run `scripts/gen_graphos_manifest.py` and `scripts/gen_capability_power.py --write` in an environment with the full tool surface (engine tools present) so only the `graph_loops_placement_control` entry and the `placement_control` parameter text change in `mcp/_graphos_action_manifest.py`, `docs/capabilities-power.json`/`.md` and `knowledge_graph/retrieval/capabilities-power.json`. Depends on `AU-SEMANTIC-R019.6.3.1`. | A test asserts the action manifest and the three capability catalogs name no `placement_control`.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R019.6.4
      `knowledge_graph/research/placement_mining.py` is deleted
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`knowledge_graph/research/placement_mining.py` is deleted.** With no importer left after `AU-SEMANTIC-R019.6.1` to `.3`, the module, `tests/unit/knowledge_graph/test_placement_mining.py` and its entries in `tests/gates/test_r028x_module_census.py` and `tests/unit/observability/test_trace_ontology.py` are removed. | A forbidden-module census confirms `knowledge_graph/research/placement_mining.py` is absent and nothing under `agent_utilities/` or `scripts/` imports it.
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R020
      The ontology object model moves to EG
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The ontology object model moves to EG.** AU's ontology object-model modules under `kg/ontology/**`, including `object_set`, `property_types`, `derived_properties`, `links`, `functions/**`, `edits/**`, `indexing/**`, `classification_claims`, `permissioning*`, `document_processing`, `schema_graph`, `ops_causal_crosswalk`, `repository_provenance`, `style_lint`, the `*_objects` modules and `object_path`, move to EG, apart from the files retained for the AU-SEMANTIC-R021 emitter cut and the SDK manifest files; `sync_conflict` and `leanix_metamodel` move to the SDK instead. Split: size score above 6, more than 2 code roots named. Children land the typed migration-scope manifest first, then the EG copy and the AU importer switch and deletion; `AU-SEMANTIC-R020.1` ships the AU-side migration-scope manifest. | A forbidden-module census and generated-client conformance tests confirm the ontology object model resolves through EG with AU retaining no local authority.
      requirementAU-SEMANTICVERIFIED5a201ecff633
      AU-SEMANTIC-R020.1
      The AU-SEMANTIC-R020 migration scope is a typed, validated manifest
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The AU-SEMANTIC-R020 migration scope is a typed, validated manifest.** `agent_utilities/core/r020_migration_scope.py` enumerates the AU ontology object-model modules in the R020 migration scope (excluding the AU-SEMANTIC-R021 emitter-cut files, the SDK manifest files, and `sync_conflict`/`leanix_metamodel`) as a typed tuple of repository-relative paths, with a validator that fails loud when a listed path is absent from the checkout, so the scope cannot silently drift from the requirement prose before the EG copy and deletion children land. | `tests/unit/core/test_r020_migration_scope.py` asserts every listed path exists in the checkout and that the validator refuses (raises) on a manifest naming a missing path.
      requirementAU-SEMANTICVERIFIED5a201ecff633
      tests/unit/core/test_r020_migration_scope.py:17
      tests/unit/core/test_r020_migration_scope.py:23
      tests/unit/core/test_r020_migration_scope.py:28
      AU-SEMANTIC-R021
      AU's hand-written RDF/OWL/SHACL emitters move behind EG pack compilation
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **AU's hand-written RDF/OWL/SHACL emitters move behind EG pack compilation.** AU's hand-written ontology emitters (`ontology/value_types.py`/`interfaces.py`/`manifest_compiler.py`/`leanix_metamodel.py`), `extraction/schema_discovery.py`, `core/ontology_publisher.py`, `scripts/scaffold_ontology_leg.py`, and the declared-semantic-validation step in connector certification are removed; AU keeps only typed declarations, and connector-manifest-to-ontology compilation runs as EG pack compilation. | A forbidden-import census and a generated-contract test confirm AU emits no RDF/OWL/SHACL text and that manifest compilation succeeds through the EG pack-compilation path.
      requirementAU-SEMANTICLANDED2e5c8d7f2d8b
      5a201ecff633
      9f04ed59f946
      AU-SEMANTIC-R021.1
      `core/ontology_publisher.py` is removed
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`core/ontology_publisher.py` is removed.** AU's `core/ontology_publisher.py` RDF/OWL/SHACL publisher, and its one caller in `setup/database_environment.py`, are removed; AU emits no RDF/OWL/SHACL text from this module. | A forbidden-import census confirms `core/ontology_publisher.py` is absent from AU and nothing imports it.
      requirementAU-SEMANTICLANDED023174b91e2e
      AU-SEMANTIC-R021.2
      `extraction/schema_discovery.py` moves behind EG pack compilation
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`extraction/schema_discovery.py` moves behind EG pack compilation.** AU's `extraction/schema_discovery.py` hand-written schema-discovery emitter is removed; connector-manifest-to-ontology compilation runs as EG pack compilation instead. | A forbidden-import census and a generated-contract test confirm `extraction/schema_discovery.py` is absent and manifest compilation succeeds through the EG pack-compilation path.
      requirementAU-SEMANTICLANDED690785a51851
      AU-SEMANTIC-R021.3
      The `ontology/` hand-written emitters move behind EG pack compilation
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The `ontology/` hand-written emitters move behind EG pack compilation.** AU's `ontology/value_types.py`, `interfaces.py`, `manifest_compiler.py` and `leanix_metamodel.py` hand-written RDF/OWL/SHACL emitters are removed; AU keeps only typed declarations. | A forbidden-import census confirms these four modules are absent from AU and connector certification's declared-semantic-validation step runs through EG pack compilation instead.
      requirementAU-SEMANTICLANDED472e6ab23472
      AU-SEMANTIC-R021.4
      `scripts/scaffold_ontology_leg.py` and its connector-certification step are removed
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **`scripts/scaffold_ontology_leg.py` and its connector-certification step are removed.** AU's `scripts/scaffold_ontology_leg.py` scaffolding script and the declared-semantic-validation step in connector certification that calls it are removed. | A forbidden-import census confirms the script and its certification step are absent from AU.
      requirementAU-SEMANTICLANDED023174b91e2e
      690785a51851
      AU-SEMANTIC-R022
      Graph-schema DTOs become EG-generated types
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Graph-schema DTOs become EG-generated types.** AU's hand-maintained graph-schema models, including `models/knowledge_graph.py`/`schema_definition.py`/`evidence_bundle.py`/`knowledge_pack.py`/`codemap.py`/`graph.py`/`knowledge_base.py`, `models/schema_pack*`, and `models/schema_packs/**`, are replaced by EG-generated types, followed by `kg/domain_packs/**` once AU-SEMANTIC-R005 has removed `pack_loader`. | Model-level unit tests assert callers use the EG-generated DTOs, and a duplicate-type census finds no second hand-written definition.
      requirementAU-SEMANTICLANDEDc23e42b6ed43
      AU-SEMANTIC-R022.1
      Typed composition of the generated graph-schema DTO surface
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Typed composition of the generated graph-schema DTO surface.** `api/graph_schema_types.py` adds `GraphSchemaTypes`, the one typed composition callers of `models/knowledge_graph.py`/`schema_definition.py`/`evidence_bundle.py` will build EG-generated DTO instances through, failing closed with `GraphSchemaTypesUnavailable` when the installed EG client is `None` or missing the required constructor surface. | A unit test asserts `GraphSchemaTypes.for_client` refuses a missing/partial EG client and delegates DTO construction when the surface is present; call-site migrations are separate `.2`+ children.
      requirementAU-SEMANTICLANDEDda51647a7383
      AU-SEMANTIC-R023
      Legacy SPARQL backend and setup modules are deleted
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Legacy SPARQL backend and setup modules are deleted.** AU deletes `kg/backends/sparql/**`, `kg/setup/**` including its database-setup script, and `kg/integrations/stardog_sync.py`/`sparql_ingestor.py`, since these address only already-legacy external SPARQL stores that are out of scope for the federation covered by AU-SEMANTIC-R024. | A file census confirms the listed modules and script are absent from AU.
      requirementAU-SEMANTICLANDEDa05257fb6541
      AU-SEMANTIC-R024
      External graph and database backends move into EG as federation sources
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **External graph and database backends move into EG as federation sources.** AU's remaining external graph/database backend modules, including `fanout_backend`, `postgresql_backend`, `cypher_transpiler`, `age_backend`, `contrib/**`, `mirror_target`, `outbox`, `brain_guarded_backend`, `trino_backend` and `spark_jobs`, covering Postgres/AGE, Neo4j, FalkorDB, the fan-out mirror, Trino and Spark, move into EG as federation and mirror targets; none of them are deleted outright. | Caller-parity tests and a forbidden-module census confirm each backend resolves through the EG federation path with equivalent behavior.
      requirementAU-SEMANTICLANDED274d4c375294
      AU-SEMANTIC-R025
      Retrieval and neural-search engines move to EG
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Retrieval and neural-search engines move to EG.** AU's retrieval and neural-search modules, including the hybrid, semantic, reranking, hierarchical-document, memory, code-context, lineage and autocut retrievers under `kg/retrieval/**`, `kg/neural/**`, and the OpenSearch change-data-capture indexer in `kg/search/**`, move to EG; AU retains only context compilation and the capability index. | Tenant-scoped served-read tests confirm retrieval resolves through EG with AU keeping no local retrieval authority beyond context compilation.
      requirementAU-SEMANTICLANDEDc23e42b6ed43
      AU-SEMANTIC-R025.1
      Typed composition of the generated EG retrieval surface
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Typed composition of the generated EG retrieval surface.** `api/retrieval_client.py` adds `RetrievalClient`, the one typed composition AU's retained context-compilation call sites will route hybrid/semantic/rerank retrieval through, failing closed with `RetrievalClientUnavailable` when the installed EG client is `None` or missing the required surface. | A unit test asserts `RetrievalClient.for_client` refuses a missing/partial EG client and delegates when the surface is present; call-site migrations are separate `.2`+ children.
      requirementAU-SEMANTICLANDEDc23e42b6ed43
      da51647a7383
      AU-SEMANTIC-R026
      The schema-drift package is re-homed before it lands
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **The schema-drift package is re-homed before it lands.** AU's unlanded `kg/schema_drift/` package is re-homed so that its drift gate (`gate`, `shape`, `classify`, `report`) runs inside the SDK's connector-sync runner between drain and apply, and its `candidate.py` SHACL rendering, `contract_store` and `activation` move to EG instead of running inside AU. | A forbidden-SHACL-rendering census confirms AU no longer renders SHACL in `candidate.py`, and an integration test confirms the drift gate runs correctly from the SDK runner.
      requirementAU-SEMANTICLANDED5e15da9f9e40
      AU-SEMANTIC-R027
      Capability-gap checks must search the target system's own vocabulary
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Capability-gap checks must search the target system's own vocabulary.** Before concluding that a capability is missing from the generated EG client, the check searches EG's own public surface, such as its method catalog, generated contract or documentation, under EG's own naming, rather than grepping EG source for AU's internal names; a zero-match search for AU vocabulary is not treated as proof the capability does not exist. | A capability-gap determination records which EG-side surface was searched, under EG's own terms, before any migration work is filed against it.
      requirementAU-SEMANTICLANDEDc23e42b6ed43
      AU-SEMANTIC-R027.1
      Typed capability-gap record refuses an unverified "missing" verdict
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Typed capability-gap record refuses an unverified "missing" verdict.** `api/capability_gap_check.py` adds `CapabilityGapResult`/`EGSurfaceSearch`, the typed record of an EG-side surface search (method catalog, generated contract, or documentation); `CapabilityGapResult.determine` raises `CapabilityGapUnverified` when a "missing" verdict carries no recorded EG-side search. | A unit test asserts a "missing" verdict is refused without a recorded search and accepted once one is attached; the migration-filing call sites are separate `.2`+ children.
      requirementAU-SEMANTICLANDEDc23e42b6ed43
      da51647a7383
      AU-SEMANTIC-R028
      Configured embedding dimension must match the deployed model's output size
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Configured embedding dimension must match the deployed model's output size.** The `kg_embedding_dim` setting in `agent_utilities/core/config.py`, overridable via `KG_EMBEDDING_DIM`, must equal the actual output dimensionality of the configured embedding model, since the PostgreSQL, AGE and Neo4j backends and the schema-definition and ontology document-processing/property-type modules all size their vector columns from this one setting; a mismatch between the configured value and the model's real dimension must be caught rather than silently applied. | A negative test asserts `configured_embedding_dimension()`/`validate_embedding_vectors` fail loud on a dimension mismatch instead of silently degrading enrichment.
      requirementAU-SEMANTICLANDED12e4a7fe9749
      AU-SEMANTIC-R029
      Evolution runs apply a received per-stage model allocation and record cost in the trace
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Evolution runs apply a received per-stage model allocation and record cost in the trace.** agent-utilities applies the allocation it receives from EG-DECISION-ENGINE to each stage of a multi-step evolution run. It records each stage's model and cost in the run trace. [arXiv:2604.07725] | `See children `AU-SEMANTIC-R029.1` to `AU-SEMANTIC-R029.6`.`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R029.1
      Model
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Model.** `StageAllocation` in `agent_utilities/harness/agentic_evolution_engine.py` carries the stage, the received model identifier and the observed cost. `RunBudget` carries the received total cost limit. EG-DECISION-ENGINE produces both the allocation and the limit. | `tests/unit/harness/test_stage_model_allocation.py::test_stage_allocation_fields`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R029.2
      Behavior
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Behavior.** The engine must apply the received model for each stage. It must stop when the received `RunBudget` is spent. It must not choose a model itself. | `tests/unit/harness/test_stage_model_allocation.py::test_applies_received_allocation`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R029.3
      Wiring
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Wiring.** `run_evolution_cycle` (`agent_utilities/harness/agentic_evolution_engine.py:316`) must apply the allocation for each stage. Its production caller is `_analysis_action_evolve_variants` at `agent_utilities/mcp/tools/analysis_tools.py:976`. No stage model is applied there today. | `tests/unit/harness/test_stage_model_allocation.py::test_cycle_calls_allocation`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R029.4
      Refusal
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Refusal.** When the received budget cannot cover a stage, the engine must refuse with the typed reason `budget_exhausted`. When no allocation is received, the engine must abstain and must not default to the strongest model. | `tests/unit/harness/test_stage_model_allocation.py::test_budget_exhausted_refuses`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R029.5
      Evidence
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Evidence.** Each stage must write its model identifier, cost and the running total to the run trace through the `trace_id` already accepted at `agent_utilities/harness/agentic_evolution_engine.py:316`. | `tests/unit/harness/test_stage_model_allocation.py::test_allocation_in_trace`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-SEMANTIC-R029.6
      Hot-path proof
      Definition — AU-SEMANTIC / AU-SEMANTIC — AU semantic client and generated contractCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `evolve_variants` analysis action. A run given an allocation with one stronger stage must apply that model there and record cost for each stage. Test path: `tests/integration/test_stage_allocation_served.py`. | `tests/integration/test_stage_allocation_served.py::test_served_evolve_variants_allocation`
      requirementAU-SEMANTICSPECIFIEDNo recorded commit/test evidence
      AU-BASELINE
      AU-BASELINE — Baseline ingestion and served ontology content
      specNoneLANDEDNo recorded commit/test evidence
      AU-BASELINE-R001
      The daemon role starts baseline ingestion in the background after boot
      Definition — AU-BASELINE / AU-BASELINE — Baseline ingestion and served ontology contentCanonical requirement and verification source
      **The daemon role starts baseline ingestion in the background after boot.** `start_background_daemons` starts one `KG-Baseline-Ingest` thread under the verified daemon session. The thread plans and enqueues WorkItems, then ends. A launch or planning error logs once and never propagates. `KG_BASELINE_INGEST=0` disables it, and `KG_DEV_MODE` silences it with the other daemons. | Unit tests prove one start per engine, the off switch, a swallowed launch error and a swallowed planning error.
      requirementAU-BASELINELANDED06a3810b9373
      f9b25e33b179
      AU-BASELINE-R002
      The baseline covers grounding content only
      Definition — AU-BASELINE / AU-BASELINE — Baseline ingestion and served ontology contentCanonical requirement and verification source
      **The baseline covers grounding content only.** It enqueues one prompt-library WorkItem, one `skill_workflows` WorkItem per configured skill provider and one `codebase` WorkItem per in-scope workspace repository, capped by `KG_BASELINE_MAX_CODEBASES`. Skill targets name a provider, never a machine path. The baseline never calls `source_sync source=all`. | Unit tests prove the planned legs, the provider targets, the `core`, `all`, list and `none` scopes, the cap and a workspace scan failure that keeps the other legs.
      requirementAU-BASELINELANDED06a3810b9373
      AU-BASELINE-R003
      Baseline ingestion is idempotent and isolated per item
      Definition — AU-BASELINE / AU-BASELINE — Baseline ingestion and served ontology contentCanonical requirement and verification source
      **Baseline ingestion is idempotent and isolated per item.** Each leg reuses a content-hash delta ingest path. A target with a live WorkItem is deduplicated by `submit_task`. One rejected item never blocks the others. | Unit tests prove per-item rejection reporting. Existing delta tests cover the reused prompt, skill and code ingest paths.
      requirementAU-BASELINELANDED06a3810b9373
      AU-BASELINE-R004
      AU orders ingestion by the EG stage sequence
      Definition — AU-BASELINE / AU-BASELINE — Baseline ingestion and served ontology contentCanonical requirement and verification source
      **AU orders ingestion by the EG stage sequence.** The table maps S1 to `fast`, S2 and S3 to `medium`, and S4 to S6 to `slow_heavy`. Each AU task type has an entry stage. The baseline enqueues in class order at the class priority bucket and stamps leg, class and stage on each WorkItem. | Unit tests prove the stage table, the task-type routing, the priority buckets and the stamped metadata.
      requirementAU-BASELINELANDED06a3810b9373
      AU-BASELINE-R005
      Factory-built fleet servers serve ontology providers as MCP resources
      Definition — AU-BASELINE / AU-BASELINE — Baseline ingestion and served ontology contentCanonical requirement and verification source
      **Factory-built fleet servers serve ontology providers as MCP resources.** `create_mcp_server` registers each `agent_utilities.ontology_providers` root through the SDK `register_ontology_resources` helper. Ontology files become `ontology://` resources and shape files become `shapes://` resources. One bad provider is skipped with a warning. | Unit tests read the resources through an MCP client and prove the skip and the degrade-to-zero paths.
      requirementAU-BASELINELANDED06a3810b9373
      AU-HARNESS
      AU-HARNESS — Harness evolution and governed work
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R001
      Capability-gated capture of policy trajectories
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Capability-gated capture of policy trajectories.** AU attests a model provider's capability before capturing anything. The provider exposes chosen-token log probabilities, an immutable behavior-policy version, and a fixed tokenizer/decode identity. AU then records each terminal trajectory in the engine's existing content-addressed blob store. The record holds frozen sampler log probabilities, version, action mask, reward and provenance. It reuses the existing trajectory start/step and WorkItem authority rather than inventing new storage. Capture, training and promotion are three independent controls that default to off. No gradients or saved model-weight bytes are written to the graph. | Capability and default-off negative tests confirm capture refuses unsupported, closed or unversioned providers. Training and promotion stay off until each is explicitly enabled.
      requirementAU-HARNESSSPECIFIED3279dcc7d1d7
      42f6dada3749
      fdeabad709b3
      tests/unit/harness/test_policy_evolution.py:189
      tests/unit/harness/test_policy_evolution.py:213
      tests/unit/harness/test_policy_evolution.py:234
      AU-HARNESS-R001.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `PolicyCapabilityAttestation` holds provider name, sampler log-probability support, behavior-policy version identity, tokenizer/decoder digests and attestation timestamp. Capture without a valid attestation is refused. | Attestation model tests prove all required fields.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R001.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Before any capture, AU must check the provider exposes all required capabilities and that the version is resolvable. Capability attestation is immutable once recorded; a version change requires a new attestation. | Capability tests prove attestation check before capture.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R001.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The attestation check attaches at the entry point of the capture path in `record_outcome`. Failed attestation returns a typed `capability_not_attested` refusal. | Wiring test proves attestation gate in record path.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R001.4
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One served run captures a terminal trajectory. The attestation check confirms the provider and its version. The record holds immutable log probabilities and provenance. | `tests/harness/test_capability_attestation_e2e.py::test_trajectory_captured_with_attestation`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R002
      External training path supports an optional KLPO method
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **External training path supports an optional KLPO method.** AU extends its provider-capability and job-receipt model to support an optional KLPO training method alongside GRPO, DPO and SFT. The initial experiment produces only a new LoRA adapter artifact rather than overwriting a base model. Training runs as externally leased jobs that protect the existing inference service-level objective. Any serving-pointer promotion requires a passing held-out evaluation. Training and promotion stay off until their receipts pass. | Injected-dispatcher and receipt tests confirm a KLPO job emits a valid run receipt. They confirm that promotion is blocked until held-out evaluation passes.
      requirementAU-HARNESSVERIFIED37a3800dd3b1
      42f6dada3749
      fdeabad709b3
      tests/unit/harness/test_substrate_trainer.py:148
      AU-HARNESS-R003
      Graph-driven work market on Gap and WorkItem contracts
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Graph-driven work market on Gap and WorkItem contracts.** An evidence signal atomically upserts a single canonical Gap and its corresponding WorkItem through the typed engine contract. AU derives a versioned work offer, including expected utility, closure probability, cost, uncertainty, blast radius, cooldown and dependencies, from that evidence; the engine's Decide contract ranks legal offers with an initial deterministic utility-rate function and commits its decision record; and only then does the existing fenced WorkItem claim, progress-tracking and terminal-outcome authority admit execution. Selection runs from event triggers plus a bounded periodic reconciliation pass, with no separate AU-side sort or scheduler. | A fixture test shows one evidence signal produces exactly one Gap and one claimable WorkItem, and that execution only proceeds after a committed Decide record exists.
      requirementAU-HARNESSVERIFIED42f6dada3749
      d1fdedd885f3
      d856d0bd92f6
      fdeabad709b3
      tests/unit/knowledge_graph/test_work_market.py:83
      AU-HARNESS-R004
      AU proposes corrections through the graph, never writes Git directly
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **AU proposes corrections through the graph, never writes Git directly.** AU records a proposed gap, specification, change and supporting evidence through the typed engine contract and submits it for authorization; AU itself never creates a Git checkout, applies a patch, or commits a change directly. Only after an authorized correction is materialized through repository-manager and an immutable receipt is re-ingested does the originating gap become eligible to resolve, and AU removes its own local publishing and direct-Git code paths along with any dual-write fallback. Split (score > 6, cross-cutting: typed model, authorization routing, repository-manager materialization, receipt ingestion, and removal of `change_publisher`'s direct-Git path each touch distinct code roots): `AU-HARNESS-R004.1` ships the typed proposal model first; later children route it through authorization, materialize it, ingest the receipt, and retire the direct-Git path. | A source gate confirms no AU code path writes to Git directly, and an end-to-end test shows a gap only resolves after a materialization receipt is ingested.
      requirementAU-HARNESSVERIFIED26bfecfbde1a
      AU-HARNESS-R004.1
      Typed correction-proposal model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Typed correction-proposal model.** AU defines a typed `CorrectionProposal` (gap reference, specification, change reference, evidence, lifecycle status) and a typed `MaterializationReceipt`, with no Git-side fields (no repo path, worktree, branch, commit sha, patch or diff). Construction validates required fields and known statuses and refuses a proposal carrying any direct-Git metadata field. A `materialized` proposal is eligible to resolve only once it carries a `MaterializationReceipt`. | Validation tests cover every required field and the unknown-status case; refusal tests cover a missing receipt on `materialized` status and a proposal carrying a direct-Git metadata field.
      requirementAU-HARNESSVERIFIED068bd9c17859
      42f6dada3749
      tests/knowledge_graph/research/test_correction_proposal.py:31
      tests/knowledge_graph/research/test_correction_proposal.py:47
      tests/knowledge_graph/research/test_correction_proposal.py:53
      AU-HARNESS-R005
      Defer generative model work pending evidence-backed need
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Defer generative model work pending evidence-backed need.** AU defers requesting a microGPT-style generative model, in-engine autograd, a generative UQL-producing model, or a KLPO loss implementation until a separate evidence-backed need demonstrates held-out benefit, cost and safety. In the meantime, AU reuses the existing typed Decide ladder, covering legal-option derivation, calibrated probabilities, cost-sensitive optimal choice, provenance, abstention, natural-language templating and constrained UQL generation, and does not treat a bounded resident scorer as authorization for a generative model. | A review confirms no generative or autograd model work proceeds without an approved held-out benefit, cost and safety record, and Decide-ladder tests cover legal-option derivation, calibration, abstention and constrained UQL output.
      requirementAU-HARNESSVERIFIED42f6dada3749
      a754f1299033
      tests/harness/test_generative_model_policy.py:20
      AU-HARNESS-R006
      Statistical scoring head ranks work-market offers
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Statistical scoring head ranks work-market offers.** AU defines a feature schema and slate-crediting method and builds a gold evaluation set to fit and evaluate a scoring head for work-market offers, promoting it only through the governed promotion gate; offer expected cost is computed from the Decide-based work-market design. A synthetic width-quality benchmark exercises the scorer end to end. | Benchmarks measure scorer quality against the synthetic width-quality fixture, and head-promotion tests confirm promotion only occurs through the governed gate.
      requirementAU-HARNESSVERIFIED42f6dada3749
      75dc28c16382
      c0e12b7034f3
      tests/unit/knowledge_graph/test_work_market.py:202
      tests/unit/knowledge_graph/test_work_market.py:243
      AU-HARNESS-R007
      One typed L4 harness port
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **One typed L4 harness port.** AU defines one `HarnessPort` protocol between L3 agent graphs and runtimes. A port has a `name` and an async `run` method. `run` takes a frozen `HarnessRequest` and returns a frozen `RunOutcome`. The outcome carries status, final text, structured output, exit code, transcript reference, diff stat, usage, cost, model, duration and error. A port that cannot start returns a typed `refused` outcome. A new runtime, such as a LangGraph runner, is one class registered by name. No stub adapter ships for it. | A shared conformance check passes for every shipped adapter. A strictness test rejects an unknown status and any mutation.
      requirementAU-HARNESSVERIFIED05d0acdf70b2
      3df03825a497
      42f6dada3749
      579815031bcd
      b15fd573cb5b
      tests/unit/layers/test_harness_port.py:116
      tests/unit/layers/test_harness_port.py:125
      tests/unit/layers/test_harness_port.py:135
      AU-HARNESS-R008
      Native harness over the pydantic-ai path
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Native harness over the pydantic-ai path.** The `native` adapter calls `run_agent` unchanged and requests its run-summary envelope. That path keeps typed tool calls, structured output, token accounting, Langfuse and OTel trace export and the RunTrace write. The adapter maps the envelope into a `RunOutcome` and marks it recorded. It enforces the request timeout and never writes a second trace. | Tests with an injected runner prove the call arguments, envelope mapping, JSON output parsing, degraded failure text and typed timeout.
      requirementAU-HARNESSSPECIFIED579815031bcd
      b15fd573cb5b
      AU-HARNESS-R008.1
      MCP export producer-consumer contract
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **MCP export producer-consumer contract.** AU defines the MCP export operation, inherited configuration at spawned-run boundaries and the shared backend protocol. The export sink name is received and configured without per-agent setup. | Served backend observation test proves inheritance and export through MCP to the configured sink.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R009
      Claude Code headless harness
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Claude Code headless harness.** The `claude-code` adapter runs `claude -p --output-format json` once per request. Flags are pinned: strict MCP configuration, project setting sources only, an explicit permission mode and the MCP configuration file. The MCP configuration names graph-os as its only server, so every MCP tool call goes through graph-os. The prompt goes on standard input. The working directory is the provided worktree. A timeout kills the whole process group. The child receives only an allowlisted environment plus explicit variables. The adapter reads the final JSON result object and never scrapes the terminal interface. It reports exit code, final text, session transcript reference, read-only diff stat, token usage, cost and model. It refuses before launch without a worktree, configuration file or executable. | Tests use a fake executable script. They prove the pinned arguments, working directory, standard-input prompt and environment allowlist. They also prove success, error, unparseable output, timeout kill, refusals and diff stat. No test calls the real CLI.
      requirementAU-HARNESSSPECIFIED579815031bcd
      b15fd573cb5b
      AU-HARNESS-R009.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `SolutionSizeMetric` holds code size measured per run, adequacy bounds and shortcut upgrade paths. The minimalism objective bounds solution size and requires explicit shortcut comment reconciliation with published policy. | Model tests prove metric fields and policy binding.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R009.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The loop must measure solution size per completed run, not changed-line statistics. A shortcut must declare its upgrade path. When published policy forbids comment-style decisions, the coordinator must reconcile the old shortcut clause. | Tests prove size measurement and upgrade-path declaration.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R009.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The metric attaches to the run outcome through `record_outcome`. The policy reconciliation check runs before metric acceptance. Shortcut comments and policy qualification must be reviewed together. | Wiring test proves metric recording and policy check.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R009.4
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One served run must generate code with a shortcut. The loop records solution size and the shortcut upgrade path. The policy check identifies an existing no-comment-style rule. The coordinator reconciles and accepts the metric. | `tests/harness/test_solution_size_metric_e2e.py::test_shortcut_size_measured_policy_reconciled`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R010
      Per-node harness selection and L5 recording
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Per-node harness selection and L5 recording.** `AgentSpec` carries a `harness` field with default `native` and an optional worktree. The parallel engine keeps its in-process path for `native` nodes. It runs every other node through the registered port. An unknown harness name raises an error and never falls back. Each non-native `RunOutcome` feeds the existing ordered RunTrace writer and the usage recorder. A native outcome already carries its RunTrace and is not written again. | Tests prove default selection, selection by field, the unknown-name error, parallel-engine dispatch, request mapping and the L5 writer calls.
      requirementAU-HARNESSLANDED579815031bcd
      b15fd573cb5b
      AU-HARNESS-R011
      Run outcomes feed propose-only prompt evolution
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Run outcomes feed propose-only prompt evolution.** The existing native optimization sweep runs a `prompt_evolution` target. For each known agent prompt, AU reads new `RunTrace` outcomes past a durable per-agent trace cursor. AU turns them into reference-only training rows and runs a pluggable program optimizer. The default optimizer is the native `eg-program` job, which owns the DSPy-family optimizers. AU records the result as a `PromptVersion` node with status `proposal` and a `was_derived_from` edge to every source trace. AU never writes the prompt file and never promotes the version. One pending candidate per agent blocks further candidates until review. No DSPy package is imported or required. | Unit tests with a graph double and a fake optimizer prove provenance and propose-only behavior. They also prove cursor resume, idle cases and failure isolation. One test drives the default native optimizer through a fake engine. A sweep test proves the scheduled dispatch.
      requirementAU-HARNESSLANDED755db4bb36b8
      b15fd573cb5b
      e9a23c4a2f57
      AU-HARNESS-R012
      Run-loop configuration comes from the envelope only
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Run-loop configuration comes from the envelope only.** The run loop must read its harness configuration from the signed dispatch envelope and from no other source. A run with no `harness_config` must end in a typed refusal. The loop must never apply a built-in default policy. | The end-to-end row proves one envelope reaches the loop. Negative rows prove refusal without the field.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R012.1
      `HarnessConfig` model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **`HarnessConfig` model.** `agent_utilities/layers/harness_config.py` defines a frozen `HarnessConfig` with `context_policy` (`none`, `elide`, `elide_then_summarize`), `soft_threshold`, `hard_threshold`, `recent_window_fraction`, `plan_scaffold`, `action_space` (`tool_set`, `shell_only`), `allowed_tool_subset`, `stuck_reminder_after` (default 5), `stuck_terminate_after` (default 8), `tool_result_max_chars` and `context_budget_tokens`. The model must reject `soft_threshold` at or above `hard_threshold`. The model must reject any fraction outside 0 to 1. | `tests/harness/test_harness_config.py::test_config_frozen_and_thresholds_ordered`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R012.2
      Carry the config on `HarnessRequest`
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Carry the config on `HarnessRequest`.** `agent_utilities/layers/harness_port.py:39` gains a `harness_config` field, and `NativeHarness.run` (`harness_native.py:116`) passes it to `run_agent`. A request without it returns the existing typed `refused` outcome with reason `harness_config_absent`. | `tests/harness/test_harness_native.py::test_request_without_config_is_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R012.3
      `run_agent` accepts and applies the config
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **`run_agent` accepts and applies the config.** `run_agent` (`agent_utilities/orchestration/agent_runner.py:702`) gains a `harness_config` parameter beside `allowed_tools`. It builds one `HarnessRuntime` after `validate_tool_contract` (`agent_runner.py:783`). The runtime must hold the config, the counters and the termination reason for that run. | `tests/harness/test_harness_runtime.py::test_run_agent_builds_runtime_from_config`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R012.4
      Worker reads the envelope field
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Worker reads the envelope field.** `_run_agent_turn_kind` (`agent_utilities/orchestration/agent_dispatch_worker.py:1764`) must read the signed `harness_config` from the claimed `AgentTurnEnvelope`. It must then pass the config to `run_agent`. The worker must refuse the job when the carrier rejects the signature. It must also refuse when the field is absent. | `tests/unit/test_agent_dispatch_worker.py::test_worker_passes_envelope_harness_config`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R012.5
      End-to-end proof of the envelope path
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof of the envelope path.** One test enqueues an `AgentTurnEnvelope` through `enqueue_agent_turn` (`agent_dispatch.py:737`). A worker claims it and `run_agent` runs a scripted model. The test must assert that the applied config in the trace equals the signed config. | `tests/harness/test_runloop_envelope_e2e.py::test_envelope_config_reaches_run_loop`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013
      Context manager with elision and summarization
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Context manager with elision and summarization.** One `ContextManager` capability must keep the preamble and the recent window verbatim. At the soft threshold it must replace stale tool observations in the middle region with stubs. At the hard threshold it must fold the oldest middle events into a running summary. The manager must read thresholds from `harness_config` only. It ships no recall tool by default. The source study measured a median of zero recall calls and no accuracy gain. The loop must end a run that still exceeds the budget with the typed termination `context_overflow`. | The end-to-end row drives a scripted run across both thresholds and asserts the live capability fired.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.1
      Reuse decision: one implementation
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Reuse decision: one implementation.** `ContextManager` replaces `MementoCompaction` (`agent_utilities/capabilities/memento.py:154`) in `default_runtime_capabilities` (`capabilities/composition.py:102`). The `memento_compaction` parameter (`agent/factory.py:666`, `:921`) is removed. The manager reuses `enforce_tool_pair_safety` (`capabilities/compaction/_shared.py:61`) and the `before_model_request` hook (`memento.py:243`). `ToolOutputEviction` (`capabilities/eviction.py:28`) stays, because it bounds one oversized result and does not manage history. | `tests/unit/test_composition.py::test_default_capabilities_hold_one_context_manager`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.2
      Token counter against the budget
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Token counter against the budget.** `ContextManager` must measure the message list in tokens and compare it with `context_budget_tokens` before each model request. The manager must record the peak as `peakContextTokens` on the runtime. | `tests/harness/test_context_manager.py::test_peak_tokens_tracked`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.3
      Region split
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Region split.** The manager must split messages into the preamble (system prompt and task), the middle region and the recent window. The recent window must cover `recent_window_fraction` of the budget and at least the last two turns. A tool call and its return must never fall on opposite sides of a boundary. | `tests/harness/test_context_manager.py::test_regions_keep_tool_pairs_together`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.4
      Elision at the soft threshold
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Elision at the soft threshold.** When usage reaches `soft_threshold` times the budget, the manager must replace each stale tool observation in the middle region with a stub naming the tool, its arguments and the original size. The manager must leave the preamble and the recent window unchanged. | `tests/harness/test_context_manager.py::test_elision_stubs_middle_observations_only`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.5
      Summarization at the hard threshold
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Summarization at the hard threshold.** When usage still reaches `hard_threshold` times the budget after elision, the manager must act. It must fold the oldest middle events into one running summary message. The summary call must use the run's own model and must count toward `costUsd`. | `tests/harness/test_context_manager.py::test_summarization_folds_oldest_middle`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.6
      Policy gating
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Policy gating.** A `context_policy` of `none` must attach no manager. A policy of `elide` must never summarize. Only `elide_then_summarize` may call the model for a summary. | `tests/harness/test_context_manager.py::test_policy_gates_each_mechanism`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.7
      Typed `context_overflow` termination
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Typed `context_overflow` termination.** The loop must catch two cases. In the first, the history exceeds the budget after both mechanisms. In the second, the provider rejects the request for length. The loop must end the run with `terminationReason` `context_overflow` and the partial output. It must never surface an unhandled provider error. | `tests/harness/test_context_manager.py::test_overflow_is_typed_termination`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.8
      Mechanism counters
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Mechanism counters.** The manager must increment `elisionCount` and `summarizationCount` on the runtime for each event it performs. | `tests/harness/test_context_manager.py::test_counters_increment`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.9
      End-to-end proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof.** A scripted `run_agent` with a small budget must take its `harness_config` from an envelope. It must show one elision, one summarization and a final answer. A second case with an impossible budget must end in `context_overflow`. | `tests/harness/test_context_manager_e2e.py::test_live_run_elides_summarizes_and_overflows`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.10
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Each summary the manager writes must carry a quality score from a judge. The judge checks retained values, methods and validation steps. A score below `summary_min_score` (default 0.7) must trigger one regeneration before the summary replaces the raw block. | `tests/harness/test_context_summary_quality.py::test_low_score_regenerates_once`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.11
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The quality check attaches in `ContextManager.before_model_request`, which replaces the hook at `agent_utilities/capabilities/memento.py:243`. The model request path of `run_agent` (`agent_runner.py:702`) calls it on every turn. | `tests/harness/test_context_summary_quality.py::test_hook_runs_on_every_request`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.12
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A summary that still scores below `summary_min_score` after regeneration must not replace the raw block. The manager must keep the raw block and record a `summary_rejected` observation. | `tests/harness/test_context_summary_quality.py::test_second_failure_keeps_raw_block`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.13
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** A `SummaryNode` holds a summary text, the identifiers of its source messages and a parent link. Nodes form a directed acyclic graph. Every node must resolve to its original messages without loss. | `tests/harness/test_context_summary_dag.py::test_node_resolves_to_sources`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.14
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The manager must retrieve the original messages of any summary node on demand. Summaries of summaries must keep pointers to the same originals. Retrieval must never call the model. | `tests/harness/test_context_summary_dag.py::test_nested_summary_expands_to_originals`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.15
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** When a tool result or subgraph exceeds `large_output_chars` (default 20000), the run loop must store it in a named run variable. The model request receives a stub with the variable name, size and a 500-character head. A read-slice tool returns ranges of the variable. | `tests/harness/test_large_output_variable.py::test_oversize_result_becomes_variable`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.16
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The variable store attaches where the truncation guard of `AU-HARNESS-R016.6` runs, ahead of `ToolOutputEviction` (`agent_utilities/capabilities/eviction.py:28`). The run loop calls it for every tool result. The read-slice tool registers beside `update_plan`. | `tests/harness/test_large_output_variable.py::test_store_runs_before_eviction`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.17
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A slice request outside the stored length must return a typed `slice_out_of_range` observation. The raw output must never enter the model request when a variable holds it. | `tests/harness/test_large_output_variable.py::test_bad_slice_refused_raw_never_injected`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.18
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The runtime must record `summaryRegenerationCount`, `summaryRejectedCount` and `variableStoredCount` in the run trace. Each counter follows the write path of `AU-HARNESS-R017.4`. | `tests/harness/test_run_trace_fields.py::test_summary_and_variable_counters`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R013.19
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the run loop through `run_agent` with an envelope `harness_config`. A scripted run has an oversize tool result and a poor first summary. It must end with a final answer and the three counters set. | `tests/harness/test_context_manager_quality_e2e.py::test_run_loop_summary_quality_and_variable`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014
      Plan scaffold as run state
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Plan scaffold as run state.** When `plan_scaffold` is `on`, the run loop must register an `update_plan` tool and inject the current plan into each model request. The plan must never enter stored history. This scaffold is run state that the model edits. It never composes agents, tools or models, so `AU-CONTROL-R027` stays the only planner. | The end-to-end rows cover request injection, absence from stored history and authorized read-only snapshots.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.1
      `PlanState` model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **`PlanState` model.** `agent_utilities/layers/harness_plan.py` defines a frozen `PlanItem` (text, status `pending`, `in_progress`, `done`) and a `PlanState` holding the items of one run. Updates must replace the whole list. | `tests/harness/test_harness_plan.py::test_plan_state_replaces_list`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.2
      `update_plan` tool
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **`update_plan` tool.** The loop registers `update_plan` only when `plan_scaffold` is `on`. The tool must validate its argument against `PlanItem` and return the new plan as its observation. Malformed input returns a typed error observation. | `tests/harness/test_harness_plan.py::test_update_plan_tool_gated_by_config`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.3
      Per-turn injection outside history
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Per-turn injection outside history.** A `before_model_request` hook must append the rendered plan to the outgoing request only. The hook must not write the plan to the stored message list. The `ContextManager` must not count stored plan text twice. | `tests/harness/test_harness_plan.py::test_plan_injected_not_stored`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.4
      Planner boundary
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Planner boundary.** The scaffold module must import nothing from `agent_utilities/decide/consumers/task_planner.py`. The tool must never name an agent, a skill or a model. | `tests/harness/test_harness_plan.py::test_scaffold_imports_no_planner`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.5
      End-to-end proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof.** A scripted run with the scaffold on must call `update_plan` twice. Every captured model request must contain the plan, and the stored history must contain none of it. | `tests/harness/test_harness_plan_e2e.py::test_plan_in_every_request_never_in_history`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.6
      Public snapshot model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Public snapshot model.** Extend `api/agent_control_contracts.py` with strict frozen `CurrentPlanRequest`, `CurrentPlanSnapshot` and `CurrentPlanRead` models. The request carries only `run_id`. The snapshot carries `run_id`, `revision`, `observed_at`, `expires_at` and ordered `PlanItem` values. `availability` is `available` or `unavailable`; only `available` carries a snapshot. Empty available items differ from unavailable state. | Planned `tests/harness/test_current_plan_read.py::test_snapshot_contract_and_empty_plan`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.7
      Revision and expiry
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Revision and expiry.** Extend the R014.1 `PlanState`; initialization starts revision zero. Every accepted whole-list update increments revision once, including repeated content. Reads never increment revision. Read items and revision atomically. Observation and expiry use UTC timestamps. The named `snapshot_validity_seconds` default is 30; deployments may replace it with a positive bounded value. Expiry is observation time plus that value, capped by the active run lease when present. | Planned `tests/harness/test_current_plan_read.py::test_atomic_revision_and_expiry`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.8
      Caller authority
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Caller authority.** The public read must reuse `AgentControlPlane._verified_session("kg:read")` and pass that `GraphSession` to the producer. Bind each scaffold to its authenticated execution tenant and principal. Only the matching authorized caller may read it. Unknown runs and other tenants or principals return the same unavailable result. Check authority on every read; request fields cannot provide or broaden it. | Planned `tests/harness/test_current_plan_read.py::test_verified_caller_binding`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.9
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** Add public asynchronous `AgentControlPlane.current_plan(CurrentPlanRequest)` and an injected `CurrentPlanReadPort.read(request, *, session)` in the existing API modules. The AU runtime adapter must read the same R014.1 state used by `update_plan` and request injection. Bind it when `run_agent` creates the R012 runtime. GRAPHOS-OPS-R021.4.5 consumes this port; GraphOS owns hosting and admission, never scaffold computation or storage. | Planned `tests/harness/test_current_plan_read.py::test_public_read_reaches_run_state`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.10
      Refusal and evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal and evidence.** Disabled scaffolds, ended runs, lost runtime state and absent ports return unavailable with no snapshot. Malformed models, wrong-run snapshots or invalid timestamps must fail closed before projection. A read must never restore state from stored messages or call a model. Record only read outcome, run id, revision and timing in existing diagnostics; no plan text or credentials. | Planned `tests/harness/test_current_plan_read.py::test_unavailable_has_no_items_or_effects`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R014.11
      Served proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Served proof.** Extend the R014.5 scripted run through `execute_agent`, the public read and GraphOS `runs.get`. Two updates must produce increasing revisions and ordered snapshots. The same plan enters model requests but never stored history. Refusal, expiry and run switches must clear protected client values. No plan mutation operation crosses the public read boundary. | Planned `tests/harness/test_current_plan_read_served.py::test_snapshot_through_run_and_graphos`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R015
      Action space applied at tool registration
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Action space applied at tool registration.** The run loop must apply `action_space` and `allowed_tool_subset` when it registers tools. In `shell_only` it must register one shell tool and nothing else from the tool set. In `tool_set` it must register only the tools in the subset. A call to any other tool must return a typed refusal as an observation. | The end-to-end row proves both modes against the live registration path.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R015.1
      Registration filter
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Registration filter.** `run_agent` must filter the tools it passes to the agent by `allowed_tool_subset` after `validate_tool_contract` (`agent_runner.py:783`). The filter must run before the first model request. | `tests/harness/test_action_space.py::test_registration_filters_to_subset`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R015.2
      `shell_only` mode
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **`shell_only` mode.** In `shell_only` the loop must register the shell tool alone, plus `update_plan` when the scaffold is on. The mode must be a registration decision and must not rewrite tool descriptions. | `tests/harness/test_action_space.py::test_shell_only_registers_one_tool`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R015.3
      Call-time refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Call-time refusal.** A tool call outside the allowed set must return a `tool_not_allowed` observation naming the tool. The tool must never start. The refusal must reuse the carrier check at `agent_dispatch.py:445`. | `tests/harness/test_action_space.py::test_out_of_set_call_returns_refusal_observation`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R015.4
      End-to-end proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof.** A scripted model calls an allowed and a disallowed tool in `tool_set` mode, then runs in `shell_only` mode. The test must assert registered names, the refusal observation and no side effect. | `tests/harness/test_action_space_e2e.py::test_live_registration_and_refusal`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016
      Run guards
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Run guards.** The loop must detect stuck runs, append diagnostics to edit results, enforce read-before-write, return tool errors as observations, truncate tool results and run read-only tools in parallel. Each guard must emit a counter in the trace. | Each child names its own proof. The end-to-end row drives all guards in one scripted run.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.1
      Stuck reminder
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Stuck reminder.** After `stuck_reminder_after` identical tool calls in a row, the loop must append one reminder to the next observation. Identity is the tool name plus canonical arguments. | `tests/harness/test_run_guards.py::test_reminder_after_identical_calls`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.2
      Stuck termination
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Stuck termination.** After `stuck_terminate_after` identical failing calls, the loop must end the run with `terminationReason` `stuck`. A success between calls resets the count. | `tests/harness/test_run_guards.py::test_stuck_termination_after_failing_repeats`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.3
      Post-edit diagnostics
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Post-edit diagnostics.** After an edit tool succeeds, the loop must run the diagnostics command for the edited file and append its output to the edit result. A missing diagnostics command must append nothing and raise nothing. | `tests/harness/test_run_guards.py::test_edit_result_carries_diagnostics`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.4
      Read-before-write
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Read-before-write.** The loop must record a content hash for each file a read tool returns. A write tool must refuse a file never read or changed since the read. The refusal is a typed observation. | `tests/harness/test_run_guards.py::test_write_requires_fresh_read_hash`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.5
      Tool errors as observations
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Tool errors as observations.** A tool exception must become an `error` observation to the model. The loop must continue. Only a cancellation may propagate. | `tests/harness/test_run_guards.py::test_tool_error_becomes_observation`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.6
      Result truncation
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Result truncation.** The loop must truncate any tool result longer than `tool_result_max_chars` and mark the cut. This guard is separate from `ToolOutputEviction` and must run first. | `tests/harness/test_run_guards.py::test_long_result_truncated_with_marker`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.7
      Parallel read-only tools
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Parallel read-only tools.** When one model turn requests two or more tools, the loop runs those marked `read_only` concurrently and the rest serially. The marker comes from the connector contract's `read_only` field, read as `readOnlyHint` at `agent_utilities/mcp/connector_surface.py:73`. | `tests/harness/test_run_guards.py::test_read_only_tools_run_concurrently`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R016.8
      End-to-end proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof.** A scripted run must trigger a reminder, a diagnostics append, a refused write, a truncation and a parallel read batch. It must then end with `stuck`. | `tests/harness/test_run_guards_e2e.py::test_all_guards_fire_in_live_loop`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017
      Run trace with termination reason and counters
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Run trace with termination reason and counters.** Every run must write one typed termination reason and the brief's counters through the existing RunTrace export. The loop must never write a second trace store. | The end-to-end row reads the persisted trace for each termination reason.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017.1
      `TerminationReason` enum
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **`TerminationReason` enum.** `harness_runtime.py` defines `final_answer`, `context_overflow`, `stuck`, `step_budget` and `error`. A run must end with exactly one value. A second assignment must raise. | `tests/harness/test_harness_runtime.py::test_single_termination_reason`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017.2
      Map existing exits
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Map existing exits.** Each exit path of `run_agent` must set a reason. The `UsageLimits` breach from `_direct_run_usage_limits` (`agent_runner.py:4450`) must map to `step_budget`. Every other exception must map to `error`. | `tests/harness/test_harness_runtime.py::test_every_exit_sets_reason`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017.3
      Counters
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Counters.** The runtime must hold `peakContextTokens`, `contextBudgetTokens`, `elisionCount`, `summarizationCount`, `turnCount`, `toolCallCount`, `costUsd` and the applied `harness_config`. | `tests/harness/test_harness_runtime.py::test_counters_cover_brief`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017.4
      Write through `_record_execution_trace`
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Write through `_record_execution_trace`.** `_record_execution_trace` (`agent_runner.py:5305`) gains these fields. Its ordered wrapper at `agent_runner.py:5453` must carry them to the engine. The engine run-trace vocabulary owns the field names, so this row follows the `EG` run-trace vocabulary row. | `tests/harness/test_run_trace_fields.py::test_trace_write_carries_reason_and_counters`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017.5
      Non-native path
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Non-native path.** `record_outcome` in `harness_record.py` must write the same reason for a non-native `RunOutcome`. The reason `error` applies when the adapter reports none. | `tests/harness/test_run_trace_fields.py::test_non_native_outcome_has_reason`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R017.6
      End-to-end proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof.** Five scripted runs, one per reason, must each persist one trace with the right reason through a fake engine. | `tests/harness/test_run_trace_e2e.py::test_each_reason_persisted`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018
      Matched ablation runner
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Matched ablation runner.** AU must run one task set repeatedly with one component varied and compare task-paired outcomes. It must report success rate, cost per task and overflow rate. It must submit the measured model facts to the engine as a governed proposal. No ablation or McNemar code exists today, so the runner is new code. | The end-to-end row runs a synthetic task set through two arms and reaches a submitted proposal.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.1
      Arm and task-set types
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Arm and task-set types.** `agent_utilities/harness/ablation.py` defines a frozen `AblationArm` (component name, `harness_config`) and a frozen `TaskSet` (task ids, fixed seed). Two arms must differ in exactly one `HarnessConfig` field. The runner must refuse arms that differ in more. | `tests/harness/test_ablation.py::test_arms_differ_in_one_component`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.2
      Paired execution
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Paired execution.** For each task the runner must run both arms through `run_agent` and record outcome, cost, `terminationReason` and counters. The stored records come from the trajectory capture of `AU-HARNESS-R001`. | `tests/harness/test_ablation.py::test_paired_outcomes_recorded`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.3
      Exact McNemar test
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Exact McNemar test.** The runner computes the exact two-sided binomial test on discordant pairs. Zero discordant pairs must give a p-value of 1. | `tests/harness/test_ablation.py::test_exact_mcnemar_known_values`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.4
      Benjamini-Hochberg correction
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Benjamini-Hochberg correction.** The runner adjusts the p-values of all compared components at false-discovery rate 0.05 and reports which differences hold. | `tests/harness/test_ablation.py::test_bh_adjustment`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.5
      Report
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Report.** The report lists success rate, mean cost per task and overflow rate per arm. It also lists `contextWindowTokens`, `shellProficiency` and `stoppingBehaviour` derived from the run. A value without enough pairs is reported as `insufficient`. | `tests/harness/test_ablation.py::test_report_fields_and_insufficient`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.6
      Governed proposal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Governed proposal.** The runner must submit each measured fact to the engine as a proposal that cites its run identifier. It must never write the fact itself. The engine writes the fact through the `EG` run-trace rows for the measured-fact write. | `tests/harness/test_ablation.py::test_facts_submitted_as_proposals_only`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.7
      End-to-end proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **End-to-end proof.** A synthetic task set over two arms must produce a report and one proposal per fact through a fake engine. | `tests/harness/test_ablation_e2e.py::test_two_arms_to_proposal`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R018.8
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** AU harness observations integrate with EG metrics and report. The game and prompt-variation experiment schema, repeated-run variance measure and stable-ranking acceptance are defined. | Real served ablation report proves game protocol, variance calculation, stable ranking and metrics integration.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019
      Studied sources become compared, admitted proposals
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Studied sources become compared, admitted proposals.** AU runs one study pipeline: a paper, repository or article becomes a feature record, a capability comparison and a reviewed proposal. AU must not write code, specs or prompts from a study directly. | `tests/harness/test_study_pipeline.py::test_end_to_end` drives a fake source to a pending proposal.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.1
      Locate and wire the study attach point
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Locate and wire the study attach point.** The first child locates the entry beside `agent_utilities/harness/assimilation_benchmark.py` and wires `study_pipeline.run_study` into the evolution sweep. | `test_study_pipeline.py::test_sweep_dispatch`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.2
      Typed `StudySource` and `FeatureRecord`
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Typed `StudySource` and `FeatureRecord`.** `agent_utilities/harness/study_models.py` defines `StudySource` (kind, locator, content digest) and `FeatureRecord` (source, claim, mechanism, evidence span). Records without an evidence span are refused. | `test_study_models.py::test_span_required`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.3
      Study intake deduplicates by content digest
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Study intake deduplicates by content digest.** `study_intake.fetch_once` reads each source through its declared contract (scholarx for papers, archive for pages) and skips a digest already studied. It must not copy the source body into the graph; it stores the digest and locator. | `test_study_intake.py::test_duplicate_digest_skipped`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.4
      Batch study scales to ten times the source count
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Batch study scales to ten times the source count.** `study_batch.run_batch` processes sources in bounded concurrency set by the compute governor. One failed source must not stop the batch and yields a typed failure row. | `test_study_batch.py::test_one_failure_isolated` with 100 fake sources.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.5
      Capability comparison matrix against the platform
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Capability comparison matrix against the platform.** `study_compare.compare` asks the engine for matching capabilities per feature and returns a verdict of `covered`, `gap` or `exceeds`. AU must not keep a private capability inventory. | `test_study_compare.py::test_verdicts_from_engine_double`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.6
      Matrix report lists every feature with its verdict
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Matrix report lists every feature with its verdict.** `study_compare.render_matrix` emits one row per feature and source, including `covered` rows. A study with no extractable feature reports `no_features`, not an empty success. | `test_study_compare.py::test_no_features_abstains`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.7
      Gap features become proposals only
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Gap features become proposals only.** `study_propose.propose` records each `gap` as a proposal node linked by `was_derived_from` to its feature records. AU must not edit a repository, spec or prompt, and must not promote a proposal. | `test_study_propose.py::test_propose_only_no_writes`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.8
      One open proposal per feature blocks duplicates
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **One open proposal per feature blocks duplicates.** `study_propose.propose` must skip a gap whose feature digest has an open or rejected proposal. It must return the existing proposal ID. | `test_study_propose.py::test_duplicate_gap_blocked`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.9
      Admission requires a measured lift
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Admission requires a measured lift.** `study_admit.admit` must refuse a reviewed proposal that lacks a baseline-versus-candidate benchmark result from the assimilation benchmark suite. A refusal names the missing measurement. | `test_study_admit.py::test_unmeasured_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.10
      Admission is a governed decision, not an AU choice
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Admission is a governed decision, not an AU choice.** `study_admit.admit` sends the benchmark result to the engine decision service and applies the returned verdict. AU must not rank or accept proposals itself. | `test_study_admit.py::test_verdict_applied_from_engine`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.11
      Research goals drive source discovery
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Research goals drive source discovery.** `study_discover.discover` reads active goals from the engine and queries declared feeds, scholarx and prompt folders for new sources. It must stop at a per-run source cap of 50. | `test_study_discover.py::test_cap_and_goal_filter`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.12
      Background study yields to interactive work
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Background study yields to interactive work.** `study_batch.run_batch` must pause when the compute governor reports interactive load, and resume from its cursor without repeating a source. | `test_study_batch.py::test_pause_resume_cursor`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.13
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** A `MeasuredLift` holds baseline run ID, candidate run ID, measured metric, baseline value, candidate value, improvement ratio and confidence. Admission requires a recorded `MeasuredLift` matching the proposal. | Tests prove lift model and matching validation.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.14
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** `study_admit.admit` must refuse a reviewed proposal without a baseline-versus-candidate benchmark result. The refusal names the missing measurement. Admission sends the benchmark result to the engine decision service. The engine applies the returned verdict. | Tests prove refusal on missing lift and verdict application.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.15
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** Measured lift must come from the assimilation benchmark suite. The admission path must consult this suite before decision, not apply local ranking. | Wiring test proves suite query in admission.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R019.16
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One study proposes a gap feature. The proposal is refused because the assimilation benchmark lacks a result. The benchmark runs and records a measured lift. The proposal is re-submitted and the engine decision accepts it. | `tests/harness/test_study_admit_measured_lift_e2e.py::test_missing_lift_then_measured_acceptance`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020
      Parallel workers share a typed workspace
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Parallel workers share a typed workspace.** A wide search must run its workers against one shared workspace. The workspace holds the subtask checklist, the target schema and one result slot per worker. Results conform to the schema or the engine refuses them. A synthesizer must read results by reference. | tests/harness/test_parallel_workspace_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `ParallelWorkspace` in `agent_utilities/graph/parallel_workspace.py` holds a checklist, a frozen result schema, one `WorkerSlot` per worker and a version counter. Each slot holds a status, a typed result and a conflict note. | `tests/harness/test_parallel_workspace.py::test_workspace_model_frozen_schema`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Each worker reads the other slots before it starts a subtask and skips a subtask another slot already covers. Two slots with the same key and different values must raise a `conflict` entry for the synthesizer. | `tests/harness/test_parallel_workspace.py::test_duplicate_skipped_conflict_recorded`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The run must bound concurrency by `max_parallel_workers` (default 8) and each worker by `worker_timeout_seconds` (default 120). After `breaker_after_failures` consecutive failures (default 3) the breaker must stop new workers. | `tests/harness/test_parallel_workspace.py::test_bound_timeout_and_breaker`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.4
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The synthesizer reads typed slot objects programmatically and never receives worker output as prompt text. Strategy is `flat` up to 8 workers, `hierarchical` above that, and `progressive` when total output exceeds `progressive_output_chars` (default 60000). | `tests/harness/test_parallel_workspace.py::test_strategy_chosen_by_count_and_size`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.5
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `parallel_batch_processor` (`agent_utilities/graph/_router_impl.py:1772`) builds the workspace and passes it to each worker. The router step `_dispatch_parallel_batch` (`_router_impl.py:1677`) calls it in production. | `tests/harness/test_parallel_workspace.py::test_batch_processor_builds_workspace`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.6
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A worker result that violates the schema must be refused with a typed `schema_violation` row. The slot stays open. The breaker counts the refusal as a failure. | `tests/harness/test_parallel_workspace.py::test_schema_violation_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.7
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record the strategy chosen, worker count, conflict count, refusal count and breaker state. Each field follows the write path of `AU-HARNESS-R017.4`. | `tests/harness/test_parallel_workspace.py::test_trace_records_strategy_and_breaker`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R020.8
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served graph run through `_dispatch_parallel_batch`. A run has four fake workers, one schema violation and one conflict. It must end with a synthesized result and a trace. | `tests/harness/test_parallel_workspace_e2e.py::test_router_batch_to_synthesis`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021
      Evaluation gates separate safety from accuracy
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evaluation gates separate safety from accuracy.** Evaluation of model-backed work must report accuracy and a safety measure apart. A judge score is trusted only while an independent outcome agrees. A recommendation reaches human approval only after a bounds and provenance check. | tests/harness/test_eval_gates_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `EvalGateReport` in `agent_utilities/harness/eval_gates.py` holds accuracy, `safetyErrorRate`, `judgeScore`, `independentOutcome`, a divergence value and a typed verdict `promote`, `hold` or `refuse`. | `tests/harness/test_eval_gates.py::test_report_fields_and_verdicts`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** `safetyErrorRate` counts confident, high-risk or evidence-contradicting errors over all answers. A rollup must not be promoted when accuracy rises and `safetyErrorRate` rises by more than `safety_regression_margin` (default 0.01). | `tests/harness/test_eval_gates.py::test_accuracy_gain_with_safety_regression_held`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Divergence is the judge score trend minus the independent outcome trend over the last `divergence_window` runs (default 20). A divergence above `divergence_threshold` (default 0.15) must flag exploitation onset. | `tests/harness/test_eval_gates.py::test_divergence_flags_onset`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.4
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Before surfacing a recommendation, the gate must check every value against its declared bound. It must also check provenance. Pluggable scorers for length, pattern and schema feed the same report. | `tests/harness/test_eval_gates.py::test_bounds_provenance_and_scorers`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.5
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `ContinuousEvaluationEngine.evaluate` (`agent_utilities/harness/continuous_evaluation_engine.py:1103`) calls the gate once per round. The ablation report of `AU-HARNESS-R018.5` reads the same report. This row creates the call site at that function. | `tests/harness/test_eval_gates.py::test_evaluate_calls_gate`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.6
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A run whose judge score rises while the independent outcome does not must be refused as evidence. A recommendation with missing provenance or an out-of-bound value must be refused and escalated. | `tests/harness/test_eval_gates.py::test_divergent_run_and_unbounded_recommendation_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.7
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The report must persist to the graph as evidence with its run identifiers and the verdict reason. A refusal must carry the premise that triggered it. | `tests/harness/test_eval_gates.py::test_report_persisted_with_premise`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.8
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the evaluation round through `ContinuousEvaluationEngine.evaluate`. A scripted round with rising judge score and flat outcome must produce a `refuse` verdict and a persisted report. | `tests/harness/test_eval_gates_e2e.py::test_round_refuses_divergent_run`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.9
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Each report round must identify criteria by unique identity and record their individual satisfaction state. Per-revision nonregression checks must compare criteria states across consecutive report instances, refusing promotion when any criterion regresses. | Criterion tests prove identity, state and comparison across rounds.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.10
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The gate must emit criterion identity and satisfaction state in each `EvalGateReport`. The comparison must run before the verdict is reached. | Wiring test proves criterion fields and per-revision check.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.11
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A report with a regressed criterion state must be refused with a typed `criterion_regression` row. Independent outcomes must remain separate from the self-reflection refusal. | Tests prove criterion regression and outcome independence.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.12
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** Each report must persist criterion identities and their satisfaction states for independent retrieval. Regression detection records the premise. | Proof shows persisted criterion state and regression premise.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.13
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The proposal input model must declare outcome, graded artifact identity and criterion breakdown before admission. Missing or mismatched grading triggers `grading_mismatch` refusal. | Wiring test proves grading validation in admission.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.14
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `GradedArtifact` holds artifact identity, criterion-keyed grade values and rollup version. A proposal without it is incomplete. Grade keys must match declared criteria. | Model tests prove artifact-bound grading.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.15
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One evaluation round must produce two reports with three criteria each. The first report must show a criterion drop. The gate must refuse with a regression premise, and a second artifact with matching grades must pass. | `tests/harness/test_eval_gates_criterion_e2e.py::test_regression_refused_then_graded_artifact_passes`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022
      Run experience becomes reusable skills
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Run experience becomes reusable skills.** AU must distill finished runs into action-level experiences and task-level skills. It consolidates them across at least three rollouts and retrieves them by current context. Usage outcomes update their standing without any change to model parameters. | tests/harness/test_experience_distill_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `ExperienceRecord` and `SkillCandidate` in `agent_utilities/knowledge_graph/distillation/experience_models.py` hold a kind (`action` or `task`), source run identifiers, a context key, a use count and a success count. | `tests/harness/test_experience_models.py::test_records_typed`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Consolidation merges records from at least `min_rollouts` runs (default 3) that share a context key. A task whose workflow succeeds `skill_after_successes` times (default 3) must scaffold a skill directory that the graph references, not copies. | `tests/harness/test_experience_distill.py::test_consolidation_and_scaffold`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Retrieval ranks records by context-key match and success rate. After each use, the outcome must update the use count and success count of the retrieved record. | `tests/harness/test_experience_distill.py::test_retrieval_and_feedback`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.4
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The distiller attaches to `SkillGraphPipeline` at `agent_utilities/knowledge_graph/distillation/skill_graph_pipeline.py:836`, and `record_outcome` in `harness_record.py` calls it after each run. This row creates the call site in `record_outcome`. | `tests/harness/test_experience_distill.py::test_record_outcome_calls_distiller`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.5
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A candidate from fewer than `min_rollouts` runs, or one without a source run identifier, must be refused with a typed `insufficient_evidence` row. A skill with a success rate under 0.5 after 10 uses must be retired. | `tests/harness/test_experience_distill.py::test_insufficient_evidence_and_retirement`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.6
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** Each record must link by `was_derived_from` to its source run traces. The run trace must record which records were retrieved for the run. | `tests/harness/test_experience_distill.py::test_provenance_and_retrieval_trace`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R022.7
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the run loop through `run_agent`. Three scripted successful runs must scaffold one skill, and a fourth run must retrieve it and update its use count. | `tests/harness/test_experience_distill_e2e.py::test_three_runs_scaffold_and_fourth_retrieves`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023
      Replay a received run program against observed state
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Replay a received run program against observed state.** The run loop must replay a program received from the engine. It must check observed state before each action and refuse on mismatch with a typed `deviation`. [arXiv:2606.17929] | tests/harness/test_run_program_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `RunProgram` and `ProgramStep` in `agent_utilities/harness/run_program.py` are new. They are received from EG-DECISION-ENGINE as admitted by GRAPHOS-A2A. A step holds a `precondition` over observed state, one tool action and an `expected_effect`. The nearest existing code is `ReplayManifest` and `InteractionRecord` (`agent_utilities/observability/replay_engine.py:20`, `:36`), which hold no preconditions. | `tests/harness/test_run_program.py::test_program_model_fields`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The replayer checks each step precondition against observed state before the action. A match performs the action with no model call. `precondition_matcher` is a replaceable default. | `tests/harness/test_run_program.py::test_replay_without_model_calls`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** A mismatch ends the replay with a typed `deviation`. The replayer then returns control to the agent with the performed prefix. | `tests/harness/test_run_program.py::test_deviation_hands_back`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.4
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `run_agent` (`agent_utilities/orchestration/agent_runner.py:702`) asks the engine for a program by task signature before its first model request. A received program replays, and a deviation falls through to the existing agent path. No production caller reaches `ReplayManifest` or `DistributedReplayEngine` today (`replay_engine.py:48` has no production caller). This row creates the call site in `run_agent`. | `tests/harness/test_run_program.py::test_run_agent_replays_received_program`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.5
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The replayer must refuse a program that the engine did not mark admitted. It must refuse a step whose precondition fails. Both cases give a typed row, `program_not_admitted` or `deviation`, and the agent path runs. | `tests/harness/test_run_program.py::test_unadmitted_program_not_replayed`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.6
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record `programId`, `replayed`, `deviationStep` and `modelCallsAvoided`. Each field follows the write path of `AU-HARNESS-R017.4`. | `tests/harness/test_run_program.py::test_trace_fields_for_replay`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R023.7
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the run loop through `run_agent`. A scripted engine returns an admitted program for one task. The run must finish with zero model calls. A run with a changed screen state must deviate and finish through the agent. | `tests/harness/test_run_program_e2e.py::test_received_program_replays_then_deviates`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024
      Emit a span for every agent call, graph step and tool call
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Emit a span for every agent call, graph step and tool call.** The run loop must emit one connected span tree per run to the engine trace sink. The engine owns the trace records. | tests/harness/test_end_to_end_trace_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `RunSpanContract` in `agent_utilities/observability/run_span_contract.py` is new. It receives the span kinds and required attributes from EG-ORCH-VOCAB. Fallback defaults are `agent_call`, `tool_call`, `orchestration_step`, `flow_diagram` and `experience_read`. Required attributes are run id, node id, parent span id, tool name and decision id. Existing instrumentation is `build_fleet_instrumentation` (`agent_utilities/capabilities/telemetry_instrumentation.py:40`) and `setup_otel` (`agent_utilities/observability/custom_observability.py:850`). Neither fixes kinds or attributes. | `tests/harness/test_end_to_end_trace.py::test_span_kinds_and_attributes`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Each graph orchestration step opens a span under the run span. Each tool call opens a child span. The flow diagram attaches to the run span as one attribute when `trace_flow_diagram` is on (default on). | `tests/harness/test_end_to_end_trace.py::test_step_tool_and_diagram_spans`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Each span carries a model request digest, tool arguments and a result digest. The engine uses them to replay a step. A named default `span_attribute_redactor` drops content when content capture is off. | `tests/harness/test_end_to_end_trace.py::test_spans_carry_replay_digests`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.4
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `default_runtime_capabilities` (`agent_utilities/capabilities/composition.py:160`) already attaches the instrumentation, and every `run_agent` call reaches it. Graph steps in `_dispatch_parallel_batch` (`agent_utilities/graph/_router_impl.py:1677`) and the tool path open no spans today. This row creates those call sites. `DistributedReplayEngine.record_step` (`replay_engine.py:81`) has no production caller today. | `tests/harness/test_end_to_end_trace.py::test_graph_step_opens_span`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.5
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** With no collector configured the run must continue and record a typed `trace_export_disabled` observation once. The emitter must drop and count a span that lacks a required attribute. A dropped span must never fail the run. | `tests/harness/test_end_to_end_trace.py::test_no_collector_and_incomplete_span`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.6
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The runtime must record `spanCount`, `droppedSpanCount` and `traceId` in the run trace. Each field follows the write path of `AU-HARNESS-R017.4`. | `tests/harness/test_end_to_end_trace.py::test_trace_id_in_run_trace`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.7
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is a served graph run through `_dispatch_parallel_batch` with a scripted model and an in-memory span exporter. The test must find one connected trace holding the agent, tool and orchestration spans and the diagram attribute. | `tests/harness/test_end_to_end_trace_e2e.py::test_served_run_exports_connected_trace`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.8
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** AU runtime defines governed, redacted context carriers for model requests and feedback annotation provenance. EG provides online evaluation and guardrail verdict. AU/GraphOS production response enforces flag and block behavior. | Served trace and response enforcement prove redacted context, EG verdict application and flag/block behavior.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.9
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** EG span-error localization determines first failing span with deterministic ordering and ties. Missing evidence is refused. Diagnostic result binds first failing span to error evidence. GraphOS diagnosis reader surfaces it. | Real served trace with multiple failures proves deterministic first failing span returned.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R024.10
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Platform-wide OpenTelemetry and Prometheus export contract specifies formats. GraphOS exports host telemetry and enables connector instrumentation transport. SDK handles instrumentation. EG interprets signals and proposes improvements. AU remains emitter. | Served export and readback prove format agreement, backend opt-in and signal-to-proposal route.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025
      Make each harness edit a revertible change that carries a declared prediction
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Make each harness edit a revertible change that carries a declared prediction.** The loop must declare a prediction before each edit. It must apply the verdict it receives from the engine. [arXiv:2604.25850] | tests/harness/test_harness_edit_prediction_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `HarnessEditRecord` in `agent_utilities/harness/harness_edit_record.py` is new. It holds the changed file paths and a version-control revision. It holds a `DeclaredPrediction`: the task ids expected to flip and the direction. It holds the verdict `pending`, `verified`, `falsified` or `unverified`, received from EG-DECISION-ENGINE. Nearest code: `HarnessGate.check` (`agent_utilities/harness/harness_gate.py:127`) gates concentration only. `rollback_prompt` (`agent_utilities/core/registry/kg_adapter.py:660`) reverts prompts only. | `tests/harness/test_harness_edit_record.py::test_record_fields_and_verdicts`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** After the next round the loop sends the task outcomes and the prediction to the engine. The engine returns the verdict. `verification_rounds` and `min_flip_fraction` are received from the engine; fallback defaults are 1 and 0.5. | `tests/harness/test_harness_edit_record.py::test_verdict_received_from_engine`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The loop applies an `unverified` or `falsified` verdict as a version-control revert of exactly the recorded files. The revert is itself a recorded change. No other file is touched. | `tests/harness/test_harness_edit_record.py::test_revert_touches_only_recorded_files`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.4
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `AegisLoop` (`agent_utilities/harness/aegis_loop.py:91`, gate call at `:274`) is the production caller of `HarnessGate`. This row creates the call site that opens a `HarnessEditRecord` before each edit and closes it after the next round. Edits by `apply_edits` (`agent_utilities/harness/edit_engine.py:457`) have no declared prediction today. | `tests/harness/test_harness_edit_record.py::test_aegis_loop_opens_and_closes_record`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.5
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The loop must refuse an edit with no declared prediction. It must also refuse an edit that touches a path outside its declared files. Both cases give a typed `prediction_missing` row before the edit applies. | `tests/harness/test_harness_edit_record.py::test_edit_without_prediction_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.6
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The loop must send the record to the engine. It holds the revision, prediction, verdict and run identifiers of both rounds. A revert links to its edit by `was_derived_from`. | `tests/harness/test_harness_edit_record.py::test_record_sent_with_runs`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R025.7
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is one evolution round through `AegisLoop` with a scripted engine verdict. A scripted round applies two edits. One verdict is `verified` and one is `falsified`. The test must show one kept edit, one reverted file and two sent records. | `tests/harness/test_harness_edit_prediction_e2e.py::test_failed_prediction_is_reverted`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026
      Apply parallel-map primitives and recursive decomposition within received limits
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Apply parallel-map primitives and recursive decomposition within received limits.** The harness must fan an operation over a collection and split an over-window prompt into snippets. It must stop at the depth, cost and concurrency limits received from the engine. [arXiv:2512.24601] | tests/harness/test_bounded_decomposition_e2e.py drives the rollup end to end.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `MapPrimitive` and `DecompositionBudget` in `agent_utilities/rlm/bounded_map.py` are new. A primitive names an operation, a collection reference and a result schema. A budget holds `max_depth`, `max_items`, `max_cost_usd` and `max_model_calls`, received from EG-DECISION-ENGINE. Fallback defaults apply only when the engine gives none. Existing code: `map_concurrent` (`agent_utilities/core/model_concurrency.py:296`) fans out with no budget, and `RLMConfig.max_depth` (`agent_utilities/rlm/config.py:60`) bounds depth only. | `tests/harness/test_bounded_map.py::test_primitive_and_budget_fields`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The harness runs a primitive over the collection with one result slot per item. The item count is fixed before the run starts. `max_items` is received from the engine; fallback default 1000. A sub-call that spawns a further primitive consumes one depth level. | `tests/harness/test_bounded_map.py::test_map_stops_with_fixed_item_count`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The engine marks a prompt as over the window using `context_window_fraction` (fallback default 0.8). The harness then stores the prompt as a variable. It gives the model the variable metadata and the primitives, never the text. Results combine programmatically through `run_full_rlm` (`agent_utilities/rlm/repl.py:972`). | `tests/harness/test_bounded_map.py::test_oversize_prompt_becomes_variable`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.4
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `RLMEnvironment.run_parallel_sub_calls` (`agent_utilities/rlm/repl.py:470`) is the implementation. It has no production caller today. This row creates the call site inside `run_full_rlm`, which production reaches from `agent_utilities/graph/_router_impl.py:811` and `agent_utilities/graph/parallel_engine.py:1535`. The primitives replace unbounded loops in the sandbox namespace. | `tests/harness/test_bounded_map.py::test_run_full_rlm_uses_primitives`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.5
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The sandbox must refuse a model-written loop over a collection. The refusal is a typed `loop_refused` observation that names the primitive to use. A breach of the depth, item, cost or call limit must end the work. The result is a typed `budget_exhausted` value. | `tests/harness/test_bounded_map.py::test_model_loop_refused_and_budget_breach_typed`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.6
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record `decompositionDepth`, `mapItemCount`, `subCallCount`, `decompositionCostUsd` and the budget outcome. Each field follows the write path of `AU-HARNESS-R017.4`. | `tests/harness/test_bounded_map.py::test_decomposition_fields_traced`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R026.7
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the planning step through `_router_impl.py:811`. It uses a scripted model, scripted limits and a prompt of 3 times the window. The test must show a combined answer and no raw prompt in any request. It must also show one refused loop and a cost under the limit. | `tests/harness/test_bounded_decomposition_e2e.py::test_oversize_prompt_answered_within_budget`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R027
      Cross-domain evaluation contracts
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Cross-domain evaluation contracts.** Evaluation and retrieval harness must bind dataset, experiment, rubric versions and turn feedback. Long-horizon memory and answer quality are separate contracts. | Each child defines a contract and proof.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R027.1
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** EG versioned evaluation/feedback contract binds dataset, experiment, rubric versions and turn metrics. Multi-turn judge protocol rejects missing identities. Later turns observe earlier feedback. | Served multi-turn proof shows feedback affecting authorized next turn.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R027.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Long-horizon memory suite covers contradiction resolution, temporal ordering, multi-hop recall and multi-session recall. Per-release metric artifact is immutable. Pipelines release-gate consumes artifact with explicit regression refusal. | Real served release metric proves all four suite measures and gating.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R027.3
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** Independent answer-quality scoring is separate from citation validity. Missing or unversioned corpus identity is explicitly refused at deep-research entry point. Existing manifest, gold relevance labels and corpus failure contract remain binding. | Served deep-research path proves independent scoring and missing-version refusal.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R028
      Technique-specific serving activation contract
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Technique-specific serving activation contract.** Benchmarked harness techniques must bind exact activation evidence, refusal criteria and serving producer without creating second-source authority. Each technique carries its own gated admission evidence distinct from carrier benchmark receipt. | Activation contract prevents serving authority ambiguity.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R028.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** Define technique identity, activation predicate, evidence requirements and refusal policy for each named technique: paged cache, prefix reuse, fused kernels, quantized cache and expert dispatch. | Technique-specific tests prove each identity and its distinct evidence binding.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R028.2
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The coordinator must resolve the serving producer from the existing typed admission path, not from EG packet lead. Bind each technique to its producer entry point. | Wiring test proves lookup finds the producer without a secondary authority.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R028.3
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One served graph run routes to benchmark and activates all five techniques. Evidence for each technique is carried through the trace. | `tests/harness/test_technique_activation_e2e.py::test_all_five_techniques_activate_with_evidence`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R029
      Adversarial verification for generated-code acceptance
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Adversarial verification for generated-code acceptance.** AU must require an adversarial verifier to sign off on code generation before admission. Edge cases must be recorded and fixed before release. | Verifier refusal blocks acceptance until all edge cases pass.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R029.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `AdversarialCodeVerifier` contract holds code, edge-case records (failure mode, input, output), and a binary pass/fail. Generated code without a passing verifier receipt is refused. | Verifier receipt tests prove all edge cases are stored before pass.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R029.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** A generated proposal becomes eligible for admission only after the verifier runs, records all edge cases and marks the code safe. A code change requires a fresh verification. | Tests prove that acceptance is blocked until receipt exists.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R029.3
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One served graph run generates code, triggers the verifier, records two edge cases and fixes them. The code must not reach admission until both cases pass. | `tests/harness/test_adversarial_code_verification_e2e.py::test_edge_cases_block_then_pass`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R030
      Process-liveness detection and zombie remediation
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Process-liveness detection and zombie remediation.** AU must detect hung and zombie processes during a run, propose a remedy and apply it only after explicit approval. Process termination requires approval before execution. | Remedy escalation prevents silent process kills.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R030.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `ProcessLivenessEvent` holds process ID, detection timestamp, classification (zombie or hung), proposed remedy and approval state. Remedies require explicit approval. | Process state tests prove classification and remedy proposal.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R030.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The detector checks process liveness before each tool call. A detected hung or zombie process emits an event naming it and proposing remedy. The proposed remedy does not apply until an explicit approval signal is received. | Tests prove the remediation flow requires approval.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R030.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The detector integrates with the trace path and the engine decision service. Approval signals flow through the existing authorization boundary. | Wiring test proves detector emits and receives through the right channels.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R030.4
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One served graph run launches a tool that hangs. The detector must emit an event, propose a termination remedy, wait for approval, apply it, and record the result. | `tests/harness/test_process_liveness_e2e.py::test_hung_process_detected_remedied_on_approval`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R031
      Computer-use suite routing and benchmark result integration
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Computer-use suite routing and benchmark result integration.** AU must export results from computer-use benchmark suites into the evaluation gate stream. Suite producer identity and result consumer binding are explicit. | Suite results feed the R021 admission decision.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R031.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** Named computer-use benchmark suites carry a frozen schema. Results hold suite identity, run reference, trajectory export contract, and linked metrics. Every result must route to R021 admission. | Suite results tests prove schema conformance and R021 routing.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R031.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The suite runner must export trajectories using the declared contract. Results are recorded by the runner and fed to the evaluation gate. Suite producer and explicit R021 consumer binding are separate from capture/training controls. | Tests prove independent suite producer and R021 consumer binding.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R031.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** `ContinuousEvaluationEngine.evaluate` must accept computer-use suite results and feed them to `eval_gates`. The orchestrator must bind the runner output to R021. | Wiring test proves result flow into evaluation.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R031.4
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** One served graph run launches a computer-use benchmark suite. Results must be recorded and routed to the evaluation gate. The gate must accept the suite result in its report. | `tests/harness/test_computer_use_suite_e2e.py::test_suite_results_route_to_eval_gate`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.16
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** The bound contract model holds bound identity, kind, numeric threshold and producer reference. Each report carries per-bound violation counts and violated-bound identifiers. | `tests/harness/test_eval_gates_bound_model.py::test_bound_contract_fields`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.17
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The authoritative producer of bounds is named at gate construction time. Bounds stay immutable once recorded. A duplicate-kind producer must fail. Bounds must precede any gate decision. | `tests/harness/test_eval_gates_bound_behavior.py::test_producer_immutability`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.18
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The gate reads active bounds from the named producer before each round. It must refuse evaluation if the producer is unreachable. Bounds apply in order before the report. | `tests/harness/test_eval_gates_bound_wiring.py::test_bounds_applied_in_order`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.19
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The gate must refuse an out-of-bound recommendation. It must also refuse when the bound producer is unavailable or a bound value missing. The refusal is typed `bound_violation` or `producer_unavailable`. | `tests/harness/test_eval_gates_bound_refusal.py::test_out_of_bound_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.20
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The report must record the bound identity, producer reference, observed value, bound value and satisfaction state per bound. Each violation records the specific exceeded value. | `tests/harness/test_eval_gates_bound_evidence.py::test_violation_value_recorded`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R021.21
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the evaluation round through `ContinuousEvaluationEngine.evaluate`. A scripted round has a safety-threshold bound at 0.95. One run produces a report with observed value 0.92. The gate must record the violation and refuse the recommendation. | `tests/harness/test_eval_gates_bounds_e2e.py::test_bound_violation_refused_with_producer`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032
      Served load-driving harness with concurrency and measured failure thresholds
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Served load-driving harness with concurrency and measured failure thresholds.** AU must load-drive a served agent at declared concurrency. The run must measure latency and failure rate against stated thresholds. It must report pass-fail outcome atomically. No synthetic bounded-map or scorer-only tests substitute. | The end-to-end row drives a load with concurrency, latency and failure thresholds.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `HarnessLoadConfig` defines concurrency as positive integer, workload identity as string, latency threshold milliseconds, failure-rate threshold ratio and pass-fail report. | `tests/harness/test_load_harness_config.py::test_config_frozen_and_bounded`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The load runner must measure latency per run and compute the average. It must count failures per run and compute the failure rate. Both measurements compare against thresholds and produce one atomic pass-fail verdict. | `tests/harness/test_load_harness_behavior.py::test_latency_and_failure_rate_computed`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** The load runner attaches at `agent_utilities/harness/load_harness.py` and is dispatched by the orchestration loop. It takes the config from the envelope. Each run through `run_agent` reports its outcome to the runner. | `tests/harness/test_load_harness_wiring.py::test_runner_calls_run_agent`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032.4
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The load runner must refuse a config with invalid concurrency, missing workload identity or out-of-range thresholds. A refusal is a typed `config_invalid` observation. | `tests/harness/test_load_harness_refusal.py::test_invalid_config_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032.5
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record the config, measured latency, failure rate, threshold comparisons and pass-fail verdict. A failure rate exceeding the threshold records the specific rate value. | `tests/harness/test_load_harness_evidence.py::test_trace_carries_measurements`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R032.6
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is `run_agent` dispatched with concurrency 5, latency threshold 200ms, failure-rate threshold 0.1. A scripted run produces latency 150ms and zero failures. The runner must produce a pass verdict. | `tests/harness/test_load_harness_e2e.py::test_load_run_passes_within_thresholds`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033
      Memory-aware harness with retrieval benchmark and admission controls
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Memory-aware harness with retrieval benchmark and admission controls.** AU must define a memory reference dataset, measure recall and answer accuracy, and control admission scope universally. Existing retrieval and context benchmarks provide partial coverage. | The end-to-end row drives a memory benchmark with admission.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `MemoryBenchmarkDataset` holds reference questions, gold answers, ground corpus and answer-accuracy rubric version. `MemoryAdmissionScope` names the memory change scope: per-session, per-user or per-collective. | `tests/harness/test_memory_dataset.py::test_dataset_and_scope_frozen`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The runner must measure recall as the fraction of gold answers retrieved. It must measure answer accuracy by comparing run answers against the rubric. The admission gate applies the scope to control memory mutations. | `tests/harness/test_memory_behavior.py::test_recall_and_accuracy_computed`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** Memory metrics integrate through `agent_utilities/harness/memory_benchmark.py`. The admission control gate runs before any memory mutation. It checks the scope and the run's authorization. | `tests/harness/test_memory_wiring.py::test_admission_gate_runs_first`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033.4
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The gate must refuse a memory change that violates the admitted scope. It must also refuse if the benchmark dataset or rubric is missing. A refusal is a typed `scope_violation` or `missing_benchmark` observation. | `tests/harness/test_memory_refusal.py::test_scope_violation_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033.5
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record the dataset identity, recall percentage, accuracy score, applied scope and admission verdict. The rubric version must be immutable once recorded. | `tests/harness/test_memory_evidence.py::test_trace_carries_metrics`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R033.6
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is `run_agent` with a per-user memory scope and a scripted benchmark. The run must measure recall and accuracy. The admission gate must check the scope and allow the mutation. | `tests/harness/test_memory_benchmark_e2e.py::test_memory_benchmark_with_scope_control`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034
      Recursive code and subcall trace identity with critique read contracts
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Recursive code and subcall trace identity with critique read contracts.** AU must define identity for recursive code nodes, subcalls and intermediate edges. A critique read path must consume traces. Existing orchestration vocabulary provides partial coverage. | The end-to-end row drives a recursive run with critique reads.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `RecursiveNode` in the trace model holds node kind (code, subcall, intermediate), parent reference, depth and content digest. A `CritiqueReadContract` names the critique producer and result schema. | `tests/harness/test_recursive_node.py::test_node_model_frozen`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The trace writer must extend existing traces with recursive node entries. A subcall increments the depth counter. The critique read path must consume traces at depth and resolve them programmatically. | `tests/harness/test_recursive_behavior.py::test_depth_incremented_on_subcall`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** Recursive node tracking attaches at trace write in `agent_utilities/observability/run_trace.py`. Critique reads integrate through a pluggable contract at `critique_read_contract`. | `tests/harness/test_recursive_wiring.py::test_trace_writer_extends_traces`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034.4
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** A trace with a depth exceeding `max_recursion_depth` (default 10) must be refused. A critique read with a missing contract must be refused as typed `contract_missing`. | `tests/harness/test_recursive_refusal.py::test_depth_exceeded_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034.5
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record all recursive nodes with their depth, parent, content digest and critique result. The critique producer identity must be immutable. | `tests/harness/test_recursive_evidence.py::test_recursive_nodes_persisted`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R034.6
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is `run_agent` with a scripted recursive call at depth 2. The trace must record both nodes with depths and parent links. A critique read must consume both traces. | `tests/harness/test_recursive_trace_e2e.py::test_recursive_nodes_traced_and_critiqued`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035
      Event-driven replay with adaptive harness boundary and policy-dependent refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Event-driven replay with adaptive harness boundary and policy-dependent refusal.** AU must support event cursor and period at the simulator/harness boundary. It must handle adaptation and enforce no-future-event visibility. Existing decision-engine AS OF and policy routes provide partial coverage. | The end-to-end row drives a replayed run with adaptation.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `EventCursor` holds event timestamp, sequence number and validity period. `AdaptationPolicy` names the adaptation kind and constraints. The event stream must declare no-future-event semantics. | `tests/harness/test_event_cursor.py::test_cursor_model_frozen`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The replayer must read the event cursor before each step. It must enforce the no-future-event constraint by refusing any step with a timestamp beyond the current period. Adaptation must respect policy-dependent constraints. | `tests/harness/test_event_behavior.py::test_no_future_event_enforced`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** Event cursor integration attaches at `agent_utilities/harness/replay_engine.py`. The simulator/harness boundary is defined at `replay_boundary_contract`. Policy checks run before adaptation. | `tests/harness/test_event_wiring.py::test_policy_check_before_adaptation`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035.4
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The replayer must refuse a step that violates the no-future-event constraint. It must refuse adaptation that violates policy. Both cases produce a typed `future_event` or `policy_violation` refusal. | `tests/harness/test_event_refusal.py::test_future_event_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035.5
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record the event cursor, applied period, adaptation policy and any policy violations. No future-event rejection must record the attempted timestamp. | `tests/harness/test_event_evidence.py::test_cursor_and_violations_traced`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R035.6
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is replay through `replay_and_adapt` with a scripted event cursor and policy. The run must enforce the no-future-event constraint and apply adaptation. A step beyond the period must be refused. | `tests/harness/test_event_driven_replay_e2e.py::test_no_future_event_enforced_and_adapted`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036
      Source-grounded topic and unsupported-claim metrics with label-noise tolerance
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Source-grounded topic and unsupported-claim metrics with label-noise tolerance.** AU must define source-grounded topic metrics and unsupported-claim detection. Metrics must tolerate label noise. Three evaluation scopes apply. Existing evaluation owners provide partial coverage. | The end-to-end row evaluates topics with noise tolerance.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036.1
      Model
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Model.** `TopicMetric` holds topic identity, source reference, grounding corpus identity and metric kind. `NoiseToleranceConfig` specifies acceptable label-error rate and correction method. | `tests/harness/test_topic_metric_model.py::test_metric_and_tolerance_frozen`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036.2
      Behavior
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Behavior.** The detector must measure topic presence in the source corpus and claim grounding. It must compute an unsupported-claim count. The metric must flag label errors above the tolerance threshold. | `tests/harness/test_topic_behavior.py::test_grounding_and_unsupported_computed`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036.3
      Wiring
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Wiring.** Topic metrics integrate through `agent_utilities/harness/topic_metrics.py`. Scope enforcement runs through the existing evaluation-owner authority. Label correction happens inline before verdict. | `tests/harness/test_topic_wiring.py::test_label_correction_inline`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036.4
      Refusal
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Refusal.** The metric must refuse a claim with no grounding source. It must also refuse if the grounding corpus is missing or if label errors exceed tolerance. A refusal is a typed `no_grounding`, `missing_corpus` or `label_noise_exceeded` observation. | `tests/harness/test_topic_refusal.py::test_no_grounding_refused`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036.5
      Evidence
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Evidence.** The run trace must record the topic metric result, grounding corpus identity, unsupported-claim count, label-error count and applied tolerance. | `tests/harness/test_topic_evidence.py::test_metrics_and_tolerance_traced`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-HARNESS-R036.6
      Hot-path proof
      Definition — AU-HARNESS / AU-HARNESS — Harness evolution and governed workCanonical requirement and verification source
      **Hot-path proof.** The entry point is the evaluation round through metric evaluation. A scripted run produces 10 claims, 8 grounded and 2 unsupported. Labels have a 0.1 error rate within tolerance. The metric must produce a result and record counts. | `tests/harness/test_topic_metrics_e2e.py::test_claims_evaluated_with_noise_tolerance`.
      requirementAU-HARNESSSPECIFIEDNo recorded commit/test evidence
      AU-FREEZE
      AU-FREEZE — Freeze authoritative AU release evidence
      specNoneLANDEDNo recorded commit/test evidence
      AU-FREEZE-R001
      Canonical AU release-evidence freeze manifest
      Definition — AU-FREEZE / AU-FREEZE — Freeze authoritative AU release evidenceCanonical requirement and verification source
      **Canonical AU release-evidence freeze manifest.** AU generates a canonical, machine-readable freeze manifest from one exact Git commit, covering repository URL, tree hash, version, tracked source digest, lock and manifest hashes, the generated EG client digest, build toolchain and timestamp, and binds it to the build artifact digest and each mandatory scanner and test result together with its immutable CI run URL. | Regenerating the manifest at the same commit produces byte-identical output except for a separately declared observation timestamp, and a dirty working tree or an unknown input fails generation.
      requirementAU-FREEZELANDED4059a262d70e
      AU-FREEZE-R002
      Quarantine unresolved scanner findings from the freeze
      Definition — AU-FREEZE / AU-FREEZE — Freeze authoritative AU release evidenceCanonical requirement and verification source
      **Quarantine unresolved scanner findings from the freeze.** A scanner finding that has not been remediated and merged is kept quarantined, separate from the frozen evidence set, so an unresolved finding cannot be counted as a passing mandatory scanner result. | A qualification check confirms the freeze blocks when an in-scope candidate still has a quarantined, unresolved scanner finding.
      requirementAU-FREEZELANDED4059a262d70e
      AU-FREEZE-R003
      CI installs the engine from the EG release wheel
      Definition — AU-FREEZE / AU-FREEZE — Freeze authoritative AU release evidenceCanonical requirement and verification source
      **CI installs the engine from the EG release wheel.** The `gates` job installs the Linux engine wheel from the epistemic-graph `engine-main` prerelease. It verifies the wheel against `SHA256SUMS` and records the source commit. An unavailable release falls back to the PyPI floor with a warning. The PyPI resolvability job stays advisory. | A `gates` run summary names the engine source commit, and `epistemic_graph` imports in the test environment.
      requirementAU-FREEZELANDED4059a262d70e
      64d317c9e385
      AU-RETRIEVAL
      AU-RETRIEVAL — Reproducible structure-aware retrieval evaluation
      specNoneSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R001
      Benchmark structure-aware retrieval against served hybrid search
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Benchmark structure-aware retrieval against served hybrid search.** AU benchmarks constrained section-leaf selection against hierarchical-document retrieval and the production hybrid vector-plus-graph retrieval path, using a versioned synthetic fixture corpus and optionally held-out ecosystem documents, under identical visible candidate sets and token budgets, measuring citation validity, visibility correctness, p50/p95 latency and index/update cost. | A reproducible benchmark report compares all methods on the fixture corpus with Recall@1/3, nDCG, citation-validity and latency metrics, and adoption requires a statistically defensible gain on a held-out set with no visibility or citation regression.
      requirementAU-RETRIEVALLANDED64d317c9e385
      AU-RETRIEVAL-R002
      Studied retrieval techniques enter only through the benchmark
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Studied retrieval techniques enter only through the benchmark.** AU must run a technique proposed by the study pipeline through the `AU-RETRIEVAL-R001` harness under identical candidate sets and budgets. AU must refuse admission without a paired result. | `tests/retrieval/test_study_admission.py` proves refusal without a result and acceptance with one.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003
      Iterative memory expansion stops at a declared budget and abstains
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Iterative memory expansion stops at a declared budget and abstains.** Agent memory access expands from cues through associative tags to content. It prunes paths using the evidence gathered so far and stops at a declared expansion budget. An exhausted budget returns abstention with the partial path. | See children `AU-RETRIEVAL-R003.1` to `AU-RETRIEVAL-R003.6`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003.1
      Model
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Model.** `ExpansionBudget` holds a maximum step count, a maximum node count and a token cap. `ExpansionPath` holds the ordered cue, tag and content nodes with the evidence score of each step. Both live in `agent_utilities/knowledge_graph/retrieval/`. | `tests/retrieval/test_memory_expansion.py::test_budget_and_path_types`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003.2
      Behavior
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Behavior.** Each step must expand the best-scoring frontier node, then prune paths whose evidence score falls below a named, replaceable threshold. Expansion must stop on enough evidence or on any budget limit [arXiv:2606.06036]. | `tests/retrieval/test_memory_expansion.py::test_prune_and_stop_rules`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003.3
      Wiring
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Wiring.** The expansion attaches to `retrieve_hybrid_budgeted` (`agent_utilities/knowledge_graph/retrieval/hybrid_retriever.py:1898`), which calls `retrieve_hybrid` today. This row creates the call site that passes cue nodes into the expansion when the caller requests memory mode. | `tests/retrieval/test_memory_expansion.py::test_memory_mode_reaches_expansion`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003.4
      Refusal
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Refusal.** An exhausted budget must return `RetrievalAbstention` with reason `expansion_budget_exhausted` and the partial `ExpansionPath`. The retriever must not return the partial path as an answer. | `tests/retrieval/test_memory_expansion.py::test_exhausted_budget_abstains`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003.5
      Evidence
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Evidence.** The retrieval trace must record the steps taken, the nodes pruned, the budget spent and the stop reason. The paired benchmark in `AU-RETRIEVAL-R001` must report these fields. | `tests/retrieval/test_memory_expansion.py::test_trace_budget_fields`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R003.6
      Hot-path proof
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served memory retrieval operation. A cue with enough evidence must answer within budget. A cue in a sparse graph must abstain with the partial path. The test observes the trace for both. | `tests/retrieval/test_memory_expansion_served.py::test_served_memory_retrieval_budget`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004
      The generation loop requests more evidence when told it is insufficient, then abstains with a typed refusal
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **The generation loop requests more evidence when told it is insufficient, then abstains with a typed refusal.** The loop receives the sufficiency verdict and the fallback policy from the engine. It must request another round on `insufficient`. Under strict fallback it must abstain and never answer. | See children `AU-RETRIEVAL-R004.1` to `AU-RETRIEVAL-R004.6`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004.1
      Model
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Model.** The loop receives `EvidenceSufficiency` (`sufficient`, `insufficient`) and `FallbackPolicy` (`lenient`, `strict`) from `EG-FEDERATED-QUERY`. The round limit is received from the engine; fallback default 2. The harness defines no sufficiency rule. | `tests/retrieval/test_insufficient_evidence.py::test_loop_receives_verdict_and_policy`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004.2
      Behavior
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Behavior.** `ExecutableRagProgram.run` (`executable_rag.py:236`) must request another round when the verdict is `insufficient`. It must stop requesting at the received round limit. Then the received policy applies. `lenient` returns the extractive answer. `strict` abstains. | `tests/retrieval/test_insufficient_evidence.py::test_loop_requests_rounds_then_applies_policy`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004.3
      Wiring
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Wiring.** The run loop reads the verdict where it now reads the marker test at `executable_rag.py:256` and `executable_rag.py:266`. `HybridRetriever.retrieve_executable` (`hybrid_retriever.py:1917`) passes the received policy. Its production caller is `_analysis_action_executable_rag` (`analysis_tools.py:2294`). | `tests/retrieval/test_insufficient_evidence.py::test_policy_reaches_answer_step`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004.4
      Refusal
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Refusal.** Under `strict` the loop must return `RetrievalAbstention` with reason `insufficient_evidence` and the evidence gathered. It must not return an answer string. The type is the one in `AU-RETRIEVAL-R003.4`. | `tests/retrieval/test_insufficient_evidence.py::test_strict_abstains_without_answer`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004.5
      Evidence
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Evidence.** The loop must emit each round, the received verdict, the received policy and the outcome (`answered` or `abstained`) as `StepTrace` events (`executable_rag.py:66`). | `tests/retrieval/test_insufficient_evidence.py::test_trace_records_rounds_and_outcome`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R004.6
      Hot-path proof
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `executable_rag` analysis action. With a scripted `strict` policy and an `insufficient` verdict, the loop must abstain after the round limit. The test observes the trace. | `tests/retrieval/test_insufficient_evidence_served.py::test_served_executable_rag_abstains_under_strict`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005
      The iterative loop stops when the engine's stop verdict says so
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **The iterative loop stops when the engine's stop verdict says so.** The loop receives a stop verdict, with its reason and margin, each round. It must stop on `stop` and continue otherwise. It must trace the received reason. | See children `AU-RETRIEVAL-R005.1` to `AU-RETRIEVAL-R005.6`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005.1
      Model
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Model.** The loop receives `StopDecision` (reason, margin, threshold) from `EG-FEDERATED-QUERY`. The engine computes the calibrated margin. The harness holds no calibration table. Any threshold is received from the engine; fallback default is the repeat-only rule. | `tests/retrieval/test_confidence_margin_stop.py::test_loop_receives_stop_decision`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005.2
      Behavior
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Behavior.** The loop must pass each round's answer to the engine and stop when the verdict says stop. It must not compare confidences itself. | `tests/retrieval/test_confidence_margin_stop.py::test_loop_obeys_stop_verdict`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005.3
      Wiring
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Wiring.** The loop calls the engine at `iterative_expansion.py:171` and `iterative_expansion.py:229`, and at `active_reconstruction.py:237` and `active_reconstruction.py:282`. The production caller of the first is `engine_query.py:1509` through `IterativeQueryExpander.run`. | `tests/retrieval/test_confidence_margin_stop.py::test_expander_applies_engine_verdict`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005.4
      Refusal
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Refusal.** When the engine gives no verdict, the loop must use the fallback repeat-only rule and record the margin as `unavailable`. A malformed verdict must raise a typed validation error. | `tests/retrieval/test_confidence_margin_stop.py::test_missing_or_invalid_verdict`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005.5
      Evidence
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Evidence.** The loop must emit the received stop reason, margin, threshold and round count to the trace. | `tests/retrieval/test_confidence_margin_stop.py::test_trace_stop_reason_fields`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R005.6
      Hot-path proof
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Hot-path proof.** The entry point is the query operation in `engine_query.py` that builds the expander. A scripted `stop` verdict must end the loop early. A `continue` verdict must keep it running. The test observes the trace. | `tests/retrieval/test_confidence_margin_stop_served.py::test_served_query_obeys_stop_verdict`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006
      The answer step applies the engine's arbitration verdict
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **The answer step applies the engine's arbitration verdict.** The step receives the verdict between model prior and retrieved evidence from the engine. It must return the chosen candidate, or abstain with a typed refusal. | See children `AU-RETRIEVAL-R006.1` to `AU-RETRIEVAL-R006.6`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006.1
      Model
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Model.** The step receives `ArbitrationResult` (chosen candidate or abstention, both candidates, evidence classes) from `EG-FEDERATED-QUERY`. The engine owns the margin and the prior probe. Any margin is received from the engine; fallback default is abstain. | `tests/retrieval/test_prior_evidence_arbitration.py::test_step_receives_arbitration_result`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006.2
      Behavior
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Behavior.** The step must return the chosen candidate when the engine chooses one. It must abstain when the engine abstains. It must not compare the candidates itself. | `tests/retrieval/test_prior_evidence_arbitration.py::test_step_applies_verdict`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006.3
      Wiring
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Wiring.** The step applies the verdict at the answer step of `ExecutableRagProgram.run` (`executable_rag.py:256`), after `answer_fn`. The production caller is `_analysis_action_executable_rag` (`analysis_tools.py:2294`). | `tests/retrieval/test_prior_evidence_arbitration.py::test_verdict_applied_at_answer_step`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006.4
      Refusal
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Refusal.** On an abstain verdict the step must return `RetrievalAbstention` with reason `prior_evidence_conflict`. It must carry both candidates and both evidence classes. | `tests/retrieval/test_prior_evidence_arbitration.py::test_abstain_verdict_carries_both`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006.5
      Evidence
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Evidence.** The step must emit the received verdict, both candidates, the margin used and the evidence classes to the trace. | `tests/retrieval/test_prior_evidence_arbitration.py::test_trace_records_both_candidates`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      AU-RETRIEVAL-R006.6
      Hot-path proof
      Definition — AU-RETRIEVAL / AU-RETRIEVAL — Reproducible structure-aware retrieval evaluationCanonical requirement and verification source
      **Hot-path proof.** The entry point is the served `executable_rag` analysis action. A scripted choose verdict must return the candidate. A scripted abstain verdict must abstain with both candidates. The test observes the trace. | `tests/retrieval/test_prior_evidence_arbitration_served.py::test_served_verdict_application`.
      requirementAU-RETRIEVALSPECIFIEDNo recorded commit/test evidence
      TitleSpec delivery: agent-utilities
      RepositoryKnuckles-Team/agent-utilities
      Commit5039743da398
      Captured (UTC)2026-10-16T16:20:56
      Snapshotsnapshot.json (v1)
      Sourcespecs/*/status.json
      Sheet1 of 1