- EG-CQ-CONN416
- EG-CQ-XSRC56
- EG-DATAPLAT-VOCAB49
- EG-DECISION-ENGINE384
- EG-DURABLE-KERNEL178
- EG-IDENTITY27
- EG-FEDERATED-QUERY243
- EG-FINANCE-PRIMITIVES150
- EG-INGEST-WORKER44
- EG-MEDIA-VOCAB116
- EG-CQ-ORCH63
- EG-ORCH-VOCAB109
- EG-PLACEMENT46
- EG-CONTRACT68
- 5 more specs. Panel D shows all specs.
- Requirementsall slices in all specs2448
- Requirements not donenot VERIFIED1934
- Specs not donewhole specs only19
Each spec shows its requirement count. Panel J lists every record.
Requirements (2448)
Specs (19)
Each bar shows one state against all records of the same kind.
Percentages count current rows. Done means VERIFIED.
| State | Definition |
|---|---|
| SPECIFIED | The requirement is written. No code for it is on the default branch. |
| LANDED | A commit that carries its ID in a Spec trailer is on the default branch. |
| VERIFIED | It 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
| Spec / title | Req. | Landed | Done | Spec state | Code references |
|---|---|---|---|---|---|
| EG-CQ-CONNEG-CQ-CONN — Connector competency questions | 416 | 0/416 | 0 | SPECIFIED | crates/eg-core/src/graph/schema_sources.rs implementation: file exists; coverage not verified spec.md documentation: file exists; coverage not verified tasks.md documentation: file exists; coverage not verified design.md documentation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified test-spec.md documentation: file exists; coverage not verified |
| EG-CQ-XSRCEG-CQ-XSRC — Cross-source competency: supply chain to services | 56 | 0/56 | 0 | SPECIFIED | spec.md documentation: file exists; coverage not verified |
| EG-DATAPLAT-VOCABEG-DATAPLAT-VOCAB — Data-platform vocabulary | 49 | 0/49 | 0 | SPECIFIED | crates/eg-plan/src/virtual_graph_mapping.rs implementation: file exists; coverage not verified spec.md documentation: file exists; coverage not verified plan.md documentation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified |
| EG-DECISION-ENGINEEG-DECISION-ENGINE — Decision engine | 384 | 163/384 | 163 | SPECIFIED | AU-CONTEXT-R004 documentation: external declaration; not verified Capacity.tokens, context_knapsack.py:98 implementation: external declaration; not verified fit_to_budget:422 implementation: external declaration; not verified knapsack_model:161 implementation: external declaration; not verified solve/mod.rs:1 implementation: external declaration; not verified stat_decide.rs:134 implementation: external declaration; not verified contract/schemas/method.request.json implementation: file exists; coverage not verified crates/eg-compute/src/assemble/conclude.rs implementation: file exists; coverage not verified crates/eg-compute/src/assemble/conclude.rs:93 implementation: file exists; coverage not verified crates/eg-compute/src/assemble/conclude.rs:99 implementation: file exists; coverage not verified crates/eg-compute/src/assemble/eliminate.rs:138 implementation: file exists; coverage not verified crates/eg-compute/src/assemble/eliminate.rs:97 implementation: file exists; coverage not verified crates/eg-compute/src/assemble/model.rs:96 implementation: file exists; coverage not verified crates/eg-compute/src/assemble/topology.rs:54 implementation: file exists; coverage not verified crates/eg-compute/src/solve/verify/mod.rs:23 implementation: file exists; coverage not verified crates/eg-core/ontology/orchestration-v1.ttl:250 implementation: file exists; coverage not verified crates/eg-durable/src/project.rs:68 implementation: file exists; coverage not verified crates/eg-epistemic/src/query.rs:661 implementation: file exists; coverage not verified crates/eg-epistemic/src/ranking.rs implementation: file exists; coverage not verified crates/eg-epistemic/src/ranking.rs:116 implementation: file exists; coverage not verified crates/eg-modality/src/provenance.rs:22 implementation: file exists; coverage not verified crates/eg-numeric/benches/decision_resident_scorer.rs implementation: file exists; coverage not verified crates/eg-numeric/src/py/method_body.rs implementation: file exists; coverage not verified crates/eg-numeric/src/risk/reputation.rs implementation: file exists; coverage not verified crates/eg-plan/src/exec/reliability.rs implementation: file exists; coverage not verified crates/eg-tsdb/src/derive/mod.rs:152 implementation: file exists; coverage not verified crates/eg-types/src/decision/derivation.rs:310 implementation: file exists; coverage not verified crates/eg-types/src/decision/guardrail.rs implementation: file exists; coverage not verified crates/eg-types/src/decision/guardrail.rs:62 implementation: file exists; coverage not verified crates/eg-types/src/decision/ingestion_ladder.rs:46 implementation: file exists; coverage not verified crates/eg-types/src/decision/record/premise.rs:17 implementation: file exists; coverage not verified crates/eg-types/src/decision/statistical.rs:58 implementation: file exists; coverage not verified crates/eg-types/src/decision/statistical/harness_config.rs:81 implementation: file exists; coverage not verified crates/eg-types/src/decision/statistical/tool_subset.rs:58 implementation: file exists; coverage not verified crates/eg-types/src/decision/topology.rs:110 implementation: file exists; coverage not verified crates/eg-types/src/decision/topology.rs:75 implementation: file exists; coverage not verified crates/eg-types/src/outcome_bundle.rs:56 implementation: file exists; coverage not verified epistemic_graph/connector_pack.py implementation: file exists; coverage not verified epistemic_graph/decision_client.py implementation: file exists; coverage not verified src/redb_store/work_item/commit.rs:211 implementation: file exists; coverage not verified src/server/dispatch/router/decision_plane.rs:95 implementation: file exists; coverage not verified src/server/handlers/decide/candidates.rs:415 implementation: file exists; coverage not verified src/server/handlers/decide/stat_decide.rs:48 implementation: file exists; coverage not verified src/server/handlers/decide/stat_tool_subset.rs:33 implementation: file exists; coverage not verified src/server/handlers/decide/stat_walk_forward.rs implementation: file exists; coverage not verified src/server/handlers/decide/statistical.rs:11 implementation: file exists; coverage not verified src/server/mutation_batch/terminal_outcome.rs:22 implementation: file exists; coverage not verified src/server/persistence/agent_library.rs implementation: file exists; coverage not verified tests/test_decision_static_contracts.py test: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified |
| EG-DURABLE-KERNELEG-DURABLE-KERNEL — Durable graph kernel | 178 | 103/178 | 85 | SPECIFIED | .github/workflows/release.yml implementation: file exists; coverage not verified ReadThrough and ReadThroughFactory implementation: file exists; coverage not verified budget.rs:264 implementation: file exists; coverage not verified core_node_mutation.rs:60 implementation: file exists; coverage not verified core_readthrough.rs:11 implementation: file exists; coverage not verified crates/eg-capabilities/src/domains/graph.rs implementation: file exists; coverage not verified crates/eg-core/src/rbac_persist/durable_write.rs:105 implementation: file exists; coverage not verified crates/eg-jobs/src/store.rs:2537 implementation: file exists; coverage not verified crates/eg-tsdb/src/store.rs implementation: file exists; coverage not verified crates/eg-types/src/pre_merge_test_module.rs implementation: file exists; coverage not verified engine reference documentation: file exists; coverage not verified gateway_graph.rs:111 implementation: file exists; coverage not verified graph.rs implementation: file exists; coverage not verified main.rs:1547 implementation: file exists; coverage not verified nodes.rs:85 implementation: file exists; coverage not verified persist.rs:78 implementation: file exists; coverage not verified read_through.rs implementation: file exists; coverage not verified redb_backend.rs implementation: file exists; coverage not verified registry.rs:553 implementation: file exists; coverage not verified scripts/validate-raft-cluster.sh implementation: file exists; coverage not verified src/raft/flake_budget.rs implementation: file exists; coverage not verified src/raft/harness/trace_capture.rs implementation: file exists; coverage not verified src/raft/tests.rs implementation: file exists; coverage not verified src/server/blob/store/holders.rs implementation: file exists; coverage not verified src/server/handlers/graph_ops/memory.rs implementation: file exists; coverage not verified src/server/mutation_batch.rs implementation: file exists; coverage not verified store_read.rs:336 implementation: file exists; coverage not verified store_read.rs:356 implementation: file exists; coverage not verified trait_graph.rs:94 implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified |
| EG-IDENTITYEG-IDENTITY — Engine identity, mode and scope authority | 27 | 8/27 | 5 | SPECIFIED | crates/eg-types/src/identity.rs:1 implementation: file exists; coverage not verified crates/eg-types/src/identity/model.rs:41 implementation: file exists; coverage not verified crates/eg-types/src/rbac_elevation/ledger.rs:268 implementation: file exists; coverage not verified src/server/access.rs:702 implementation: file exists; coverage not verified src/server/auth.rs:901 implementation: file exists; coverage not verified src/server/graph_schema/compose.rs implementation: file exists; coverage not verified src/server/handlers/graph_ops/gateway.rs:72 implementation: file exists; coverage not verified src/server/handlers/graph_ops/gateway_graph.rs:151 implementation: file exists; coverage not verified src/server/handlers/graph_ops/nodes.rs:85 implementation: file exists; coverage not verified src/server/handlers/rdf/validation.rs:21 implementation: file exists; coverage not verified src/server/mutation_batch/compile.rs:126 implementation: file exists; coverage not verified tasks.md documentation: file exists; coverage not verified test-spec.md documentation: file exists; coverage not verified architecture.md documentation: file exists; coverage not verified crates/eg-capabilities/src/domains/security.rs implementation: file exists; coverage not verified crates/eg-core/src/isolation/identity_admin.rs implementation: file exists; coverage not verified crates/eg-core/src/rbac_persist.rs implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified src/audit.rs implementation: file exists; coverage not verified src/server/auth.rs implementation: file exists; coverage not verified src/server/dispatch/router/identity_access.rs implementation: file exists; coverage not verified src/server/oidc.rs implementation: file exists; coverage not verified |
| EG-FEDERATED-QUERYEG-FEDERATED-QUERY — Federated query, search, and reasoning | 243 | 71/243 | 37 | SPECIFIED | Column rendering implementation: external declaration; not verified Control-lease contract implementation: external declaration; not verified Dispatch attachment implementation: external declaration; not verified Existing result fetch implementation: external declaration; not verified Foreign-query handler implementation: external declaration; not verified SDK-SOURCE-INGEST-R004.1–.6 documentation: external declaration; not verified SQL validation implementation: external declaration; not verified Compact tests test: file exists; coverage not verified EG-TYPED-PACKS-R043 and R048 documentation: file exists; coverage not verified Method::ShexValidate implementation: file exists; coverage not verified Schema::from_shexj implementation: file exists; coverage not verified ShexReport::from_results implementation: file exists; coverage not verified ShexValidationReport implementation: file exists; coverage not verified architecture documentation: file exists; coverage not verified capability row implementation: file exists; coverage not verified compact.rs implementation: file exists; coverage not verified core tests test: file exists; coverage not verified crates/eg-compute/src/assemble/conclude.rs:69 implementation: file exists; coverage not verified crates/eg-compute/src/finance/market/confidence.rs:113 implementation: file exists; coverage not verified crates/eg-compute/src/mining/causal_impact.rs implementation: file exists; coverage not verified crates/eg-core/src/projection_catalog.rs:75 implementation: file exists; coverage not verified crates/eg-graphql/src/crossmodal.rs:429 implementation: file exists; coverage not verified crates/eg-lake/src/catalog.rs:27 implementation: file exists; coverage not verified crates/eg-lake/src/iceberg_avro.rs:371 implementation: file exists; coverage not verified crates/eg-lake/src/lib.rs:299 implementation: file exists; coverage not verified crates/eg-plan/src/algebra.rs:21 implementation: file exists; coverage not verified crates/eg-plan/src/exec.rs implementation: file exists; coverage not verified crates/eg-plan/src/exec.rs:1436 implementation: file exists; coverage not verified crates/eg-plan/src/exec.rs:278 implementation: file exists; coverage not verified crates/eg-plan/src/exec.rs:536 implementation: file exists; coverage not verified crates/eg-plan/src/exec.rs:84 implementation: file exists; coverage not verified crates/eg-plan/src/exec.rs:848 implementation: file exists; coverage not verified crates/eg-plan/src/exec/vector_rank.rs:65 implementation: file exists; coverage not verified crates/eg-plan/src/exec/vector_rank.rs:97 implementation: file exists; coverage not verified crates/eg-plan/src/federation.rs implementation: file exists; coverage not verified crates/eg-plan/src/federation.rs:933 implementation: file exists; coverage not verified crates/eg-plan/src/federation_ssrf.rs implementation: file exists; coverage not verified crates/eg-plan/src/knowledge.rs implementation: file exists; coverage not verified crates/eg-plan/src/leanrag.rs:125 implementation: file exists; coverage not verified crates/eg-plan/src/leanrag.rs:66 implementation: file exists; coverage not verified crates/eg-plan/src/runtime.rs:61 implementation: file exists; coverage not verified crates/eg-plan/src/uql/serve/annotate.rs implementation: file exists; coverage not verified crates/eg-query/src/sql/ann.rs implementation: file exists; coverage not verified crates/eg-query/src/sql/ann.rs:116 implementation: file exists; coverage not verified crates/eg-query/src/tables/embedding_binding.rs:398 implementation: file exists; coverage not verified crates/eg-types/src/embedding.rs:47 implementation: file exists; coverage not verified crates/eg-types/src/lake_catalog.rs implementation: file exists; coverage not verified crates/eg-types/src/wire_query_core.rs implementation: file exists; coverage not verified crates/eg-types/src/wire_query_core.rs:27 implementation: file exists; coverage not verified eg_shex::validate implementation: file exists; coverage not verified epistemic_graph/generated/query.py implementation: file exists; coverage not verified feature declaration implementation: file exists; coverage not verified handle_shex_validate implementation: file exists; coverage not verified src/redb_store/work_item/control_lease.rs:58 implementation: file exists; coverage not verified src/server/handlers/graphlearn.rs implementation: file exists; coverage not verified src/server/handlers/jobs/executor_claim.rs:82 implementation: file exists; coverage not verified src/server/handlers/query/dispatch.rs:133 implementation: file exists; coverage not verified src/server/handlers/query/dispatch.rs:66 implementation: file exists; coverage not verified src/server/handlers/query/planning.rs:11 implementation: file exists; coverage not verified src/server/handlers/query/planning.rs:411 implementation: file exists; coverage not verified src/server/handlers/query/planning.rs:424 implementation: file exists; coverage not verified src/server/handlers/query/planning.rs:611 implementation: file exists; coverage not verified src/server/handlers/query/planning.rs:854 implementation: file exists; coverage not verified src/server/handlers/query/sql_read.rs:100 implementation: file exists; coverage not verified src/server/handlers/query/sql_read.rs:305 implementation: file exists; coverage not verified src/server/handlers/query/sql_read.rs:379 implementation: file exists; coverage not verified src/server/handlers/query/uql_statement.rs:17 implementation: file exists; coverage not verified src/server/handlers/semantic_index/dispatch.rs:14 implementation: file exists; coverage not verified src/server/handlers/semantic_index/worker.rs:175 implementation: file exists; coverage not verified src/server/lake/catalog_ops.rs:104 implementation: file exists; coverage not verified src/server/lake/mod.rs:602 implementation: file exists; coverage not verified src/server/lake/rest/catalog.rs:318 implementation: file exists; coverage not verified src/server/lake/rest/mod.rs implementation: file exists; coverage not verified src/server/semantic_index.rs:145 implementation: file exists; coverage not verified tasks documentation: file exists; coverage not verified try_handle implementation: file exists; coverage not verified validate.rs implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified test-spec.md documentation: file exists; coverage not verified |
| EG-FINANCE-PRIMITIVESEG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidence | 150 | 25/150 | 25 | SPECIFIED | crates/eg-compute/src/finance/lot_accounting.rs implementation: file exists; coverage not verified crates/eg-compute/src/finance/market/backtest_run.rs implementation: file exists; coverage not verified crates/eg-compute/src/finance/quant/validation.rs implementation: file exists; coverage not verified crates/eg-compute/src/finance/regime.rs implementation: file exists; coverage not verified crates/eg-compute/src/finance/statespace.rs:167 implementation: file exists; coverage not verified crates/eg-compute/src/finance/statespace.rs:56 implementation: file exists; coverage not verified crates/eg-compute/src/finance/statespace.rs:94 implementation: file exists; coverage not verified crates/eg-core/ontology/finance-v1.ttl implementation: file exists; coverage not verified crates/eg-numeric/src/evaluation/skill.rs:16 implementation: file exists; coverage not verified crates/eg-numeric/src/series/kalman.rs:52 implementation: file exists; coverage not verified crates/eg-plan/src/exec/derive.rs:21 implementation: file exists; coverage not verified crates/eg-plan/src/exec/dispatch.rs:461 implementation: file exists; coverage not verified crates/eg-tsdb/src/derive/mod.rs:1 implementation: file exists; coverage not verified crates/eg-types/src/finance_event_envelope.rs implementation: file exists; coverage not verified crates/eg-types/src/wire_finance.rs implementation: file exists; coverage not verified src/server/handlers/finance/route_families.rs:211 implementation: file exists; coverage not verified src/server/handlers/finance/route_families.rs:576 implementation: file exists; coverage not verified src/server/handlers/query/sql_read.rs:305 implementation: file exists; coverage not verified src/server/handlers/timeseries.rs:367 implementation: file exists; coverage not verified src/server/handlers/timeseries/derived.rs:222 implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified |
| EG-INGEST-WORKEREG-INGEST-WORKER — Durable ingest worker | 44 | 0/44 | 0 | SPECIFIED | crates/eg-document/src/contract.rs:141 implementation: file exists; coverage not verified crates/eg-document/src/document.rs:225 implementation: file exists; coverage not verified crates/eg-document/src/runtime.rs:79 implementation: file exists; coverage not verified crates/eg-types/src/source_ingestion.rs:265 implementation: file exists; coverage not verified spec.md documentation: file exists; coverage not verified src/server/dispatch/graph_pipeline/native_routes.rs:408 implementation: file exists; coverage not verified src/server/dispatch/graph_pipeline/native_routes.rs:428 implementation: file exists; coverage not verified src/server/handlers/modality/ingest.rs:151 implementation: file exists; coverage not verified src/server/handlers/source_ingestion.rs:155 implementation: file exists; coverage not verified src/server/handlers/source_ingestion.rs:1683 implementation: file exists; coverage not verified src/server/handlers/source_ingestion.rs:1791 implementation: file exists; coverage not verified src/server/handlers/source_ingestion.rs:2187 implementation: file exists; coverage not verified src/server/handlers/source_ingestion.rs:385 implementation: file exists; coverage not verified |
| EG-MEDIA-VOCABEG-MEDIA-VOCAB — Media and personal-content vocabulary | 116 | 0/116 | 0 | SPECIFIED | spec.md documentation: file exists; coverage not verified |
| EG-CQ-ORCHEG-CQ-ORCH — Orchestration competency questions | 63 | 0/63 | 0 | SPECIFIED | crates/eg-compute/src/parser/resolve.rs:63 implementation: file exists; coverage not verified design.md documentation: file exists; coverage not verified src/server/handlers/mining/impact.rs:264 implementation: file exists; coverage not verified |
| EG-ORCH-VOCABEG-ORCH-VOCAB — Orchestration vocabulary | 109 | 2/109 | 2 | SPECIFIED | crates/eg-core/ontology/sdd-v1.ttl implementation: file exists; coverage not verified crates/eg-query/src/cypher/exec.rs:4574 implementation: file exists; coverage not verified crates/eg-rdf/tests/orchestration_vocabulary.rs test: file exists; coverage not verified crates/eg-types/src/agent_ontology.rs implementation: file exists; coverage not verified crates/eg-types/src/agent_template.rs implementation: file exists; coverage not verified crates/eg-types/src/authority/replay.rs:191 implementation: file exists; coverage not verified crates/eg-types/src/change_envelope.rs:248 implementation: file exists; coverage not verified crates/eg-types/src/graph_schema.rs:79 implementation: file exists; coverage not verified crates/eg-types/src/ingestion_wire.rs:36 implementation: file exists; coverage not verified crates/eg-types/src/outcome_bundle.rs:130 implementation: file exists; coverage not verified crates/eg-types/src/outcome_bundle.rs:668 implementation: file exists; coverage not verified crates/eg-types/src/protocol/method/method_00.rs:6 implementation: file exists; coverage not verified crates/eg-types/src/protocol/method/method_03.rs:317 implementation: file exists; coverage not verified design.md documentation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified src/server/connector_pack_projection.rs implementation: file exists; coverage not verified src/server/dispatch/change_envelope.rs:36 implementation: file exists; coverage not verified src/server/dispatch/router/source_ingest.rs:24 implementation: file exists; coverage not verified src/server/handlers/decide/assemble.rs implementation: file exists; coverage not verified src/server/handlers/graph_ops/gateway_graph.rs implementation: file exists; coverage not verified src/server/handlers/graph_ops/gateway_graph.rs:62 implementation: file exists; coverage not verified src/server/persistence/provenance_anchor.rs:55 implementation: file exists; coverage not verified test-spec.md documentation: file exists; coverage not verified |
| EG-PLACEMENTEG-PLACEMENT — Placement, worker policy and analytics bound | 46 | 10/46 | 10 | SPECIFIED | crates/eg-compute/src/mining/association.rs:402 implementation: file exists; coverage not verified crates/eg-jobs/src/store.rs:736 implementation: file exists; coverage not verified crates/eg-quantum-jobs/src/job.rs:275 implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified spec.md documentation: file exists; coverage not verified specs/decision-engine/requirements.md:163 documentation: file exists; coverage not verified src/server/dispatch/router/decision_plane.rs:64 implementation: file exists; coverage not verified src/server/handlers/decide/assemble.rs:57 implementation: file exists; coverage not verified src/server/handlers/jobs/submit.rs:289 implementation: file exists; coverage not verified |
| EG-CONTRACTEG-CONTRACT — Public engine contract and reproducible clients | 68 | 55/68 | 41 | SPECIFIED | .github/workflows/release.yml implementation: file exists; coverage not verified Cargo.toml implementation: file exists; coverage not verified EG-DECISION-ENGINE documentation: file exists; coverage not verified EG-DURABLE-KERNEL documentation: file exists; coverage not verified EG-FEDERATED-QUERY documentation: file exists; coverage not verified EG-FINANCE-PRIMITIVES documentation: file exists; coverage not verified EG-IDENTITY documentation: file exists; coverage not verified EG-UNIFIED-DATA-PLANE-R001 documentation: file exists; coverage not verified The component registry implementation: file exists; coverage not verified The engine diagram documentation: file exists; coverage not verified The scanner configuration implementation: file exists; coverage not verified build_backend.py implementation: file exists; coverage not verified clients/go/go.mod implementation: file exists; coverage not verified clients/js/package-lock.json implementation: file exists; coverage not verified crates/eg-core/src/read_through.rs implementation: file exists; coverage not verified engine.md documentation: file exists; coverage not verified folded-wheel/action.yml implementation: file exists; coverage not verified modality_serving.md documentation: file exists; coverage not verified native-program-optimization.md documentation: file exists; coverage not verified pyproject.toml implementation: file exists; coverage not verified scripts/build_method_codec_wasm.py implementation: file exists; coverage not verified scripts/check_wheel_completeness.py implementation: file exists; coverage not verified scripts/check_wheel_privacy.py implementation: file exists; coverage not verified scripts/ci_parity.sh implementation: file exists; coverage not verified src/server/handlers/query/planning.rs:424 implementation: file exists; coverage not verified src/server/mutation.rs:136 implementation: file exists; coverage not verified clients/go/codec.go implementation: file exists; coverage not verified clients/js/codec.mjs implementation: file exists; coverage not verified contract/errors.json implementation: file exists; coverage not verified contract/fixtures/method_body_vectors.json implementation: file exists; coverage not verified contract/methods.json implementation: file exists; coverage not verified crates/eg-capabilities/src/bin/gen_contract.rs implementation: file exists; coverage not verified epistemic_graph/generated/models.py implementation: file exists; coverage not verified plan.md documentation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified scripts/generated_artifacts.py implementation: file exists; coverage not verified tasks.md documentation: file exists; coverage not verified test-spec.md documentation: file exists; coverage not verified |
| EG-REPO-INGESTEG-REPO-INGEST — Repository index and native ingestion | 31 | 22/31 | 5 | SPECIFIED | .config/pre-commit.yaml implementation: file exists; coverage not verified architecture.md documentation: file exists; coverage not verified crates/eg-compute/src/parser/branch_index.rs implementation: file exists; coverage not verified crates/eg-compute/src/parser/branch_index_tests.rs implementation: file exists; coverage not verified crates/eg-types/src/ingestion_wire.rs implementation: file exists; coverage not verified crates/eg-types/src/source_ingestion.rs implementation: file exists; coverage not verified crates/eg-types/src/source_ingestion/tests.rs implementation: file exists; coverage not verified docs/architecture/source_ingestion.md documentation: file exists; coverage not verified epistemic_graph/generated/index_repository.py implementation: file exists; coverage not verified spec.md documentation: file exists; coverage not verified src/server/dispatch/graph_pipeline/repository_index.rs implementation: file exists; coverage not verified src/server/handlers/repository_index.rs implementation: file exists; coverage not verified src/server/handlers/repository_index_tests.rs implementation: file exists; coverage not verified src/server/handlers/source_ingestion.rs implementation: file exists; coverage not verified src/server/repository_enrichment_worker.rs implementation: file exists; coverage not verified tests/repository_index_durable.rs test: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified test-spec.md documentation: file exists; coverage not verified |
| EG-SRC-AUTHEG-SRC-AUTH — Source authority: the ontology says which connected source answers a concept | 66 | 0/66 | 0 | SPECIFIED | crates/eg-core/src/graph/schema_sources.rs implementation: file exists; coverage not verified crates/eg-core/src/isolation.rs:1058 implementation: file exists; coverage not verified crates/eg-plan/src/federation.rs implementation: file exists; coverage not verified crates/eg-rdf/src/source_selection.rs implementation: file exists; coverage not verified crates/eg-rdf/src/source_selection.rs:172 implementation: file exists; coverage not verified crates/eg-rdf/src/source_selection.rs:26 implementation: file exists; coverage not verified crates/eg-types/src/governed_change.rs implementation: file exists; coverage not verified crates/eg-types/src/protocol/method/method_00.rs:6 implementation: file exists; coverage not verified crates/eg-types/src/wire_query_modalities.rs implementation: file exists; coverage not verified specs/cross-source-competency/plan.md documentation: file exists; coverage not verified specs/orchestration-competency/requirements.md documentation: file exists; coverage not verified src/server/graph_schema/approved.rs implementation: file exists; coverage not verified src/server/graph_schema/virtual_graph_tests.rs:35 implementation: file exists; coverage not verified src/server/handlers/graph_ops/gateway_graph.rs:62 implementation: file exists; coverage not verified crates/eg-core/ontology/virtual_graph-v1.ttl implementation: file exists; coverage not verified |
| EG-SUPPLY-VOCABEG-SUPPLY-VOCAB — Supply-chain and service-impact vocabulary | 69 | 1/69 | 1 | SPECIFIED | crates/eg-types/src/entity_link_proposal.rs implementation: file exists; coverage not verified spec.md documentation: file exists; coverage not verified specs/cross-source-competency/plan.md documentation: file exists; coverage not verified src/server/handlers/mining/impact.rs:264 implementation: file exists; coverage not verified plan.md documentation: file exists; coverage not verified |
| EG-TYPED-PACKSEG-TYPED-PACKS — Typed packs and catalog authority | 179 | 100/179 | 63 | SPECIFIED | crates/eg-core/ontology/swarm_topology-v1.ttl:80 implementation: file exists; coverage not verified crates/eg-core/src/ontology_codegen.rs:45 implementation: file exists; coverage not verified crates/eg-types/src/agent_component.rs:130 implementation: file exists; coverage not verified crates/eg-types/src/agent_component/facts.rs:169 implementation: file exists; coverage not verified crates/eg-types/src/agent_component/facts.rs:198 implementation: file exists; coverage not verified crates/eg-types/src/agent_component/facts.rs:395 implementation: file exists; coverage not verified crates/eg-types/src/connector_pack/annotations.rs:46 implementation: file exists; coverage not verified crates/eg-types/src/decision/statistical/tool_subset.rs:58 implementation: file exists; coverage not verified crates/eg-types/src/domain_pack.rs implementation: file exists; coverage not verified crates/eg-types/src/fleet_catalog/row.rs:103 implementation: file exists; coverage not verified crates/eg-types/src/lib.rs implementation: file exists; coverage not verified evidence/gr1080-r048-5-20261011/client-parity.json implementation: file exists; coverage not verified evidence/gr1080-r048-5-20261011/results.json implementation: file exists; coverage not verified src/server/blob/engine_bodies.rs implementation: file exists; coverage not verified src/server/blob/engine_bodies.rs:202 implementation: file exists; coverage not verified src/server/connector_pack_projection.rs implementation: file exists; coverage not verified src/server/dispatch/consensus/fleet_catalog/project.rs:271 implementation: file exists; coverage not verified src/server/graph_schema/attach_pack.rs implementation: file exists; coverage not verified src/server/handlers/admin/agent.rs:142 implementation: file exists; coverage not verified src/server/handlers/admin/component_content.rs implementation: file exists; coverage not verified src/server/handlers/admin/component_content.rs:55 implementation: file exists; coverage not verified src/server/handlers/admin/connector_pack/import/annotations.rs implementation: file exists; coverage not verified src/server/handlers/admin/connector_pack/import/annotations.rs:34 implementation: file exists; coverage not verified src/server/handlers/admin/connector_pack/import/facts.rs:21 implementation: file exists; coverage not verified src/server/handlers/decide/stat_tool_subset.rs:99 implementation: file exists; coverage not verified src/server/handlers/rdf/dispatch.rs implementation: file exists; coverage not verified src/server/persistence/agent_component/write.rs:39 implementation: file exists; coverage not verified architecture.md documentation: file exists; coverage not verified contract/fixtures/connector_pack_digest_vectors.json implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified tasks.md documentation: file exists; coverage not verified |
| EG-UNIFIED-DATA-PLANEEG-UNIFIED-DATA-PLANE — Unified data plane | 154 | 83/154 | 77 | SPECIFIED | Requirements documentation: file exists; coverage not verified crates/eg-ann/src/recall.rs:28 implementation: file exists; coverage not verified crates/eg-ann/src/version.rs:129 implementation: file exists; coverage not verified crates/eg-ann/src/version.rs:32 implementation: file exists; coverage not verified crates/eg-lake/src/catalog.rs implementation: file exists; coverage not verified crates/eg-modality/src/lib.rs implementation: file exists; coverage not verified crates/eg-query/src/tables/embedding_binding.rs:526 implementation: file exists; coverage not verified crates/eg-rdf/src/obda.rs implementation: file exists; coverage not verified cross-repository contracts documentation: file exists; coverage not verified src/server/cdc.rs implementation: file exists; coverage not verified src/server/foreign_catalog.rs implementation: file exists; coverage not verified src/server/handlers/rdf/obda.rs implementation: file exists; coverage not verified requirements.md documentation: file exists; coverage not verified status.json implementation: file exists; coverage not verified tasks documentation: file exists; coverage not verified test specification 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.
Packages group specs by repository and declared component. Unassigned means no component was declared. Code links do not prove coverage. Mermaid source.
Knuckles-Team/epistemic-graph / Unassigned (19)
EG-CONTRACT: no plan diagram declared.
EG-CQ-CONN: no plan diagram declared.
EG-CQ-ORCH: no plan diagram declared.
EG-CQ-XSRC: no plan diagram declared.
EG-DATAPLAT-VOCAB: no plan diagram declared.
EG-DECISION-ENGINE: no plan diagram declared.
EG-DURABLE-KERNEL: source plan diagrams (Mermaid)
flowchart LR
W[Native / RESP / SQL / client wire] --> A[Verified identity and policy]
A --> C[Request classifier and MutationBatch compiler]
C --> O[Owner manifest and transaction admission]
O --> L[redb commit and Raft log]
L --> P[Graph / table / KV / TSDB projections]
L --> E[Outbox / CDC / audit receipts]
E --> M[Mirror and subscriber cursors]
EG-FEDERATED-QUERY: no plan diagram declared.
EG-FINANCE-PRIMITIVES: no plan diagram declared.
EG-IDENTITY: no plan diagram declared.
EG-INGEST-WORKER: no plan diagram declared.
EG-MEDIA-VOCAB: no plan diagram declared.
EG-ORCH-VOCAB: no plan diagram declared.
EG-PLACEMENT: no plan diagram declared.
EG-REPO-INGEST: source plan diagrams (Mermaid)
flowchart LR
P[Provider snapshot adapter] --> S[Generated IndexRepository client]
S --> A[Authenticated EG request boundary]
A --> I[Branch index parser and resolver]
I --> C[CAS source admission]
C --> E[Canonical ChangeEnvelope compiler]
E --> D[Durable graph and outbox commit]
D --> Q[Graph and semantic queries]
D --> W[Budgeted enrichment worker]
W --> D
EG-SRC-AUTH: no plan diagram declared.
EG-SUPPLY-VOCAB: no plan diagram declared.
EG-TYPED-PACKS: source plan diagrams (Mermaid)
flowchart LR
SDK[SDK builds canonical pack] --> UP[Blob upload]
SDK --> IM[ConnectorPack.Import]
UP --> IM
IM --> V[Bounded validation G1–G21]
V --> B[Engine body store]
B --> TX[Agent Library owner transaction]
TX --> H[Head, members, holders, receipt]
TX --> O[Import outbox]
O --> P[Projection worker]
P --> GS[GraphSchema.Attach pack source]
GS --> VIS[Visible record + outbox ack]
VIS --> READ[Typed catalog and component reads]
EG-UNIFIED-DATA-PLANE: no plan diagram declared.
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/epistemic-graph / Unassigned
| Spec | Relationship | Target | Evidence |
|---|---|---|---|
| EG-CONTRACT | references | EG-DURABLE-KERNEL | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/public-engine-contract-and-release/plan.md |
| EG-CONTRACT | references | EG-FEDERATED-QUERY | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/public-engine-contract-and-release/plan.md |
| EG-CONTRACT | references | EG-IDENTITY | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/public-engine-contract-and-release/plan.md |
| EG-CONTRACT | references | FQR-03/04/06 | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/public-engine-contract-and-release/plan.md |
| EG-CQ-CONN | references | federated query contract | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/connector-competency/plan.md |
| EG-CQ-CONN | references | unified data plane | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/connector-competency/plan.md |
| EG-CQ-ORCH | No relationships declared; dependencies unknown | ||
| EG-CQ-XSRC | No relationships declared; dependencies unknown | ||
| EG-DATAPLAT-VOCAB | No relationships declared; dependencies unknown | ||
| EG-DECISION-ENGINE | No relationships declared; dependencies unknown | ||
| EG-DURABLE-KERNEL | references | `unified-data-plane` | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/durable-graph-kernel/spec.md |
| EG-DURABLE-KERNEL | references | federated query and reasoning | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/durable-graph-kernel/spec.md |
| EG-DURABLE-KERNEL | references | public engine contract and release spec | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/durable-graph-kernel/spec.md |
| EG-DURABLE-KERNEL | references | typed packs and catalog | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/durable-graph-kernel/spec.md |
| EG-DURABLE-KERNEL | references | unified data plane | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/durable-graph-kernel/spec.md |
| EG-FEDERATED-QUERY | references | unified-data-plane | Knuckles-Team/epistemic-graph: file exists; coverage not verified; source: specs/federated-query-and-reasoning/spec.md |
| EG-FINANCE-PRIMITIVES | No relationships declared; dependencies unknown | ||
| EG-IDENTITY | No relationships declared; dependencies unknown | ||
| EG-INGEST-WORKER | No relationships declared; dependencies unknown | ||
| EG-MEDIA-VOCAB | No relationships declared; dependencies unknown | ||
| EG-ORCH-VOCAB | No relationships declared; dependencies unknown | ||
| EG-PLACEMENT | No relationships declared; dependencies unknown | ||
| EG-REPO-INGEST | No relationships declared; dependencies unknown | ||
| EG-SRC-AUTH | No relationships declared; dependencies unknown | ||
| EG-SUPPLY-VOCAB | No relationships declared; dependencies unknown | ||
| EG-TYPED-PACKS | No relationships declared; dependencies unknown | ||
| EG-UNIFIED-DATA-PLANE | No relationships declared; dependencies unknown | ||
Issues
0 open at capture.
Pull Requests
3 open at capture.
- #555 docs: adopt SI project terminology updated 2026-10-13T14:28:25Z
- #554 test: retain supported typed-pack evidence on corrected CI stack updated 2026-10-13T13:56:05Z
- #553 fix: retain supported typed-pack verification evidence updated 2026-10-13T13:26:16Z
The build reads GitHub one time. This page makes no live API requests.
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 (2467 rows)
| ID / source | Kind | Parent | State | Commit / test evidence |
|---|---|---|---|---|
| EG-CQ-CONN EG-CQ-CONN — Connector competency questions | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R001 ansible-tower competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ansible-tower competency rollup.** The ontology answers one single-source and one cross-source question over the `ansible-tower` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R001.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R001.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R001.1 ansible-tower single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ansible-tower single-source question.** "Which job templates failed in their last run, and against which inventory hosts?" Answered from the ansible-tower connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over ansible-tower data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R001.2 ansible-tower cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ansible-tower cross-source question.** "Which hosts that failed their last Tower run also have an open ServiceNow change or incident?" Requires linking ansible-tower to servicenow and systems-manager through the ontology concept: managed host (configuration item). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R001.3 ansible-tower acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ansible-tower acceptance test.** Both questions (EG-CQ-CONN-R001.1 and EG-CQ-CONN-R001.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R001.1 and EG-CQ-CONN-R001.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R002 archimate competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archimate competency rollup.** The ontology answers one single-source and one cross-source question over the `archimate` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R002.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R002.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R002.1 archimate single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archimate single-source question.** "Which application components serve a given business process, and through which relationships?" Answered from the archimate connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/archimate-v1.ttl`. | A fixture query over archimate data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R002.2 archimate cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archimate cross-source question.** "Which ArchiMate application components have no matching LeanIX fact sheet or ServiceNow CI?" Requires linking archimate to leanix and servicenow through the ontology concept: application / configuration item. Vocabulary: `crates/eg-core/ontology/archimate-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R002.3 archimate acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archimate acceptance test.** Both questions (EG-CQ-CONN-R002.1 and EG-CQ-CONN-R002.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R002.1 and EG-CQ-CONN-R002.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R003 archivebox competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archivebox competency rollup.** The ontology answers one single-source and one cross-source question over the `archivebox` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R003.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R003.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R003.1 archivebox single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archivebox single-source question.** "Which archived snapshots of a given domain failed one or more extractors, and when?" Answered from the archivebox connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/documentation-v1.ttl`. | A fixture query over archivebox data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R003.2 archivebox cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archivebox cross-source question.** "Which archived pages were first seen as FreshRSS articles but never captured by ArchiveBox?" Requires linking archivebox to freshrss and searxng through the ontology concept: URL / web resource. Vocabulary: `crates/eg-core/ontology/documentation-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R003.3 archivebox acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archivebox acceptance test.** Both questions (EG-CQ-CONN-R003.1 and EG-CQ-CONN-R003.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R003.1 and EG-CQ-CONN-R003.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R004 aris competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**aris competency rollup.** The ontology answers one single-source and one cross-source question over the `aris` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R004.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R004.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R004.1 aris single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**aris single-source question.** "Which EPC functions in a process model have no outgoing control-flow connection?" Answered from the aris connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/process_intelligence-v1.ttl`. | A fixture query over aris data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R004.2 aris cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**aris cross-source question.** "Which ARIS-modelled processes have a deployed Camunda definition, and which do not?" Requires linking aris to camunda and archimate through the ontology concept: business process. Vocabulary: `crates/eg-core/ontology/process_intelligence-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R004.3 aris acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**aris acceptance test.** Both questions (EG-CQ-CONN-R004.1 and EG-CQ-CONN-R004.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R004.1 and EG-CQ-CONN-R004.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R005 arr competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**arr competency rollup.** The ontology answers one single-source and one cross-source question over the `arr` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R005.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R005.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R005.1 arr single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**arr single-source question.** "Which monitored movies and episodes are wanted but have no file, and which indexer last searched them?" Answered from the arr connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over arr data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R005.2 arr cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**arr cross-source question.** "Which wanted Radarr titles are currently downloading in qBittorrent and not yet visible in Jellyfin?" Requires linking arr to qbittorrent and jellyfin through the ontology concept: media item (title). Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R005.3 arr acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**arr acceptance test.** Both questions (EG-CQ-CONN-R005.1 and EG-CQ-CONN-R005.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R005.1 and EG-CQ-CONN-R005.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R006 atlassian competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**atlassian competency rollup.** The ontology answers one single-source and one cross-source question over the `atlassian` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R006.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R006.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R006.1 atlassian single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**atlassian single-source question.** "Which Jira issues in a project are blocked and unassigned, and by which linked issue?" Answered from the atlassian connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A fixture query over atlassian data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R006.2 atlassian cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**atlassian cross-source question.** "Which open Jira issues reference a GitHub pull request that is already merged?" Requires linking atlassian to github and plane through the ontology concept: work item / pull request. Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R006.3 atlassian acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**atlassian acceptance test.** Both questions (EG-CQ-CONN-R006.1 and EG-CQ-CONN-R006.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R006.1 and EG-CQ-CONN-R006.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R007 audiobookshelf competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audiobookshelf competency rollup.** The ontology answers one single-source and one cross-source question over the `audiobookshelf` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R007.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R007.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R007.1 audiobookshelf single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audiobookshelf single-source question.** "Which audiobook series have a book with listening progress stopped partway, and for which user?" Answered from the audiobookshelf connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over audiobookshelf data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R007.2 audiobookshelf cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audiobookshelf cross-source question.** "Which audiobooks exist both in Audiobookshelf and as a downloaded file from media-downloader, and which are only one side?" Requires linking audiobookshelf to jellyfin and media-downloader through the ontology concept: media item (title). Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R007.3 audiobookshelf acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audiobookshelf acceptance test.** Both questions (EG-CQ-CONN-R007.1 and EG-CQ-CONN-R007.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R007.1 and EG-CQ-CONN-R007.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R008 audio-transcriber competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audio-transcriber competency rollup.** The ontology answers one single-source and one cross-source question over the `audio-transcriber` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R008.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R008.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R008.1 audio-transcriber single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audio-transcriber single-source question.** "Which recordings were transcribed with a low-confidence segment, and what text was affected?" Answered from the audio-transcriber connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over audio-transcriber data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R008.2 audio-transcriber cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audio-transcriber cross-source question.** "Which transcribed recordings mention a topic that also appears in PulseLink social or video transcripts?" Requires linking audio-transcriber to pulselink and paperless-ngx through the ontology concept: document / transcript. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R008.3 audio-transcriber acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**audio-transcriber acceptance test.** Both questions (EG-CQ-CONN-R008.1 and EG-CQ-CONN-R008.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R008.1 and EG-CQ-CONN-R008.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R009 caddy competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**caddy competency rollup.** The ontology answers one single-source and one cross-source question over the `caddy` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R009.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R009.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R009.1 caddy single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**caddy single-source question.** "Which routes proxy to a given upstream, and which hostnames are served by each site block?" Answered from the caddy connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over caddy data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R009.2 caddy cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**caddy cross-source question.** "Which Caddy hostnames have no DNS record in Technitium or no Uptime Kuma monitor?" Requires linking caddy to technitium-dns and uptime through the ontology concept: hostname. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R009.3 caddy acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**caddy acceptance test.** Both questions (EG-CQ-CONN-R009.1 and EG-CQ-CONN-R009.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R009.1 and EG-CQ-CONN-R009.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R010 camunda competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**camunda competency rollup.** The ontology answers one single-source and one cross-source question over the `camunda` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R010.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R010.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R010.1 camunda single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**camunda single-source question.** "Which process instances have an open incident, and at which activity did they stop?" Answered from the camunda connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/process_intelligence-v1.ttl`. | A fixture query over camunda data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R010.2 camunda cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**camunda cross-source question.** "Which running Camunda process definitions have an open ServiceNow incident raised against their service?" Requires linking camunda to aris and servicenow through the ontology concept: business process. Vocabulary: `crates/eg-core/ontology/process_intelligence-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R010.3 camunda acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**camunda acceptance test.** Both questions (EG-CQ-CONN-R010.1 and EG-CQ-CONN-R010.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R010.1 and EG-CQ-CONN-R010.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R011 ciso-assistant competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ciso-assistant competency rollup.** The ontology answers one single-source and one cross-source question over the `ciso-assistant` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R011.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R011.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R011.1 ciso-assistant single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ciso-assistant single-source question.** "Which controls in an applied framework are non-compliant and which risk scenarios do they mitigate?" Answered from the ciso-assistant connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/government-v1.ttl`. | A fixture query over ciso-assistant data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R011.2 ciso-assistant cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ciso-assistant cross-source question.** "Which CISO Assistant risks map to a ServiceNow CMDB service with an open incident?" Requires linking ciso-assistant to onetrust and servicenow through the ontology concept: control / risk. Vocabulary: `crates/eg-core/ontology/government-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R011.3 ciso-assistant acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ciso-assistant acceptance test.** Both questions (EG-CQ-CONN-R011.1 and EG-CQ-CONN-R011.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R011.1 and EG-CQ-CONN-R011.2. Mapping acceptance depends on these producer rows: `RiskScenario`: `EG-CQ-CONN-R073.2` (`government-v1.ttl`); `mitigatesRisk`: `EG-CQ-CONN-R073.3` (`government-v1.ttl`); `inFramework`: `EG-CQ-CONN-R073.4` (`government-v1.ttl`); `riskAffectsService`: `EG-CQ-CONN-R073.5` (`government-v1.ttl`). The acceptance test must preserve `government-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::ciso_assistant` must parse the exact `ciso-assistant` Coverage row and `EG-CQ-CONN-R011.1` / `EG-CQ-CONN-R011.2` Vocabulary cells. It must assert `government-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R012 clarity competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**clarity competency rollup.** The ontology answers one single-source and one cross-source question over the `clarity` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R012.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R012.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R012.1 clarity single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**clarity single-source question.** "Which pages have the highest rage-click or dead-click rate over the last week?" Answered from the clarity connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over clarity data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R012.2 clarity cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**clarity cross-source question.** "Which pages with a spike in rage clicks were changed by a pull request merged in the previous week?" Requires linking clarity to plane and github through the ontology concept: web page / release. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R012.3 clarity acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**clarity acceptance test.** Both questions (EG-CQ-CONN-R012.1 and EG-CQ-CONN-R012.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R012.1 and EG-CQ-CONN-R012.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R013 container-manager competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**container-manager competency rollup.** The ontology answers one single-source and one cross-source question over the `container-manager` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R013.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R013.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R013.1 container-manager single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**container-manager single-source question.** "Which containers or pods are restarting repeatedly, and from which image?" Answered from the container-manager connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over container-manager data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R013.2 container-manager cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**container-manager cross-source question.** "Which running images have a newer tag on Docker Hub than the one deployed?" Requires linking container-manager to dockerhub and portainer through the ontology concept: container image. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R013.3 container-manager acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**container-manager acceptance test.** Both questions (EG-CQ-CONN-R013.1 and EG-CQ-CONN-R013.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R013.1 and EG-CQ-CONN-R013.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R014 data-science competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**data-science competency rollup.** The ontology answers one single-source and one cross-source question over the `data-science` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R014.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R014.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R014.1 data-science single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**data-science single-source question.** "Which trained models have validation metrics below their baseline run, and on which dataset?" Answered from the data-science connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over data-science data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R014.2 data-science cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**data-science cross-source question.** "Which fine-tuned models have no evaluation dataset trace in Langfuse and no stored artifact in the object store?" Requires linking data-science to langfuse and objectstore through the ontology concept: model / dataset. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R014.3 data-science acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**data-science acceptance test.** Both questions (EG-CQ-CONN-R014.1 and EG-CQ-CONN-R014.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R014.1 and EG-CQ-CONN-R014.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R015 dockerhub competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**dockerhub competency rollup.** The ontology answers one single-source and one cross-source question over the `dockerhub` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R015.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R015.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R015.1 dockerhub single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**dockerhub single-source question.** "Which repositories in an organization have not been pushed to in a year, and what are their pull counts?" Answered from the dockerhub connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over dockerhub data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R015.2 dockerhub cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**dockerhub cross-source question.** "Which Docker Hub repositories correspond to a GitHub repository with recent commits but no recent image push?" Requires linking dockerhub to container-manager and github through the ontology concept: container image / repository. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R015.3 dockerhub acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**dockerhub acceptance test.** Both questions (EG-CQ-CONN-R015.1 and EG-CQ-CONN-R015.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R015.1 and EG-CQ-CONN-R015.2. Mapping acceptance depends on these producer rows: `lastPushedAt`: `EG-CQ-CONN-R068.13` (`infrastructure-v1.ttl`); `pullCount`: `EG-CQ-CONN-R068.14` (`infrastructure-v1.ttl`); `Repository`: `EG-CQ-CONN-R069.2` (`sdlc_lifecycle-v1.ttl`). The acceptance test must preserve `infrastructure-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::dockerhub` must parse the exact `dockerhub` Coverage row and `EG-CQ-CONN-R015.1` / `EG-CQ-CONN-R015.2` Vocabulary cells. It must assert `infrastructure-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R016 documentdb competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**documentdb competency rollup.** The ontology answers one single-source and one cross-source question over the `documentdb` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R016.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R016.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R016.1 documentdb single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**documentdb single-source question.** "Which collections have the most documents and which fields are missing in more than half of them?" Answered from the documentdb connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over documentdb data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R016.2 documentdb cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**documentdb cross-source question.** "Which documentdb collections duplicate a table in the SQL database, and which side is newer?" Requires linking documentdb to sql and objectstore through the ontology concept: dataset / collection. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R016.3 documentdb acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**documentdb acceptance test.** Both questions (EG-CQ-CONN-R016.1 and EG-CQ-CONN-R016.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R016.1 and EG-CQ-CONN-R016.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R017 egeria competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**egeria competency rollup.** The ontology answers one single-source and one cross-source question over the `egeria` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R017.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R017.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R017.1 egeria single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**egeria single-source question.** "Which glossary terms are linked to a data asset with a confidential classification?" Answered from the egeria connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/core-foundation-v1.ttl`. | A fixture query over egeria data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R017.2 egeria cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**egeria cross-source question.** "Which Egeria-cataloged assets correspond to a live SQL table, and which are cataloged but missing?" Requires linking egeria to sql and jena through the ontology concept: data asset. Vocabulary: `crates/eg-core/ontology/core-foundation-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R017.3 egeria acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**egeria acceptance test.** Both questions (EG-CQ-CONN-R017.1 and EG-CQ-CONN-R017.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R017.1 and EG-CQ-CONN-R017.2. Mapping acceptance depends on these producer rows: `GlossaryTerm`: `EG-CQ-CONN-R074.2` (`core-foundation-v1.ttl`); `termAssignedTo`: `EG-CQ-CONN-R074.3` (`core-foundation-v1.ttl`). The acceptance test must preserve `core-foundation-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::egeria` must parse the exact `egeria` Coverage row and `EG-CQ-CONN-R017.1` / `EG-CQ-CONN-R017.2` Vocabulary cells. It must assert `core-foundation-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R018 emerald-exchange competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**emerald-exchange competency rollup.** The ontology answers one single-source and one cross-source question over the `emerald-exchange` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R018.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R018.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R018.1 emerald-exchange single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**emerald-exchange single-source question.** "Which open orders on an exchange are partially filled and what is their remaining quantity?" Answered from the emerald-exchange connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/finance-v1.ttl`. | A fixture query over emerald-exchange data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R018.2 emerald-exchange cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**emerald-exchange cross-source question.** "Which exchange fills correspond to a deposit or withdrawal recorded in the Firefly III ledger?" Requires linking emerald-exchange to firefly-iii and home-assistant through the ontology concept: account / currency. Vocabulary: `crates/eg-core/ontology/finance-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R018.3 emerald-exchange acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**emerald-exchange acceptance test.** Both questions (EG-CQ-CONN-R018.1 and EG-CQ-CONN-R018.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R018.1 and EG-CQ-CONN-R018.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R019 erpnext competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**erpnext competency rollup.** The ontology answers one single-source and one cross-source question over the `erpnext` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R019.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R019.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R019.1 erpnext single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**erpnext single-source question.** "Which open purchase orders are late, and from which supplier?" Answered from the erpnext connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/commercial-v1.ttl`. | A fixture query over erpnext data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R019.2 erpnext cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**erpnext cross-source question.** "Which ERPNext suppliers with late orders are also marked as active accounts in the Twenty CRM or paid in Firefly III?" Requires linking erpnext to twenty and firefly-iii through the ontology concept: party (supplier / customer). Vocabulary: `crates/eg-core/ontology/commercial-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R019.3 erpnext acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**erpnext acceptance test.** Both questions (EG-CQ-CONN-R019.1 and EG-CQ-CONN-R019.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R019.1 and EG-CQ-CONN-R019.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R020 fan-manager competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**fan-manager competency rollup.** The ontology answers one single-source and one cross-source question over the `fan-manager` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R020.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R020.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R020.1 fan-manager single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**fan-manager single-source question.** "Which fans ran above 80 percent duty while the host temperature stayed above its threshold?" Answered from the fan-manager connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over fan-manager data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R020.2 fan-manager cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**fan-manager cross-source question.** "Which hosts had fan duty at maximum during a window in which Grafana alerted on temperature?" Requires linking fan-manager to systems-manager and lgtm through the ontology concept: host. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R020.3 fan-manager acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**fan-manager acceptance test.** Both questions (EG-CQ-CONN-R020.1 and EG-CQ-CONN-R020.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R020.1 and EG-CQ-CONN-R020.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R021 firefly-iii competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**firefly-iii competency rollup.** The ontology answers one single-source and one cross-source question over the `firefly-iii` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R021.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R021.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R021.1 firefly-iii single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**firefly-iii single-source question.** "Which budgets were exceeded this month, and by which transactions?" Answered from the firefly-iii connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/finance-v1.ttl`. | A fixture query over firefly-iii data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R021.2 firefly-iii cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**firefly-iii cross-source question.** "Which Firefly III expenses match an ERPNext purchase invoice by amount and date?" Requires linking firefly-iii to erpnext and emerald-exchange through the ontology concept: account / transaction. Vocabulary: `crates/eg-core/ontology/finance-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R021.3 firefly-iii acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**firefly-iii acceptance test.** Both questions (EG-CQ-CONN-R021.1 and EG-CQ-CONN-R021.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R021.1 and EG-CQ-CONN-R021.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R022 freshrss competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**freshrss competency rollup.** The ontology answers one single-source and one cross-source question over the `freshrss` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R022.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R022.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R022.1 freshrss single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**freshrss single-source question.** "Which unread articles from a given feed were published in the last 48 hours?" Answered from the freshrss connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over freshrss data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R022.2 freshrss cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**freshrss cross-source question.** "Which FreshRSS articles also appear in SearXNG results for the same query, and which are new?" Requires linking freshrss to archivebox and searxng through the ontology concept: URL / article. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R022.3 freshrss acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**freshrss acceptance test.** Both questions (EG-CQ-CONN-R022.1 and EG-CQ-CONN-R022.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R022.1 and EG-CQ-CONN-R022.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R023 github competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**github competency rollup.** The ontology answers one single-source and one cross-source question over the `github` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R023.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R023.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R023.1 github single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**github single-source question.** "Which open pull requests have failing checks and no reviewer assigned?" Answered from the github connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A fixture query over github data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R023.2 github cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**github cross-source question.** "Which GitHub pull requests close a Jira issue that is still in an open state?" Requires linking github to gitlab and atlassian through the ontology concept: repository / change request. Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R023.3 github acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**github acceptance test.** Both questions (EG-CQ-CONN-R023.1 and EG-CQ-CONN-R023.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R023.1 and EG-CQ-CONN-R023.2. Mapping acceptance depends on these producer rows: `requestedReviewer`: `EG-CQ-CONN-R069.12` (`sdlc_lifecycle-v1.ttl`); `closesTicket`: `EG-CQ-CONN-R069.10` (`sdlc_lifecycle-v1.ttl`); `proposalState`: `EG-CQ-CONN-R069.11` (`sdlc_lifecycle-v1.ttl`); `Repository`: `EG-CQ-CONN-R069.2` (`sdlc_lifecycle-v1.ttl`). The acceptance test must preserve `sdlc_lifecycle-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::github` must parse the exact `github` Coverage row and `EG-CQ-CONN-R023.1` / `EG-CQ-CONN-R023.2` Vocabulary cells. It must assert `sdlc_lifecycle-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R024 gitlab competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gitlab competency rollup.** The ontology answers one single-source and one cross-source question over the `gitlab` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R024.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R024.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R024.1 gitlab single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gitlab single-source question.** "Which pipelines on the default branch failed in the last day, and at which job?" Answered from the gitlab connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A fixture query over gitlab data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R024.2 gitlab cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gitlab cross-source question.** "Which repositories exist in GitLab and GitHub with diverging default-branch heads?" Requires linking gitlab to github and repository-manager through the ontology concept: repository / pipeline. Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R024.3 gitlab acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gitlab acceptance test.** Both questions (EG-CQ-CONN-R024.1 and EG-CQ-CONN-R024.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R024.1 and EG-CQ-CONN-R024.2. Mapping acceptance depends on these producer rows: `PipelineJob`: `EG-CQ-CONN-R069.13` (`sdlc_lifecycle-v1.ttl`); `pipelineJobOf`: `EG-CQ-CONN-R069.14` (`sdlc_lifecycle-v1.ttl`); `Branch`: `EG-CQ-CONN-R069.3` (`sdlc_lifecycle-v1.ttl`); `branchOf`: `EG-CQ-CONN-R069.4` (`sdlc_lifecycle-v1.ttl`); `headCommit`: `EG-CQ-CONN-R069.5` (`sdlc_lifecycle-v1.ttl`); `isDefaultBranch`: `EG-CQ-CONN-R069.6` (`sdlc_lifecycle-v1.ttl`). The acceptance test must preserve `sdlc_lifecycle-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::gitlab` must parse the exact `gitlab` Coverage row and `EG-CQ-CONN-R024.1` / `EG-CQ-CONN-R024.2` Vocabulary cells. It must assert `sdlc_lifecycle-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R025 gramps competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gramps competency rollup.** The ontology answers one single-source and one cross-source question over the `gramps` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R025.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R025.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R025.1 gramps single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gramps single-source question.** "Which people in the tree were born in a given place before a given year, and who are their parents?" Answered from the gramps connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/personal-v1.ttl`. | A fixture query over gramps data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R025.2 gramps cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gramps cross-source question.** "Which Gramps people have a photo or document reference that exists as a file in Nextcloud?" Requires linking gramps to nextcloud through the ontology concept: person / media. Vocabulary: `crates/eg-core/ontology/personal-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R025.3 gramps acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**gramps acceptance test.** Both questions (EG-CQ-CONN-R025.1 and EG-CQ-CONN-R025.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R025.1 and EG-CQ-CONN-R025.2. Mapping acceptance depends on these producer rows: `birthPlace`: `EG-CQ-CONN-R076.1` (`personal-v1.ttl`); `birthYear`: `EG-CQ-CONN-R076.2` (`personal-v1.ttl`). The acceptance test must preserve `personal-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::gramps` must parse the exact `gramps` Coverage row and `EG-CQ-CONN-R025.1` / `EG-CQ-CONN-R025.2` Vocabulary cells. It must assert `personal-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R026 home-assistant competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**home-assistant competency rollup.** The ontology answers one single-source and one cross-source question over the `home-assistant` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R026.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R026.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R026.1 home-assistant single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**home-assistant single-source question.** "Which sensors reported a value outside their normal range in the last 24 hours?" Answered from the home-assistant connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over home-assistant data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R026.2 home-assistant cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**home-assistant cross-source question.** "Which Home Assistant devices went unavailable at the same time as an Uptime Kuma monitor failure?" Requires linking home-assistant to fan-manager and uptime through the ontology concept: device / host. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R026.3 home-assistant acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**home-assistant acceptance test.** Both questions (EG-CQ-CONN-R026.1 and EG-CQ-CONN-R026.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R026.1 and EG-CQ-CONN-R026.2. Mapping acceptance depends on these producer rows: `entityState`: `EG-CQ-CONN-R068.15` (`infrastructure-v1.ttl`); `unavailableSince`: `EG-CQ-CONN-R068.16` (`infrastructure-v1.ttl`). The acceptance test must preserve `infrastructure-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::home_assistant` must parse the exact `home-assistant` Coverage row and `EG-CQ-CONN-R026.1` / `EG-CQ-CONN-R026.2` Vocabulary cells. It must assert `infrastructure-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R027 jellyfin competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jellyfin competency rollup.** The ontology answers one single-source and one cross-source question over the `jellyfin` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R027.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R027.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R027.1 jellyfin single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jellyfin single-source question.** "Which movies in a library have never been played and were added more than a year ago?" Answered from the jellyfin connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over jellyfin data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R027.2 jellyfin cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jellyfin cross-source question.** "Which Jellyfin items have no matching Radarr or Sonarr entry, and so cannot be re-fetched?" Requires linking jellyfin to arr and qbittorrent through the ontology concept: media item (title). Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R027.3 jellyfin acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jellyfin acceptance test.** Both questions (EG-CQ-CONN-R027.1 and EG-CQ-CONN-R027.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R027.1 and EG-CQ-CONN-R027.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R028 jena competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jena competency rollup.** The ontology answers one single-source and one cross-source question over the `jena` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R028.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R028.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R028.1 jena single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jena single-source question.** "Which named graphs contain the most triples and which have no recent update?" Answered from the jena connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/virtual_graph-v1.ttl`. | A fixture query over jena data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R028.2 jena cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jena cross-source question.** "Which Jena named graphs describe the same entities as an Egeria-cataloged asset?" Requires linking jena to egeria and sql through the ontology concept: graph / dataset. Vocabulary: `crates/eg-core/ontology/virtual_graph-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R028.3 jena acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jena acceptance test.** Both questions (EG-CQ-CONN-R028.1 and EG-CQ-CONN-R028.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R028.1 and EG-CQ-CONN-R028.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R029 kafka competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**kafka competency rollup.** The ontology answers one single-source and one cross-source question over the `kafka` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R029.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R029.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R029.1 kafka single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**kafka single-source question.** "Which consumer groups lag by more than a threshold on which topic partitions?" Answered from the kafka connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over kafka data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R029.2 kafka cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**kafka cross-source question.** "Which Kafka consumer groups with sustained lag belong to a service that Grafana is alerting on?" Requires linking kafka to langfuse and lgtm through the ontology concept: topic / service. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R029.3 kafka acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**kafka acceptance test.** Both questions (EG-CQ-CONN-R029.1 and EG-CQ-CONN-R029.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R029.1 and EG-CQ-CONN-R029.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R030 keycloak competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**keycloak competency rollup.** The ontology answers one single-source and one cross-source question over the `keycloak` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R030.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R030.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R030.1 keycloak single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**keycloak single-source question.** "Which clients can a given user sign in to, and through which role?" Answered from the keycloak connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/identity-v1.ttl`. | A fixture query over keycloak data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R030.2 keycloak cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**keycloak cross-source question.** "Which people have access to a service that has an open security incident?" Requires linking keycloak to okta and servicenow through the ontology concept: person / service. Vocabulary: `crates/eg-core/ontology/identity-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R030.3 keycloak acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**keycloak acceptance test.** Both questions (EG-CQ-CONN-R030.1 and EG-CQ-CONN-R030.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R030.1 and EG-CQ-CONN-R030.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R031 langfuse competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**langfuse competency rollup.** The ontology answers one single-source and one cross-source question over the `langfuse` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R031.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R031.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R031.1 langfuse single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**langfuse single-source question.** "Which traces had the highest token cost and which prompt version produced them?" Answered from the langfuse connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/orchestration-v1.ttl`. | A fixture query over langfuse data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R031.2 langfuse cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**langfuse cross-source question.** "Which prompt versions with falling evaluation scores were last changed by a merged GitHub pull request?" Requires linking langfuse to data-science and github through the ontology concept: prompt / model. Vocabulary: `crates/eg-core/ontology/orchestration-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R031.3 langfuse acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**langfuse acceptance test.** Both questions (EG-CQ-CONN-R031.1 and EG-CQ-CONN-R031.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R031.1 and EG-CQ-CONN-R031.2. Mapping acceptance depends on these producer rows: `promptVersion`: `EG-CQ-CONN-R079.2` (`orchestration-v1.ttl`); `tokenCost`: `EG-CQ-CONN-R079.3` (`orchestration-v1.ttl`); `tracePrompt`: `EG-CQ-CONN-R079.4` (`orchestration-v1.ttl`); `evaluationScore`: `EG-CQ-CONN-R079.5` (`orchestration-v1.ttl`). The acceptance test must preserve `orchestration-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::langfuse` must parse the exact `langfuse` Coverage row and `EG-CQ-CONN-R031.1` / `EG-CQ-CONN-R031.2` Vocabulary cells. It must assert `orchestration-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R032 leanix competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**leanix competency rollup.** The ontology answers one single-source and one cross-source question over the `leanix` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R032.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R032.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R032.1 leanix single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**leanix single-source question.** "Which fact sheets of type application have lifecycle phase end-of-life but still have active users?" Answered from the leanix connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/enterprise-v1.ttl`. | A fixture query over leanix data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R032.2 leanix cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**leanix cross-source question.** "Which end-of-life LeanIX applications still have an active ServiceNow CI and open incidents?" Requires linking leanix to archimate and servicenow through the ontology concept: application. Vocabulary: `crates/eg-core/ontology/enterprise-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R032.3 leanix acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**leanix acceptance test.** Both questions (EG-CQ-CONN-R032.1 and EG-CQ-CONN-R032.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R032.1 and EG-CQ-CONN-R032.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R033 legal-peripherals competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**legal-peripherals competency rollup.** The ontology answers one single-source and one cross-source question over the `legal-peripherals` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R033.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R033.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R033.1 legal-peripherals single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**legal-peripherals single-source question.** "Which contracts expire within 90 days and have no renewal action recorded?" Answered from the legal-peripherals connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/core-foundation-v1.ttl`. | A fixture query over legal-peripherals data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R033.2 legal-peripherals cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**legal-peripherals cross-source question.** "Which expiring contracts have a scanned copy in Paperless-ngx and a matching OneTrust vendor assessment?" Requires linking legal-peripherals to paperless-ngx and onetrust through the ontology concept: contract / document. Vocabulary: `crates/eg-core/ontology/core-foundation-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R033.3 legal-peripherals acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**legal-peripherals acceptance test.** Both questions (EG-CQ-CONN-R033.1 and EG-CQ-CONN-R033.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R033.1 and EG-CQ-CONN-R033.2. Mapping acceptance depends on these producer rows: `counterparty`: `EG-CQ-CONN-R074.4` (`core-foundation-v1.ttl`); `agreementExpiresAt`: `EG-CQ-CONN-R074.5` (`core-foundation-v1.ttl`); `hasRenewalAction`: `EG-CQ-CONN-R074.6` (`core-foundation-v1.ttl`). The acceptance test must preserve `core-foundation-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::legal_peripherals` must parse the exact `legal-peripherals` Coverage row and `EG-CQ-CONN-R033.1` / `EG-CQ-CONN-R033.2` Vocabulary cells. It must assert `core-foundation-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R034 lgtm competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lgtm competency rollup.** The ontology answers one single-source and one cross-source question over the `lgtm` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R034.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R034.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R034.1 lgtm single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lgtm single-source question.** "Which alerts are firing right now, with what severity and for how long?" Answered from the lgtm connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over lgtm data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R034.2 lgtm cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lgtm cross-source question.** "Which firing Grafana alerts have no open ServiceNow incident, and which incidents have no alert?" Requires linking lgtm to uptime and servicenow through the ontology concept: service / alert. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R034.3 lgtm acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lgtm acceptance test.** Both questions (EG-CQ-CONN-R034.1 and EG-CQ-CONN-R034.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R034.1 and EG-CQ-CONN-R034.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R035 listmonk competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**listmonk competency rollup.** The ontology answers one single-source and one cross-source question over the `listmonk` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R035.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R035.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R035.1 listmonk single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**listmonk single-source question.** "Which campaigns had an open rate below the list average, and to which lists were they sent?" Answered from the listmonk connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over listmonk data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R035.2 listmonk cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**listmonk cross-source question.** "Which subscribers on a Listmonk list have no matching Twenty contact, and which contacts are unsubscribed?" Requires linking listmonk to twenty and postiz through the ontology concept: contact / audience. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R035.3 listmonk acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**listmonk acceptance test.** Both questions (EG-CQ-CONN-R035.1 and EG-CQ-CONN-R035.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R035.1 and EG-CQ-CONN-R035.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R036 mattermost competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mattermost competency rollup.** The ontology answers one single-source and one cross-source question over the `mattermost` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R036.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R036.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R036.1 mattermost single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mattermost single-source question.** "Which channels have had no posts in 90 days but still have more than ten members?" Answered from the mattermost connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over mattermost data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R036.2 mattermost cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mattermost cross-source question.** "Which Mattermost members have no active identity-provider account, and which people lack a Mattermost account?" Requires linking mattermost to keycloak and okta through the ontology concept: person. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R036.3 mattermost acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mattermost acceptance test.** Both questions (EG-CQ-CONN-R036.1 and EG-CQ-CONN-R036.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R036.1 and EG-CQ-CONN-R036.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R037 mealie competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mealie competency rollup.** The ontology answers one single-source and one cross-source question over the `mealie` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R037.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R037.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R037.1 mealie single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mealie single-source question.** "Which recipes use an ingredient that is also on the current shopping list?" Answered from the mealie connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/nutrition-v1.ttl`. | A fixture query over mealie data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R037.2 mealie cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mealie cross-source question.** "Which planned Mealie meals exceed the daily calorie target set in wger, and what did the groceries cost in Firefly III?" Requires linking mealie to wger and firefly-iii through the ontology concept: food / ingredient. Vocabulary: `crates/eg-core/ontology/nutrition-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R037.3 mealie acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mealie acceptance test.** Both questions (EG-CQ-CONN-R037.1 and EG-CQ-CONN-R037.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R037.1 and EG-CQ-CONN-R037.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R038 media-downloader competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**media-downloader competency rollup.** The ontology answers one single-source and one cross-source question over the `media-downloader` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R038.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R038.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R038.1 media-downloader single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**media-downloader single-source question.** "Which download jobs failed in the last week, with what error, for which source URL?" Answered from the media-downloader connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over media-downloader data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R038.2 media-downloader cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**media-downloader cross-source question.** "Which completed downloads were never added to Jellyfin or Audiobookshelf?" Requires linking media-downloader to audiobookshelf and jellyfin through the ontology concept: media item / URL. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R038.3 media-downloader acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**media-downloader acceptance test.** Both questions (EG-CQ-CONN-R038.1 and EG-CQ-CONN-R038.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R038.1 and EG-CQ-CONN-R038.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R039 microsoft competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**microsoft competency rollup.** The ontology answers one single-source and one cross-source question over the `microsoft` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R039.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R039.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R039.1 microsoft single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**microsoft single-source question.** "Which meetings tomorrow overlap, and which attendees are double-booked?" Answered from the microsoft connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/calendar-v1.ttl`. | A fixture query over microsoft data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R039.2 microsoft cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**microsoft cross-source question.** "Which attendees of an upcoming meeting have no identity-provider account or Mattermost presence?" Requires linking microsoft to okta and mattermost through the ontology concept: person. Vocabulary: `crates/eg-core/ontology/calendar-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R039.3 microsoft acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**microsoft acceptance test.** Both questions (EG-CQ-CONN-R039.1 and EG-CQ-CONN-R039.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R039.1 and EG-CQ-CONN-R039.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R040 nextcloud competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**nextcloud competency rollup.** The ontology answers one single-source and one cross-source question over the `nextcloud` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R040.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R040.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R040.1 nextcloud single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**nextcloud single-source question.** "Which shared folders are accessible by external links and when do those shares expire?" Answered from the nextcloud connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/personal-v1.ttl`. | A fixture query over nextcloud data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R040.2 nextcloud cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**nextcloud cross-source question.** "Which publicly shared Nextcloud files also exist as Paperless-ngx documents tagged confidential?" Requires linking nextcloud to keycloak and paperless-ngx through the ontology concept: file / person. Vocabulary: `crates/eg-core/ontology/personal-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R040.3 nextcloud acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**nextcloud acceptance test.** Both questions (EG-CQ-CONN-R040.1 and EG-CQ-CONN-R040.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R040.1 and EG-CQ-CONN-R040.2. Mapping acceptance depends on these producer rows: `FileShare`: `EG-CQ-CONN-R076.6` (`personal-v1.ttl`); `sharesFile`: `EG-CQ-CONN-R076.7` (`personal-v1.ttl`); `isPublicLink`: `EG-CQ-CONN-R076.8` (`personal-v1.ttl`); `shareExpiresAt`: `EG-CQ-CONN-R076.9` (`personal-v1.ttl`). The acceptance test must preserve `personal-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::nextcloud` must parse the exact `nextcloud` Coverage row and `EG-CQ-CONN-R040.1` / `EG-CQ-CONN-R040.2` Vocabulary cells. It must assert `personal-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R041 objectstore competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**objectstore competency rollup.** The ontology answers one single-source and one cross-source question over the `objectstore` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R041.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R041.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R041.1 objectstore single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**objectstore single-source question.** "Which buckets hold the most data and which objects have not been read in a year?" Answered from the objectstore connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over objectstore data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R041.2 objectstore cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**objectstore cross-source question.** "Which object-store artifacts are not referenced by any model or dataset in the data-science connector?" Requires linking objectstore to data-science and documentdb through the ontology concept: dataset / artifact. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R041.3 objectstore acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**objectstore acceptance test.** Both questions (EG-CQ-CONN-R041.1 and EG-CQ-CONN-R041.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R041.1 and EG-CQ-CONN-R041.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R042 okta competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**okta competency rollup.** The ontology answers one single-source and one cross-source question over the `okta` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R042.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R042.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R042.1 okta single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**okta single-source question.** "Which users hold a given application assignment through which group?" Answered from the okta connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/identity-v1.ttl`. | A fixture query over okta data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R042.2 okta cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**okta cross-source question.** "Which Okta users were deactivated but still hold a Keycloak role or an open ServiceNow assignment?" Requires linking okta to keycloak and servicenow through the ontology concept: person / role. Vocabulary: `crates/eg-core/ontology/identity-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R042.3 okta acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**okta acceptance test.** Both questions (EG-CQ-CONN-R042.1 and EG-CQ-CONN-R042.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R042.1 and EG-CQ-CONN-R042.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R043 onetrust competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**onetrust competency rollup.** The ontology answers one single-source and one cross-source question over the `onetrust` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R043.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R043.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R043.1 onetrust single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**onetrust single-source question.** "Which privacy assessments are overdue and which processing activities do they cover?" Answered from the onetrust connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/government-v1.ttl`. | A fixture query over onetrust data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R043.2 onetrust cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**onetrust cross-source question.** "Which vendors with an overdue OneTrust assessment have open ERPNext purchase orders?" Requires linking onetrust to ciso-assistant and erpnext through the ontology concept: processing activity / vendor. Vocabulary: `crates/eg-core/ontology/government-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R043.3 onetrust acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**onetrust acceptance test.** Both questions (EG-CQ-CONN-R043.1 and EG-CQ-CONN-R043.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R043.1 and EG-CQ-CONN-R043.2. Mapping acceptance depends on these producer rows: `PrivacyAssessment`: `EG-CQ-CONN-R073.6` (`government-v1.ttl`); `ProcessingActivity`: `EG-CQ-CONN-R073.7` (`government-v1.ttl`); `assessmentCovers`: `EG-CQ-CONN-R073.8` (`government-v1.ttl`); `assessmentDueDate`: `EG-CQ-CONN-R073.9` (`government-v1.ttl`); `assessedVendor`: `EG-CQ-CONN-R073.10` (`government-v1.ttl`); `assessmentStatus`: `EG-CQ-CONN-R073.11` (`government-v1.ttl`). The acceptance test must preserve `government-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::onetrust` must parse the exact `onetrust` Coverage row and `EG-CQ-CONN-R043.1` / `EG-CQ-CONN-R043.2` Vocabulary cells. It must assert `government-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R044 openbao competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**openbao competency rollup.** The ontology answers one single-source and one cross-source question over the `openbao` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R044.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R044.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R044.1 openbao single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**openbao single-source question.** "Which secret paths have not been rotated in 180 days, and which policies grant read on them?" Answered from the openbao connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over openbao data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R044.2 openbao cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**openbao cross-source question.** "Which services running in container-manager read a secret path that has no recent rotation?" Requires linking openbao to keycloak and container-manager through the ontology concept: secret / service. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R044.3 openbao acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**openbao acceptance test.** Both questions (EG-CQ-CONN-R044.1 and EG-CQ-CONN-R044.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R044.1 and EG-CQ-CONN-R044.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R045 owncast competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**owncast competency rollup.** The ontology answers one single-source and one cross-source question over the `owncast` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R045.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R045.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R045.1 owncast single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**owncast single-source question.** "Which streams had the highest peak viewer count and how long did they run?" Answered from the owncast connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over owncast data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R045.2 owncast cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**owncast cross-source question.** "Which Owncast broadcasts were announced through a Postiz post, and what was the audience versus the post reach?" Requires linking owncast to postiz and mattermost through the ontology concept: broadcast / audience. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R045.3 owncast acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**owncast acceptance test.** Both questions (EG-CQ-CONN-R045.1 and EG-CQ-CONN-R045.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R045.1 and EG-CQ-CONN-R045.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R046 paperless-ngx competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**paperless-ngx competency rollup.** The ontology answers one single-source and one cross-source question over the `paperless-ngx` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R046.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R046.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R046.1 paperless-ngx single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**paperless-ngx single-source question.** "Which documents tagged as invoice have no correspondent or no due date?" Answered from the paperless-ngx connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/personal-v1.ttl`. | A fixture query over paperless-ngx data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R046.2 paperless-ngx cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**paperless-ngx cross-source question.** "Which Paperless-ngx invoices have no matching ERPNext purchase invoice or Firefly III expense?" Requires linking paperless-ngx to erpnext and firefly-iii through the ontology concept: document / invoice. Vocabulary: `crates/eg-core/ontology/personal-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R046.3 paperless-ngx acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**paperless-ngx acceptance test.** Both questions (EG-CQ-CONN-R046.1 and EG-CQ-CONN-R046.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R046.1 and EG-CQ-CONN-R046.2. Mapping acceptance depends on these producer rows: `documentType`: `EG-CQ-CONN-R076.3` (`personal-v1.ttl`); `dueDate`: `EG-CQ-CONN-R076.4` (`personal-v1.ttl`); `totalAmount`: `EG-CQ-CONN-R076.5` (`personal-v1.ttl`). The acceptance test must preserve `personal-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::paperless_ngx` must parse the exact `paperless-ngx` Coverage row and `EG-CQ-CONN-R046.1` / `EG-CQ-CONN-R046.2` Vocabulary cells. It must assert `personal-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R047 plane competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**plane competency rollup.** The ontology answers one single-source and one cross-source question over the `plane` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R047.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R047.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R047.1 plane single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**plane single-source question.** "Which work items in the active cycle are overdue and which module do they belong to?" Answered from the plane connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A fixture query over plane data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R047.2 plane cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**plane cross-source question.** "Which Plane work items link to a GitHub pull request that has merged but are not marked done?" Requires linking plane to github and atlassian through the ontology concept: work item. Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R047.3 plane acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**plane acceptance test.** Both questions (EG-CQ-CONN-R047.1 and EG-CQ-CONN-R047.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R047.1 and EG-CQ-CONN-R047.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R048 portainer competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**portainer competency rollup.** The ontology answers one single-source and one cross-source question over the `portainer` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R048.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R048.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R048.1 portainer single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**portainer single-source question.** "Which stacks have services with fewer running replicas than desired, and on which endpoint?" Answered from the portainer connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over portainer data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R048.2 portainer cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**portainer cross-source question.** "Which Portainer stacks deploy from a Git repository whose latest GitLab pipeline failed?" Requires linking portainer to container-manager and gitlab through the ontology concept: stack / repository. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R048.3 portainer acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**portainer acceptance test.** Both questions (EG-CQ-CONN-R048.1 and EG-CQ-CONN-R048.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R048.1 and EG-CQ-CONN-R048.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R049 postiz competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**postiz competency rollup.** The ontology answers one single-source and one cross-source question over the `postiz` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R049.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R049.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R049.1 postiz single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**postiz single-source question.** "Which scheduled posts failed to publish and on which channel?" Answered from the postiz connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over postiz data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R049.2 postiz cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**postiz cross-source question.** "Which Postiz posts promote a campaign that Listmonk also sent, and which got the better engagement?" Requires linking postiz to owncast and listmonk through the ontology concept: campaign / channel. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R049.3 postiz acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**postiz acceptance test.** Both questions (EG-CQ-CONN-R049.1 and EG-CQ-CONN-R049.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R049.1 and EG-CQ-CONN-R049.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R050 pulselink competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pulselink competency rollup.** The ontology answers one single-source and one cross-source question over the `pulselink` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R050.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R050.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R050.1 pulselink single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pulselink single-source question.** "Which videos on a topic had transcripts mentioning a given term this week?" Answered from the pulselink connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over pulselink data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R050.2 pulselink cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pulselink cross-source question.** "Which topics appear in PulseLink video transcripts and SearXNG news but not in any archived page?" Requires linking pulselink to searxng and audio-transcriber through the ontology concept: topic / transcript. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R050.3 pulselink acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pulselink acceptance test.** Both questions (EG-CQ-CONN-R050.1 and EG-CQ-CONN-R050.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R050.1 and EG-CQ-CONN-R050.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R051 qbittorrent competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**qbittorrent competency rollup.** The ontology answers one single-source and one cross-source question over the `qbittorrent` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R051.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R051.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R051.1 qbittorrent single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**qbittorrent single-source question.** "Which torrents are stalled, with what ratio and how long since last activity?" Answered from the qbittorrent connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over qbittorrent data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R051.2 qbittorrent cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**qbittorrent cross-source question.** "Which stalled torrents belong to a wanted Radarr or Sonarr title, and so block it from import?" Requires linking qbittorrent to arr and jellyfin through the ontology concept: media item (torrent). Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R051.3 qbittorrent acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**qbittorrent acceptance test.** Both questions (EG-CQ-CONN-R051.1 and EG-CQ-CONN-R051.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R051.1 and EG-CQ-CONN-R051.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R052 repository-manager competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**repository-manager competency rollup.** The ontology answers one single-source and one cross-source question over the `repository-manager` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R052.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R052.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R052.1 repository-manager single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**repository-manager single-source question.** "Which worktrees are stale or dangling relative to their base branch?" Answered from the repository-manager connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A fixture query over repository-manager data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R052.2 repository-manager cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**repository-manager cross-source question.** "Which local worktrees track a branch whose pull request has already been merged on GitHub or GitLab?" Requires linking repository-manager to github and gitlab through the ontology concept: repository / branch. Vocabulary: `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R052.3 repository-manager acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**repository-manager acceptance test.** Both questions (EG-CQ-CONN-R052.1 and EG-CQ-CONN-R052.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R052.1 and EG-CQ-CONN-R052.2. Mapping acceptance depends on these producer rows: `Worktree`: `EG-CQ-CONN-R069.20` (`sdlc_lifecycle-v1.ttl`); `worktreeState`: `EG-CQ-CONN-R069.21` (`sdlc_lifecycle-v1.ttl`); `tracksBranch`: `EG-CQ-CONN-R069.22` (`sdlc_lifecycle-v1.ttl`); `proposalBranch`: `EG-CQ-CONN-R069.23` (`sdlc_lifecycle-v1.ttl`); `Repository`: `EG-CQ-CONN-R069.2` (`sdlc_lifecycle-v1.ttl`); `Branch`: `EG-CQ-CONN-R069.3` (`sdlc_lifecycle-v1.ttl`); `proposalState`: `EG-CQ-CONN-R069.11` (`sdlc_lifecycle-v1.ttl`). The acceptance test must preserve `sdlc_lifecycle-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::repository_manager` must parse the exact `repository-manager` Coverage row and `EG-CQ-CONN-R052.1` / `EG-CQ-CONN-R052.2` Vocabulary cells. It must assert `sdlc_lifecycle-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R053 rom-manager competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**rom-manager competency rollup.** The ontology answers one single-source and one cross-source question over the `rom-manager` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R053.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R053.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R053.1 rom-manager single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**rom-manager single-source question.** "Which ROMs in a platform collection fail a checksum match against the reference set?" Answered from the rom-manager connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over rom-manager data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R053.2 rom-manager cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**rom-manager cross-source question.** "Which ROMs were obtained by a media-downloader job and which are still unconverted?" Requires linking rom-manager to media-downloader and jellyfin through the ontology concept: game / file. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R053.3 rom-manager acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**rom-manager acceptance test.** Both questions (EG-CQ-CONN-R053.1 and EG-CQ-CONN-R053.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R053.1 and EG-CQ-CONN-R053.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R054 salesforce competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**salesforce competency rollup.** The ontology answers one single-source and one cross-source question over the `salesforce` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R054.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R054.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R054.1 salesforce single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**salesforce single-source question.** "Which open opportunities close this quarter, with what amount and owner?" Answered from the salesforce connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/commercial-v1.ttl`. | A fixture query over salesforce data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R054.2 salesforce cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**salesforce cross-source question.** "Which Salesforce accounts have an open ServiceNow incident and an opportunity closing this quarter?" Requires linking salesforce to twenty and servicenow through the ontology concept: account / customer. Vocabulary: `crates/eg-core/ontology/commercial-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R054.3 salesforce acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**salesforce acceptance test.** Both questions (EG-CQ-CONN-R054.1 and EG-CQ-CONN-R054.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R054.1 and EG-CQ-CONN-R054.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R055 scholarx competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**scholarx competency rollup.** The ontology answers one single-source and one cross-source question over the `scholarx` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R055.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R055.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R055.1 scholarx single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**scholarx single-source question.** "Which papers cite a given paper and were published in the last two years?" Answered from the scholarx connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over scholarx data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R055.2 scholarx cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**scholarx cross-source question.** "Which papers on a topic are in ScholarX but were never surfaced by a SearXNG query for that topic?" Requires linking scholarx to searxng and langfuse through the ontology concept: paper / topic. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R055.3 scholarx acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**scholarx acceptance test.** Both questions (EG-CQ-CONN-R055.1 and EG-CQ-CONN-R055.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R055.1 and EG-CQ-CONN-R055.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R056 searxng competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**searxng competency rollup.** The ontology answers one single-source and one cross-source question over the `searxng` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R056.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R056.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R056.1 searxng single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**searxng single-source question.** "Which engines returned no results for a given query, and which returned the most?" Answered from the searxng connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over searxng data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R056.2 searxng cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**searxng cross-source question.** "Which URLs from a SearXNG query are not yet archived in ArchiveBox?" Requires linking searxng to freshrss and archivebox through the ontology concept: URL / query. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R056.3 searxng acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**searxng acceptance test.** Both questions (EG-CQ-CONN-R056.1 and EG-CQ-CONN-R056.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R056.1 and EG-CQ-CONN-R056.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R057 servicenow competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**servicenow competency rollup.** The ontology answers one single-source and one cross-source question over the `servicenow` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R057.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R057.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R057.1 servicenow single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**servicenow single-source question.** "Which incidents are open on a given configuration item and who is assigned?" Answered from the servicenow connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/archimate-v1.ttl`. | A fixture query over servicenow data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R057.2 servicenow cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**servicenow cross-source question.** "Which open incidents on a CI also show a Grafana alert and a failing Uptime Kuma monitor?" Requires linking servicenow to okta and lgtm through the ontology concept: configuration item / service. Vocabulary: `crates/eg-core/ontology/archimate-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R057.3 servicenow acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**servicenow acceptance test.** Both questions (EG-CQ-CONN-R057.1 and EG-CQ-CONN-R057.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R057.1 and EG-CQ-CONN-R057.2. Mapping acceptance depends on these producer rows: `ConfigurationItem`: `EG-CQ-CONN-R070.5` (`archimate-v1.ttl`); `affectsConfigurationItem`: `EG-CQ-CONN-R070.6` (`archimate-v1.ttl`); `incidentState`: `EG-CQ-CONN-R070.7` (`archimate-v1.ttl`); `incidentAssignee`: `EG-CQ-CONN-R070.8` (`archimate-v1.ttl`). The acceptance test must preserve `archimate-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::servicenow` must parse the exact `servicenow` Coverage row and `EG-CQ-CONN-R057.1` / `EG-CQ-CONN-R057.2` Vocabulary cells. It must assert `archimate-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R058 sql competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**sql competency rollup.** The ontology answers one single-source and one cross-source question over the `sql` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R058.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R058.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R058.1 sql single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**sql single-source question.** "Which tables have no primary key, and which columns reference tables that do not exist?" Answered from the sql connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over sql data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R058.2 sql cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**sql cross-source question.** "Which SQL tables are not cataloged in Egeria, and which cataloged tables no longer exist?" Requires linking sql to egeria and documentdb through the ontology concept: table / data asset. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R058.3 sql acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**sql acceptance test.** Both questions (EG-CQ-CONN-R058.1 and EG-CQ-CONN-R058.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R058.1 and EG-CQ-CONN-R058.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R059 stirlingpdf competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**stirlingpdf competency rollup.** The ontology answers one single-source and one cross-source question over the `stirlingpdf` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R059.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R059.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R059.1 stirlingpdf single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**stirlingpdf single-source question.** "Which operations failed on which PDFs and with what error?" Answered from the stirlingpdf connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/action-v1.ttl`. | A fixture query over stirlingpdf data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R059.2 stirlingpdf cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**stirlingpdf cross-source question.** "Which PDFs processed by Stirling-PDF were stored in Paperless-ngx or Nextcloud, and which were not?" Requires linking stirlingpdf to paperless-ngx and nextcloud through the ontology concept: document. Vocabulary: `crates/eg-core/ontology/action-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R059.3 stirlingpdf acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**stirlingpdf acceptance test.** Both questions (EG-CQ-CONN-R059.1 and EG-CQ-CONN-R059.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R059.1 and EG-CQ-CONN-R059.2. Mapping acceptance depends on these producer rows: `failureReason`: `EG-CQ-CONN-R082.1` (`action-v1.ttl`). The acceptance test must preserve `action-v1.ttl` in `plan.md` Coverage and both question Vocabulary cells. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. `connector_audit_reassignment::stirlingpdf` must parse the exact `stirlingpdf` Coverage row and `EG-CQ-CONN-R059.1` / `EG-CQ-CONN-R059.2` Vocabulary cells. It must assert `action-v1.ttl` in all three cells and resolve every listed producer IRI through its registered CoreSpec module. It must reject a missing producer term, a wrong-module IRI, and an unrelated-row-only edit. Decomposition lint must pass. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R060 systems-manager competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**systems-manager competency rollup.** The ontology answers one single-source and one cross-source question over the `systems-manager` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R060.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R060.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R060.1 systems-manager single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**systems-manager single-source question.** "Which hosts have pending OS updates and what is their uptime?" Answered from the systems-manager connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over systems-manager data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R060.2 systems-manager cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**systems-manager cross-source question.** "Which hosts with pending updates have no Ansible Tower patch job scheduled and no ServiceNow change?" Requires linking systems-manager to ansible-tower and servicenow through the ontology concept: host (configuration item). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R060.3 systems-manager acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**systems-manager acceptance test.** Both questions (EG-CQ-CONN-R060.1 and EG-CQ-CONN-R060.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R060.1 and EG-CQ-CONN-R060.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R061 technitium-dns competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**technitium-dns competency rollup.** The ontology answers one single-source and one cross-source question over the `technitium-dns` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R061.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R061.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R061.1 technitium-dns single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**technitium-dns single-source question.** "Which zones contain records pointing to an address that no host answers on?" Answered from the technitium-dns connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over technitium-dns data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R061.2 technitium-dns cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**technitium-dns cross-source question.** "Which DNS A records have no Caddy route and no Uptime Kuma monitor?" Requires linking technitium-dns to caddy and uptime through the ontology concept: hostname. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R061.3 technitium-dns acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**technitium-dns acceptance test.** Both questions (EG-CQ-CONN-R061.1 and EG-CQ-CONN-R061.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R061.1 and EG-CQ-CONN-R061.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R062 tunnel-manager competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tunnel-manager competency rollup.** The ontology answers one single-source and one cross-source question over the `tunnel-manager` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R062.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R062.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R062.1 tunnel-manager single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tunnel-manager single-source question.** "Which SSH hosts in the inventory failed their last connection, and with what error?" Answered from the tunnel-manager connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over tunnel-manager data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R062.2 tunnel-manager cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tunnel-manager cross-source question.** "Which hosts that tunnel-manager cannot reach are still listed as managed in Ansible Tower?" Requires linking tunnel-manager to ansible-tower and systems-manager through the ontology concept: host. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R062.3 tunnel-manager acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tunnel-manager acceptance test.** Both questions (EG-CQ-CONN-R062.1 and EG-CQ-CONN-R062.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R062.1 and EG-CQ-CONN-R062.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R063 twenty competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**twenty competency rollup.** The ontology answers one single-source and one cross-source question over the `twenty` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R063.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R063.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R063.1 twenty single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**twenty single-source question.** "Which people at a company have no logged activity in the last 60 days while a deal is open?" Answered from the twenty connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/commercial-v1.ttl`. | A fixture query over twenty data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R063.2 twenty cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**twenty cross-source question.** "Which Twenty contacts also exist as Salesforce contacts with different email addresses?" Requires linking twenty to salesforce and listmonk through the ontology concept: person / company. Vocabulary: `crates/eg-core/ontology/commercial-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R063.3 twenty acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**twenty acceptance test.** Both questions (EG-CQ-CONN-R063.1 and EG-CQ-CONN-R063.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R063.1 and EG-CQ-CONN-R063.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R064 uptime competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**uptime competency rollup.** The ontology answers one single-source and one cross-source question over the `uptime` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R064.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R064.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R064.1 uptime single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**uptime single-source question.** "Which monitored services were down in the last 24 hours and for how long?" Answered from the uptime connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A fixture query over uptime data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R064.2 uptime cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**uptime cross-source question.** "Which services Uptime Kuma saw down had a Grafana alert or a Caddy route error at the same time?" Requires linking uptime to lgtm and caddy through the ontology concept: service / hostname. Vocabulary: `crates/eg-core/ontology/infrastructure-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R064.3 uptime acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**uptime acceptance test.** Both questions (EG-CQ-CONN-R064.1 and EG-CQ-CONN-R064.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R064.1 and EG-CQ-CONN-R064.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R065 vector competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**vector competency rollup.** The ontology answers one single-source and one cross-source question over the `vector` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R065.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R065.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R065.1 vector single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**vector single-source question.** "Which collections have the most vectors and which have an embedding dimension that mismatches the model?" Answered from the vector connector alone, carrying provenance (source, record id, as-of). Vocabulary: MISSING. | A fixture query over vector data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R065.2 vector cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**vector cross-source question.** "Which Paperless-ngx documents have no embedding stored in the vector database?" Requires linking vector to data-science and paperless-ngx through the ontology concept: embedding / document. Vocabulary: MISSING. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R065.3 vector acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**vector acceptance test.** Both questions (EG-CQ-CONN-R065.1 and EG-CQ-CONN-R065.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R065.1 and EG-CQ-CONN-R065.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R066 wger competency rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**wger competency rollup.** The ontology answers one single-source and one cross-source question over the `wger` connector\'s access contract (virtual-first); delivered as children `EG-CQ-CONN-R066.1`, `.2`, `.3`. Becomes LANDED when every child is LANDED. | Children EG-CQ-CONN-R066.1 to .3 are LANDED. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R066.1 wger single-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**wger single-source question.** "Which workout routines were not completed in the last two weeks and which exercises were skipped?" Answered from the wger connector alone, carrying provenance (source, record id, as-of). Vocabulary: `crates/eg-core/ontology/nutrition-v1.ttl`. | A fixture query over wger data returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R066.2 wger cross-source question Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**wger cross-source question.** "Which weeks of low workout completion coincide with a Mealie meal plan above the calorie target?" Requires linking wger to mealie and home-assistant through the ontology concept: person / nutrition plan. Vocabulary: `crates/eg-core/ontology/nutrition-v1.ttl`. | A federated fixture over both connectors returns a non-empty provenance-carrying answer, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R066.3 wger acceptance test Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**wger acceptance test.** Both questions (EG-CQ-CONN-R066.1 and EG-CQ-CONN-R066.2) run end to end through the connector's declared access contract, fetching from the source at query time with no copy of the source required in the engine, and return a non-empty, provenance-carrying answer, or a typed abstention naming the unconnected source. Depends on EG-CQ-CONN-R066.1 and EG-CQ-CONN-R066.2. | One acceptance test asserts non-empty answer with provenance fields, or the typed abstention, for each question. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067 Contract kinds rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Contract kinds rollup.** For each access-contract kind the ontology can declare a source of that kind and the engine answers a question by fetching through the contract at query time, with no copy of the source in the engine; delivered as children `EG-CQ-CONN-R067.1` to `EG-CQ-CONN-R067.6`. Mechanism: `specs/federated-query-and-reasoning` and `specs/unified-data-plane`; no new functionality outside them. | All children verified. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067.1 MCP contract answers at query time Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**MCP contract answers at query time.** One acceptance test declares a connector that exposes MCP tools and resources in the ontology, asks one question, and asserts the answer was fetched through the contract (provenance names the contract and the fetch time) and that no source rows were stored in the engine. | One acceptance test asserts a non-empty answer, contract provenance and an unchanged engine row count for that source, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067.2 A2A contract answers at query time Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**A2A contract answers at query time.** One acceptance test declares an external agent reached over the A2A protocol in the ontology, asks one question, and asserts the answer was fetched through the contract (provenance names the contract and the fetch time) and that no source rows were stored in the engine. | One acceptance test asserts a non-empty answer, contract provenance and an unchanged engine row count for that source, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067.3 API (REST) contract answers at query time Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**API (REST) contract answers at query time.** One acceptance test declares a connector that calls an HTTP API described by an operation contract in the ontology, asks one question, and asserts the answer was fetched through the contract (provenance names the contract and the fetch time) and that no source rows were stored in the engine. | One acceptance test asserts a non-empty answer, contract provenance and an unchanged engine row count for that source, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067.4 GraphQL contract answers at query time Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**GraphQL contract answers at query time.** One acceptance test declares a connector whose source speaks GraphQL in the ontology, asks one question, and asserts the answer was fetched through the contract (provenance names the contract and the fetch time) and that no source rows were stored in the engine. | One acceptance test asserts a non-empty answer, contract provenance and an unchanged engine row count for that source, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067.5 virtual graph over a relational or document store contract answers at query time Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**virtual graph over a relational or document store contract answers at query time.** One acceptance test declares a SQL or document source mapped by a virtual-graph mapping in the ontology, asks one question, and asserts the answer was fetched through the contract (provenance names the contract and the fetch time) and that no source rows were stored in the engine. | One acceptance test asserts a non-empty answer, contract provenance and an unchanged engine row count for that source, or a typed abstention naming the unconnected source. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R067.6 Materialisation is declared, never implicit Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Materialisation is declared, never implicit.** A source may be copied into the engine only when its ontology declaration states a materialisation policy with a reason; a source with no such statement is always fetched at query time. | One test asserts a source without a materialisation statement stores no rows after a query, and one with the statement does. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068 infrastructure-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**infrastructure-v1.ttl additions rollup.** 26 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R068.1` to `EG-CQ-CONN-R068.26`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.1 shapes companion for infrastructure-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for infrastructure-v1.** Create `crates/eg-core/ontology/infrastructure-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `infrastructure` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_infrastructure_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.2 AutomationJob Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**AutomationJob.** Add owl:Class `:AutomationJob` (subClassOf :Workload-adjacent bfo process; one Tower job run) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: AutomationJob: jobStatus minCount 1, in `infrastructure-v1.shapes.ttl`. Needed by: ansible-tower. | `ontology_audit_infrastructure_v1::AutomationJob_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.3 AutomationJobTemplate Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**AutomationJobTemplate.** Add owl:Class `:AutomationJobTemplate` (template a job instantiates) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: ansible-tower. | `ontology_audit_infrastructure_v1::AutomationJobTemplate_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.4 jobStatus Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**jobStatus.** Add owl:DatatypeProperty `:jobStatus` (AutomationJob -> xsd:string (successful|failed|running|canceled)) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: sh:in on jobStatus, in `infrastructure-v1.shapes.ttl`. Needed by: ansible-tower. | `ontology_audit_infrastructure_v1::jobStatus_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.5 ranAgainstHost Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ranAgainstHost.** Add owl:ObjectProperty `:ranAgainstHost` (AutomationJob -> :Host) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: ansible-tower. | `ontology_audit_infrastructure_v1::ranAgainstHost_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.6 routeHostname Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**routeHostname.** Add owl:DatatypeProperty `:routeHostname` (ProxyRoute -> xsd:string) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: routeHostname minCount 1 on ProxyRoute, in `infrastructure-v1.shapes.ttl`. Needed by: caddy. | `ontology_audit_infrastructure_v1::routeHostname_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.7 upstreamAddress Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**upstreamAddress.** Add owl:DatatypeProperty `:upstreamAddress` (ProxyRoute -> xsd:string) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: caddy. | `ontology_audit_infrastructure_v1::upstreamAddress_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.8 Alert Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Alert.** Add owl:Class `:Alert` (a firing or resolved alert rule instance on a :Service) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: Alert: alertSeverity, alertState minCount 1, in `infrastructure-v1.shapes.ttl`. Needed by: lgtm. | `ontology_audit_infrastructure_v1::Alert_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.9 alertSeverity Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**alertSeverity.** Add owl:DatatypeProperty `:alertSeverity` (Alert -> xsd:string) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: lgtm. | `ontology_audit_infrastructure_v1::alertSeverity_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.10 alertState Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**alertState.** Add owl:DatatypeProperty `:alertState` (Alert -> xsd:string (firing|resolved|pending)) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: lgtm. | `ontology_audit_infrastructure_v1::alertState_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.11 firingSince Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**firingSince.** Add owl:DatatypeProperty `:firingSince` (Alert -> xsd:dateTime) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: lgtm. | `ontology_audit_infrastructure_v1::firingSince_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.12 alertsOn Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**alertsOn.** Add owl:ObjectProperty `:alertsOn` (Alert -> :Service) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: lgtm. | `ontology_audit_infrastructure_v1::alertsOn_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.13 lastPushedAt Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lastPushedAt.** Add owl:DatatypeProperty `:lastPushedAt` (ContainerImage -> xsd:dateTime) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: dockerhub. | `ontology_audit_infrastructure_v1::lastPushedAt_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.14 pullCount Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pullCount.** Add owl:DatatypeProperty `:pullCount` (ContainerImage -> xsd:integer) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: pullCount minInclusive 0, in `infrastructure-v1.shapes.ttl`. Needed by: dockerhub. | `ontology_audit_infrastructure_v1::pullCount_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.15 entityState Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**entityState.** Add owl:DatatypeProperty `:entityState` (ha :Entity -> xsd:string (value or unavailable)) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: home-assistant. | `ontology_audit_infrastructure_v1::entityState_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.16 unavailableSince Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**unavailableSince.** Add owl:DatatypeProperty `:unavailableSince` (ha :Entity -> xsd:dateTime) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: home-assistant. | `ontology_audit_infrastructure_v1::unavailableSince_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.17 desiredReplicas Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**desiredReplicas.** Add owl:DatatypeProperty `:desiredReplicas` (ContainerStack -> xsd:integer) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: minInclusive 0, in `infrastructure-v1.shapes.ttl`. Needed by: portainer. | `ontology_audit_infrastructure_v1::desiredReplicas_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.18 runningReplicas Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**runningReplicas.** Add owl:DatatypeProperty `:runningReplicas` (ContainerStack -> xsd:integer) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: minInclusive 0, in `infrastructure-v1.shapes.ttl`. Needed by: portainer. | `ontology_audit_infrastructure_v1::runningReplicas_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.19 stackSourceRepository Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**stackSourceRepository.** Add owl:ObjectProperty `:stackSourceRepository` (ContainerStack -> :Repository) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: portainer. | `ontology_audit_infrastructure_v1::stackSourceRepository_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.20 ManagementEnvironment Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ManagementEnvironment.** Add owl:Class `:ManagementEnvironment` (a Portainer environment (named so it does not collide with the probed :Endpoint)) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: portainer. | `ontology_audit_infrastructure_v1::ManagementEnvironment_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.21 pendingUpdateCount Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pendingUpdateCount.** Add owl:DatatypeProperty `:pendingUpdateCount` (OperatingSystem -> xsd:integer) to `crates/eg-core/ontology/infrastructure-v1.ttl`. SHACL: minInclusive 0, in `infrastructure-v1.shapes.ttl`. Needed by: systems-manager. | `ontology_audit_infrastructure_v1::pendingUpdateCount_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.22 uptimeSeconds Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**uptimeSeconds.** Add owl:DatatypeProperty `:uptimeSeconds` (OperatingSystem -> xsd:integer) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: systems-manager. | `ontology_audit_infrastructure_v1::uptimeSeconds_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.23 recordType Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**recordType.** Add owl:DatatypeProperty `:recordType` (DnsRecord -> xsd:string (the existing :dnsType is typed on :DNSService, not the record)) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: technitium-dns. | `ontology_audit_infrastructure_v1::recordType_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.24 recordValue Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**recordValue.** Add owl:DatatypeProperty `:recordValue` (DnsRecord -> xsd:string) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: technitium-dns. | `ontology_audit_infrastructure_v1::recordValue_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.25 lastConnectionStatus Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lastConnectionStatus.** Add owl:DatatypeProperty `:lastConnectionStatus` (Host -> xsd:string (ok|failed)) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: tunnel-manager. | `ontology_audit_infrastructure_v1::lastConnectionStatus_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R068.26 lastConnectionError Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lastConnectionError.** Add owl:DatatypeProperty `:lastConnectionError` (Host -> xsd:string) to `crates/eg-core/ontology/infrastructure-v1.ttl`. Needed by: tunnel-manager. | `ontology_audit_infrastructure_v1::lastConnectionError_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069 sdlc_lifecycle-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**sdlc_lifecycle-v1.ttl additions rollup.** 23 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R069.1` to `EG-CQ-CONN-R069.23`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.1 shapes companion for sdlc_lifecycle-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for sdlc_lifecycle-v1.** Create `crates/eg-core/ontology/sdlc_lifecycle-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `sdlc_lifecycle` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_sdlc_lifecycle_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.2 Repository Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Repository.** Add owl:Class `:Repository` (source repository (class used by infra:ContainerImage/aliasOf but never declared)) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: dockerhub, github, repository-manager. | `ontology_audit_sdlc_lifecycle_v1::Repository_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.3 Branch Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Branch.** Add owl:Class `:Branch` (a ref in a Repository) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: gitlab, repository-manager. | `ontology_audit_sdlc_lifecycle_v1::Branch_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.4 branchOf Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**branchOf.** Add owl:ObjectProperty `:branchOf` (Branch -> Repository) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: gitlab. | `ontology_audit_sdlc_lifecycle_v1::branchOf_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.5 headCommit Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**headCommit.** Add owl:ObjectProperty `:headCommit` (Branch -> software:Commit) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: gitlab. | `ontology_audit_sdlc_lifecycle_v1::headCommit_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.6 isDefaultBranch Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**isDefaultBranch.** Add owl:DatatypeProperty `:isDefaultBranch` (Branch -> xsd:boolean) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: gitlab. | `ontology_audit_sdlc_lifecycle_v1::isDefaultBranch_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.7 blockedBy Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**blockedBy.** Add owl:ObjectProperty `:blockedBy` (Ticket -> Ticket) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: atlassian. | `ontology_audit_sdlc_lifecycle_v1::blockedBy_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.8 assignedTo Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**assignedTo.** Add owl:ObjectProperty `:assignedTo` (Ticket -> :Person) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: atlassian. | `ontology_audit_sdlc_lifecycle_v1::assignedTo_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.9 ticketStatus Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ticketStatus.** Add owl:DatatypeProperty `:ticketStatus` (Ticket -> xsd:string) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: atlassian, plane. | `ontology_audit_sdlc_lifecycle_v1::ticketStatus_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.10 closesTicket Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**closesTicket.** Add owl:ObjectProperty `:closesTicket` (CodeChangeProposal -> Ticket) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: atlassian, github. | `ontology_audit_sdlc_lifecycle_v1::closesTicket_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.11 proposalState Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**proposalState.** Add owl:DatatypeProperty `:proposalState` (CodeChangeProposal -> xsd:string (open|merged|closed)) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. SHACL: sh:in, in `sdlc_lifecycle-v1.shapes.ttl`. Needed by: atlassian, github, repository-manager. | `ontology_audit_sdlc_lifecycle_v1::proposalState_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.12 requestedReviewer Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**requestedReviewer.** Add owl:ObjectProperty `:requestedReviewer` (CodeChangeProposal -> :Person) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: github. | `ontology_audit_sdlc_lifecycle_v1::requestedReviewer_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.13 PipelineJob Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**PipelineJob.** Add owl:Class `:PipelineJob` (one job inside a PipelineRun) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: gitlab. | `ontology_audit_sdlc_lifecycle_v1::PipelineJob_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.14 pipelineJobOf Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**pipelineJobOf.** Add owl:ObjectProperty `:pipelineJobOf` (PipelineJob -> PipelineRun) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: gitlab. | `ontology_audit_sdlc_lifecycle_v1::pipelineJobOf_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.15 IterationCycle Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**IterationCycle.** Add owl:Class `:IterationCycle` (Plane cycle / sprint) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: plane. | `ontology_audit_sdlc_lifecycle_v1::IterationCycle_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.16 inCycle Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**inCycle.** Add owl:ObjectProperty `:inCycle` (Ticket -> IterationCycle) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: plane. | `ontology_audit_sdlc_lifecycle_v1::inCycle_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.17 WorkModule Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**WorkModule.** Add owl:Class `:WorkModule` (Plane module grouping tickets) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: plane. | `ontology_audit_sdlc_lifecycle_v1::WorkModule_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.18 inModule Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**inModule.** Add owl:ObjectProperty `:inModule` (Ticket -> WorkModule) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: plane. | `ontology_audit_sdlc_lifecycle_v1::inModule_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.19 ticketDueDate Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ticketDueDate.** Add owl:DatatypeProperty `:ticketDueDate` (Ticket -> xsd:date) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: plane. | `ontology_audit_sdlc_lifecycle_v1::ticketDueDate_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.20 Worktree Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Worktree.** Add owl:Class `:Worktree` (a linked git worktree of a Repository) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: repository-manager. | `ontology_audit_sdlc_lifecycle_v1::Worktree_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.21 worktreeState Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**worktreeState.** Add owl:DatatypeProperty `:worktreeState` (Worktree -> xsd:string (active|stale|dangling|merged)) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. SHACL: sh:in, in `sdlc_lifecycle-v1.shapes.ttl`. Needed by: repository-manager. | `ontology_audit_sdlc_lifecycle_v1::worktreeState_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.22 tracksBranch Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tracksBranch.** Add owl:ObjectProperty `:tracksBranch` (Worktree -> Branch) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: repository-manager. | `ontology_audit_sdlc_lifecycle_v1::tracksBranch_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R069.23 proposalBranch Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**proposalBranch.** Add owl:ObjectProperty `:proposalBranch` (CodeChangeProposal -> Branch) to `crates/eg-core/ontology/sdlc_lifecycle-v1.ttl`. Needed by: repository-manager. | `ontology_audit_sdlc_lifecycle_v1::proposalBranch_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070 archimate-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**archimate-v1.ttl additions rollup.** 8 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R070.1` to `EG-CQ-CONN-R070.8`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.1 shapes companion for archimate-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for archimate-v1.** Create `crates/eg-core/ontology/archimate-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `archimate` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_archimate_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.2 ApplicationComponent Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ApplicationComponent.** Add owl:Class `:ApplicationComponent` (subClassOf :ApplicationLayer; anchor for LeanIX/Backstage components) to `crates/eg-core/ontology/archimate-v1.ttl`. Needed by: archimate. | `ontology_audit_archimate_v1::ApplicationComponent_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.3 ArchimateRelationship Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ArchimateRelationship.** Add owl:Class `:ArchimateRelationship` (reified relationship) to `crates/eg-core/ontology/archimate-v1.ttl`. SHACL: ArchimateRelationship: relationshipType, relSource, relTarget minCount 1, in `archimate-v1.shapes.ttl`. Needed by: archimate. | `ontology_audit_archimate_v1::ArchimateRelationship_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.4 relationshipType Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**relationshipType.** Add owl:DatatypeProperty `:relationshipType` (ArchimateRelationship -> xsd:string (Serving|Realization|Assignment|...)) to `crates/eg-core/ontology/archimate-v1.ttl`. Needed by: archimate. | `ontology_audit_archimate_v1::relationshipType_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.5 ConfigurationItem Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ConfigurationItem.** Add owl:Class `:ConfigurationItem` (subClassOf :ApplicationLayer; crosswalk anchor for a ServiceNow CI) to `crates/eg-core/ontology/archimate-v1.ttl`. Needed by: servicenow. | `ontology_audit_archimate_v1::ConfigurationItem_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.6 affectsConfigurationItem Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**affectsConfigurationItem.** Add owl:ObjectProperty `:affectsConfigurationItem` (Incident|Change -> ConfigurationItem) to `crates/eg-core/ontology/archimate-v1.ttl`. Needed by: servicenow. | `ontology_audit_archimate_v1::affectsConfigurationItem_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.7 incidentState Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**incidentState.** Add owl:DatatypeProperty `:incidentState` (Incident -> xsd:string (new|in_progress|resolved|closed)) to `crates/eg-core/ontology/archimate-v1.ttl`. Needed by: servicenow. | `ontology_audit_archimate_v1::incidentState_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R070.8 incidentAssignee Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**incidentAssignee.** Add owl:ObjectProperty `:incidentAssignee` (Incident -> :Person) to `crates/eg-core/ontology/archimate-v1.ttl`. Needed by: servicenow. | `ontology_audit_archimate_v1::incidentAssignee_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071 documentation-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**documentation-v1.ttl additions rollup.** 6 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R071.1`, `EG-CQ-CONN-R071.2`, `EG-CQ-CONN-R071.3`, `EG-CQ-CONN-R071.4`, `EG-CQ-CONN-R071.5`, `EG-CQ-CONN-R071.6`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071.1 shapes companion for documentation-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for documentation-v1.** Create `crates/eg-core/ontology/documentation-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `documentation` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_documentation_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071.2 WebSnapshot Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**WebSnapshot.** Add owl:Class `:WebSnapshot` (subClassOf :Document; a captured URL snapshot) to `crates/eg-core/ontology/documentation-v1.ttl`. SHACL: WebSnapshot: sourceRef minCount 1 (the URL), in `documentation-v1.shapes.ttl`. Needed by: archivebox. | `ontology_audit_documentation_v1::WebSnapshot_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071.3 ArchiveResult Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ArchiveResult.** Add owl:Class `:ArchiveResult` (one extractor outcome for a snapshot) to `crates/eg-core/ontology/documentation-v1.ttl`. SHACL: ArchiveResult: extractorName, resultStatus minCount 1, in `documentation-v1.shapes.ttl`. Needed by: archivebox. | `ontology_audit_documentation_v1::ArchiveResult_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071.4 hasArchiveResult Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**hasArchiveResult.** Add owl:ObjectProperty `:hasArchiveResult` (WebSnapshot -> ArchiveResult) to `crates/eg-core/ontology/documentation-v1.ttl`. Needed by: archivebox. | `ontology_audit_documentation_v1::hasArchiveResult_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071.5 extractorName Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**extractorName.** Add owl:DatatypeProperty `:extractorName` (ArchiveResult -> xsd:string) to `crates/eg-core/ontology/documentation-v1.ttl`. Needed by: archivebox. | `ontology_audit_documentation_v1::extractorName_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R071.6 resultStatus Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**resultStatus.** Add owl:DatatypeProperty `:resultStatus` (ArchiveResult -> xsd:string (succeeded|failed|skipped)) to `crates/eg-core/ontology/documentation-v1.ttl`. Needed by: archivebox. | `ontology_audit_documentation_v1::resultStatus_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072 process_intelligence-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**process_intelligence-v1.ttl additions rollup.** 7 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R072.1`, `EG-CQ-CONN-R072.2`, `EG-CQ-CONN-R072.3`, `EG-CQ-CONN-R072.4`, `EG-CQ-CONN-R072.5`, `EG-CQ-CONN-R072.6`, `EG-CQ-CONN-R072.7`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.1 EpcFunction Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**EpcFunction.** Add owl:Class `:EpcFunction` (subClassOf :ProcessEventType; ARIS EPC function) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: aris. | `ontology_audit_process_intelligence_v1::EpcFunction_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.2 EpcRuleOperator Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**EpcRuleOperator.** Add owl:Class `:EpcRuleOperator` (ARIS split/join (AND|OR|XOR) between EPC nodes) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: aris. | `ontology_audit_process_intelligence_v1::EpcRuleOperator_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.3 flowsTo Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**flowsTo.** Add owl:ObjectProperty `:flowsTo` (model-level control-flow edge: EPC node -> EPC node (distinct from instance-level :directlyFollows)) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: aris. | `ontology_audit_process_intelligence_v1::flowsTo_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.4 ProcessInstance Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ProcessInstance.** Add owl:Class `:ProcessInstance` (one running or finished execution of a ProcessModelVersion) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: camunda. | `ontology_audit_process_intelligence_v1::ProcessInstance_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.5 instanceOfProcessModel Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**instanceOfProcessModel.** Add owl:ObjectProperty `:instanceOfProcessModel` (ProcessInstance -> :ProcessModelVersion) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: camunda. | `ontology_audit_process_intelligence_v1::instanceOfProcessModel_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.6 stoppedAtActivity Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**stoppedAtActivity.** Add owl:ObjectProperty `:stoppedAtActivity` (ProcessInstance -> :ProcessEventType) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: camunda. | `ontology_audit_process_intelligence_v1::stoppedAtActivity_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R072.7 raisedIncident Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**raisedIncident.** Add owl:ObjectProperty `:raisedIncident` (ProcessInstance -> :ApplicationEvent (archimate crosswalk)) to `crates/eg-core/ontology/process_intelligence-v1.ttl`. Needed by: camunda. | `ontology_audit_process_intelligence_v1::raisedIncident_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073 government-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**government-v1.ttl additions rollup.** 11 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R073.1` to `EG-CQ-CONN-R073.11`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.1 shapes companion for government-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for government-v1.** Create `crates/eg-core/ontology/government-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `government` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_government_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.2 RiskScenario Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**RiskScenario.** Add owl:Class `:RiskScenario` (a risk scenario in a risk assessment) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: ciso-assistant. | `ontology_audit_government_v1::RiskScenario_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.3 mitigatesRisk Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**mitigatesRisk.** Add owl:ObjectProperty `:mitigatesRisk` (SecurityControl -> RiskScenario) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: ciso-assistant. | `ontology_audit_government_v1::mitigatesRisk_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.4 inFramework Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**inFramework.** Add owl:ObjectProperty `:inFramework` (SecurityControl -> core:Framework) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: ciso-assistant. | `ontology_audit_government_v1::inFramework_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.5 riskAffectsService Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**riskAffectsService.** Add owl:ObjectProperty `:riskAffectsService` (RiskScenario -> infra:Service) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: ciso-assistant. | `ontology_audit_government_v1::riskAffectsService_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.6 PrivacyAssessment Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**PrivacyAssessment.** Add owl:Class `:PrivacyAssessment` (DPIA/PIA instance) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: onetrust. | `ontology_audit_government_v1::PrivacyAssessment_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.7 ProcessingActivity Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ProcessingActivity.** Add owl:Class `:ProcessingActivity` (a records-of-processing entry) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: onetrust. | `ontology_audit_government_v1::ProcessingActivity_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.8 assessmentCovers Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**assessmentCovers.** Add owl:ObjectProperty `:assessmentCovers` (PrivacyAssessment -> ProcessingActivity) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: onetrust. | `ontology_audit_government_v1::assessmentCovers_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.9 assessmentDueDate Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**assessmentDueDate.** Add owl:DatatypeProperty `:assessmentDueDate` (PrivacyAssessment -> xsd:date) to `crates/eg-core/ontology/government-v1.ttl`. SHACL: assessmentDueDate minCount 1, in `government-v1.shapes.ttl`. Needed by: onetrust. | `ontology_audit_government_v1::assessmentDueDate_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.10 assessedVendor Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**assessedVendor.** Add owl:ObjectProperty `:assessedVendor` (PrivacyAssessment -> trm:Vendor) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: onetrust. | `ontology_audit_government_v1::assessedVendor_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R073.11 assessmentStatus Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**assessmentStatus.** Add owl:DatatypeProperty `:assessmentStatus` (PrivacyAssessment -> xsd:string (draft|in_review|approved); overdue is derived from as-of and assessmentDueDate) to `crates/eg-core/ontology/government-v1.ttl`. Needed by: onetrust. | `ontology_audit_government_v1::assessmentStatus_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074 core-foundation-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**core-foundation-v1.ttl additions rollup.** 6 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R074.1`, `EG-CQ-CONN-R074.2`, `EG-CQ-CONN-R074.3`, `EG-CQ-CONN-R074.4`, `EG-CQ-CONN-R074.5`, `EG-CQ-CONN-R074.6`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074.1 shapes companion for core-foundation-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for core-foundation-v1.** Create `crates/eg-core/ontology/core-foundation-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `core-foundation` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_core_foundation_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074.2 GlossaryTerm Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**GlossaryTerm.** Add owl:Class `:GlossaryTerm` (subClassOf :Concept; a governed business term) to `crates/eg-core/ontology/core-foundation-v1.ttl`. Needed by: egeria. | `ontology_audit_core_foundation_v1::GlossaryTerm_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074.3 termAssignedTo Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**termAssignedTo.** Add owl:ObjectProperty `:termAssignedTo` (GlossaryTerm -> :Dataset) to `crates/eg-core/ontology/core-foundation-v1.ttl`. Needed by: egeria. | `ontology_audit_core_foundation_v1::termAssignedTo_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074.4 counterparty Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**counterparty.** Add owl:ObjectProperty `:counterparty` (Agreement -> :LegalEntity) to `crates/eg-core/ontology/core-foundation-v1.ttl`. SHACL: counterparty minCount 1, in `core-foundation-v1.shapes.ttl`. Needed by: legal-peripherals. | `ontology_audit_core_foundation_v1::counterparty_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074.5 agreementExpiresAt Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**agreementExpiresAt.** Add owl:DatatypeProperty `:agreementExpiresAt` (Agreement -> xsd:date) to `crates/eg-core/ontology/core-foundation-v1.ttl`. Needed by: legal-peripherals. | `ontology_audit_core_foundation_v1::agreementExpiresAt_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R074.6 hasRenewalAction Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**hasRenewalAction.** Add owl:ObjectProperty `:hasRenewalAction` (Agreement -> :Action) to `crates/eg-core/ontology/core-foundation-v1.ttl`. Needed by: legal-peripherals. | `ontology_audit_core_foundation_v1::hasRenewalAction_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075 finance-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**finance-v1.ttl additions rollup.** 7 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R075.1`, `EG-CQ-CONN-R075.2`, `EG-CQ-CONN-R075.3`, `EG-CQ-CONN-R075.4`, `EG-CQ-CONN-R075.5`, `EG-CQ-CONN-R075.6`, `EG-CQ-CONN-R075.7`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.1 shapes companion for finance-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for finance-v1.** Create `crates/eg-core/ontology/finance-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `finance` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_finance_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.2 orderQty Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**orderQty.** Add owl:DatatypeProperty `:orderQty` (VersionedOrder -> xsd:float) to `crates/eg-core/ontology/finance-v1.ttl`. SHACL: filledQty sh:lessThanOrEquals orderQty, in `finance-v1.shapes.ttl`. Needed by: emerald-exchange. | `ontology_audit_finance_v1::orderQty_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.3 Budget Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Budget.** Add owl:Class `:Budget` (a spending budget) to `crates/eg-core/ontology/finance-v1.ttl`. Needed by: firefly-iii. | `ontology_audit_finance_v1::Budget_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.4 budgetLimit Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**budgetLimit.** Add owl:DatatypeProperty `:budgetLimit` (Budget -> xsd:decimal) to `crates/eg-core/ontology/finance-v1.ttl`. SHACL: minCount 1, in `finance-v1.shapes.ttl`. Needed by: firefly-iii. | `ontology_audit_finance_v1::budgetLimit_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.5 LedgerTransaction Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**LedgerTransaction.** Add owl:Class `:LedgerTransaction` (a personal-ledger transaction (not position-bound, unlike :Activity)) to `crates/eg-core/ontology/finance-v1.ttl`. Needed by: firefly-iii. | `ontology_audit_finance_v1::LedgerTransaction_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.6 chargedToBudget Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**chargedToBudget.** Add owl:ObjectProperty `:chargedToBudget` (LedgerTransaction -> Budget) to `crates/eg-core/ontology/finance-v1.ttl`. Needed by: firefly-iii. | `ontology_audit_finance_v1::chargedToBudget_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R075.7 transactionAmount Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**transactionAmount.** Add owl:DatatypeProperty `:transactionAmount` (LedgerTransaction -> xsd:decimal) to `crates/eg-core/ontology/finance-v1.ttl`. Needed by: firefly-iii. | `ontology_audit_finance_v1::transactionAmount_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076 personal-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**personal-v1.ttl additions rollup.** 9 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R076.1` to `EG-CQ-CONN-R076.9`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.1 birthPlace Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**birthPlace.** Add owl:ObjectProperty `:birthPlace` (core:Person -> core:Place) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: gramps. | `ontology_audit_personal_v1::birthPlace_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.2 birthYear Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**birthYear.** Add owl:DatatypeProperty `:birthYear` (core:Person -> xsd:gYear) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: gramps. | `ontology_audit_personal_v1::birthYear_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.3 documentType Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**documentType.** Add owl:DatatypeProperty `:documentType` (core:Document -> xsd:string) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: paperless-ngx. | `ontology_audit_personal_v1::documentType_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.4 dueDate Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**dueDate.** Add owl:DatatypeProperty `:dueDate` (core:Document -> xsd:date) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: paperless-ngx. | `ontology_audit_personal_v1::dueDate_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.5 totalAmount Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**totalAmount.** Add owl:DatatypeProperty `:totalAmount` (core:Document -> xsd:decimal) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: paperless-ngx. | `ontology_audit_personal_v1::totalAmount_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.6 FileShare Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**FileShare.** Add owl:Class `:FileShare` (a Nextcloud share of a file or folder) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: nextcloud. | `ontology_audit_personal_v1::FileShare_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.7 sharesFile Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**sharesFile.** Add owl:ObjectProperty `:sharesFile` (FileShare -> core:Document) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: nextcloud. | `ontology_audit_personal_v1::sharesFile_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.8 isPublicLink Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**isPublicLink.** Add owl:DatatypeProperty `:isPublicLink` (FileShare -> xsd:boolean) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: nextcloud. | `ontology_audit_personal_v1::isPublicLink_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R076.9 shareExpiresAt Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shareExpiresAt.** Add owl:DatatypeProperty `:shareExpiresAt` (FileShare -> xsd:date) to `crates/eg-core/ontology/personal-v1.ttl`. Needed by: nextcloud. | `ontology_audit_personal_v1::shareExpiresAt_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R077 virtual_graph-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**virtual_graph-v1.ttl additions rollup.** 3 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R077.1`, `EG-CQ-CONN-R077.2`, `EG-CQ-CONN-R077.3`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R077.1 NamedGraph Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**NamedGraph.** Add owl:Class `:NamedGraph` (subClassOf core:Dataset; a graph in a triple store) to `crates/eg-core/ontology/virtual_graph-v1.ttl`. Needed by: jena. | `ontology_audit_virtual_graph_v1::NamedGraph_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R077.2 tripleCount Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tripleCount.** Add owl:DatatypeProperty `:tripleCount` (NamedGraph -> xsd:integer) to `crates/eg-core/ontology/virtual_graph-v1.ttl`. Needed by: jena. | `ontology_audit_virtual_graph_v1::tripleCount_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R077.3 lastModifiedAt Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lastModifiedAt.** Add owl:DatatypeProperty `:lastModifiedAt` (NamedGraph -> xsd:dateTime) to `crates/eg-core/ontology/virtual_graph-v1.ttl`. Needed by: jena. | `ontology_audit_virtual_graph_v1::lastModifiedAt_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R078 identity-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**identity-v1.ttl additions rollup.** 5 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R078.1`, `EG-CQ-CONN-R078.2`, `EG-CQ-CONN-R078.3`, `EG-CQ-CONN-R078.4`, `EG-CQ-CONN-R078.5`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R078.1 shapes companion for identity-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for identity-v1.** Create `crates/eg-core/ontology/identity-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `identity` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_identity_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R078.2 Application Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Application.** Add owl:Class `:Application` (declare the class already used as range of :assignedApp) to `crates/eg-core/ontology/identity-v1.ttl`. Needed by: keycloak, okta. | `ontology_audit_identity_v1::Application_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R078.3 OidcClient Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**OidcClient.** Add owl:Class `:OidcClient` (subClassOf :Application) to `crates/eg-core/ontology/identity-v1.ttl`. Needed by: keycloak. | `ontology_audit_identity_v1::OidcClient_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R078.4 roleGrantsAccessTo Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**roleGrantsAccessTo.** Add owl:ObjectProperty `:roleGrantsAccessTo` (IdentityRole -> Application) to `crates/eg-core/ontology/identity-v1.ttl`. Needed by: keycloak. | `ontology_audit_identity_v1::roleGrantsAccessTo_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R078.5 accountStatus Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**accountStatus.** Add owl:DatatypeProperty `:accountStatus` (IdentityUser -> xsd:string) to `crates/eg-core/ontology/identity-v1.ttl`. SHACL: sh:in (ACTIVE|SUSPENDED|DEACTIVATED), in `identity-v1.shapes.ttl`. Needed by: okta. | `ontology_audit_identity_v1::accountStatus_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R079 orchestration-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**orchestration-v1.ttl additions rollup.** 5 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R079.1`, `EG-CQ-CONN-R079.2`, `EG-CQ-CONN-R079.3`, `EG-CQ-CONN-R079.4`, `EG-CQ-CONN-R079.5`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R079.1 shapes companion for orchestration-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for orchestration-v1.** Create `crates/eg-core/ontology/orchestration-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `orchestration` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_orchestration_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R079.2 promptVersion Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**promptVersion.** Add owl:DatatypeProperty `:promptVersion` (Prompt -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Needed by: langfuse. | `ontology_audit_orchestration_v1::promptVersion_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R079.3 tokenCost Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tokenCost.** Add owl:DatatypeProperty `:tokenCost` (RunTrace -> xsd:decimal) to `crates/eg-core/ontology/orchestration-v1.ttl`. SHACL: minInclusive 0, in `orchestration-v1.shapes.ttl`. Needed by: langfuse. | `ontology_audit_orchestration_v1::tokenCost_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R079.4 tracePrompt Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**tracePrompt.** Add owl:ObjectProperty `:tracePrompt` (RunTrace -> Prompt) to `crates/eg-core/ontology/orchestration-v1.ttl`. Needed by: langfuse. | `ontology_audit_orchestration_v1::tracePrompt_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R079.5 evaluationScore Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**evaluationScore.** Add owl:DatatypeProperty `:evaluationScore` (RunTrace|Prompt -> xsd:decimal) to `crates/eg-core/ontology/orchestration-v1.ttl`. Needed by: langfuse. | `ontology_audit_orchestration_v1::evaluationScore_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R080 enterprise-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**enterprise-v1.ttl additions rollup.** 4 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R080.1`, `EG-CQ-CONN-R080.2`, `EG-CQ-CONN-R080.3`, `EG-CQ-CONN-R080.4`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R080.1 shapes companion for enterprise-v1 Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**shapes companion for enterprise-v1.** Create `crates/eg-core/ontology/enterprise-v1.shapes.ttl` (precedent: `finance-v1.shapes.ttl`) and set `shapes: Some(include_str!(...))` on the `enterprise` CoreSpec in `schema_sources.rs`. Empty shapes graph is valid; each term child below adds its own NodeShape. Reuse an existing companion without replacing its shapes; delivery still requires the named registry-load test. | `ontology_audit_enterprise_v1::shapes_module_loads`. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R080.2 factSheetType Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**factSheetType.** Add owl:DatatypeProperty `:factSheetType` (EAFactSheet -> xsd:string) to `crates/eg-core/ontology/enterprise-v1.ttl`. Needed by: leanix. | `ontology_audit_enterprise_v1::factSheetType_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R080.3 lifecyclePhase Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**lifecyclePhase.** Add owl:DatatypeProperty `:lifecyclePhase` (EAFactSheet -> xsd:string (plan|active|phaseOut|endOfLife)) to `crates/eg-core/ontology/enterprise-v1.ttl`. SHACL: sh:in, in `enterprise-v1.shapes.ttl`. Needed by: leanix. | `ontology_audit_enterprise_v1::lifecyclePhase_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain) and that a violating fixture fails the shape. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R080.4 activeUserCount Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**activeUserCount.** Add owl:DatatypeProperty `:activeUserCount` (EAFactSheet -> xsd:integer) to `crates/eg-core/ontology/enterprise-v1.ttl`. Needed by: leanix. | `ontology_audit_enterprise_v1::activeUserCount_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081 nutrition-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**nutrition-v1.ttl additions rollup.** 8 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R081.1` to `EG-CQ-CONN-R081.8`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.1 Recipe Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Recipe.** Add owl:Class `:Recipe` (a recipe) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: mealie. | `ontology_audit_nutrition_v1::Recipe_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.2 usesIngredient Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**usesIngredient.** Add owl:ObjectProperty `:usesIngredient` (Recipe -> :Food) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: mealie. | `ontology_audit_nutrition_v1::usesIngredient_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.3 ShoppingListItem Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**ShoppingListItem.** Add owl:Class `:ShoppingListItem` (item on a shopping list, refers to a Food) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: mealie. | `ontology_audit_nutrition_v1::ShoppingListItem_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.4 MealPlanEntry Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**MealPlanEntry.** Add owl:Class `:MealPlanEntry` (a planned meal on a date for a Recipe) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: mealie. | `ontology_audit_nutrition_v1::MealPlanEntry_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.5 WorkoutRoutine Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**WorkoutRoutine.** Add owl:Class `:WorkoutRoutine` (a planned set of exercises) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: wger. | `ontology_audit_nutrition_v1::WorkoutRoutine_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.6 Exercise Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**Exercise.** Add owl:Class `:Exercise` (an exercise) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: wger. | `ontology_audit_nutrition_v1::Exercise_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.7 includesExercise Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**includesExercise.** Add owl:ObjectProperty `:includesExercise` (WorkoutRoutine -> Exercise) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: wger. | `ontology_audit_nutrition_v1::includesExercise_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R081.8 WorkoutSession Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**WorkoutSession.** Add owl:Class `:WorkoutSession` (a performed instance of a routine with completedAt) to `crates/eg-core/ontology/nutrition-v1.ttl`. Needed by: wger. | `ontology_audit_nutrition_v1::WorkoutSession_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R082 action-v1.ttl additions rollup Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**action-v1.ttl additions rollup.** 1 child rows, one per missing term (plus setup rows); becomes LANDED when every child is LANDED. Children: `EG-CQ-CONN-R082.1`. | Children landed. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R082.1 failureReason Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**failureReason.** Add owl:DatatypeProperty `:failureReason` (ActionInvocation -> xsd:string) to `crates/eg-core/ontology/action-v1.ttl`. Needed by: stirlingpdf. | `ontology_audit_action_v1::failureReason_declared` loads the module and asserts the term (ASK over rdf:type / rdfs:domain). | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-CONN-R083 erpnext, salesforce and twenty vocabulary (rollup, single row) Definition — EG-CQ-CONN / EG-CQ-CONN — Connector competency questionsCanonical requirement and verification source**erpnext, salesforce and twenty vocabulary (rollup, single row).** Commercial term and representation requirements are owned by `EG-SUPPLY-VOCAB` in `crates/eg-core/ontology/commercial-v1.ttl`. Rows `EG-SUPPLY-VOCAB-R003.7` through `EG-SUPPLY-VOCAB-R003.12` reuse Organization and Person rather than adding Party or Contact classes. They declare PurchaseOrder, PurchaseInvoice, Opportunity, contactOf and lastActivityAt. No `commerce-v1.ttl` is created. Needed by: erpnext, salesforce, twenty. Also depends on EG-SUPPLY-VOCAB-R003.13 through EG-SUPPLY-VOCAB-R003.17. Vocabulary reassignment text is not implementation evidence. | `commercial_connector_prerequisites` parses all three Coverage rows and both Vocabulary cells per connector. Resolve every required producer IRI through registered modules. Reject a missing producer, an unrelated-row-only edit, or duplicate incompatible declarations. Live unavailable fields cause typed abstention. | requirement | EG-CQ-CONN | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC EG-CQ-XSRC — Cross-source competency: supply chain to services | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R001 Concept-to-source authority is declared in the ontology (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Concept-to-source authority is declared in the ontology (rollup).** The ontology itself states which attached source is authoritative for which ontology class, so source choice is data, not query text. Children add the vocabulary, its SHACL shapes and a precedence rule. Rollup: LANDED only once every child is. | Every child is LANDED and the decisive swap test (R007.4) passes. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R001.1 Add `vg:SourceAuthority`, `vg:authoritativeSource`, `vg:authorityFor` and `vg:authorityRank` to the virtual-graph vocabulary Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add `vg:SourceAuthority`, `vg:authoritativeSource`, `vg:authorityFor` and `vg:authorityRank` to the virtual-graph vocabulary.** `crates/eg-core/ontology/virtual_graph-v1.ttl` gains class `vg:SourceAuthority` and properties `vg:authoritativeSource` (to `vg:SourceConnection`), `vg:authorityFor` (to an ontology class) and `vg:authorityRank` (integer, lower wins). Net-new: no authority term exists in any shipped .ttl (grep for authoritative/systemOfRecord found only unrelated DNS and ADR text). | The ontology parses and the new terms are present with domain and range. A unit test loads the file and lists them. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R001.2 SHACL shape: a `vg:SourceAuthority` names exactly one connected source, one class and one rank Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**SHACL shape: a `vg:SourceAuthority` names exactly one connected source, one class and one rank.** `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl` adds `vg:SourceAuthorityShape`. It refuses an authority with no source, no class or no rank, an authority whose source is not a `vg:SourceConnection`, and two authorities of equal rank for one class. Depends on `EG-CQ-XSRC-R001.1`. | Shape fixtures accept a valid authority and refuse each of the four faults, including the equal-rank tie. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R001.3 Authority applies through subclass entailment Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Authority applies through subclass entailment.** An authority declared on a superclass (for example `:ApplicationEvent`) serves its subclasses (for example `:Incident`) unless a subclass declares its own. Reuses the subclass entailment of `EG-FEDERATED-QUERY-R072`; adds only the precedence rule. Depends on `EG-CQ-XSRC-R001.1`. | A fixture shows the superclass authority inherited and a subclass authority overriding it. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R001.4 Authority records the approval of its mapping Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Authority records the approval of its mapping.** An authority is effective only while the `vg:VirtualMapping` it points at is approved (`vg:approved true`, `EG-UNIFIED-DATA-PLANE-R037`). An unapproved or retracted mapping makes the authority inactive, and the class is reported uncovered rather than served by a fallback source. | A fixture with an unapproved mapping returns the class as uncovered with the reason named. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002 Supply-chain concepts and the sources that are authoritative for them (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Supply-chain concepts and the sources that are authoritative for them (rollup).** Add the supply-chain concepts missing from the ontology and declare their authoritative sources. `:Vendor` and `:TechnologyProduct` (`trm-v1.ttl`) exist and are reused. Sources named here are a judgement from the connector list: erpnext-mcp (suppliers, purchase orders, items), salesforce-mcp and twenty-mcp (customer and partner accounts), ciso-assistant-mcp and onetrust-mcp (third-party risk and vendor assessments), leanix-mcp (provider fact sheets); software supply chain: dockerhub-mcp (image publisher and tags), github-mcp and gitlab-mcp (source repositories, dependencies, advisories), repository-manager-mcp (workspace repositories). Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.1 Add `:Supplier` as a subclass of `:Vendor`, and `:SupplyChainItem` with `:suppliedBy` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add `:Supplier` as a subclass of `:Vendor`, and `:SupplyChainItem` with `:suppliedBy`.** A new `crates/eg-core/ontology/supply_chain-v1.ttl` declares `:Supplier rdfs:subClassOf :Vendor` (reusing `trm-v1.ttl`), `:SupplyChainItem` and `:suppliedBy` (item to supplier). MISSING today: no supplier, procurement or supply-chain-item term exists outside `energy_geopolitics-v1.ttl` `:SupplyRoute`. | The file parses, `:Supplier` entails `:Vendor` in the reasoner, and a unit test lists the terms. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.2 Add `:SoftwareComponent`, `:ComponentVersion` and `:publishedBy` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add `:SoftwareComponent`, `:ComponentVersion` and `:publishedBy`.** `supply_chain-v1.ttl` adds the software supply-chain terms: a component, a version of it, and the publisher (a `:Supplier`). A `:ContainerImage` (`infrastructure-v1.ttl`) is declared a `:SoftwareComponent`. Depends on `EG-CQ-XSRC-R002.1`. | The file parses and `:ContainerImage` entails `:SoftwareComponent`. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.3 Add `:Vulnerability` and `:affectsComponent` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add `:Vulnerability` and `:affectsComponent`.** `supply_chain-v1.ttl` adds `:Vulnerability` (identifier, severity, fixed-in version) and `:affectsComponent` (to a `:ComponentVersion`). MISSING today: the only vulnerability term is the count `:vulnerabilityCount` in `trm-v1.ttl`. Depends on `EG-CQ-XSRC-R002.2`. | The file parses and a unit test lists the terms; `:vulnerabilityCount` is left unchanged. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.4 SHACL shape for supplier and component Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**SHACL shape for supplier and component.** `crates/eg-core/ontology/supply_chain-v1.shapes.ttl` requires a `:Supplier` to carry a name and a `:ComponentVersion` to name its component and a version string. Depends on `EG-CQ-XSRC-R002.2`. | Shape fixtures accept valid items and refuse a nameless supplier and a versionless component. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.5 Source-authority mapping: suppliers and purchase items Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Source-authority mapping: suppliers and purchase items.** Declare `vg:SourceAuthority` rows: `:Supplier` and `:SupplyChainItem` to erpnext-mcp (rank 1) with leanix-mcp `Provider` fact sheets (rank 2); third-party risk to ciso-assistant-mcp. Judgement: ERPNext is the transactional procurement system; LeanIX is the architecture catalogue. A seed `.ttl` fixture under `crates/eg-core/tests/fixtures/` holds the rows. Depends on `EG-CQ-XSRC-R001.1`, `EG-CQ-XSRC-R002.1`. | The seed loads, passes `vg:SourceAuthorityShape`, and `select_sources` returns erpnext for `:Supplier`. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.6 Source-authority mapping: software components and vulnerabilities Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Source-authority mapping: software components and vulnerabilities.** Declare `vg:SourceAuthority` rows: `:ContainerImage` to dockerhub-mcp (publisher, tags) with gitlab-mcp and github-mcp for source repositories. `:Vulnerability` to gitlab-mcp (vulnerability findings) with github-mcp advisories at rank 2. Judgement: the registry is authoritative for what an image is, the code host for what is wrong with it. Depends on `EG-CQ-XSRC-R002.3`. | The seed loads and `select_sources` returns the registry for an image and the code host for a vulnerability. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R002.7 Virtual mapping fixture: erpnext supplier table to `:Supplier` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Virtual mapping fixture: erpnext supplier table to `:Supplier`.** One approved `vg:VirtualMapping` (`vg:mapsOntologyClass :Supplier`, key field, predicate-field pairs for name and status) over a recorded erpnext-mcp operation contract, using the operation-bound kinds of `EG-FEDERATED-QUERY-R073`. Cross-repo prerequisite: the erpnext connector operation contract (owning repo: agent-packages connector). | The mapping passes the `EG-UNIFIED-DATA-PLANE-R037` shapes and reads equal rows from a recorded response. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R003 Service concepts and the sources that are authoritative for them (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Service concepts and the sources that are authoritative for them (rollup).** Declare which sources are authoritative for services, their hosts and their health. Found: `:Service` (a monitored network service, `infrastructure-v1.ttl`), `:Host`, `:Node`, `:Rack`, `:ContainerImage`, `:Incident`, `:BusinessCapability` (`archimate-v1.ttl`). Sources named are a judgement: uptime-mcp and lgtm-mcp for live service health, container-manager-mcp and portainer-mcp for deployed workloads and images, servicenow-mcp (CMDB) and leanix-mcp for the service catalogue and business capabilities, archimate-mcp for the architecture model, caddy-mcp and technitium-dns-mcp for ingress and name records, systems-manager-mcp for host facts. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R003.1 Source-authority mapping: `:Service` health Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Source-authority mapping: `:Service` health.** Declare `:Service` to uptime-mcp (rank 1) and lgtm-mcp (rank 2) for health, and to servicenow-mcp CMDB (rank 1) for the catalogue identity. Where two sources hold different facets, the authority row carries a `vg:authorityFor` property list rather than the whole class. Depends on `EG-CQ-XSRC-R001.1`. | The seed passes the shape and `select_sources` names uptime for health and CMDB for identity. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R003.2 Source-authority mapping: deployed workloads and images Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Source-authority mapping: deployed workloads and images.** Declare `:ContainerImage` deployment facts and `:Host` placement to container-manager-mcp (rank 1) and portainer-mcp (rank 2); `:Host` hardware facts to systems-manager-mcp. Depends on `EG-CQ-XSRC-R001.1`. | The seed passes the shape and `select_sources` names container-manager for deployed images. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R003.3 Source-authority mapping: business capabilities Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Source-authority mapping: business capabilities.** Declare `:BusinessCapability` to leanix-mcp (rank 1) and archimate-mcp (rank 2). Judgement: LeanIX is the maintained catalogue, ArchiMate the modelled view. Depends on `EG-CQ-XSRC-R001.1`. | The seed passes the shape and `select_sources` names leanix, with archimate as the second. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R003.4 Virtual mapping fixture: uptime monitor to `:Service` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Virtual mapping fixture: uptime monitor to `:Service`.** One approved `vg:VirtualMapping` from a recorded uptime-mcp operation contract to `:Service`, with name, status and last-check fields. Cross-repo prerequisite: the uptime connector operation contract (owning repo: agent-packages connector). | The mapping passes the `EG-UNIFIED-DATA-PLANE-R037` shapes and reads equal rows from a recorded response. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R003.5 Virtual mapping fixture: container-manager workload to `:Service` and `:ContainerImage` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Virtual mapping fixture: container-manager workload to `:Service` and `:ContainerImage`.** One approved `vg:VirtualMapping` from a recorded container-manager-mcp contract to `:Service` with its image reference. Cross-repo prerequisite: the container-manager operation contract (owning repo: agent-packages connector). | The mapping passes the shapes and reads equal rows from a recorded response. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R004 Linking relation between a supply-chain entity and a service, with entity resolution across sources (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Linking relation between a supply-chain entity and a service, with entity resolution across sources (rollup).** The relation that joins the two sides, and the resolution that makes one real-world thing in two sources one node. Found: `:dependsOn` (service to service, `infrastructure-v1.ttl`), `:runsOn`, `:hostedBy`, `:buildsImageFor`, `:affectsEntity`, `:alignedWith`, `owl:sameAs` proposals (`EG-UNIFIED-DATA-PLANE-R030`). Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R004.1 Add `:usesComponent` (service to component version) and `:suppliesService` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add `:usesComponent` (service to component version) and `:suppliesService`.** `supply_chain-v1.ttl` adds `:usesComponent` (domain `:Service`, range `:ComponentVersion`) and `:suppliesService` as its property chain with `:publishedBy` (supplier to service). The service-to-image step reuses the existing `:buildsImageFor`/`:runsOn` terms; it is not redefined. MISSING: no supplier-to-service relation exists. Depends on `EG-CQ-XSRC-R002.2`. | The file parses and a reasoner fixture entails `:suppliesService` from a service, its image and the image publisher. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R004.2 SHACL shape: `:usesComponent` domain and range Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**SHACL shape: `:usesComponent` domain and range.** `supply_chain-v1.shapes.ttl` refuses `:usesComponent` from a non-service or to a non-component. Depends on `EG-CQ-XSRC-R004.1`. | Shape fixtures accept a valid link and refuse both faults. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R004.3 Resolve a vendor in erpnext, leanix and dockerhub to one `:Supplier` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Resolve a vendor in erpnext, leanix and dockerhub to one `:Supplier`.** Adapt the entity-resolution model of `EG-UNIFIED-DATA-PLANE-R030` (it covers Gramps, Immich, Twenty and Firefly today) to supplier records: blocking on normalized name and domain, a proposed `owl:sameAs` that is active only once approved. Adds `Erpnext`, `Leanix` and `Dockerhub` to `AttachedApplication` in `crates/eg-types/src/entity_link_proposal.rs`. Depends on `EG-UNIFIED-DATA-PLANE-R030.1`. | A fixture with a true match, a false match and an ambiguous pair proves no link is asserted before approval, mirroring R030. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R004.4 Resolve a service in uptime, container-manager and the CMDB to one `:Service` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Resolve a service in uptime, container-manager and the CMDB to one `:Service`.** The same resolution applied to service records: blocking on name, host and port, an inactive proposal until approved. Reuses the `R030` model; adds only the application kinds and the blocking keys. Depends on `EG-CQ-XSRC-R004.3`. | A fixture proves the three records resolve to one node after approval and stay three before it. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R004.5 Query-time link: a join may only cross an approved `owl:sameAs` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Query-time link: a join may only cross an approved `owl:sameAs`.** The federated query joins records from different sources only through an approved link. A candidate link that is unapproved contributes nothing and is reported as an unresolved candidate in the answer. Mechanism: `EG-FEDERATED-QUERY-R072` path plus the approval state of R030. | A fixture shows the join empty before approval, non-empty after, and the candidate listed while unapproved. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R005 The federated query is planned from the ontology's source declarations (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**The federated query is planned from the ontology's source declarations (rollup).** Source selection reads `vg:SourceAuthority`. The question names only ontology classes; the planner picks the sources. Mechanism: `EG-FEDERATED-QUERY-R072` (source selection with premises), `EG-FEDERATED-QUERY-R046` and `R069` (pushdown), `EG-FEDERATED-QUERY-R073` (operation-bound sources), `EG-UNIFIED-DATA-PLANE-R005`/`R006` (R2RML virtual graphs). Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R005.1 `select_sources` orders candidate mappings by `vg:authorityRank` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**`select_sources` orders candidate mappings by `vg:authorityRank`.** Extend `eg-rdf::source_selection` so a covered class names the authoritative source by rank and lists the lower-ranked ones as alternates, each with a `Premise` citing the authority row. Depends on `EG-FEDERATED-QUERY-R072.1`, `EG-CQ-XSRC-R001.1`. | A two-source fixture shows the rank-1 source chosen, the alternate listed, and the authority row in the premises. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R005.2 Query fixture: the supply-chain impact query over classes only Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Query fixture: the supply-chain impact query over classes only.** A SPARQL fixture in `crates/eg-rdf/tests/fixtures/` asks for `:Service`, the `:SoftwareComponent` and `:Supplier` behind it, and `:Vulnerability` on it. It names no source, endpoint or connector. A test fails if the text contains a connector name. Depends on `EG-CQ-XSRC-R004.1`. | The fixture parses, and the no-connector-name check passes. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R005.3 The plan is derived, not authored: planned sources equal the declared authorities Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**The plan is derived, not authored: planned sources equal the declared authorities.** Plan the fixture of R005.2 and assert the set of sources in the plan equals the set derived from the authority rows. Depends on `EG-CQ-XSRC-R005.1`, `EG-CQ-XSRC-R005.2`. | The test compares the planned set to the authority-derived set for the seed. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R005.4 An unconnected authoritative source yields a typed abstention, not a silent fallback Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**An unconnected authoritative source yields a typed abstention, not a silent fallback.** When the rank-1 source for a class is not connected, the plan names it as `Unconnected { source, class }`. A lower-ranked alternate is used only if the authority row permits fallback (`vg:allowFallback`), and the report then says so. Depends on `EG-CQ-XSRC-R005.1`. | A fixture with erpnext unconnected returns the typed abstention naming erpnext and `:Supplier`. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R005.5 `EXPLAIN` shows the authority premise for each planned source Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**`EXPLAIN` shows the authority premise for each planned source.** Served `EXPLAIN` lists, per fragment, the authority row, rank, mapping generation and whether it was pushed. Mechanism: the redacted trace of `EG-FEDERATED-QUERY-R044`; no URL or credential in the output. Depends on `EG-CQ-XSRC-R005.3`. | A test reads the `EXPLAIN` output and finds the authority premises and no endpoint URL. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R006 The unified report shape (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**The unified report shape (rollup).** One typed report: impact per service, the supply-chain items behind each, the sources used and why, freshness per source, and typed abstention. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R006.1 Add the typed `SupplyChainImpactReport` model Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add the typed `SupplyChainImpactReport` model.** `crates/eg-types/src/supply_chain_report.rs` defines the report: a list of `ServiceImpact` (service IRI, items with supplier, component version, vulnerability and impact kind), `sources_used` (source, class served, authority premise), and `abstentions`. It refuses a `ServiceImpact` item with no source. Depends on `EG-CQ-XSRC-R005.1`. | Unit tests construct a valid report, refuse an item with no source, and round-trip the wire encoding. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R006.2 Report carries freshness per source Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Report carries freshness per source.** Each `sources_used` entry carries the watermark and age of its data (live read, or accelerated copy with its watermark, per `EG-UNIFIED-DATA-PLANE-R038.1`). A source with no watermark is reported `live`. Depends on `EG-CQ-XSRC-R006.1`. | Unit tests cover a copy with a watermark, a live read, and the refusal of a copy with no watermark. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R006.3 Report abstention variants Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Report abstention variants.** `abstentions` holds `Unconnected`, `Uncovered`, `Disconnected` and `UnapprovedMapping` entries, mapping the `CoverageResult` of `EG-FEDERATED-QUERY-R072.1` plus the unconnected case. A report with an abstention is still returned, never an error. Depends on `EG-CQ-XSRC-R006.1`. | Unit tests build one report per abstention kind and confirm the other services still report. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R006.4 Assemble the report from the federated rows Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Assemble the report from the federated rows.** A pure function from the planned query's rows and premises to `SupplyChainImpactReport`. Depends on `EG-CQ-XSRC-R006.1`, `EG-CQ-XSRC-R005.3`. | A fixture over recorded rows produces the expected report, byte for byte. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R006.5 Serve the report through graph-os Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Serve the report through graph-os.** Cross-repo prerequisite (owning repo: graph-os): expose one intent tool that takes the question and returns `SupplyChainImpactReport`. Per the registry rule, graph-os serves the tool; EG supplies the method. Depends on `EG-CQ-XSRC-R006.4`. | A served call returns a report whose shape matches the typed model. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R007 End-to-end acceptance from real connected data (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**End-to-end acceptance from real connected data (rollup).** "How does the supply chain affect our services?" answered through the served surface, with sources chosen only from the ontology. Rollup: LANDED only once every child is. | Every child is LANDED, including the swap test. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R007.1 Acceptance on recorded connector responses Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Acceptance on recorded connector responses.** Run the question over recorded erpnext-mcp, dockerhub-mcp, gitlab-mcp, container-manager-mcp and uptime-mcp responses. Assert at least one `ServiceImpact` with a supplier, a component version and a source per item, and that every source named in the report appears in an authority row. Depends on `EG-CQ-XSRC-R006.4`. | The test is non-empty and provenance-carrying, run in CI without network. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R007.2 Acceptance against the live connected sources Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Acceptance against the live connected sources.** The same question through graph-os against the connected sources that exist on the day. It reports each unconnected authoritative source as an abstention. Cross-repo prerequisite (owning repo: graph-os): the connected-source list. Depends on `EG-CQ-XSRC-R006.5`. | A run records the report, the sources used and the abstentions. A non-empty answer is required for at least the software supply chain and services sides. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R007.3 Acceptance with the procurement source not connected Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Acceptance with the procurement source not connected.** Run R007.1 with erpnext-mcp absent. Assert the report still gives the software supply-chain impact and carries `Unconnected{erpnext, :Supplier}`. Depends on `EG-CQ-XSRC-R005.4`. | The test asserts the abstention and the unchanged software-side rows. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R007.4 Decisive test: changing only the ontology's authority declaration changes the sources used Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Decisive test: changing only the ontology's authority declaration changes the sources used.** Run the question twice over the same query text. Between runs change one `vg:SourceAuthority` row (for example `:Vulnerability` from gitlab-mcp to github-mcp). Assert the plan and report name the new source and that the query text is byte-identical. This is the exit gate. Depends on `EG-CQ-XSRC-R007.1`. | The test compares query text (equal) and sources used (different) across the two runs. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008 Generalization: three more cross-source questions of the same shape (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Generalization: three more cross-source questions of the same shape (rollup).** Three questions that reuse the authority declaration, source selection and report model. Each child adds only its missing classes, authority rows and a test. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.1 Which services are exposed by a vulnerability in an image we deploy? (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Which services are exposed by a vulnerability in an image we deploy? (rollup)** Sources: dockerhub-mcp (image, tags), gitlab-mcp and github-mcp (vulnerability findings, advisories), container-manager-mcp and portainer-mcp (what is deployed), uptime-mcp (service). Uses `:ContainerImage`, `:Vulnerability`, `:affectsComponent`, `:usesComponent`. Mostly covered by R002 to R005; the child adds the deployed-image filter. Rollup: LANDED only once every child is. | Both children are LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.1.1 Query fixture and authority rows: vulnerable deployed image to exposed service Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Query fixture and authority rows: vulnerable deployed image to exposed service.** Add the SPARQL fixture over classes only, and any authority row not already seeded by `EG-CQ-XSRC-R002.6`/`R003.2`. Depends on `EG-CQ-XSRC-R005.3`. | The fixture plans to exactly the sources named above and names no connector. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.1.2 Acceptance: exposed services listed with image, vulnerability and sources Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Acceptance: exposed services listed with image, vulnerability and sources.** Recorded-response test asserting a non-empty list of services with the vulnerable image, the vulnerability identifier, and per-item source. And the typed abstention with the code host disconnected. Depends on `EG-CQ-XSRC-R008.1.1`. | Non-empty, provenance-carrying. Abstention case passes. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.2 Which business capabilities depend on a host that is over its temperature or capacity limit? (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Which business capabilities depend on a host that is over its temperature or capacity limit? (rollup)** Sources: systems-manager-mcp (host capacity), the fan and temperature telemetry via lgtm-mcp (metrics), container-manager-mcp (placement), leanix-mcp and archimate-mcp (capabilities), servicenow-mcp CMDB (service to capability). Uses `:BusinessCapability`, `:Service`, `:runsOn`, `:Host`, `:Rack`, `:CoolingUnit`. MISSING: a temperature observation and a capacity limit on `:Host`; `:supports` (`core-foundation-v1.ttl`) is the candidate link from service to capability, to be confirmed. Rollup: LANDED only once every child is. | All children are LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.2.1 Add a host limit-breach term to the ontology Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add a host limit-breach term to the ontology.** `infrastructure-v1.ttl` gains `:temperatureCelsius`, `:temperatureLimitCelsius` and `:capacityUtilization` on `:Host`, with the limit stated as data. MISSING today. No threshold is hard-coded in the query. | The file parses and a unit test lists the terms. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.2.2 SHACL shape: a limit-bearing host carries both reading and limit Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**SHACL shape: a limit-bearing host carries both reading and limit.** `crates/eg-core/ontology/infrastructure-v1.shapes.ttl` (new) refuses a reading with no limit. Depends on `EG-CQ-XSRC-R008.2.1`. | Shape fixtures accept a pair and refuse a reading with no limit. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.2.3 Authority rows and query fixture: capability to service to host over a limit Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Authority rows and query fixture: capability to service to host over a limit.** Authority rows for host readings (lgtm-mcp rank 1, systems-manager-mcp rank 2) and the class-only SPARQL fixture. Confirms whether `:supports` or an `archimate` relationship carries service to capability; records the choice in `plan.md`. Depends on `EG-CQ-XSRC-R008.2.1`. | The fixture plans to the sources named above and names no connector. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.2.4 Acceptance: capabilities at risk listed with the host, reading and limit Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Acceptance: capabilities at risk listed with the host, reading and limit.** Recorded-response test asserting a non-empty list with capability, service, host, reading, limit and per-item source. Abstention when the metrics source is not connected. Depends on `EG-CQ-XSRC-R008.2.3`. | Non-empty, provenance-carrying. Abstention case passes. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.3 Which open incidents or changes touch a service a customer contract depends on? (rollup) Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Which open incidents or changes touch a service a customer contract depends on? (rollup)** Sources: servicenow-mcp (incidents, changes, CMDB), salesforce-mcp and twenty-mcp (customer accounts and contracts), erpnext-mcp (contracts and issues as `:ErpNextIssue`), uptime-mcp (service). Uses `:Incident`, `:ApplicationEvent`, `:affectsEntity`, `:Service`, `:Organization`. MISSING: `:Customer` as a class (archimate-v1.ttl only mentions it in a comment), `:CustomerContract`, `:ChangeRequest`, and the contract-to-service relation. Rollup: LANDED only once every child is. | All children are LANDED. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.3.1 Add `:CustomerContract`, `:ChangeRequest` and `:coversService` Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Add `:CustomerContract`, `:ChangeRequest` and `:coversService`.** `supply_chain-v1.ttl` or a new `commercial-v1.ttl` adds `:CustomerContract` (to `:Organization` customer), `:ChangeRequest` (subclass of `:ApplicationEvent`) and `:coversService` (contract to service). MISSING today. | The file parses and `:ChangeRequest` entails `:ApplicationEvent`. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.3.2 SHACL shape: a contract names a customer and at least one service Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**SHACL shape: a contract names a customer and at least one service.** The shapes file refuses a `:CustomerContract` with no customer or no `:coversService`. Depends on `EG-CQ-XSRC-R008.3.1`. | Shape fixtures accept a valid contract and refuse both faults. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.3.3 Authority rows and query fixture: open incident or change to service to contract Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Authority rows and query fixture: open incident or change to service to contract.** Authority rows for `:Incident` and `:ChangeRequest` (servicenow-mcp rank 1, erpnext-mcp for `:ErpNextIssue` rank 2) and `:CustomerContract` (salesforce-mcp rank 1, twenty-mcp rank 2), plus the class-only SPARQL fixture. Depends on `EG-CQ-XSRC-R008.3.1`. | The fixture plans to the sources named above and names no connector. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-XSRC-R008.3.4 Acceptance: open incidents and changes listed with the service and contract Definition — EG-CQ-XSRC / EG-CQ-XSRC — Cross-source competency: supply chain to servicesCanonical requirement and verification source**Acceptance: open incidents and changes listed with the service and contract.** Recorded-response test asserting a non-empty list with incident or change, service, contract, customer and per-item source. Abstention when the CRM source is not connected. Depends on `EG-CQ-XSRC-R008.3.3`. | Non-empty, provenance-carrying. Abstention case passes. | requirement | EG-CQ-XSRC | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB EG-DATAPLAT-VOCAB — Data-platform vocabulary | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R001 Shared terms and mapping properties (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Shared terms and mapping properties (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R001.1 to .4 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R001.1 Add `dp:DataStore`, `dp:storeFamily`, `dp:inStore`, `dp:viaConnection`, `dp:asOf` to the new vocabulary file. Touches `crates/eg-core/ontology/data_platform-v1.ttl` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:DataStore`, `dp:storeFamily`, `dp:inStore`, `dp:viaConnection`, `dp:asOf` to the new vocabulary file. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. | `crates/eg-core/tests/data_platform_vocab.rs::shared_terms_present` loads the file and asserts the five IRIs. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R001.2 Add `dp:StoreMapping` (subclass of `vg:VirtualMapping`) with `dp:contractKind`, `dp:viaOperation`, `dp:accelerationMode`, `dp:materialisationReason`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:StoreMapping` (subclass of `vg:VirtualMapping`) with `dp:contractKind`, `dp:viaOperation`, `dp:accelerationMode`, `dp:materialisationReason`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::store_mapping_subclass_of_virtual_mapping`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R001.3 Add `document` to the `vg:sourceKind` list comment and `sh:in` of the source-connection shape. Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `document` to the `vg:sourceKind` list comment and `sh:in` of the source-connection shape. Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | `crates/eg-core/tests/data_platform_vocab.rs::document_source_kind_accepted` validates a `document` connection and still rejects `ftp`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R001.4 Register `core:data-platform@1` as a core schema source next to `core:virtual-graph@1`. Touches `crates/eg-core/src/graph/schema_sources.rs`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceRegister `core:data-platform@1` as a core schema source next to `core:virtual-graph@1`. Touches `crates/eg-core/src/graph/schema_sources.rs`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::core_source_registered` resolves the source by name and version. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R002 Relational and document store terms (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Relational and document store terms (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R002.1 to .4 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R002.1 Add `dp:Database`, `dp:Schema`, `dp:Table`, `dp:View`, `dp:Column`, `dp:ForeignKey`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:Database`, `dp:Schema`, `dp:Table`, `dp:View`, `dp:Column`, `dp:ForeignKey`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::relational_classes_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R002.2 Add `dp:inSchema`, `dp:hasColumn`, `dp:referencesTable`, `dp:isPrimaryKey`, `dp:sqlDialect` with domain/range. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R002.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:inSchema`, `dp:hasColumn`, `dp:referencesTable`, `dp:isPrimaryKey`, `dp:sqlDialect` with domain/range. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R002.1`. | `crates/eg-core/tests/data_platform_vocab.rs::relational_properties_domain_range`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R002.3 Add `dp:Collection`, `dp:DocumentField`, `dp:fieldPath`, `dp:fieldType`, `dp:presenceRatio`, `dp:documentCount`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:Collection`, `dp:DocumentField`, `dp:fieldPath`, `dp:fieldType`, `dp:presenceRatio`, `dp:documentCount`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::document_terms_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R002.4 Add a shape: `dp:fieldType` is in the `DocumentFieldType` list (incl. `Mixed`); `dp:presenceRatio` in [0,1]. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R002.3` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a shape: `dp:fieldType` is in the `DocumentFieldType` list (incl. `Mixed`); `dp:presenceRatio` in [0,1]. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R002.3`. | `crates/eg-core/tests/data_platform_vocab.rs::document_field_shape_rejects_ratio_2`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R003 Object and vector store terms (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Object and vector store terms (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R003.1 to .3 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R003.1 Add `dp:Bucket`, `dp:StoredObject`, `dp:objectKey`, `dp:byteSize`, `dp:lastModified`; no content property. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:Bucket`, `dp:StoredObject`, `dp:objectKey`, `dp:byteSize`, `dp:lastModified`; no content property. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::object_terms_present_without_content_property`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R003.2 Add `dp:VectorCollection`, `dp:EmbeddingSpace`, `dp:embeddingModel`, `dp:dimensions`, `dp:distanceMetric`, `dp:usesEmbeddingSpace`, `dp:vectorCount`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:VectorCollection`, `dp:EmbeddingSpace`, `dp:embeddingModel`, `dp:dimensions`, `dp:distanceMetric`, `dp:usesEmbeddingSpace`, `dp:vectorCount`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::vector_terms_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R003.3 Add a shape: `dp:dimensions` positive integer; exactly one embedding space per vector collection. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R003.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a shape: `dp:dimensions` positive integer; exactly one embedding space per vector collection. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R003.2`. | `crates/eg-core/tests/data_platform_vocab.rs::vector_dimension_zero_rejected`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R004 Stream, analytics and ML terms (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Stream, analytics and ML terms (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R004.1 to .4 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R004.1 Add `dp:Topic`, `dp:Partition`, `dp:ConsumerGroup`, `dp:PartitionLag`, `dp:partitionOf`, `dp:subscribesTo`, `dp:lag`, `dp:groupState`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:Topic`, `dp:Partition`, `dp:ConsumerGroup`, `dp:PartitionLag`, `dp:partitionOf`, `dp:subscribesTo`, `dp:lag`, `dp:groupState`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::stream_terms_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R004.2 Add a shape: `dp:lag` integer >= 0 and `dp:asOf` required on `dp:PartitionLag`. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R004.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a shape: `dp:lag` integer >= 0 and `dp:asOf` required on `dp:PartitionLag`. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R004.1`. | `crates/eg-core/tests/data_platform_vocab.rs::negative_lag_rejected`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R004.3 Add `dp:AnalyticsSite`, `dp:BehaviorMetric`, `dp:metricName`, `dp:metricValue`, `dp:windowDays`, `dp:dimensionName`, `dp:dimensionValue`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:AnalyticsSite`, `dp:BehaviorMetric`, `dp:metricName`, `dp:metricValue`, `dp:windowDays`, `dp:dimensionName`, `dp:dimensionValue`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::analytics_terms_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R004.4 Add `dp:Dataset` as a subclass of the existing core `:Dataset`, `dp:Model` as a general trained-model class (not equivalent to the narrower LLM/embedding `:Model`), `dp:TrainingRun`, `dp:EvaluationResult`, `dp:trainedOn`, `dp:producedModel`, `dp:evaluatedOn`, `dp:baselineRun`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:Dataset` as a subclass of the existing core `:Dataset`, `dp:Model` as a general trained-model class (not equivalent to the narrower LLM/embedding `:Model`), `dp:TrainingRun`, `dp:EvaluationResult`, `dp:trainedOn`, `dp:producedModel`, `dp:evaluatedOn`, `dp:baselineRun`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::ml_terms_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R005 Secret metadata only (openbao) (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Secret metadata only (openbao) (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R005.1 to .5 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R005.1 Add `dp:SecretEngine`, `dp:SecretPath`, `dp:AccessPolicy`, `dp:RotationState`, `dp:hasRotationState`, `dp:lastRotatedAt`, `dp:currentVersion`, `dp:pathName`, `dp:PolicyPathGrant`, `dp:grantPolicy`, `dp:grantPath`, `dp:grantsCapability`, `dp:leaseExpiresAt`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd `dp:SecretEngine`, `dp:SecretPath`, `dp:AccessPolicy`, `dp:RotationState`, `dp:hasRotationState`, `dp:lastRotatedAt`, `dp:currentVersion`, `dp:pathName`, `dp:PolicyPathGrant`, `dp:grantPolicy`, `dp:grantPath`, `dp:grantsCapability`, `dp:leaseExpiresAt`. Touches `crates/eg-core/ontology/data_platform-v1.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.1`. | `crates/eg-core/tests/data_platform_vocab.rs::secret_metadata_terms_present`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R005.2 Add closed shapes (`sh:closed true`) for the five secret-metadata classes, including `dp:PolicyPathGrant`. Allow only their applicable metadata properties, including shared store/provenance links, and reject every other property. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R005.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd closed shapes (`sh:closed true`) for the five secret-metadata classes, including `dp:PolicyPathGrant`. Allow only their applicable metadata properties, including shared store/provenance links, and reject every other property. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R005.1`. | `crates/eg-core/tests/data_platform_vocab.rs::secret_path_with_extra_property_rejected`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R005.3 Refusal test row: a `dp:SecretPath` carrying a `value` (and one carrying `token`) triple fails validation, and the vocabulary file contains no property named value, secret, token, password, ciphertext or rules. Touches `crates/eg-core/tests/data_platform_vocab.rs`. Depends on `EG-DATAPLAT-VOCAB-R005.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceRefusal test row: a `dp:SecretPath` carrying a `value` (and one carrying `token`) triple fails validation, and the vocabulary file contains no property named value, secret, token, password, ciphertext or rules. Touches `crates/eg-core/tests/data_platform_vocab.rs`. Depends on `EG-DATAPLAT-VOCAB-R005.2`. | `crates/eg-core/tests/data_platform_vocab.rs::secret_value_refused_and_no_value_property`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R005.4 Add a mapping-validator rule that refuses a `dp:StoreMapping` whose `dp:viaOperation` is `openbao_mcp_kv:kv2_get`, `kv1_get`, `openbao_mcp_logical:read` or `unwrap`. Touches `crates/eg-plan/src/virtual_graph_mapping.rs`. Depends on `EG-DATAPLAT-VOCAB-R005.3` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a mapping-validator rule that refuses a `dp:StoreMapping` whose `dp:viaOperation` is `openbao_mcp_kv:kv2_get`, `kv1_get`, `openbao_mcp_logical:read` or `unwrap`. Touches `crates/eg-plan/src/virtual_graph_mapping.rs`. Depends on `EG-DATAPLAT-VOCAB-R005.3`. | `crates/eg-core/tests/data_platform_vocab.rs::openbao_value_operation_mapping_refused`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R005.5 Add a shape: each `dp:PolicyPathGrant` has exactly one `dp:grantPolicy` (`dp:AccessPolicy`), exactly one `dp:grantPath` (`dp:SecretPath`), and at least one `dp:grantsCapability` string in `read list create update delete sudo deny`. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R005.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a shape: each `dp:PolicyPathGrant` has exactly one `dp:grantPolicy` (`dp:AccessPolicy`), exactly one `dp:grantPath` (`dp:SecretPath`), and at least one `dp:grantsCapability` string in `read list create update delete sudo deny`. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R005.1`. | `crates/eg-core/tests/data_platform_vocab.rs::grants_capability_closed_list` rejects an invalid permission and proves one policy can grant read on path A and deny on path B without mixing the permissions. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006 Per-connector mapping fixtures (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Per-connector mapping fixtures (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R006.1 to .8 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.1 Add the `sql` `dp:StoreMapping` fixture for `sql_schema:tables`, `columns`, `foreign_keys`, `constraints` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/sql.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `sql` `dp:StoreMapping` fixture for `sql_schema:tables`, `columns`, `foreign_keys`, `constraints` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/sql.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_sql_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.2 Add the `documentdb` `dp:StoreMapping` fixture for `documentdb_collections:list_collections`, `documentdb_analysis:aggregate` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/documentdb.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `documentdb` `dp:StoreMapping` fixture for `documentdb_collections:list_collections`, `documentdb_analysis:aggregate` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/documentdb.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_documentdb_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.3 Add the `objectstore` `dp:StoreMapping` fixture for `buckets:list`, `objects:list`, `objects:head` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/objectstore.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `objectstore` `dp:StoreMapping` fixture for `buckets:list`, `objects:list`, `objects:head` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/objectstore.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_objectstore_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.4 Add the `vector` `dp:StoreMapping` fixture for `vector_collection_management:list_collections` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/vector.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `vector` `dp:StoreMapping` fixture for `vector_collection_management:list_collections` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/vector.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_vector_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.5 Add the `kafka` `dp:StoreMapping` fixture for `kafka_groups:lags`, `kafka_partitions:list`, `kafka_topics:list` with `dp:accelerationMode` V; M for sustained lag (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/kafka.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `kafka` `dp:StoreMapping` fixture for `kafka_groups:lags`, `kafka_partitions:list`, `kafka_topics:list` with `dp:accelerationMode` V; M for sustained lag (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/kafka.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_kafka_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.6 Add the `openbao` `dp:StoreMapping` fixture for `openbao_mcp_sys:get_mounts`, `openbao_mcp_logical:list` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/openbao.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `openbao` `dp:StoreMapping` fixture for `openbao_mcp_sys:get_mounts`, `openbao_mcp_logical:list` with `dp:accelerationMode` V (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/openbao.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_openbao_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.7 Add the `clarity` `dp:StoreMapping` fixture for `clarity_insights:get_data_export` with `dp:accelerationMode` V up to 3 days; M beyond (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/clarity.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `clarity` `dp:StoreMapping` fixture for `clarity_insights:get_data_export` with `dp:accelerationMode` V up to 3 days; M beyond (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/clarity.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_clarity_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R006.8 Add the `data-science` `dp:StoreMapping` fixture for `load_dataset`, `dataset_lineage`, `rank_models`, `evaluate_model` with `dp:accelerationMode` V; M for run history (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/data-science.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the `data-science` `dp:StoreMapping` fixture for `load_dataset`, `dataset_lineage`, `rank_models`, `evaluate_model` with `dp:accelerationMode` V; M for run history (reason recorded where M). Touches `crates/eg-core/ontology/fixtures/data_platform/data-science.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mapping_fixture_data_science_validates`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R007 Mode and discovery guards (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Mode and discovery guards (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R007.1 to .4 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R007.1 Add a shape rule: `materialised` without `dp:materialisationReason` is a violation; `virtual` needs none. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a shape rule: `materialised` without `dp:materialisationReason` is a violation; `virtual` needs none. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::materialised_without_reason_rejected`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R007.2 Add a shape rule: `contractKind = mcp-operation` requires `dp:viaOperation`. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a shape rule: `contractKind = mcp-operation` requires `dp:viaOperation`. Touches `crates/eg-core/ontology/data_platform-v1.shapes.ttl`. Depends on `EG-DATAPLAT-VOCAB-R001.2`. | `crates/eg-core/tests/data_platform_vocab.rs::mcp_operation_requires_via_operation`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R007.3 Add a test that no `dp:` term or mapping fixture declares a discovery operation: relational/document entries come from `vg:MetadataContract` only. Touches `crates/eg-core/tests/data_platform_vocab.rs`. Depends on `EG-DATAPLAT-VOCAB-R006.1` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a test that no `dp:` term or mapping fixture declares a discovery operation: relational/document entries come from `vg:MetadataContract` only. Touches `crates/eg-core/tests/data_platform_vocab.rs`. Depends on `EG-DATAPLAT-VOCAB-R006.1`. | `crates/eg-core/tests/data_platform_vocab.rs::no_second_discovery_path`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R007.4 Add a test that every fixture mapping not marked `materialised` has no `AccelerationPolicy` and every `materialised` one cites R038. Touches `crates/eg-core/tests/data_platform_vocab.rs`. Depends on `EG-DATAPLAT-VOCAB-R006.8` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd a test that every fixture mapping not marked `materialised` has no `AccelerationPolicy` and every `materialised` one cites R038. Touches `crates/eg-core/tests/data_platform_vocab.rs`. Depends on `EG-DATAPLAT-VOCAB-R006.8`. | `crates/eg-core/tests/data_platform_vocab.rs::virtual_default_for_all_eight`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R008 Alignment with package-local ontologies (rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Alignment with package-local ontologies (rollup).** Becomes LANDED when every child is LANDED. | Children EG-DATAPLAT-VOCAB-R008.1 to .3 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R008.1 Add an alignment table (package term -> `dp:` term, `rdfs:subClassOf` / `owl:equivalentProperty`) for sql and documentdb. Touches `crates/eg-core/ontology/fixtures/data_platform/alignment_relational.ttl`. Depends on `EG-DATAPLAT-VOCAB-R002.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd an alignment table (package term -> `dp:` term, `rdfs:subClassOf` / `owl:equivalentProperty`) for sql and documentdb. Touches `crates/eg-core/ontology/fixtures/data_platform/alignment_relational.ttl`. Depends on `EG-DATAPLAT-VOCAB-R002.2`. | `crates/eg-core/tests/data_platform_vocab.rs::alignment_relational_resolves`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R008.2 Add the alignment table for objectstore and vector. Touches `crates/eg-core/ontology/fixtures/data_platform/alignment_object_vector.ttl`. Depends on `EG-DATAPLAT-VOCAB-R003.2` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the alignment table for objectstore and vector. Touches `crates/eg-core/ontology/fixtures/data_platform/alignment_object_vector.ttl`. Depends on `EG-DATAPLAT-VOCAB-R003.2`. | `crates/eg-core/tests/data_platform_vocab.rs::alignment_object_vector_resolves`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R008.3 Add the alignment table for kafka, openbao, clarity, data-science. Touches `crates/eg-core/ontology/fixtures/data_platform/alignment_ops_ml.ttl`. Depends on `EG-DATAPLAT-VOCAB-R004.4` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification sourceAdd the alignment table for kafka, openbao, clarity, data-science. Touches `crates/eg-core/ontology/fixtures/data_platform/alignment_ops_ml.ttl`. Depends on `EG-DATAPLAT-VOCAB-R004.4`. | `crates/eg-core/tests/data_platform_vocab.rs::alignment_ops_ml_resolves`. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R009 Connector operations this vocabulary needs (cross-repo rollup) Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Connector operations this vocabulary needs (cross-repo rollup).** Each child is owned by the named repository and is BLOCKED for the dependent competency question until it lands. | Children EG-DATAPLAT-VOCAB-R009.1 to .5 are LANDED. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R009.1 Cross-repo, owner `objectstore-mcp` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Cross-repo, owner `objectstore-mcp`.** Add a last-access (or access-log derived last-read) operation to `objects`. Touches `agent-packages/agents/objectstore-mcp/objectstore_mcp/mcp/mcp_objectstore.py`. | a `head`/`list` result carries `last_accessed` or the operation returns a typed `unsupported` for backends without it. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R009.2 Cross-repo, owner `vector-mcp` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Cross-repo, owner `vector-mcp`.** Add collection stats action (count, dimension, embedding model, distance metric) and get-by-id to `vector_collection_management`. Touches `agent-packages/agents/vector-mcp/vector_mcp/mcp_server.py`. | stats action returns the four fields on a fixture collection. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R009.3 Cross-repo, owner `openbao-mcp` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Cross-repo, owner `openbao-mcp`.** Add a metadata-only operation: KV v2 metadata (path, current version, created/updated time) and policy-to-path capability matrix, no values and no HCL. Touches `agent-packages/agents/openbao-mcp/openbao_mcp/mcp/mcp_secrets.py`. | response schema test asserts no value/data/token key at any depth. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R009.4 Cross-repo, owner `clarity-api` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Cross-repo, owner `clarity-api`.** Name and surface rage-click and dead-click metrics by URL in `get_data_export` results. Touches `agent-packages/agents/clarity-api/clarity_api/mcp/mcp_insights.py`. | fixture export returns the two metrics for the URL dimension. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DATAPLAT-VOCAB-R009.5 Cross-repo, owner `data-science-mcp` Definition — EG-DATAPLAT-VOCAB / EG-DATAPLAT-VOCAB — Data-platform vocabularyCanonical requirement and verification source**Cross-repo, owner `data-science-mcp`.** Add a run-registry read operation returning training runs, their dataset, validation metrics and baseline run. Touches `agent-packages/agents/data-science-mcp/data_science_mcp/mcp_server.py`. | fixture runs list returns metrics and a baseline id. | requirement | EG-DATAPLAT-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE EG-DECISION-ENGINE — Decision engine | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R001 Typed decision ladder with explicit resolution kinds (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed decision ladder with explicit resolution kinds (rollup).** Every decision answer exposes a resolution_kind of constraint, entailment, optimization, statistical, or abstention, selected by applying policy and hard constraints first, then ontology entailment, then bounded exact solving, and falling back to fitted statistics only to rank remaining legal options or abstain. Split (2026-10-09): `.1` the three resolution kinds the production chokepoint actually emits, `.2` the missing Constraint/Entailment production paths. Child `.100` adds a GraphOS pre-surface physical/safety bound decision contract. It does not replace GraphOS's required served surfacing gate. | Unit and integration tests assert the resolution_kind returned for representative constraint, entailment, optimization, statistical, and abstention cases. `.100` requires served bound checks and an explicit GraphOS pre-surface consumer receipt. | requirement | EG-DECISION-ENGINE | SPECIFIED | 52f333ca756e a4804f87c971 d2386535ca97 |
| EG-DECISION-ENGINE-R001.1 `ResolutionKind` is typed with all five variants; the production chokepoint emits Optimization, Statistical, and Abstention Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**`ResolutionKind` is typed with all five variants; the production chokepoint emits Optimization, Statistical, and Abstention.** `ResolutionKind` (crates/eg-types) defines Constraint, Entailment, Optimization, Statistical, and Abstention. The live `Decide`/assemble chokepoint (`crates/eg-compute/src/assemble/conclude.rs`) constructs `ResolutionKind::Optimization` and `ResolutionKind::Abstention`; `stat_decide` constructs `ResolutionKind::Statistical` and `::Abstention`. | `crates/eg-compute/src/assemble/tests/routing.rs` and `crates/eg-types/src/test_support/contract_wave/decision.rs` assert resolution_kind for Optimization/Statistical/Abstention cases. | requirement | EG-DECISION-ENGINE | VERIFIED | b23e8815f42c crates/eg-compute/src/assemble/tests/routing.rs:146 |
| EG-DECISION-ENGINE-R001.2 Remaining scope: production Constraint and Entailment resolution paths Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Remaining scope: production Constraint and Entailment resolution paths.** `conclude.rs` and `stat_decide` never construct `ResolutionKind::Constraint` or `::Entailment` — the only existing `Constraint` construction is `A2ARoutingResolution` (`crates/eg-types/src/decision/rapid_r044.rs`, EG-DECISION-ENGINE-R044.1), which is not wired into the general `Decide`/assemble chokepoint. Add: (a) a constraint-only short-circuit in `conclude.rs` that returns `ResolutionKind::Constraint` when hard constraints alone determine the answer, before solving/statistics run; (b) an ontology-entailment path that returns `ResolutionKind::Entailment` when the answer follows from entailment alone (reusing the existing is_a derivation machinery, EG-DECISION-ENGINE-R003). | Unit and integration tests assert `resolution_kind == Constraint` and `== Entailment` for representative cases through the production `Decide`/assemble chokepoint (not through `A2ARoutingResolution`). | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R002 Evidence class recorded on every decision record Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence class recorded on every decision record.** Each decision record stores an evidence_class: proof, observation or claim. The value comes from its weakest premise. Pack-provided capability annotations therefore appear as claims, not proof. | A negative test confirms a capability derived only from a pack annotation reports evidence_class claim, not proof. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e crates/eg-compute/src/assemble/tests/planted.rs:170 |
| EG-DECISION-ENGINE-R003 Derivation records for entailed answers Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Derivation records for entailed answers.** An is_a derivation record backs an entailment-resolved answer. It names the source and premise class of each edge used. An invented or unsupported ontology edge bars the overall answer from claiming proof-level evidence. | A negative test confirms the engine refuses an answer that depends on a fabricated ontology edge. The engine does not accept it as a proof. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 31c7f9514f41 52f333ca756e crates/eg-types/src/decision/derivation/tests.rs:191 |
| EG-DECISION-ENGINE-R004 Independently verifiable 0-1 integer solver certificate Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Independently verifiable 0-1 integer solver certificate.** The solver in crates/eg-compute/src/solve produces a certificate naming feasibility, objective value, lower bound, optimality gap, solver version, and input digest for every solved assembly, and a separate verifier recomputes and checks that certificate independently of the solve path. | Determinism tests confirm repeated solves are byte-identical and match a committed golden certificate digest, and an exhaustive-search test confirms the solver's optimum matches brute-force search on small models. | requirement | EG-DECISION-ENGINE | VERIFIED | 31c7f9514f41 52f333ca756e b43f33569dd4 crates/eg-compute/tests/solve/determinism.rs:49 crates/eg-compute/tests/solve/determinism.rs:78 crates/eg-compute/tests/solve/exhaustive.rs:40 |
| EG-DECISION-ENGINE-R005 Conformal and risk-controlled statistical guarantees Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Conformal and risk-controlled statistical guarantees.** Statistical heads apply acceptability-set conformal prediction, selective risk control (Learn-then-Test), and adaptive conformal inference to bound miscoverage under drift, abstaining rather than returning an uncalibrated answer when these guarantees cannot be met. | Numeric unit tests fit and evaluate each guarantee and assert the resulting coverage and abstention behavior. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 31c7f9514f41 52f333ca756e crates/eg-numeric/tests/stat_kernels/conformal.rs:210 crates/eg-numeric/tests/stat_kernels/conformal.rs:361 crates/eg-numeric/tests/stat_kernels/risk.rs:246 |
| EG-DECISION-ENGINE-R006 Off-policy evaluation gated on effective sample size Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Off-policy evaluation gated on effective sample size.** Decision evaluation records exact propensities and computes off-policy estimates. It uses clipped or SWITCH importance sampling and doubly robust estimators. It reports effective sample size and refuses to promote a fitted head when that size falls below the configured minimum. | A unit test asserts that off-policy evaluation reports support and effective sample size. It also verifies that the engine blocks promotion below the minimum threshold. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 31c7f9514f41 52f333ca756e crates/eg-numeric/tests/stat_kernels/ope.rs:159 crates/eg-numeric/tests/stat_kernels/ope.rs:204 |
| EG-DECISION-ENGINE-R007 Deterministic cross-target replay of committed decision records Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Deterministic cross-target replay of committed decision records.** A committed decision record replays to byte-identical quantized fixed-point digests using a pinned software floating-point implementation, so the same record verifies identically across the full set of supported target platforms. | A golden-vector replay test confirms identical digests on the supported targets, with the full target matrix exercised at release-qualification time. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e e0587cbf4693 crates/eg-compute/src/assemble/tests/golden.rs:55 |
| EG-DECISION-ENGINE-R008 Why-chosen and why-not explanations for solved assemblies Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Why-chosen and why-not explanations for solved assemblies.** Every solved assembly can explain why it chose an option. For each visible excluded option, it can explain why not through a bounded re-solve for that option rather than an unbounded search. | Integration tests confirm why-not routing returns a correct, bounded explanation for excluded candidates. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e e0587cbf4693 crates/eg-compute/src/assemble/tests/template.rs:117 |
| EG-DECISION-ENGINE-R009 Learned ranking stays monotone with respect to safety Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Learned ranking stays monotone with respect to safety.** A fitted statistical head may only narrow the set of legal options or cause abstention; it can never widen the legal set or itself authorize an option that policy and hard constraints have not already permitted. | A negative test confirms that a learned head cannot override or widen the constraint-derived legal set, and that execution enforces this invariant independently of the head. | requirement | EG-DECISION-ENGINE | VERIFIED | 4952a2edced4 52f333ca756e crates/eg-numeric/tests/decision/scorer.rs:140 |
| EG-DECISION-ENGINE-R010 Typed abstention reason for unmet capability Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed abstention reason for unmet capability.** When no legal assembly satisfies the requested capabilities, the system returns a typed AbstainReason value naming the specific missing capability rather than a generic failure. | Unit tests assert that an unsatisfiable capability request returns an AbstainReason identifying the missing capability. | requirement | EG-DECISION-ENGINE | VERIFIED | 52f333ca756e a4804f87c971 e0587cbf4693 crates/eg-compute/src/assemble/tests/routing.rs:147 |
| EG-DECISION-ENGINE-R011 Work-budgeted search without an arbitrary result cap Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Work-budgeted search without an arbitrary result cap.** The solver in crates/eg-compute/src/solve/search bounds search by a deterministic node budget rather than an arbitrary cap on the number of candidate results, reporting an unresolved or certified-gap result when the budget is exhausted instead of silently truncating the option set. | Adversarial tests confirm that exhausting the budget above the accepted gap yields an unresolved result, that exhausting it within the accepted gap yields a certified gap, and that a parity case exhausts the budget without an incumbent. | requirement | EG-DECISION-ENGINE | VERIFIED | 52f333ca756e b43f33569dd4 e0587cbf4693 crates/eg-compute/tests/solve/adversarial.rs:33 crates/eg-compute/tests/solve/adversarial.rs:57 crates/eg-compute/tests/solve/adversarial.rs:8 |
| EG-DECISION-ENGINE-R012 Shared slate crediting across multiple questions Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Shared slate crediting across multiple questions.** When multiple questions are answered against the same assembly template, the system credits outcomes at the slot level across the shared template, with results aggregated consistently across the related questions. | Template-level unit tests assert slot-level crediting is applied correctly across a shared assembly template. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e d2386535ca97 src/server/handlers/decide/stat_tests/attribution_tests.rs:128 |
| EG-DECISION-ENGINE-R012.1 Slot-level crediting across questions sharing an assembly template Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Slot-level crediting across questions sharing an assembly template.** When multiple questions are answered against the same assembly template, outcomes must be credited at the slot level across the shared template; today only whole- or sub-slate crediting exists. | Test: `crates/eg-types/src/decision/rapid_r012.rs::tests::credits_outcomes_at_the_slot_level_across_a_shared_assembly_template`. | requirement | EG-DECISION-ENGINE | VERIFIED | 81e90c5f3bde src/server/handlers/decide/stat_tests/attribution_tests.rs:129 |
| EG-DECISION-ENGINE-R013 Tenant-visibility filtering before feature computation Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Tenant-visibility filtering before feature computation.** Decision candidates are filtered by tenant and row-level visibility before any feature is computed or counted, and no report or aggregate may expose a candidate, feature value, or statistic derived from a source outside the requesting tenant's visibility. | A negative test confirms that a candidate from another tenant is excluded from decision results and aggregates. | requirement | EG-DECISION-ENGINE | VERIFIED | 14743fbffa3d 2a0d6eae0918 52f333ca756e src/server/persistence/agent_component.rs:1101 |
| EG-DECISION-ENGINE-R014 Composition solved as bounded constraint optimization Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Composition solved as bounded constraint optimization.** Agent or component composition is resolved by lowering covering, implication, exactly-one, knapsack, feature-compatibility, and cardinality requirements into a bounded 0-1 integer program and solving it exactly, rather than by a single unverified model-generated choice. | Exhaustive-search and model-validation tests confirm the lowered constraint model produces correct, verifiable compositions across representative cases. | requirement | EG-DECISION-ENGINE | SPECIFIED | 14743fbffa3d 52f333ca756e b43f33569dd4 crates/eg-compute/tests/solve/exhaustive.rs:41 crates/eg-compute/tests/solve/model_validation.rs:223 |
| EG-DECISION-ENGINE-R015 No generative model weights inside the decision engine (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**No generative model weights inside the decision engine (rollup).** The decision engine contains no large language model weights and performs no free-text generation. Its statistical heads are small fitted models used only to rank legal options or abstain. Split into child requirements by code root. `.1` is a typed, closed StatisticalHeadKind refusing a non-fitted-head name. `.2` wires the ladder's head registry through the typed head-kind parse. | Architecture and dependency review confirms no generative model weights or text-generation calls are present in the decision engine's code paths. | requirement | EG-DECISION-ENGINE | VERIFIED | 40ea81e3e512 52f333ca756e crates/eg-numeric/tests/decision/head_kinds.rs:75 |
| EG-DECISION-ENGINE-R015.1 Typed, closed StatisticalHeadKind refusing a non-fitted-head name Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed, closed StatisticalHeadKind refusing a non-fitted-head name.** Add the typed, closed `StatisticalHeadKind::parse` (`crates/eg-types/src/decision/rapid_r015.rs`), refusing any head-kind name outside the two fitted heads the ladder actually uses -- in particular a generative-model label. | Test: `crates/eg-types/src/decision/rapid_r015.rs::tests::refuses_a_generative_model_name`. | requirement | EG-DECISION-ENGINE | VERIFIED | 0fac721690e2 crates/eg-types/src/decision/rapid_r015.rs:100 |
| EG-DECISION-ENGINE-R015.2 Wire the ladder's head registry through the typed head-kind parse Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wire the ladder's head registry through the typed head-kind parse.** Remaining scope from the split (2026-10-09): wiring the ladder's head registry to construct heads only through this parse. Split into grandchild requirements (2026-10-09). `.1` a total, reversible mapping between the closed `StatisticalHeadKind` and the ladder's production `HeadKind` registry, `.2` routing `DecisionFitRequest` construction through that mapping at admission. | Architecture and dependency review confirms no generative model weights or text-generation calls are present in the decision engine's code paths. | requirement | EG-DECISION-ENGINE | VERIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R015.2.1 Total, reversible mapping between StatisticalHeadKind and the production HeadKind registry Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Total, reversible mapping between StatisticalHeadKind and the production HeadKind registry.** Add `StatisticalHeadKind::to_head_kind` and `StatisticalHeadKind::from_head_kind` (`crates/eg-types/src/decision/rapid_r015.rs`), connecting the closed, parse-validated name set to the ladder's actual `HeadKind` enum, with the resident-scorer `OptionAttention` variant correctly outside the closed set rather than silently coerced into it. | Test: `crates/eg-types/src/decision/rapid_r015.rs::tests::wires_the_production_head_kind_through_the_closed_registry`. | requirement | EG-DECISION-ENGINE | VERIFIED | 3c6b457009e4 crates/eg-types/src/decision/rapid_r015.rs:117 |
| EG-DECISION-ENGINE-R015.2.2 Route DecisionFitRequest construction through the typed mapping Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Route DecisionFitRequest construction through the typed mapping.** Remaining scope: validate `DecisionFitRequest.head_kind` through `StatisticalHeadKind::from_head_kind` at admission (`crates/eg-types/src/decision/jobs.rs`), deciding how an `OptionAttention` fit request is admitted given it is outside the `.1`/`.2.1` closed set. | Architecture and dependency review confirms no generative model weights or text-generation calls are present in the decision engine's code paths. | requirement | EG-DECISION-ENGINE | VERIFIED | 2763396269d0 crates/eg-types/src/decision/jobs.rs:615 crates/eg-types/src/decision/jobs.rs:635 |
| EG-DECISION-ENGINE-R016 Training restricted to independently evaluated outcomes Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Training restricted to independently evaluated outcomes.** Calibration and training data include only outcomes recorded with exact propensities by approved commit principals; a self-reported or language-model-resolved outcome is excluded from the calibration or training set. | Unit tests confirm that every planted defective label is refused by name and that a language-model-resolved abstention never enters the calibration set. | requirement | EG-DECISION-ENGINE | VERIFIED | 14743fbffa3d 2a0d6eae0918 52f333ca756e crates/eg-numeric/tests/decision/admission.rs:32 crates/eg-numeric/tests/decision/admission.rs:87 |
| EG-DECISION-ENGINE-R017 Single write authority per durable decision state kind Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Single write authority per durable decision state kind.** Each durable decision-state kind has exactly one write authority responsible for committing it. Examples include an assembled agent graph, a graph mutation batch, or a published component with its receipt. No second code path may independently mutate that state. | Integration tests confirm only the designated path commits each state kind. They also confirm bypass attempts fail. | requirement | EG-DECISION-ENGINE | VERIFIED | 28a27439cec5 52f333ca756e 9079ca7b0ddd crates/eg-types/src/agent_component.rs:2278 |
| EG-DECISION-ENGINE-R018 Unknown facts never default to zero in the solver Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Unknown facts never default to zero in the solver.** When a cost, latency, or capability fact needed by the solver objective is unknown, the solver treats it as unknown rather than silently substituting zero or a true or false default, and surfaces the gap instead of producing a misleadingly optimal result. | A unit test confirms that an unknown required fact prevents a false-confidence solve rather than being silently defaulted. | requirement | EG-DECISION-ENGINE | VERIFIED | 52f333ca756e c0edc96d1e10 crates/eg-compute/src/assemble/tests/planted.rs:43 crates/eg-compute/src/assemble/tests/topology.rs:143 |
| EG-DECISION-ENGINE-R019 Decision commit re-derives and verifies before writing Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision commit re-derives and verifies before writing.** Committing a decision result re-derives the result, verifies its certificate, checks every pinned component revision, and compares the candidate-universe catalog digest with a compare-and-set, all within one transaction, so a stale catalog or fabricated input fails closed instead of being committed. | Integration tests confirm that a stale catalog or a fabricated input is rejected at commit time while a byte-identical retry commits idempotently. | requirement | EG-DECISION-ENGINE | SPECIFIED | 14743fbffa3d 52f333ca756e d6baf6dfc8c9 src/server/persistence/decision_record/tests.rs:167 src/server/persistence/decision_record/tests.rs:196 src/server/persistence/decision_record/tests.rs:222 |
| EG-DECISION-ENGINE-R020 Bounded, keyed exploration excluded from sensitive questions Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Bounded, keyed exploration excluded from sensitive questions.** Exploratory ranking requires an explicit budget and an unpredictable HMAC-keyed seed, and is unavailable for security, policy, write-back, and irreversible-action questions regardless of the requested budget. | Unit tests verify the keyed seed against a published HMAC test vector and confirm that exploration on a security question is refused by the served path. | requirement | EG-DECISION-ENGINE | SPECIFIED | 2a0d6eae0918 52f333ca756e src/server/handlers/decide/stat_tests.rs:868 |
| EG-DECISION-ENGINE-R021 Versioned feature schema for decision candidates Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Versioned feature schema for decision candidates.** Decision ranking computes a versioned feature set over caller-visible candidates, including vector similarity, candidate-local BM25, entailed coverage, provenance quality, belief confidence, cost and latency, freshness, and outcome statistics, so a feature schema change can be tracked and replayed. | Unit and client tests assert the versioned feature vector is computed correctly for representative candidates. | requirement | EG-DECISION-ENGINE | VERIFIED | 14743fbffa3d 2a0d6eae0918 52f333ca756e crates/eg-numeric/tests/decision/features.rs:63 |
| EG-DECISION-ENGINE-R022 Separation of full-label and bandit-label training regimes Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Separation of full-label and bandit-label training regimes.** Training data distinguishes gold-labelled questions, which provide a full label, from executed-option-only outcomes, which provide a bandit label, and each regime is admitted into fitting only through its own path. | Unit tests in the admission path confirm gold-labelled and bandit-labelled data are routed and validated separately. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e a4e9027b789e crates/eg-numeric/tests/decision/admission.rs:33 crates/eg-numeric/tests/decision/admission.rs:88 |
| EG-DECISION-ENGINE-R023 Hierarchical pooling of outcome statistics with a minimum-sample gate Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hierarchical pooling of outcome statistics with a minimum-sample gate.** Pool outcome statistics hierarchically by kind, capability class and option using a Beta-Binomial model. A pool below its configured sample minimum cannot support fitted-head promotion. | A unit test confirms insufficient pooled support for an option blocks promotion. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e a4e9027b789e crates/eg-numeric/tests/decision/fit_eval.rs:204 |
| EG-DECISION-ENGINE-R024 Multi-class and binary calibration utilities Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Multi-class and binary calibration utilities.** Decision confidence is calibrated using temperature, vector, or Dirichlet scaling for multi-class outputs, and isotonic calibration only for the binary entity-resolution case, with the calibration method recorded on the resulting receipt. | A unit test confirms pooled calibration output is recorded on the fit receipt. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e a4e9027b789e crates/eg-numeric/tests/decision/fit_eval.rs:236 |
| EG-DECISION-ENGINE-R025 Drift detection via out-of-distribution checks and adaptive conformal bounds Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Drift detection via out-of-distribution checks and adaptive conformal bounds.** The decision engine detects drift by checking incoming features for out-of-distribution values and by bounding miscoverage with adaptive conformal inference, abstaining rather than ranking when drift is detected. | A unit test confirms that an out-of-distribution feature causes the head to abstain. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e a4e9027b789e crates/eg-numeric/tests/decision/ladder.rs:302 |
| EG-DECISION-ENGINE-R026 Inverse-probability-weighted audit sampling of acted decisions Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Inverse-probability-weighted audit sampling of acted decisions.** A sample of acted decisions is selected for audit using inverse-probability weighting at a fixed five-percent rate, and every audited decision record carries an audit flag usable by downstream calibration. | Unit tests assert that evaluated records carry the audit flag and that calibration correctly applies the inverse-probability weighting. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e a4e9027b789e crates/eg-numeric/tests/decision/ladder.rs:326 |
| EG-DECISION-ENGINE-R026.1 Calibration-weighting half of audit sampling is tested in-crate Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Calibration-weighting half of audit sampling is tested in-crate.** The audit-flag sampling half of inverse-probability-weighted audit sampling has a bound test, but the calibration-weighting half (`pub(crate) audit_weight`/targets) has no in-crate `#[cfg(test)]` test confirming calibration correctly applies the inverse-probability weight. | Test: `crates/eg-numeric/src/decision/audit.rs::tests::calibration_applies_the_pub_crate_inverse_probability_audit_weight`. | requirement | EG-DECISION-ENGINE | VERIFIED | 81ea985399b0 crates/eg-numeric/src/decision/targets.rs:82 |
| EG-DECISION-ENGINE-R027 WeightedFeatures and ListwiseLogistic fitted decision heads Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**WeightedFeatures and ListwiseLogistic fitted decision heads.** The decision engine supports a WeightedFeatures head, which is advisory only and never calibrated, and a ListwiseLogistic head, which is a deterministic, bit-for-bit reproducible optimizer; a further Kolmogorov-Arnold listwise head is not yet included. | Unit tests confirm a fit is bit-for-bit reproducible and certifies an act threshold, and that the WeightedFeatures head remains advisory and is never calibrated. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e crates/eg-numeric/tests/decision/fit_eval.rs:53 crates/eg-numeric/tests/decision/fit_eval.rs:79 |
| EG-DECISION-ENGINE-R028 Natural-language template routing without a generative model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Natural-language template routing without a generative model.** A natural-language decision request is routed to a matching NlTemplate using candidate-local BM25, embedding, or ontology-label similarity rather than a generative model call. | Unit tests cover natural-language template matching; end-to-end served routing is proven when the serving path is exercised. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 52f333ca756e 9ea2c1ac6a24 crates/eg-numeric/src/decision/bm25.rs:92 src/server/handlers/decide/stat_tests/nl_tests.rs:59 |
| EG-DECISION-ENGINE-R029 Decision-based retrieval-plan selection Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision-based retrieval-plan selection.** The decision ladder selects among retrieval plans, such as LeanRAG, reciprocal-rank fusion, or direct SPARQL querying, for a given request using the same typed decision mechanism as other question families. | An integration test asserts the correct retrieval plan is selected for representative request shapes. | requirement | EG-DECISION-ENGINE | SPECIFIED | 52f333ca756e 5951a4a6272e 9f300857d769 b2d01ed93bd8 crates/eg-types/src/decision/statistical/retrieval_plan.rs:132 |
| EG-DECISION-ENGINE-R030 Decision-based ingestion path routing Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision-based ingestion path routing.** Ingestion requests are routed to a fast, medium, or slow processing path through the same typed decision mechanism used for other question families, rather than a hard-coded rule. | An integration test confirms ingestion routing selects the expected path for representative inputs. | requirement | EG-DECISION-ENGINE | VERIFIED | 15f6e8dff987 28ca65b7e45b 2b5963a7d670 52f333ca756e 5951a4a6272e crates/eg-types/src/decision/statistical/ingestion_lane.rs:90 |
| EG-DECISION-ENGINE-R031 Expected-value scheduling for enrichment work Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Expected-value scheduling for enrichment work.** Enrichment scheduling selects candidate work by comparing expected value against cost through the typed decision mechanism, rather than a fixed priority order. | An integration test confirms enrichment scheduling selects the higher expected-value option under representative cost scenarios. | requirement | EG-DECISION-ENGINE | SPECIFIED | 7db76f6142e3 aa3e35c45f82 b2d01ed93bd8 b6eb6a62d9dc fa780d3e101a crates/eg-types/src/decision/statistical/enrichment_schedule.rs:126 |
| EG-DECISION-ENGINE-R032 Entity-resolution candidates with conformal guarantees (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Entity-resolution candidates with conformal guarantees (rollup).** Entity-resolution (owl:sameAs) candidate decisions use the binary entity-matching head with isotonic calibration and report a conformal guarantee validated against a gold label set, abstaining when that guarantee cannot be met. Split (2026-10-09): `.1` the declared-but-unused QuestionKind, `.2` the full ResolveEntity decision path. | A unit test against a gold-labelled set confirms the reported conformal guarantee holds and that insufficient confidence results in abstention. | requirement | EG-DECISION-ENGINE | SPECIFIED | a1bb9fb9503e d2386535ca97 fa780d3e101a |
| EG-DECISION-ENGINE-R032.1 `QuestionKind::ResolveEntity` is declared Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**`QuestionKind::ResolveEntity` is declared.** `QuestionKind::ResolveEntity` is declared in `crates/eg-types/src/decision/statistical.rs`. No code constructs, matches, or tests it anywhere in the repo. There is no entity-matching head, isotonic calibration, or conformal-guarantee code for this kind. | Compiles as part of the `QuestionKind` enum. No test exists (none is claimed). | requirement | EG-DECISION-ENGINE | VERIFIED | b23e8815f42c crates/eg-types/src/decision/statistical.rs:360 |
| EG-DECISION-ENGINE-R032.2 Remaining scope: ResolveEntity decision path with conformal guarantee Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Remaining scope: ResolveEntity decision path with conformal guarantee.** Build the full path: a binary entity-matching head trained/scored over owl:sameAs candidate pairs, isotonic calibration of its score, a conformal guarantee computed against a gold-labelled set, and abstention when the guarantee cannot be met — dispatched through `Decide` on `QuestionKind::ResolveEntity`. | A unit test against a gold-labelled set confirms the reported conformal guarantee holds and that insufficient confidence results in abstention, exercised through `QuestionKind::ResolveEntity` end to end. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R033 Decision-based schema mapping for SQL sources (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision-based schema mapping for SQL sources (rollup).** Mapping a source column to an ontology property for SQL ingestion and pack content is resolved through the typed decision mechanism, producing a proposed mapping with its evidence class rather than an unverified direct assignment. Split (2026-10-09): `.1` the declared-but-unused QuestionKind, `.2` the full SchemaMapping decision path. | An integration test confirms a representative column set maps to the expected ontology properties with correct evidence classification. | requirement | EG-DECISION-ENGINE | SPECIFIED | a1bb9fb9503e d2386535ca97 fa780d3e101a |
| EG-DECISION-ENGINE-R033.1 `QuestionKind::SchemaMapping` is declared Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**`QuestionKind::SchemaMapping` is declared.** `QuestionKind::SchemaMapping` is declared in `crates/eg-types/src/decision/statistical.rs`. No code constructs, matches, or tests it anywhere in the repo; there is no SQL-column-to-ontology-property decision path. | Compiles as part of the `QuestionKind` enum; no test exists (none is claimed). | requirement | EG-DECISION-ENGINE | VERIFIED | b23e8815f42c crates/eg-types/src/decision/statistical.rs:367 |
| EG-DECISION-ENGINE-R033.2 Remaining scope: SchemaMapping decision path for SQL ingestion Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Remaining scope: SchemaMapping decision path for SQL ingestion.** Build the full path: given a SQL source column (name, type, sample content) and the ontology's candidate properties, resolve the mapping through `Decide` on `QuestionKind::SchemaMapping`, producing a proposed mapping and its evidence class (proof/observation/claim) rather than an unverified direct assignment, for both SQL ingestion and pack content. | An integration test confirms a representative column set maps to the expected ontology properties with correct evidence classification, exercised through `QuestionKind::SchemaMapping` end to end. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R034 Proposal-only contradiction-handling suggestions Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Proposal-only contradiction-handling suggestions.** When the truth-maintenance system detects a contradiction, the decision engine may propose a resolution but never performs an automatic retraction. Any retraction requires a separate, explicit authorization step. | A negative test confirms that a detected contradiction produces a proposal only and that no automatic retraction occurs. | requirement | EG-DECISION-ENGINE | VERIFIED | 94da44835d59 9ea2c1ac6a24 fa780d3e101a crates/eg-epistemic/src/query.rs:661 |
| EG-DECISION-ENGINE-R035 Decision-based routing for execution configuration Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision-based routing for execution configuration.** This repository's graph.decide() method accepts requests to select among candidate models, prompts, skills, tools, harness modes, account modes, or sandbox configurations and returns a ranked or constrained choice with its evidence class; the consuming execution environment applies that choice. | A contract test confirms graph.decide() returns a valid typed choice and evidence class for each supported routing category. | requirement | EG-DECISION-ENGINE | VERIFIED | 7db76f6142e3 fa780d3e101a src/server/handlers/decide/stat_tests/consumer_tests.rs:421 |
| EG-DECISION-ENGINE-R036 graph.assemble() as the authority for agent composition Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**graph.assemble() as the authority for agent composition.** graph.assemble() is the sole method for composing an agent graph from typed tasks and capabilities, replacing a model-generated composition choice with a verifiable constraint-solved result. | An integration test confirms graph.assemble() produces a legal, certificate-backed agent graph for representative composition requests. | requirement | EG-DECISION-ENGINE | SPECIFIED | 9ea2c1ac6a24 d6baf6dfc8c9 fa780d3e101a crates/eg-compute/src/assemble/tests/golden.rs:56 |
| EG-DECISION-ENGINE-R037 Escalated abstentions re-enter as claims Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Escalated abstentions re-enter as claims.** When a typed abstention is escalated to a language model or a human reviewer and a resolution is produced, that resolution re-enters the decision engine only as a claim-class input, never as a proof or observation. | A negative test confirms a resolution produced by escalation is recorded with evidence_class claim. | requirement | EG-DECISION-ENGINE | VERIFIED | 2ae20b268539 8475bc4d611a fa780d3e101a src/server/handlers/decide/stat_tests/consumer_tests.rs:225 |
| EG-DECISION-ENGINE-R038 Advisory pre-tool risk scoring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Advisory pre-tool risk scoring.** Before a tool invocation, the decision engine can return an advisory risk score for the candidate action. The score informs but never itself authorizes or blocks execution. | A unit test confirms the risk score is returned as advisory and does not gate execution on its own. | requirement | EG-DECISION-ENGINE | VERIFIED | 1570bfef96aa 4034a361535b fa780d3e101a src/server/handlers/decide/stat_tests/pretool_risk_tests.rs:26 |
| EG-DECISION-ENGINE-R038.1 Typed ToolInvocation / pre-tool risk concept exists Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed ToolInvocation / pre-tool risk concept exists.** No risk/pretool/ToolInvocation concept exists in the engine. Add the typed representation a caller can score before dispatching a tool invocation, advisory only. | Test: `crates/eg-types/src/decision/rapid_r038.rs::tests::returns_an_advisory_risk_score_for_a_candidate_tool_invocation_without_gating_execution`. | requirement | EG-DECISION-ENGINE | VERIFIED | 81e90c5f3bde src/server/handlers/decide/stat_tests/pretool_risk_tests.rs:27 |
| EG-DECISION-ENGINE-R039 Cost-aware routing using accounting data (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Cost-aware routing using accounting data (rollup).** Routing decisions incorporate cost information sourced from the usage and cost accounting subsystem, preferring lower-cost legal options when they satisfy the same constraints. Split (2026-10-09): `.1` the missing-data abstention path that landed, `.2` the missing cost-preference ranking. | An integration test confirms a routing decision prefers the lower-cost legal option when accounting data distinguishes candidates. | requirement | EG-DECISION-ENGINE | SPECIFIED | 0cbda8f2af96 d2386535ca97 fa780d3e101a |
| EG-DECISION-ENGINE-R039.1 Routing abstains naming the fact when L5 accounting data is missing Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Routing abstains naming the fact when L5 accounting data is missing.** `cost_routing_without_l5_accounting_abstains_naming_the_fact` (EH-039, `src/server/handlers/decide/stat_tests/consumer_tests.rs`) confirms that when there is no L5 cost-accounting data for the candidates, the routing decision abstains and names the missing-data fact rather than guessing. | Test: `src/server/handlers/decide/stat_tests/consumer_tests.rs::cost_routing_without_l5_accounting_abstains_naming_the_fact`. | requirement | EG-DECISION-ENGINE | VERIFIED | a742d4439964 src/server/handlers/decide/stat_tests/consumer_tests.rs:288 |
| EG-DECISION-ENGINE-R039.2 Remaining scope: cost-preference ranking when accounting data is present Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Remaining scope: cost-preference ranking when accounting data is present.** No production code path ranks or prefers options by a cost-like feature when L5 accounting data is present — this needs a published scoring head over observed/accounted cost (consuming `ObservedCost`, see AU-CONTROL-R006) feeding the deterministic ladder, since the exploration policy currently samples uniformly over legal options rather than preferring the cheaper one. | An integration test confirms a routing decision prefers the lower-cost legal option when accounting data distinguishes candidates (the original R039 acceptance test, now bound to this child). | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R040 Guarded promotion of fitted heads via publish receipt Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Guarded promotion of fitted heads via publish receipt.** A fitted decision head is promoted to active use only through the component-publish path gated on a matching DecisionEval receipt. A receipt that does not match the evaluated digest causes promotion to be refused. | Unit tests confirm a mismatched receipt is refused with an evaluation-receipt-mismatch error while a matching receipt allows publish. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 8475bc4d611a fa780d3e101a src/server/handlers/decide/stat_tests/scorer_tests.rs:80 |
| EG-DECISION-ENGINE-R041 Connector event triage through Decide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Connector event triage through Decide.** EG classifies inbound connector events by routing them through the decision ladder in evaluate-only mode, returning a proposal and its evidence class without taking any action on the connector's behalf. A sampled subset of these evaluations is logged for audit. | An integration test submits synthetic connector events, calls the evaluate-only triage path, and asserts no side effect occurs while a sampled fraction of evaluations is recorded. | requirement | EG-DECISION-ENGINE | VERIFIED | d2386535ca97 f420578b85d2 fa780d3e101a src/server/handlers/decide/stat_tests/connector_triage_tests.rs:25 |
| EG-DECISION-ENGINE-R041.1 Connector-event evaluate-only triage path with sampled audit logging Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Connector-event evaluate-only triage path with sampled audit logging.** No connector-event evaluate-only triage path or sampled-audit mechanism exists. Inbound connector events must be classified via the decision ladder in evaluate-only mode with a sampled fraction logged for audit. | Test: `src/server/handlers/decide/stat_tests/consumer_tests.rs::connector_event_triage_is_evaluate_only_and_logs_a_sampled_fraction_for_audit`. | requirement | EG-DECISION-ENGINE | VERIFIED | a742d4439964 src/server/handlers/decide/stat_tests/connector_triage_tests.rs:24 |
| EG-DECISION-ENGINE-R042 Connector tool-choice advisory via Decide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Connector tool-choice advisory via Decide.** Decide evaluates which internal tool a connector should use for a given task and returns a proposal with evidence only; the connector's own deterministic authorization path, not Decide, governs whether any resulting write-back actually occurs. | A test exercises tool-choice evaluation for a connector task and confirms the proposal alone cannot trigger a write-back without passing the separate deterministic authorization check. | requirement | EG-DECISION-ENGINE | SPECIFIED | 67d04f5e9087 e8eaaf916a40 fa780d3e101a src/server/handlers/decide/stat_tests/connector_toolchoice_tests.rs:24 |
| EG-DECISION-ENGINE-R043 Write-back proposals routed through Decide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Write-back proposals routed through Decide.** EG's decision ladder can produce a write-back proposal with supporting evidence for a connector action. The proposal never authorizes the write itself. Any exploration or statistical head that generates the proposal stays outside the authorization step. That deterministic step must separately approve the write. | A negative test asserts a Decide-sourced write-back proposal has no external effect. The effect occurs only after the connector's own deterministic authorization check passes. | requirement | EG-DECISION-ENGINE | VERIFIED | 21f73899e76c e8eaaf916a40 fa780d3e101a src/server/handlers/decide/stat_tests/connector_writeback_tests.rs:25 |
| EG-DECISION-ENGINE-R044 A2A task routing through the decision ladder (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**A2A task routing through the decision ladder (rollup).** Inbound A2A tasks are routed to an existing or assembled agent graph. Routing applies the same typed decision ladder used for other question families. It returns a routing resolution with its resolution kind and evidence class rather than an unexplained match. Split into child requirements by code root. `.1` typed A2ARoutingResolution refusal over ResolutionKind/EvidenceClass, `.2` wire A2A task submission through the typed routing resolution. | An integration test submits inbound A2A tasks and asserts each is routed to a graph through a recorded decision with a resolution kind and evidence class. | requirement | EG-DECISION-ENGINE | SPECIFIED | fa780d3e101a |
| EG-DECISION-ENGINE-R044.1 Typed A2ARoutingResolution refusal over ResolutionKind/EvidenceClass Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed A2ARoutingResolution refusal over ResolutionKind/EvidenceClass.** Add the typed `A2ARoutingResolution::new` refusal (`crates/eg-types/src/decision/rapid_r044.rs`) over the existing `ResolutionKind`/`EvidenceClass`, refusing an empty graph id and an abstention claiming proof-grade evidence. | Test: `crates/eg-types/src/decision/rapid_r044.rs::tests::refuses_an_abstention_claiming_proof_grade_evidence`. | requirement | EG-DECISION-ENGINE | VERIFIED | 0fac721690e2 crates/eg-types/src/decision/rapid_r044.rs:97 |
| EG-DECISION-ENGINE-R044.2 Wire A2A task submission through the typed routing resolution Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wire A2A task submission through the typed routing resolution.** Remaining scope from the split (2026-10-09): the A2A task-submission entry point that constructs one of these per inbound task and an integration test over the served path. Split into grandchild requirements (2026-10-09): `.1` a typed registry-lookup routing function over known graph ids, `.2` the served A2A task-submission entry point calling it with an integration test. | An integration test submits inbound A2A tasks and asserts each is routed to a graph through a recorded decision with a resolution kind and evidence class. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R044.2.1 Typed registry-lookup routing function over known graph ids Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed registry-lookup routing function over known graph ids.** Add `A2ARoutingResolution::route` (`crates/eg-types/src/decision/rapid_r044.rs`): given the known graph-id registry and a requested id, resolves to the matching graph as a Constraint/Observation resolution or abstains as Claim-grade evidence, always through `::new`. | Test: `crates/eg-types/src/decision/rapid_r044.rs::tests::routes_to_a_known_graph_and_abstains_otherwise`. | requirement | EG-DECISION-ENGINE | VERIFIED | 3c6b457009e4 crates/eg-types/src/decision/rapid_r044.rs:111 |
| EG-DECISION-ENGINE-R044.2.2 Served A2A task-submission entry point Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Served A2A task-submission entry point.** Remaining scope: the actual inbound A2A task-submission handler that builds the known-graph registry per request and calls `A2ARoutingResolution::route`, with an integration test over the served path. | An integration test submits inbound A2A tasks and asserts each is routed to a graph through a recorded decision with a resolution kind and evidence class. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R045 Smallest covering tool subset within a context budget Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Smallest covering tool subset within a context budget.** Decide selects the smallest tool subset that still covers every required capability within a caller-specified context budget, so a multiplexer can expose fewer tools to a caller without losing coverage. | A test constructs a capability requirement set with a token budget and asserts the returned subset is minimal, covers every required capability, and stays within budget. | requirement | EG-DECISION-ENGINE | VERIFIED | 0dfbaa95ea36 961b1785319c fa780d3e101a |
| EG-DECISION-ENGINE-R045.1 Typed tool-subset request and greedy covering-set selection Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed tool-subset request and greedy covering-set selection.** EG defines a typed tool-subset request body and a greedy set-cover selection over it, with no server or candidate-source dependency. | Unit tests assert the selection is minimal, covers every required capability, and refuses when coverage or budget cannot be met. | requirement | EG-DECISION-ENGINE | VERIFIED | 0dfbaa95ea36 961b1785319c e8eaaf916a40 crates/eg-types/src/decision/statistical/tool_subset.rs:140 crates/eg-types/src/decision/statistical/tool_subset.rs:161 crates/eg-types/src/decision/statistical/tool_subset.rs:189 crates/eg-types/src/decision/statistical/tool_subset.rs:203 |
| EG-DECISION-ENGINE-R045.2 Tool-subset selection wired into Decide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Tool-subset selection wired into Decide.** EG wires the R045.1 selection into a dedicated Decide question kind, reading tool candidates from the agent library and returning the selected subset on the served decision record. | A served test submits a tool-subset question and asserts the returned record's selected subset is minimal, covers every required capability, and stays within the caller's budget. | requirement | EG-DECISION-ENGINE | VERIFIED | 0dfbaa95ea36 e8eaaf916a40 src/server/handlers/decide/stat_tests/tool_subset_tests.rs:58 |
| EG-DECISION-ENGINE-R046 Swarm topology decisions via the decision ladder Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Swarm topology decisions via the decision ladder.** EG answers swarm-topology questions by applying its typed decision ladder to capacity and shape constraints, returning a proposed topology or a typed abstention together with its evidence; EG itself never acquires or leases capacity as part of answering the question. | A test exercises topology decision requests and asserts a constraint-checked proposal or abstention is returned with no capacity lease taken before separate acquisition. | requirement | EG-DECISION-ENGINE | VERIFIED | 2d087761c964 e8eaaf916a40 fa780d3e101a crates/eg-compute/src/assemble/tests/topology.rs:115 crates/eg-compute/src/assemble/tests/topology.rs:95 |
| EG-DECISION-ENGINE-R047 DecisionRecord v1 contract: types and methods Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DecisionRecord v1 contract: types and methods.** EG defines versioned DecisionRecord v1 types, the AgentAssemble and DecisionCommit methods, a DecisionRecord component kind, and a decide feature flag, introduced through a single count-pinned schema change so generated contracts stay consistent across languages. | A contract-generation test confirms the Rust, Python, and wire descriptors for AgentAssemble and DecisionCommit are generated, fresh, and each has exactly one reachable handler. | requirement | EG-DECISION-ENGINE | VERIFIED | a4804f87c971 dc8d8d712d7f fa780d3e101a crates/eg-capabilities/tests/invariants.rs:257 |
| EG-DECISION-ENGINE-R048 Entailment derivation with weakest-premise evidence class Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Entailment derivation with weakest-premise evidence class.** EG records is_a derivation entries for task-to-capability closure and assigns each derivation the weakest premise evidence class among its inputs, and an independent verifier re-checks claim-premised task mappings against those derivations. | Unit tests build derivation chains with mixed premise classes and assert the verifier recomputes the same weakest-premise conclusion. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 dc8d8d712d7f fa780d3e101a crates/eg-compute/src/assemble/tests/routing.rs:187 crates/eg-types/src/decision/derivation/tests.rs:219 |
| EG-DECISION-ENGINE-R049 Exact 0-1 solver with certificate and verifier Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Exact 0-1 solver with certificate and verifier.** EG solves legal assemblies with a bounded 0-1 integer program. It preprocesses, finds a greedy incumbent, and uses branch-and-bound. It also uses a Lagrangian covering bound and work-node budget. EG emits a certificate for independent verification. The `verify_certificate` routine and brute-force oracle check it. The solver also supports template enumeration and no-good-cut re-solves. | Solver tests compare optima and certificates with exhaustive enumeration on small instances. They confirm `verify_certificate` rejects corrupted certificates. | requirement | EG-DECISION-ENGINE | VERIFIED | 4b11f62898df dc8d8d712d7f fa780d3e101a crates/eg-compute/tests/solve/exhaustive.rs:42 crates/eg-compute/tests/solve/tamper_proof.rs:252 |
| EG-DECISION-ENGINE-R050 Typed optional model and tool facts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed optional model and tool facts.** EG represents model and tool facts such as modality, cost, latency, and schema digests as typed optional fields on the component schema, and the unread provides field is removed. | A schema test confirms provides no longer exists and a stored-component test round-trips the typed optional facts. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 dc8d8d712d7f fa780d3e101a crates/eg-types/src/agent_component.rs:1970 |
| EG-DECISION-ENGINE-R051 AgentAssemble and DecisionCommit handlers with audit lines Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**AgentAssemble and DecisionCommit handlers with audit lines.** EG's AgentAssemble and DecisionCommit handlers enforce one agent graph per commit, refuse any pack-provided DecisionRecord component, and emit an audit line for each commit outcome. | Handler tests cover a successful commit, a rejected pack-sourced DecisionRecord, a fabricated record, a cross-tenant record, and retired, withdrawn, or denied commit attempts. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 dc8d8d712d7f fa780d3e101a src/server/persistence/decision_record/tests.rs:168 src/server/persistence/decision_record/tests.rs:223 src/server/persistence/decision_record/tests.rs:242 |
| EG-DECISION-ENGINE-R052 Routing acceptance fixture with golden vectors Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Routing acceptance fixture with golden vectors.** EG ships a routing acceptance fixture. It covers acceptability sets, planted bad inputs, oracle comparison, golden result vectors and a latency report. It also tests a link from the committed record to its outcome. | The fixture suite runs oracle, planted-input and golden-vector cases. It also verifies the outcome link against the stored golden file. | requirement | EG-DECISION-ENGINE | VERIFIED | 2421a2a2e25e 2a0d6eae0918 fa780d3e101a crates/eg-compute/src/assemble/tests/golden.rs:57 crates/eg-compute/src/assemble/tests/oracle.rs:123 crates/eg-compute/src/assemble/tests/oracle.rs:141 crates/eg-compute/src/assemble/tests/planted.rs:43 crates/eg-compute/src/assemble/tests/routing.rs:148 |
| EG-DECISION-ENGINE-R053 Gold set of labelled requirement-to-assembly items Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Gold set of labelled requirement-to-assembly items.** EG maintains a labelled gold set mapping typed requirements to acceptable assemblies, sized to validate the decision ladder, with a documented path to grow coverage per evidence class before any statistical calibration claim is made. | A synthetic export test confirms the gold set loads, each item is labelled, and class coverage is reported. | requirement | EG-DECISION-ENGINE | VERIFIED | 2421a2a2e25e 2a0d6eae0918 fa780d3e101a tests/synthetic/test_synthetic_decision_export.py:40 |
| EG-DECISION-ENGINE-R054 Statistical contract: Decide, DecisionFit, DecisionEval Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Statistical contract: Decide, DecisionFit, DecisionEval.** EG defines the Decide, DecisionFit, and DecisionEval methods together with a DecisionRecord v2 schema, and generates the corresponding TTL and SHACL ontology artifacts from that contract. | A contract-surface test confirms all three methods are served and listed, and a generation check confirms the TTL and SHACL files match the contract. | requirement | EG-DECISION-ENGINE | SPECIFIED | 2a0d6eae0918 8d4f409785b2 fa780d3e101a crates/eg-capabilities/tests/invariants.rs:536 |
| EG-DECISION-ENGINE-R054.1 TTL/SHACL generation artifact for the Decide/DecisionFit/DecisionEval contract exists Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**TTL/SHACL generation artifact for the Decide/DecisionFit/DecisionEval contract exists.** No TTL/SHACL generation artifact exists for the Decide, DecisionFit, and DecisionEval contract and DecisionRecord v2 schema. | Test: `contract/tests/decide_contract_generation.rs::ttl_and_shacl_artifacts_are_generated_and_match_the_decide_fit_eval_contract`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R055 Pinned deterministic numeric stack for calibration Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Pinned deterministic numeric stack for calibration.** EG's numeric layer pins its soft-float math library version and uses quantised fixed-point arithmetic so that calibration, conformal, risk-control, and off-policy-evaluation computations produce identical results across every supported target. | A cross-target golden-vector test replays the same inputs through the numeric kernels and asserts byte-identical digests on every supported target. | requirement | EG-DECISION-ENGINE | VERIFIED | 2421a2a2e25e b43f33569dd4 fa780d3e101a crates/eg-numeric/tests/decision/scorer.rs:109 crates/eg-numeric/tests/stat_kernels/kernels.rs:117 |
| EG-DECISION-ENGINE-R056 Statistical-path release of the exact solver (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Statistical-path release of the exact solver (rollup).** The exact 0-1 solver and its certificate verification apply to the statistical decision path with the same deterministic guarantees as the core assembly solver. Split into child requirements by code root: `.1` typed StatisticalSolverCertificate refusal on a stale model digest, `.2` route the statistical path through the exact 0-1 solver and this certificate. | Solver tests on the statistical feature set confirm certificate verification and deterministic branching hold as they do for the core assembly path. | requirement | EG-DECISION-ENGINE | SPECIFIED | 65afe57d3c4e fa780d3e101a |
| EG-DECISION-ENGINE-R056.1 Typed StatisticalSolverCertificate refusal on a stale model digest Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed StatisticalSolverCertificate refusal on a stale model digest.** Add the typed `StatisticalSolverCertificate::verify` refusal on a stale model digest (`crates/eg-types/src/decision/rapid_r056.rs`), giving the statistical path the same certificate-verification shape as the core assembly solver. | Test: `crates/eg-types/src/decision/rapid_r056.rs::tests::refuses_a_stale_model_digest`. | requirement | EG-DECISION-ENGINE | VERIFIED | 0fac721690e2 crates/eg-types/src/decision/rapid_r056.rs:83 |
| EG-DECISION-ENGINE-R056.2 Route the statistical path through the exact 0-1 solver and this certificate Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Route the statistical path through the exact 0-1 solver and this certificate.** Remaining scope from the split (2026-10-09): routing an actual statistical-path solve through the exact 0-1 solver and this certificate shape. Split into grandchild requirements (2026-10-09): `.1` a validating certificate constructor refusing a branch count over the solver's own node budget, `.2` an actual statistical-path call into `eg-compute`'s exact 0-1 solver producing this certificate. | Solver tests on the statistical feature set confirm certificate verification and deterministic branching hold as they do for the core assembly path. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R056.2.1 Validating certificate constructor bound to the solver's node budget Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Validating certificate constructor bound to the solver's node budget.** Add `StatisticalSolverCertificate::solved` (`crates/eg-types/src/decision/rapid_r056.rs`), refusing a reported branch count above the deterministic solver's own node budget -- the same node-budget guarantee `EG-DECISION-ENGINE-R011` gives the core assembly path. | Test: `crates/eg-types/src/decision/rapid_r056.rs::tests::refuses_a_certificate_exceeding_the_solver_node_budget`. | requirement | EG-DECISION-ENGINE | VERIFIED | 3c6b457009e4 crates/eg-types/src/decision/rapid_r056.rs:100 |
| EG-DECISION-ENGINE-R056.2.2 Statistical-path call into the exact 0-1 solver Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Statistical-path call into the exact 0-1 solver.** Remaining scope: an actual statistical-path solve that calls `eg-compute`'s exact 0-1 solver (`crates/eg-compute/src/solve/search`) and reports its result through `StatisticalSolverCertificate::solved`. | Solver tests on the statistical feature set confirm certificate verification and deterministic branching hold as they do for the core assembly path. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R057 Decision executor with CandidateSource and DecideText Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision executor with CandidateSource and DecideText.** EG's dedicated decision executor accepts candidates from a CandidateSource spanning the component library and the graph, parses DecideText requests with typed parameters, and scores candidates with the WeightedFeatures head. | Executor tests run a fit-evaluate-publish-decide cycle end to end and a negative test confirms graph-sourced candidates from a foreign tenant are refused. | requirement | EG-DECISION-ENGINE | VERIFIED | 2a0d6eae0918 8d4f409785b2 fa780d3e101a src/server/handlers/decide/stat_tests.rs:979 |
| EG-DECISION-ENGINE-R058 Graph-sourced decision records with RLS-routed reads Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Graph-sourced decision records with RLS-routed reads.** EG can source a decision record summary from the graph, store it in content-addressed blob storage, enforce row-level visibility on reads, and apply a policy-set retention window distinct from library-sourced records. | A storage test writes a graph-sourced record and confirms content-addressed storage, visibility-filtered reads, and retention expiry on schedule. | requirement | EG-DECISION-ENGINE | VERIFIED | 25cb8189575d 8d4f409785b2 bda8269797ab fa780d3e101a src/server/handlers/decide/stat_tests.rs:1111 |
| EG-DECISION-ENGINE-R059 Outcome aggregate with independent-evaluation join Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Outcome aggregate with independent-evaluation join.** EG maintains an outcome aggregate index linked to its admission records, joins only independently evaluated outcomes into that aggregate, applies censoring for incomplete observations, and enforces a minimum fidelity floor before an aggregate is used. | A test seeds self-reported and independently evaluated outcomes and asserts only the independently evaluated ones update the aggregate, with low-fidelity or censored data excluded. | requirement | EG-DECISION-ENGINE | SPECIFIED | 3e6d786460c5 fa780d3e101a crates/eg-numeric/src/decision/aggregate.rs:268 |
| EG-DECISION-ENGINE-R060 DecisionFit and DecisionEval jobs with gated promotion Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DecisionFit and DecisionEval jobs with gated promotion.** EG runs DecisionFit and DecisionEval as jobs that fit a ListwiseLogistic head within an explicit exploration budget, sample a fraction of acted decisions for audit, and promote a fitted head only through the component-publish-plus-receipt path. | A job test runs fit, evaluate, and replay, and asserts promotion without a matching receipt is refused as a conflict. | requirement | EG-DECISION-ENGINE | VERIFIED | 25cb8189575d 2a0d6eae0918 fa780d3e101a crates/eg-numeric/tests/decision/scorer_promotion.rs:179 crates/eg-types/src/agent_component.rs:2307 |
| EG-DECISION-ENGINE-R061 Assembly facts extended for the statistical path Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Assembly facts extended for the statistical path.** EG exposes typed assembly-time facts to both decision paths. The exact solver derivation layer and statistical path receive the same typed values. | A test confirms both paths read matching typed facts. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 8f38ed7cc3dc fe3b87b09054 |
| EG-DECISION-ENGINE-R061.1 Shared AgentComponentEntry cost/latency fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Shared AgentComponentEntry cost/latency fixture.** EG provides one shared `test-support` fixture building an `AgentComponentEntry` with a declared cost and latency, for the exact-solver and statistical paths to read identically. | A unit test converts the fixture to `CandidateFacts` and asserts its declared cost and latency round-trip intact. | requirement | EG-DECISION-ENGINE | VERIFIED | 25cb8189575d 8f38ed7cc3dc fe3b87b09054 crates/eg-types/src/test_support/decision.rs:128 |
| EG-DECISION-ENGINE-R062 NlTemplate selection without a language model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**NlTemplate selection without a language model.** EG selects an NlTemplate and fills its slots using candidate-local similarity matching rather than a language model, and records any fallback to an external model as a claim rather than a proof. | A template-selection test asserts slot filling succeeds from similarity matching alone and a fallback path is recorded with claim-level evidence. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2ffc3594800b src/server/handlers/decide/stat_tests/nl_tests.rs:58 |
| EG-DECISION-ENGINE-R063 Typed client wrappers and documentation for Decide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed client wrappers and documentation for Decide.** EG ships generated typed client wrappers for the decide, decision-fit, and decision-eval calls together with their request and response types, plus documentation and usage examples backed by acceptance tests. | Generated-client tests exercise each wrapper against a running instance and a documentation build confirms the example pages render. | requirement | EG-DECISION-ENGINE | VERIFIED | 15acf1a959e5 1e9ea1ef3790 25cb8189575d 2a0d6eae0918 394f82a01e83 crates/eg-capabilities/src/contract/python/tests.rs:818 tests/test_generated_models.py:139 tests/test_generated_models.py:176 |
| EG-DECISION-ENGINE-R064 Optional read views of decision records Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Optional read views of decision records.** EG may expose SPARQL, GraphQL, and pgwire read views over committed decision records, subject to the same tenant visibility rules as other decision reads. | A read-path test queries a committed record through each exposed view and confirms the results match and respect tenant visibility. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 25cb8189575d 857e20c63775 8d4f409785b2 src/server/handlers/decide/stat_tests/consumer_tests.rs:594 |
| EG-DECISION-ENGINE-R065 Decision record size and shape limits Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision record size and shape limits.** EG caps a DecisionRecord at 64 KiB, 64 candidates, and 32 required capabilities; a record exceeding any limit is refused at commit time with a typed RecordTooLarge abstention rather than a truncated or partial write. | A boundary test commits records at and just above each limit and asserts acceptance at the boundary and a typed refusal with no partial write above it. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 8d4f409785b2 crates/eg-compute/src/assemble/tests/planted.rs:301 |
| EG-DECISION-ENGINE-R066 Retention split between library and graph-sourced records Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Retention split between library and graph-sourced records.** EG keeps library-sourced decision records indefinitely, applies a policy-set retention window to graph-sourced statistical records, and treats high-frequency low-stakes decisions as evaluate-only so they are never persisted as committed records. | A retention test confirms a library-sourced record is never deleted, a graph-sourced record expires on its configured window, and an evaluate-only decision leaves no committed record. | requirement | EG-DECISION-ENGINE | SPECIFIED | 1e9ea1ef3790 2a0d6eae0918 d51d225674e1 |
| EG-DECISION-ENGINE-R066.1 Preserve library inputs Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Preserve library inputs.** `stat_retention.rs` must exclude library-sourced records from compaction and retirement. | `stat_tests/retention_tests.rs::library_records_survive_every_retention_window` verifies unchanged stored bytes. | requirement | EG-DECISION-ENGINE | VERIFIED | 4e60c54e9e49 c6d7108187aa src/server/handlers/decide/stat_tests/retention_tests.rs:64 |
| EG-DECISION-ENGINE-R066.2 Expire graph inputs Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Expire graph inputs.** `stat_retention.rs` must compact and retire graph inputs at configured window boundaries. | `stat_tests/retention_tests.rs::graph_inputs_expire_at_the_configured_boundaries` checks exact boundaries and retained summary digests. | requirement | EG-DECISION-ENGINE | VERIFIED | 4e60c54e9e49 c6d7108187aa src/server/handlers/decide/stat_tests/retention_tests.rs:93 |
| EG-DECISION-ENGINE-R066.3 Evaluate without persistence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evaluate without persistence.** `stat_decide.rs` must return low-stakes decisions without committed records. | `stat_tests/retention_tests.rs::evaluate_only_leaves_no_committed_records` checks repeated served decisions and both record stores. | requirement | EG-DECISION-ENGINE | VERIFIED | 4e60c54e9e49 c6d7108187aa src/server/handlers/decide/stat_tests/retention_tests.rs:129 |
| EG-DECISION-ENGINE-R066.4 Expire graph records Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Expire graph records.** `stat_retention.rs` must expire graph summaries on a configured policy window. Input retirement alone is insufficient. | Planned: `stat_tests/retention_tests.rs::graph_summaries_expire_on_policy_window`. No summary-expiry policy or implementation exists. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R067 Decision record versioning stays decodable Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision record versioning stays decodable.** Every DecisionRecord version remains decodable indefinitely, each version ships its own golden vectors, an unrecognised future version is refused rather than guessed at, and a rolling redeploy drains in-flight requests before switching versions. | A version test decodes golden vectors for every supported version and confirms an unrecognised version returns a typed refusal. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 d51d225674e1 crates/eg-types/src/decision/topology/tests.rs:92 |
| EG-DECISION-ENGINE-R068 Outcome link via the existing synthesis-evidence pin Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Outcome link via the existing synthesis-evidence pin.** EG links an agent graph's outcome back to its decision record through the existing AgentGraphDraft synthesis_evidence pin, without adding new fields to the run-event or outcome-bundle types. | A test publishes a graph and asserts it resolves to its originating decision record solely through the synthesis_evidence pin. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 c4c13898a493 src/server/persistence/decision_record/tests.rs:262 |
| EG-DECISION-ENGINE-R069 DecisionShape enforcement inside the commit handler Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DecisionShape enforcement inside the commit handler.** EG validates every committed decision record against its DecisionShape SHACL shape inside the commit handler itself, failing closed on a violation independently of the separate opt-in integrity-check guard. | Commit-handler tests include at least one known-bad record and assert the shape check rejects it even when the opt-in guard is disabled. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 c4c13898a493 src/server/handlers/decide/shape.rs:134 |
| EG-DECISION-ENGINE-R070 Bounded no-good-cut re-solve for post-solve validators Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Bounded no-good-cut re-solve for post-solve validators.** When a post-solve validator such as template or graph validation rejects a solved assembly, EG adds a no-good cut and re-solves within a bounded number of rounds, terminating with a typed result rather than looping indefinitely. | A test forces repeated post-solve validator failures and asserts the re-solve loop terminates after its bounded round count. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 456b8d06fc91 crates/eg-compute/src/assemble/tests/planted.rs:257 |
| EG-DECISION-ENGINE-R071 DecideText parser kept separate from the UQL core Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DecideText parser kept separate from the UQL core.** DecideText is parsed by its own quote-aware, typed-parameter front end that shares no code with the ordinary UQL parser or its operation and plan types, so decision clauses cannot be expressed through the general query path. | A parser test confirms the ordinary UQL parser refuses decision clauses by name while DecideText parses the same clauses successfully. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 456b8d06fc91 crates/eg-plan/src/decide_text/tests.rs:124 |
| EG-DECISION-ENGINE-R072 Decision observability spans and metrics Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision observability spans and metrics.** EG emits tracing spans and metrics covering the distribution of resolution kinds, the abstention rate, the distribution of evidence classes, solver node count and optimality gap, effective sample size, and latency percentiles for decision requests. | An instrumentation test confirms each listed span or metric is emitted for a representative decision request. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 2a0d6eae0918 d51d225674e1 |
| EG-DECISION-ENGINE-R072.1 Solver node count and optimality gap are emitted on the Assemble/solver path Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Solver node count and optimality gap are emitted on the Assemble/solver path.** Emit one completion event with solver node count and the absolute scalarized objective gap when checked incumbent-minus-bound is available and nonnegative; omit missing, invalid, or overflowing gaps. Do not record model or tenant data. | Test: `crates/eg-compute/tests/solve/instrumentation.rs::assemble_emits_solver_node_count_and_optimality_gap_metrics`. | requirement | EG-DECISION-ENGINE | VERIFIED | 7e2feaaad52d crates/eg-compute/tests/solve/instrumentation.rs:8 |
| EG-DECISION-ENGINE-R073 Decision-owned storage tables and outbox events (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision-owned storage tables and outbox events (rollup).** EG stores decision-pack state in five dedicated owner tables, refuses to open a pack stored in an outdated format, issues a receipt covering every intent in a batch, resolves batch pin references, handles components marked Withdrawn, enforces compare-and-set on the current head, and emits an outbox event per affected component. | Storage tests cover a fresh open, a stale-format refusal, a multi-intent receipt, a withdrawn-component read, head compare-and-set contention, and the resulting outbox events. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 a1bb9fb9503e d51d225674e1 |
| EG-DECISION-ENGINE-R073.1 One durable outbox event per imported component Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**One durable outbox event per imported component.** A served multi-component import stores one validated component-revision event per affected component, followed by one pack-import event, under the receipt's batch identity; repeating the identical pack creates no additional owner or outbox rows. | Test: `src/server/handlers/admin/connector_pack/tests/storage_acceptance.rs::multi_component_import_emits_one_durable_event_per_component`. | requirement | EG-DECISION-ENGINE | VERIFIED | 771c32a45353 src/server/handlers/admin/connector_pack/tests/storage_acceptance.rs:29 |
| EG-DECISION-ENGINE-R073.2 Competing served imports share one head compare-and-set Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Competing served imports share one head compare-and-set.** Two distinct imports over the same prior head have exactly one winner. The loser gets PACK_HEAD_CONFLICT, and retrying that stale head changes no component, holder, import or outbox rows. | Test: `src/server/handlers/admin/connector_pack/tests/storage_acceptance.rs::competing_imports_have_one_head_winner_without_loser_effects`. | requirement | EG-DECISION-ENGINE | VERIFIED | 771c32a45353 795a1ea18fa6 a0743ba9b542 src/server/handlers/admin/connector_pack/tests/storage_acceptance.rs:74 |
| EG-DECISION-ENGINE-R073.3 Fresh owner open and outdated-format refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Fresh owner open and outdated-format refusal.** The 21-table Agent Library registry includes five ConnectorPack tables. Production open must initialize them empty and preserve them on reopen. The lineage gate must refuse genuine predecessors before catalog access without changing file bytes. | Tests: `src/server/persistence/agent_library/open_tests.rs::fresh_open_initializes_all_pack_tables_and_reopens_empty` and `production_open_refuses_each_genuine_predecessor_without_writing`. | requirement | EG-DECISION-ENGINE | VERIFIED | a93e5bd00d51 src/server/persistence/agent_library/open_tests.rs:49 src/server/persistence/agent_library/open_tests.rs:6 |
| EG-DECISION-ENGINE-R073.4 Receipt covers every batch intent Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Receipt covers every batch intent.** The committed receipt binds every component and pack intent, including order, topic, key, payload and headers. | `storage_acceptance::receipt::committed_multi_intent_receipt_binds_all_effects_and_survives_replay` reads typed owner evidence after signed import. It detects omitted, reordered and modified intents, then checks admitted replay preserves the receipt. | requirement | EG-DECISION-ENGINE | VERIFIED | bb72cb292060 d1d4e74f5520 src/server/handlers/admin/connector_pack/tests/storage_acceptance/receipt.rs:137 |
| EG-DECISION-ENGINE-R073.5 Batch pins and withdrawn-component reads Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Batch pins and withdrawn-component reads.** Batch references must pin committed transitive revisions. Current Search must exclude withdrawn components and retain published controls. Historical pinned Content remains readable. New pins must refuse withdrawn components. | Tests: the transitive-chain and diamond regressions in `content_model.rs`, and `withdrawal.rs::withdrawn_tool_leaves_search_but_keeps_historical_content`. | requirement | EG-DECISION-ENGINE | VERIFIED | 4c25220f6e1b a93e5bd00d51 aea4fe89bd19 crates/eg-capabilities/src/error_routing.rs:317 src/server/handlers/admin/connector_pack/tests/content_model.rs:371 src/server/handlers/admin/connector_pack/tests/content_model.rs:406 src/server/handlers/admin/connector_pack/tests/withdrawal.rs:43 |
| EG-DECISION-ENGINE-R074 Agent-slot component-kind closure rule kept current Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Agent-slot component-kind closure rule kept current.** EG's documented rule for which component kinds may be referenced from an agent slot stays consistent with the actual kind set, including shape, A2A agent-card, and decision kinds, so no kind that can appear in a slot is missing from the rule. | `tests/test_decision_static_contracts.py::test_agent_slot_kinds_are_documented_in_closure_rule` checks every enum and slot kind against the documented closure rule. Adversarial fixtures reject missing kinds and new undocumented slot references. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 51f9c8eb6f1d a4804f87c971 tests/test_decision_static_contracts.py:135 |
| EG-DECISION-ENGINE-R075 Component-id uniqueness and forbidden decision kinds (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Component-id uniqueness and forbidden decision kinds (rollup).** EG enforces that every component id is unique within its scope and refuses to import a pack entry whose kind is reserved for decision-owned state, such as DecisionRecord, DecisionHead, or DecisionPolicy. Split into child requirements by code root: `.1` check_unique_component_ids rejects a duplicate component id, `.2` wire the duplicate-id check into the real pack-import entry point. | Import tests assert a duplicate component id is rejected and a pack entry using a reserved decision kind is refused before any state change. | requirement | EG-DECISION-ENGINE | VERIFIED | 0ea0a0dcfa62 1e9ea1ef3790 |
| EG-DECISION-ENGINE-R075.1 check_unique_component_ids rejects a duplicate component id Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**check_unique_component_ids rejects a duplicate component id.** Add `check_unique_component_ids` (`crates/eg-types/src/connector_pack/rapid_r075.rs`), the duplicate-component-id rejection the existing `PackViolationCode::DuplicateComponentId` code names but no test previously exercised. `PackEntryKind` already structurally excludes decision-owned kinds (no `DecisionRecord`/`DecisionHead`/`DecisionPolicy` variant exists). | Test: `crates/eg-types/src/connector_pack/rapid_r075.rs::tests::refuses_a_duplicate_component_id`. | requirement | EG-DECISION-ENGINE | VERIFIED | e8aaa8ae5ccd crates/eg-types/src/connector_pack/rapid_r075.rs:43 |
| EG-DECISION-ENGINE-R075.2 Wire the duplicate-id check into the real pack-import entry point Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wire the duplicate-id check into the real pack-import entry point.** Remaining scope from the split (2026-10-09): wiring the check into the real pack-import entry point. | Import tests assert a duplicate component id is rejected and a pack entry using a reserved decision kind is refused before any state change. | requirement | EG-DECISION-ENGINE | VERIFIED | d16ee611a394 src/server/handlers/admin/connector_pack/import/validation.rs:862 |
| EG-DECISION-ENGINE-R076 Opt-in nested models for decision result markers Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Opt-in nested models for decision result markers.** EG's Python decision client represents decision-type result markers with opt-in nested Pydantic models, scoped to this specification's decision types only, ahead of any broader client-model migration. | A client test confirms decision-type responses deserialize into the nested Pydantic models while other response types are unaffected. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 bad0283526ba tests/test_decision_client.py:152 |
| EG-DECISION-ENGINE-R077 Component schema version bump to add decision kinds Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Component schema version bump to add decision kinds.** EG raises the shared component schema from version 2 to version 3 under a single numbering authority, so the new Withdrawn state and the new decision component kinds land in one schema change rather than several. | A schema migration test confirms every writer agrees on version 3 and that Withdrawn and the new kinds decode correctly from the bumped schema. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 9ffc5197866a a1bb9fb9503e crates/eg-types/src/agent_component.rs:2335 |
| EG-DECISION-ENGINE-R078 Contract freeze reissued with the decide feature (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Contract freeze reissued with the decide feature (rollup).** EG reissues its generated contract freeze to include the decide feature, so the frozen contract artifact reflects every decision method and type this specification introduces. Split into child requirements by code root: `.1` the producer check that refuses a stale profile, `.2` the reissued artifact itself. | A contract-freshness check confirms the reissued freeze file matches the current generated output including the decide feature. | requirement | EG-DECISION-ENGINE | VERIFIED | 1527a97f2118 1e9ea1ef3790 |
| EG-DECISION-ENGINE-R078.1 Typed refusal for a feature-profile freeze omitting an enabled feature Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed refusal for a feature-profile freeze omitting an enabled feature.** The hand-maintained `feature_profile()` list in `crates/eg-capabilities/src/contract.rs` can omit a shipped feature. A typed `MissingFrozenFeature` error and `require_feature_frozen` check refuse omissions. The check accepts a profile that names the feature. Add `decide` to the enumeration. The generator’s `canonical-ledger` profile enables the existing marker. Canonical generation and workspace `--all-features` produce the same frozen feature list. | A unit test covers profiles with missing and present features. A `decide`-gated test confirms the compiled profile includes `decide`. | requirement | EG-DECISION-ENGINE | VERIFIED | 1527a97f2118 1f2d473cf663 crates/eg-capabilities/src/contract.rs:578 crates/eg-capabilities/src/contract.rs:606 |
| EG-DECISION-ENGINE-R078.2 Reissue the committed contract freeze artifacts with the decide feature Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reissue the committed contract freeze artifacts with the decide feature.** `contract/FREEZE-RECEIPT.json` and `contract/receipt.json` are regenerated under the authorized generation ceremony with the `decide` feature enabled and committed, so `feature_profile` in the frozen artifact names `decide`. | The existing `package_surface_is_complete_identical_and_receipt_bound` test, run with `--all-features`, passes against the freshly committed artifacts. | requirement | EG-DECISION-ENGINE | VERIFIED | 1527a97f2118 45beac8d810b e8aaa8ae5ccd crates/eg-capabilities/src/contract.rs:606 |
| EG-DECISION-ENGINE-R079 Per-unit embedding admission classifier for ingestion Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Per-unit embedding admission classifier for ingestion.** Ingestion applies a deterministic per-unit classifier before embedding any derived text: it admits prose, document, and comment content while excluding generated, lockfile, vendored, and minified content, skips embedding when an exact, BM25, or graph lookup already answers the content, deduplicates near-identical text by entropy and content hash, enforces size bounds, and for SQL columns embeds only high-cardinality free text rather than enumerations, foreign keys, timestamps, booleans, or numeric columns. Retrieval telemetry feeds back into the classifier to demote content classes that are never retrieved. | A classifier test feeds each excluded content class and asserts no embedding call is made, while an eligible class embeds and a cheaper-index hit is skipped. | requirement | EG-DECISION-ENGINE | SPECIFIED | 1e9ea1ef3790 dd6d5b55fb20 |
| EG-DECISION-ENGINE-R079.1 Typed content-class taxonomy and pure admission gate (producer slice of R079) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed content-class taxonomy and pure admission gate (producer slice of R079).** A closed `ContentClass` enum fixes the taxonomy -- prose, document, and comment as eligible; generated, lockfile, vendored, and minified as excluded -- behind a single pure `admits()` gate, so every later ingestion call site consults one deterministic registry instead of an ad hoc per-site check. Real ingestion wiring, the embedding client, cheaper-index skip, entropy/hash dedup, size bounds, SQL-column cardinality, and retrieval-telemetry feedback are out of scope for this slice and remain open under `R079`. | A unit test feeds each excluded content class and asserts `admits() == false`, and feeds each eligible class and asserts `admits() == true`. | requirement | EG-DECISION-ENGINE | VERIFIED | d51d225674e1 dd6d5b55fb20 crates/eg-types/src/decision/ingestion_admission.rs:109 |
| EG-DECISION-ENGINE-R079.2 Embedding admission at the ingestion boundary Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Embedding admission at the ingestion boundary.** Add the served ingestion fixture in `tests/test_decision_ingestion_acceptance.py` against the existing ingestion-to-embedding path and content-class gate. Eligible content can embed; excluded classes and sufficient exact, BM25, or graph hits make no embedding call. | Planned `tests/test_decision_ingestion_acceptance.py::test_ingestion_embedding_admission_and_cheaper_index_skip`; not implemented or executed acceptance evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R079.3 Duplicate and size admission Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Duplicate and size admission.** Add the served fixture in `tests/test_decision_ingestion_acceptance.py` proving entropy/content-hash deduplication and size bounds before an embedding call. Retain the parent requirement for near-identical content. | Planned `tests/test_decision_ingestion_acceptance.py::test_duplicate_and_oversized_units_do_not_embed`; not implemented or executed acceptance evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R079.4 SQL column admission Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**SQL column admission.** Add the served fixture in `tests/test_decision_ingestion_acceptance.py` proving that ingestion admits high-cardinality free-text SQL columns and excludes enumerations, foreign keys, timestamps, booleans, and numeric columns. | Planned `tests/test_decision_ingestion_acceptance.py::test_sql_column_kinds_and_cardinality_control_embedding`; not implemented or executed acceptance evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R079.5 Retrieval feedback admission Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Retrieval feedback admission.** Add the served fixture in `tests/test_decision_ingestion_acceptance.py` proving that retrieval-use telemetry demotes never-retrieved content classes at the ingestion admission path. The fixture must exercise the production admission path rather than only the typed taxonomy. | Planned `tests/test_decision_ingestion_acceptance.py::test_retrieval_feedback_demotes_unused_content`; not implemented or executed acceptance evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R080 Ingestion cost ladder with provenance rungs Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Ingestion cost ladder with provenance rungs.** Ingestion derives each fact through the cheapest sufficient rung of a six-level cost ladder covering AST extraction, symbol or type resolution, statistical or community derivation, classical machine-learning or named-entity modelling, embeddings, and finally a language model, tagging each fact with its rung's provenance class. A higher rung runs only when every lower rung abstains, and no rung may overwrite a fact a lower, more deterministic rung already established. Split producer-first into `EG-DECISION-ENGINE-R080.1` (the typed model); further child slices wire in the real per-rung extractors. | A ladder test seeds inputs answerable at each rung and asserts the fact is produced by the lowest sufficient rung with the matching provenance tag, and that a higher rung never overwrites an existing deterministic fact. | requirement | EG-DECISION-ENGINE | SPECIFIED | 1e0050b97b3a 1e9ea1ef3790 |
| EG-DECISION-ENGINE-R080.1 Typed provenance-rung model and overwrite-protection rule Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed provenance-rung model and overwrite-protection rule.** `crates/eg-types/src/decision/ingestion_ladder.rs` defines the six-level `ProvenanceRung` enum (cheapest first) and a pure `resolve_rung` function: a candidate fact from a higher (more expensive) rung never overwrites a fact a lower rung already established, and between two candidates the lowest-rung one wins. The real per-rung extractors (AST walking, symbol resolution, embeddings, an LLM call) are out of scope for this slice. | A unit test resolves a deterministic fact against a higher-rung guess and asserts the deterministic fact survives, and resolves a higher-rung guess against a later lower-rung fact and asserts the lower-rung fact replaces it. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e0050b97b3a crates/eg-types/src/decision/ingestion_ladder.rs:64 crates/eg-types/src/decision/ingestion_ladder.rs:72 crates/eg-types/src/decision/ingestion_ladder.rs:90 |
| EG-DECISION-ENGINE-R080.2 Served enrichment ladder qualification Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Served enrichment ladder qualification.** Add the served fixture in `tests/test_decision_ingestion_acceptance.py` against the existing ingestion and enrichment entry points. For each of the six parent rungs, require every cheaper rung to abstain before escalation, persist the actual producing rung, and refuse overwrite of a cheaper established fact. The producer-only `resolve_rung` test does not discharge this integration acceptance. | Planned `tests/test_decision_ingestion_acceptance.py::test_real_extractors_follow_the_lowest_sufficient_rung`; not implemented or executed acceptance evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R081 Confidence-weighted community detection excluding similarity edges Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Confidence-weighted community detection excluding similarity edges.** Community detection computes edge weights from the entity resolver's confidence score, so a scoped match binds a community more strongly than a unique-guess match, instead of leaving every edge unweighted. The structural adjacency used to detect communities excludes, or heavily discounts, similar_to resemblance edges, since two code shapes looking alike is not a structural relationship. | A unit test compares community assignments across inputs with varying resolver confidence and asserts that adding similar_to edges does not change community membership. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 9ffc5197866a b5fe3c140c21 crates/eg-compute/src/algorithms/tests.rs:200 crates/eg-compute/src/algorithms/tests.rs:663 |
| EG-DECISION-ENGINE-R082 Single-pass option-marker scoring head for Decide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Single-pass option-marker scoring head for Decide.** The eg-decision scoring head encodes the decision state once and scores every candidate option at its own marker position within that single forward pass, applying softmax across the option-marker outputs in-process rather than iterating a decoder once per option. | A unit test issues one encoder pass over several options and asserts all option scores are returned together and sum to one under softmax, with no per-option re-encoding. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 4952a2edced4 9ffc5197866a crates/eg-numeric/tests/decision/scorer.rs:192 |
| EG-DECISION-ENGINE-R083 Options encode structured facts, not option-label text (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Options encode structured facts, not option-label text (rollup).** The decision scorer encodes each candidate option from the structured facts attached to its IRI, including SHACL shape, declared capabilities, and cost and latency facts, rather than from a serialized text label, so the encoded feature width is bounded by a declared cardinality instead of a token budget. Split into child requirements by code root: `.1` typed OptionFacts encoding bounded by declared capability cardinality, `.2` wire OptionFacts encoding into the real FeatureMatrix computation. | A test scores an option set large enough to exceed a plausible text-token budget and asserts scoring still succeeds because feature width is bounded by cardinality, not text length. | requirement | EG-DECISION-ENGINE | SPECIFIED | 1e9ea1ef3790 7a89c881dad4 e9da9f0a77e1 crates/eg-numeric/tests/decision/scorer.rs:367 |
| EG-DECISION-ENGINE-R083.1 Typed OptionFacts encoding bounded by declared capability cardinality Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed OptionFacts encoding bounded by declared capability cardinality.** Add the typed `OptionFacts::encode` (`crates/eg-numeric/src/decision/rapid_r083.rs`), bounded by the declared `MAX_OPTION_CAPABILITIES` cardinality rather than by any text-token budget. | Test: `crates/eg-numeric/src/decision/rapid_r083.rs::tests::scores_an_option_whose_capability_text_would_exceed_a_token_budget`. | requirement | EG-DECISION-ENGINE | VERIFIED | e8aaa8ae5ccd crates/eg-numeric/src/decision/rapid_r083.rs:64 |
| EG-DECISION-ENGINE-R083.2 Wire OptionFacts encoding into the real FeatureMatrix computation Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wire OptionFacts encoding into the real FeatureMatrix computation.** Remaining scope from the split (2026-10-09): wiring this encoding into the real `FeatureMatrix` computation in `decision::features`. | A test scores an option set large enough to exceed a plausible text-token budget and asserts scoring still succeeds because feature width is bounded by cardinality, not text length. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R084 Conformal calibration as primary rung over temperature scaling Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Conformal calibration as primary rung over temperature scaling.** Decide calibrates confidence using eg-numeric's conformal prediction as the primary mechanism, reporting distribution-free empirical coverage and a principled abstention threshold, and falls back to size-specific temperature scaling only when the exchangeability assumption conformal coverage needs does not hold. Every calibrated decision reports both expected calibration error and empirical coverage. | An integration test measures expected calibration error and empirical coverage across option sets of varying size and asserts the declared coverage target holds without a size-specific temperature parameter. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 4952a2edced4 |
| EG-DECISION-ENGINE-R084.1 ECE/coverage measurement across option sets of varying size Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**ECE/coverage measurement across option sets of varying size.** No expected-calibration-error/coverage measurement exists across option sets of varying size. Fixtures are fixed at 3 options, so the declared coverage-holds-without-a-size-specific-parameter claim is untested. | Test: `tests/decision/calibration_coverage.rs::measures_ece_and_empirical_coverage_across_option_sets_of_varying_size`. | requirement | EG-DECISION-ENGINE | VERIFIED | 481fa6ea2c55 7765cab2e500 crates/eg-numeric/tests/decision/calibration_coverage.rs:37 |
| EG-DECISION-ENGINE-R085 Legal option sets are derived from the ontology, never received as-is Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Legal option sets are derived from the ontology, never received as-is.** EG derives the candidate option set from SHACL shapes and a bounded SPARQL shortlist query rather than accepting a caller-supplied option list, so only type-valid, policy-admissible candidates are ever scored. A learned ranking rung may narrow this set or abstain but can never add an option the derivation excluded. | A negative test supplies a caller-asserted option that violates a SHACL shape or policy constraint and asserts it never appears in the derived option set presented to the scorer. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 29da53bfbe8d |
| EG-DECISION-ENGINE-R085.1 Typed legal-option-set filter (producer-first split of R085) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed legal-option-set filter (producer-first split of R085).** A pure, typed filter derives the legal option set from a caller-supplied candidate list and an admissibility predicate, excluding every candidate the predicate rejects, as the type-level contract ahead of the real SHACL-shape / SPARQL-shortlist-backed predicate (`R085.2`). | A negative test constructs a candidate set containing one option that fails a fixture admissibility predicate and asserts it is excluded from the derived set, plus a positive case that an admissible option passes through. | requirement | EG-DECISION-ENGINE | VERIFIED | 29da53bfbe8d crates/eg-numeric/src/decision/legal_option_filter.rs:57 |
| EG-DECISION-ENGINE-R085.2 Remaining scope of EG-DECISION-ENGINE-R085 (slice .2): Legal option sets are derived from the ontology, never received as-is Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Remaining scope of EG-DECISION-ENGINE-R085 (slice .2): Legal option sets are derived from the ontology, never received as-is.** Child slice of `EG-DECISION-ENGINE-R085` (see tasks.md). | A negative test supplies a caller-asserted option that violates a SHACL shape or policy constraint and asserts it never appears in the derived option set presented to the scorer | requirement | EG-DECISION-ENGINE | VERIFIED | 29da53bfbe8d crates/eg-numeric/src/decision/legal_option_filter.rs:57 |
| EG-DECISION-ENGINE-R086 DecisionFit promotion protocol reports nine metrics Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DecisionFit promotion protocol reports nine metrics.** Before a fitted head may be promoted, DecisionEval reports accuracy, soft accuracy, Brier score and score mean absolute error alongside empirical coverage paired with expected calibration error, abstention rate paired with accuracy on answered decisions, cost per decision, decision stability where the same state and option set always produce the same answer, and calibration drift measured over bitemporal history, computed per tenant and per domain over a fixed evaluation workflow set. | A promotion-gate test asserts a receipt missing any of the nine metrics, or showing decision instability for a repeated identical request, blocks promotion. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 4952a2edced4 dc6a3c243a1f crates/eg-numeric/tests/decision/scorer_promotion.rs:180 |
| EG-DECISION-ENGINE-R087 Scorer always receives a bounded shortlist, never a full catalog Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Scorer always receives a bounded shortlist, never a full catalog.** EG always shortlists candidates with a bounded SPARQL LIMIT before handing an option set to the statistical scorer, so the scorer never receives an unbounded catalog of candidates. | A test against a large candidate catalog asserts the scorer's input option set never exceeds the declared shortlist bound. | requirement | EG-DECISION-ENGINE | VERIFIED | 1e9ea1ef3790 4952a2edced4 dc6a3c243a1f crates/eg-numeric/tests/decision/scorer.rs:171 |
| EG-DECISION-ENGINE-R088 Belief-as-of-t exposed as a Decide primitive over prefixes Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Belief-as-of-t exposed as a Decide primitive over prefixes.** Decide exposes a primitive that computes a belief or probability as of a given point in a sequence, such as a conversation prefix, using the existing bitemporal AS OF query over temporal slices rather than a bespoke per-domain sequential model. | A unit test evaluates belief as of successive prefixes of a recorded sequence and asserts the results match direct bitemporal AS OF queries at the corresponding points. | requirement | EG-DECISION-ENGINE | SPECIFIED | 1e9ea1ef3790 4034a361535b 4952a2edced4 crates/eg-numeric/tests/decision/scorer.rs:215 |
| EG-DECISION-ENGINE-R088.1 Belief-as-of-t uses the bitemporal AS OF mechanism, not a bespoke per-feature recompute Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Belief-as-of-t uses the bitemporal AS OF mechanism, not a bespoke per-feature recompute.** Belief-as-of-t is currently a bespoke per-feature recompute rather than going through the required bitemporal AS OF query mechanism over temporal slices. | Test: `crates/eg-types/src/decision/rapid_r088.rs::tests::belief_as_of_successive_prefixes_matches_direct_bitemporal_as_of_queries`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R089 Learned ranking never replaces the constraint-first decision ladder Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Learned ranking never replaces the constraint-first decision ladder.** A statistical rung in the decision ladder may only rank or narrow the option set that the constraint, entailment and optimization steps have already produced, or abstain; it is never the mechanism that determines which options are legal. | A test disables the statistical scorer and asserts the constraint, entailment and optimization steps still produce the identical legal option set, with only ranking or abstention behavior affected. | requirement | EG-DECISION-ENGINE | VERIFIED | 19b44d216062 1e9ea1ef3790 aaef8290c8e2 crates/eg-numeric/tests/decision/ladder.rs:257 |
| EG-DECISION-ENGINE-R090 Resident native decision-scorer head in eg-decision Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Resident native decision-scorer head in eg-decision.** eg-decision implements its option-attention scoring head natively in Rust as a small resident model, on the order of 700,000 parameters and a few megabytes, serving a decision in single-digit milliseconds on CPU, compiled directly into the engine binary with no Python runtime, sidecar process, inter-process hop, or GPU dependency required. Children `.1`, `.2`, and `.3` preserve this scope: declared budgets, compiled execution, and measured resource acceptance. | A benchmark test measures the compiled scorer's per-decision CPU latency and binary footprint and asserts both stay within the declared resident budget. | requirement | EG-DECISION-ENGINE | VERIFIED | 19b44d216062 1e9ea1ef3790 548cf5451a25 |
| EG-DECISION-ENGINE-R090.1 Typed resident-scorer budget (producer-first split of R090) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed resident-scorer budget (producer-first split of R090).** `eg-types::decision::statistical::scorer` defines `ResidentScorerBudget` and a `RESIDENT_SCORER_CEILING` ("on the order of 700,000 parameters and a few megabytes", single-digit-millisecond `p99`), with `ResidentScorerBudget::declare` refusing any declared budget that exceeds the ceiling, as the type-level contract ahead of the real compiled-benchmark harness (a further child). | A test declares a budget at the ceiling and asserts it is accepted, and a negative test declares a budget over the parameter and latency ceilings and asserts both are refused. | requirement | EG-DECISION-ENGINE | VERIFIED | 010477d72b7f 19b44d216062 d68c292be084 crates/eg-types/src/decision/statistical/scorer.rs:156 crates/eg-types/src/decision/statistical/scorer.rs:164 crates/eg-types/src/decision/statistical/scorer.rs:172 crates/eg-types/src/decision/statistical/scorer.rs:180 crates/eg-types/src/decision/statistical/scorer.rs:189 |
| EG-DECISION-ENGINE-R090.2 Compiled resident scorer execution Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Compiled resident scorer execution.** The engine must execute the native option-attention scorer in process. Execution must require no Python runtime, sidecar, inter-process hop, or GPU. Code roots: `crates/eg-numeric/src/decision/scorer/` and `src/server/handlers/decide/`. | Planned test: `tests/test_decision_resident_scorer.py::test_compiled_engine_scores_without_external_runtime`. The test must exercise the engine binary and verify equivalent deterministic scores without external runtimes. | requirement | EG-DECISION-ENGINE | VERIFIED | 26be257523bc tests/test_decision_resident_scorer.py:143 |
| EG-DECISION-ENGINE-R090.3 Measured resident scorer resource budget Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Measured resident scorer resource budget.** The compiled scorer must satisfy the declared parameter, memory, and CPU latency limits. The benchmark must measure per-decision p99 latency and resident model footprint. Code root: `crates/eg-numeric/benches/decision_resident_scorer.rs`. | Planned benchmark: `crates/eg-numeric/benches/decision_resident_scorer.rs::resident_scorer_meets_declared_budget`. It must report parameter count, model bytes, binary footprint, and p99 CPU latency against `RESIDENT_SCORER_CEILING`. | requirement | EG-DECISION-ENGINE | VERIFIED | 29de5f09030f 9f5da56a6f62 crates/eg-numeric/benches/decision_resident_scorer.rs:218 |
| EG-DECISION-ENGINE-R091 Resident scorer is bit-reproducible via fixed-point arithmetic Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Resident scorer is bit-reproducible via fixed-point arithmetic.** The resident decision-scorer head computes entirely in fixed-point integer arithmetic, following eg-numeric's no-floating-point-transcendental discipline, so scoring the same recorded decision input reproduces byte-identical results across machines and over time rather than only remaining stable within a single run. | A golden-vector test replays a committed DecisionRecord on a different machine or build and asserts the recomputed score is byte-identical to the recorded value. | requirement | EG-DECISION-ENGINE | VERIFIED | 4952a2edced4 534f763afc81 crates/eg-numeric/tests/decision/scorer.rs:109 |
| EG-DECISION-ENGINE-R092 Scorer selection and structured encoding apply ladder-wide Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Scorer selection and structured encoding apply ladder-wide.** Across every decision question, the statistical scorer selects only among options the deterministic constraint, entailment and optimization rungs have already derived and can never introduce a new option, and every option is encoded from its structured ontology features rather than natural-language text, so scoring is not limited by option-label language or length. | A cross-question test exercises two distinct decision question types and asserts both enforce select-only-from-derived-options behavior and structured, non-text option encoding. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 e9e12f168722 src/server/handlers/decide/stat_tests/scorer_tests.rs:190 |
| EG-DECISION-ENGINE-R093 Resident scorer is trained from the served synthetic-episode generator Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Resident scorer is trained from the served synthetic-episode generator.** Training data for the resident decision-scorer head comes from EG's seeded, ground-truth-bearing synthetic episode generator exercised through the real served request path, rather than manually authored synthetic examples, so training labels originate from the same engine the scorer runs inside. Split per the rapid-delivery contract: `.1` is the typed provenance model and its validation/refusal tests below; `.2` wires `export_gold_corpus` to actually drive episodes through a served client and tag them `SOURCE_SERVED`, and is not yet built. | A test confirms a training run consumes episodes produced by the synthetic generator's served path and that each episode carries a verifiable ground-truth label. | requirement | EG-DECISION-ENGINE | SPECIFIED | 163a1e6bc8ad 534f763afc81 |
| EG-DECISION-ENGINE-R093.1 Typed served-path provenance and ground-truth verification Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed served-path provenance and ground-truth verification.** A gold-corpus item's label carries an explicit provenance source (`SOURCE_IN_PROCESS` vs. `SOURCE_SERVED`), and `verify_ground_truth` refuses any item claiming `SOURCE_SERVED` whose acceptable set is empty or not a subset of its own candidates. | Unit tests confirm `verify_ground_truth` accepts a well-formed served-path item, ignores a non-served item, and refuses (raises `UnverifiableGroundTruthError`) a served item with an empty or leaking acceptable set. | requirement | EG-DECISION-ENGINE | VERIFIED | 163a1e6bc8ad 19b44d216062 tests/synthetic/test_synthetic_decision_export.py:63 tests/synthetic/test_synthetic_decision_export.py:71 tests/synthetic/test_synthetic_decision_export.py:78 tests/synthetic/test_synthetic_decision_export.py:85 |
| EG-DECISION-ENGINE-R093.2 Served corpus export Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Served corpus export.** Children `.2.1` through `.2.3` track the remaining served export and training acceptance. | Each child must pass before this rollup is complete. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R093.2.1 Collect served episode results Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Collect served episode results.** `epistemic_graph/testing/synthetic/decision_export.py::export_gold_corpus` must collect seeded episode results through the existing served client. | Planned: `tests/synthetic/test_synthetic_decision_export.py::test_corpus_collects_seeded_served_results`. Record client calls and compare their results with exported candidates. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R093.2.2 Bind served labels to collected results Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Bind served labels to collected results.** `epistemic_graph/testing/synthetic/decision_export.py` must assign `SOURCE_SERVED` only to collected served results and validate each ground-truth label. | Planned: `tests/synthetic/test_synthetic_decision_export.py::test_served_labels_require_collected_results`. Refuse forged served provenance, empty acceptable sets, and labels outside collected candidates. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R093.2.3 Verify served corpus training Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Verify served corpus training.** `tests/synthetic/test_served_corpus_training.py` must exercise corpus export through a real server and consume it in training. | Planned: `tests/synthetic/test_served_corpus_training.py::test_training_consumes_served_ground_truth`. Check each consumed episode against the server response and its verifiable label. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R094 Decision scoring requires no GPU or model-server dependency Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision scoring requires no GPU or model-server dependency.** The resident decision scorer runs on CPU inside every instance of the engine, requiring no GPU, model-serving sidecar, or separate inference cluster, and retraining it is a short, self-contained job rather than a cluster-scale undertaking. | A deployment test runs the engine, including decision scoring, with no GPU device or model-server sidecar present and confirms decisions are still served. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 af5dc5ad78bd src/server/handlers/decide/stat_tests/scorer_tests.rs:275 |
| EG-DECISION-ENGINE-R095 Solver certificate digest matches its committed golden vector Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Solver certificate digest matches its committed golden vector.** The solver's certificate digest, recomputed for the fixed reference input in crates/eg-compute/tests/solve/determinism.rs, matches the committed golden digest, and this golden-vector check runs as part of the publication gate rather than being limited to within-run stability checks. | The determinism test suite, including the certificate-digest golden-vector test and the repeated-solves byte-identical test, runs and passes as part of the publication gate. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 be0f1acb05c6 dc6a3c243a1f crates/eg-compute/tests/solve/determinism.rs:50 crates/eg-compute/tests/solve/determinism.rs:79 |
| EG-DECISION-ENGINE-R096 Community-detection wire contract carries edge weight and quality function Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Community-detection wire contract carries edge weight and quality function.** The community-detection request contract carries a weight, and optional properties, on each edge and an explicit quality-function selector, not only a modularity resolution parameter, so confidence-weighted edges and alternative quality functions reach the kernel through the default request path rather than only a rarer fallback path. | A contract test constructs a community-detection request with weighted edges and a non-default quality-function selector and asserts the kernel receives and applies both. | requirement | EG-DECISION-ENGINE | VERIFIED | 03bb9b81b3a4 2a0d6eae0918 534f763afc81 crates/eg-compute/src/algorithms/tests.rs:662 crates/eg-compute/src/algorithms/tests.rs:717 |
| EG-DECISION-ENGINE-R097 Replay-nonce rejection and blob GC grace period behave correctly Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Replay-nonce rejection and blob GC grace period behave correctly.** The transport anti-replay record in src/server/contract_wave.rs rejects a request that reuses a nonce already recorded, regardless of which served surface presented it, and the blob garbage collector in graph_pipeline.rs reclaims an unreferenced blob only after its configured grace period has elapsed, not immediately on dereference. | Reachability and garbage-collection tests use a distinct nonce per request and advance time past the configured grace period before asserting reclamation, matching the anti-replay record's and collector's actual contracts. | requirement | EG-DECISION-ENGINE | VERIFIED | 03bb9b81b3a4 534f763afc81 be0f1acb05c6 src/server/auth.rs:2007 src/server/blob/store/tests.rs:369 |
| EG-DECISION-ENGINE-R098 Decide ladder excludes generative free-text models by design Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decide ladder excludes generative free-text models by design.** EG's decision ladder provides legal-option derivation, calibrated probabilities, cost-sensitive choice, provenance, abstention, templated natural-language responses through NlTemplate, and a constrained, typed DecideText and UQL surface, without an in-engine generative language model or autoregressive text generation. The bounded resident scorer selects and ranks typed options and does not generate free text. | A contract test confirms DecideText and NlTemplate responses are produced only from fixed templates and typed slot values, never from free-form generated text. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 fa3eda2b7961 src/server/handlers/decide/stat_tests/nl_tests.rs:143 src/server/handlers/decide/stat_tests/nl_tests.rs:58 |
| EG-DECISION-ENGINE-R099 Wikidata alignment connector supplies entity-resolution keys Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wikidata alignment connector supplies entity-resolution keys.** A connector aligns EG's Region, Country, Taxon, Food and Nutrient entities to Wikidata using wikidataId and skos:exactMatch, supplying the entity-resolution keys consumed by EG-DECISION-ENGINE-R032, and a schema_mappings definition maps the same connector's fields to world_model-v1 properties, validated against the world-model SHACL shapes. | A SHACL validation test checks the produced schema_mappings data against the world-model shapes, and an entity-resolution test confirms the Wikidata-aligned keys resolve the expected entities. | requirement | EG-DECISION-ENGINE | SPECIFIED | 534f763afc81 a1bb9fb9503e |
| EG-DECISION-ENGINE-R099.1 Wikidata alignment connector and schema_mappings SHACL validation exist Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wikidata alignment connector and schema_mappings SHACL validation exist.** No Wikidata connector, schema_mappings data, or SHACL test exists supplying the Region/Country/Taxon/Food/Nutrient entity-resolution keys EG-DECISION-ENGINE-R032 consumes. | Test: `tests/connectors/wikidata_alignment.rs::schema_mappings_validate_against_world_model_shacl_shapes_and_resolve_expected_entities`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R100 Retrieval decisions join cited evidence with independent outcomes Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Retrieval decisions join cited evidence with independent outcomes.** EG joins each retrieval DecisionRecord's cited evidence with an independently evaluated outcome and persists the resulting hard-negative examples durably for reuse in later training and evaluation. Extension .100 defines pinned retrieval-evaluation and exact context-span inputs; `.101` defines grounded topic coverage and soft-label unsupported-claim evaluation. Neither replaces the independent-outcome join or hard-negative persistence. | The original integration test records a retrieval decision, attaches an independent outcome and reads the hard-negative example. `.100` verifies pinned labels, metrics, context offsets and refusal behavior. `.101` verifies scoped topic coverage, soft-label arithmetic and empty-denominator refusal. | requirement | EG-DECISION-ENGINE | SPECIFIED | 03bb9b81b3a4 534f763afc81 e429630278b8 src/server/handlers/decide/stat_tests/retrieval_tests.rs:208 |
| EG-DECISION-ENGINE-R101 Query-side embedding adapter head promoted via DecisionEval Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Query-side embedding adapter head promoted via DecisionEval.** EG applies a low-rank adapter to the query embedding after row-level-security filtering and before the approximate nearest-neighbor probe, and promotes a fitted adapter head only on a passing DecisionEval receipt, consistent with the guarded publish path used for other fitted heads. | A test asserts the adapter applies only to post-filter query vectors and that an adapter head without a passing DecisionEval receipt cannot be promoted. | requirement | EG-DECISION-ENGINE | VERIFIED | 03bb9b81b3a4 534f763afc81 e429630278b8 src/server/handlers/decide/stat_tests/learning_tests.rs:145 |
| EG-DECISION-ENGINE-R102 Schema repair proposals pass a decided mapping and shadow-branch check Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Schema repair proposals pass a decided mapping and shadow-branch check.** EG's decision ladder evaluates a schema-repair mapping into a candidate GraphSchema or pack, validates the candidate with an ABox consistency check, and requires the candidate to be ingested on a shadow branch and explicitly approved before it is activated against the live schema. Rollup: split into `.1` (below) per SPEC-SIZING §5; a further child wires `GraphSchemaOp::AttachApproved` to a real shadow-branch ingest. | An integration test runs a schema-repair proposal through the mapping, ABox check, shadow-branch ingest and approval sequence and asserts activation only occurs after approval. | requirement | EG-DECISION-ENGINE | SPECIFIED | 202b90167359 534f763afc81 |
| EG-DECISION-ENGINE-R102.1 Typed schema-repair activation gate (producer-first split of R102) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed schema-repair activation gate (producer-first split of R102).** `eg-types::graph_schema::shadow_branch` defines `SchemaRepairStep` and `SchemaRepairActivation`, whose `checked_for_activation` refuses activation unless mapping-decided, ABox-check-passed, shadow-branch-ingested and approved steps are all recorded in that exact order, as the type-level contract ahead of the real mapping ladder and shadow-branch ingest wiring (further children). | A positive test records every step in order and asserts activation succeeds; negative tests omit the shadow-branch-ingest step and reorder approval ahead of it, and assert both are refused. | requirement | EG-DECISION-ENGINE | VERIFIED | 202b90167359 9c5b587a7145 crates/eg-types/src/graph_schema/shadow_branch.rs:109 crates/eg-types/src/graph_schema/shadow_branch.rs:88 crates/eg-types/src/graph_schema/shadow_branch.rs:95 |
| EG-DECISION-ENGINE-R102.2 Served shadow repair qualification Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Served shadow repair qualification.** Wire and test the full schema-repair sequence at `src/server/graph_schema/approved.rs`: decided mapping, ABox validation, real shadow-branch ingestion, then explicit approval before live activation. Reuse the existing approval lease and schema owner; a recorded step enum alone is not evidence that shadow ingestion occurred. | Planned `src/server/graph_schema/approved/tests.rs::schema_repair_requires_real_shadow_ingest_before_activation`; not implemented or executed acceptance evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R103 Calibrated per-horizon flip confidence with conformal abstention Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Calibrated per-horizon flip confidence with conformal abstention.** EG's finance decision questions report a calibrated confidence for a predicted directional flip at each forecast horizon and abstain, using the same conformal abstention mechanism as other statistical decision rungs, when coverage cannot be guaranteed at that horizon. | A test evaluates flip predictions across multiple horizons and asserts each reports a calibrated confidence and abstains whenever conformal coverage fails at that horizon. | requirement | EG-DECISION-ENGINE | VERIFIED | 532418b7e55b 534f763afc81 9c5b587a7145 crates/eg-compute/src/finance/market/record_tests.rs:299 |
| EG-DECISION-ENGINE-R104 DecideText shares the UQL lexer and grammar family Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DecideText shares the UQL lexer and grammar family.** DecideText is parsed by the same lexer and grammar family as UQL, supporting dollar-prefixed parameters, a quote-aware candidate block, structured parse errors, and a shared grammar table, rather than a separate bespoke parser. | A parser test runs the same grammar-table-driven fixtures against DecideText and UQL inputs and asserts both produce structured errors in the same shape. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 857e20c63775 9c5b587a7145 crates/eg-plan/src/decide_text/tests.rs:145 |
| EG-DECISION-ENGINE-R105 GraphSchema.attach publishes the swarm-topology ontology Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**GraphSchema.attach publishes the swarm-topology ontology.** EG's GraphSchema.attach publishes the swarm-topology TBox and SHACL shapes as a versioned schema package, and SHACL positive and negative fixtures prove the shapes accept valid swarm-topology facts and reject invalid ones. | A SHACL fixture test attaches the swarm-topology schema and asserts the positive fixtures validate and the negative fixtures fail validation. | requirement | EG-DECISION-ENGINE | VERIFIED | 4ded009c7d6e 534f763afc81 src/server/graph_schema/swarm_topology_tests.rs:128 |
| EG-DECISION-ENGINE-R106 AgentGraph templates carry topology facts for standard shapes Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**AgentGraph templates carry topology facts for standard shapes.** EG's AgentGraph template representation supports the standard agent arrangement shapes used by downstream topology templates, including single-agent, pipeline, fan-out/join, supervisor-to-workers, critique-loop and council arrangements, and carries topology facts on each template for validation against the swarm-topology schema. | A contract test constructs an AgentGraph template for each standard shape and asserts its topology facts validate against the swarm-topology SHACL shapes. | requirement | EG-DECISION-ENGINE | SPECIFIED | 534f763afc81 ca2bc11e6d73 src/server/graph_schema/swarm_topology_tests.rs:128 |
| EG-DECISION-ENGINE-R107 Typed topology contract in eg-types with versioned goldens Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed topology contract in eg-types with versioned goldens.** eg-types defines a typed topology contract of at most twelve types in crates/eg-types/src/decision/topology.rs, adds a topology field to AssemblyRequirements and to template facts, increments the decision record version with accompanying v1 golden fixtures, and generates the matching Python bindings and capability pin. | Generated-contract and golden-fixture tests confirm the new topology types, the incremented record version, and the regenerated Python bindings stay in sync. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 9c5b587a7145 c0edc96d1e10 crates/eg-types/src/decision/topology/tests.rs:56 crates/eg-types/src/decision/topology/tests.rs:68 |
| EG-DECISION-ENGINE-R108 Publish-time topology-shape validation fails closed Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Publish-time topology-shape validation fails closed.** Publishing an agent template runs a programmatic TemplateTopologyShape validation hook from the admin agent handler, implemented in src/server/handlers/decide/topology_shape.rs, and rejects any template whose topology does not validate rather than publishing it unchecked. | A negative test publishes a template with an invalid topology shape and asserts the publish request is rejected rather than silently accepted. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 9c5b587a7145 c0edc96d1e10 src/server/handlers/decide/topology_shape/tests.rs:77 |
| EG-DECISION-ENGINE-R109 OWL entailment derives topology admissibility before assembly Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**OWL entailment derives topology admissibility before assembly.** Agent assembly runs an admissibility entailment stage in crates/eg-compute/src/assemble/topology/admissible.rs that includes the composed schema digest among its inputs, derives a TopologyAdmissible fact through OWL derivation, and eliminates any topology option the derivation does not admit. | A test varies the composed schema digest and asserts the derived TopologyAdmissible facts and eliminated topology options change accordingly. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 c0edc96d1e10 |
| EG-DECISION-ENGINE-R109.1 Topology admissibility entailment test varies the composed schema digest Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Topology admissibility entailment test varies the composed schema digest.** Entailment lives in `topology_schema.rs::entail`, not the named `admissible.rs`, and no test varies the composed schema digest to show the derived TopologyAdmissible facts and eliminated options actually change. | Test: `crates/eg-compute/src/assemble/topology/admissible.rs::tests::varying_the_composed_schema_digest_changes_derived_topology_admissibility`. | requirement | EG-DECISION-ENGINE | VERIFIED | 47990cdbcb2b src/server/handlers/decide/topology_schema.rs:213 |
| EG-DECISION-ENGINE-R110 Topology optimization model rows with a brute-force oracle Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Topology optimization model rows with a brute-force oracle.** The topology assembly model in crates/eg-compute/src/assemble/topology/model.rs encodes one-hot width and round variables plus lease, deadline, demand, verify and capacity rows using precomputed tables, and a brute-force oracle checks the model's solutions against small instances of at most twenty variables. | A property test compares the solver's output against the brute-force oracle for topology instances up to twenty variables and asserts they agree. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 c0edc96d1e10 |
| EG-DECISION-ENGINE-R110.1 Topology brute-force oracle property test covers n<=20 variables Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Topology brute-force oracle property test covers n<=20 variables.** The assembly test compares deterministic topology instances against independent exhaustive enumeration. Actual model and certificate counts include twenty variables. | Test: `crates/eg-compute/src/assemble/tests/topology_oracle.rs::property_oracle_agrees_with_the_solver_for_instances_up_to_twenty_variables`. | requirement | EG-DECISION-ENGINE | VERIFIED | 1bd4d6b1cdea 1e1a100670b5 crates/eg-compute/src/assemble/tests/topology_oracle.rs:144 |
| EG-DECISION-ENGINE-R111 Decide exposes the topology decision as a single typed question Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decide exposes the topology decision as a single typed question.** EG's decision ladder exposes swarm-topology selection as a single typed Decide question that callers ask directly, returning a derived, calibrated and recorded answer in place of a heuristic success-rate estimate computed outside the ladder. | A contract test issues a topology Decide request and asserts the response is a typed DecisionRecord rather than a heuristic score computed outside the ladder. | requirement | EG-DECISION-ENGINE | SPECIFIED | 534f763afc81 c0edc96d1e10 |
| EG-DECISION-ENGINE-R111.1 Topology selection is exposed as its own standalone typed Decide question Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Topology selection is exposed as its own standalone typed Decide question.** No dispatch-level standalone typed Topology Decide question exists; topology selection is still only reachable inside `graph.assemble()`. | Test: `src/server/handlers/decide/stat_tests/consumer_tests.rs::a_standalone_topology_decide_question_returns_a_typed_decision_record`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R112 Capacity premise derives headroom observations by priority Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Capacity premise derives headroom observations by priority.** src/server/handlers/decide/capacity_premise.rs derives headroom observations from capacity status at the requesting priority level, and reports infeasibility using a typed Infeasible result named by the specific lease constraint that could not be met. | A test exhausts capacity at a given priority and asserts the response is a typed, lease-named Infeasible result rather than a generic failure. | requirement | EG-DECISION-ENGINE | VERIFIED | 26a0f185448a 534f763afc81 c0edc96d1e10 crates/eg-compute/src/assemble/tests/topology.rs:116 |
| EG-DECISION-ENGINE-R113 EG commits capacity acquisition atomically with synthesis evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**EG commits capacity acquisition atomically with synthesis evidence.** EG's decision commit path for a topology-backed run publishes synthesis evidence alongside the committed record and performs capacity acquisition as a single all-or-nothing operation, so a caller denied capacity can request exactly one further decision rather than partially holding resources. Rollup: split into `.1` (below) per SPEC-SIZING §5; `.2` tracks the atomic runtime commit; `.3` tracks retry enforcement. | A test simulates a denied capacity acquisition and asserts no partial capacity is held and that exactly one further decision request is accepted. | requirement | EG-DECISION-ENGINE | SPECIFIED | 202b90167359 534f763afc81 |
| EG-DECISION-ENGINE-R113.1 Typed atomic capacity/synthesis-evidence commit outcome (producer-first split of R113) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed atomic capacity/synthesis-evidence commit outcome (producer-first split of R113).** `eg-types::decision::topology::capacity_commit` defines `CapacitySynthesisCommit` (`Committed`/`Denied`) and `RetryAllowance`, whose `from_capacity_decision` refuses a `Committed` outcome without a lease and published synthesis evidence, and refuses a `Denied` outcome holding any lease or published evidence, granting exactly one further decision on denial. | A positive test commits an accepted decision with a lease and evidence; negative tests refuse a denial holding a partial lease and an acceptance missing published evidence, and assert a denial's retry allowance is exactly one. | requirement | EG-DECISION-ENGINE | VERIFIED | 202b90167359 93183139d2e2 crates/eg-types/src/decision/topology/capacity_commit.rs:110 crates/eg-types/src/decision/topology/capacity_commit.rs:125 crates/eg-types/src/decision/topology/capacity_commit.rs:137 crates/eg-types/src/decision/topology/capacity_commit.rs:149 crates/eg-types/src/decision/topology/capacity_commit.rs:174 |
| EG-DECISION-ENGINE-R113.2 Atomic commit transaction Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Atomic commit transaction.** Rollup of `.2.1` to `.2.4`. Targets: `src/server/persistence/decision_record.rs`, `src/server/persistence/agent_graph/write.rs`, and `src/redb_store/capacity_lease.rs`. The shared transaction path is absent. Implementation remains blocked on the owner-boundary decision documented in `test-spec.md`. | Planned tests in `src/server/persistence/decision_record/tests.rs`: `topology_commit_publishes_capacity_and_evidence`, `topology_capacity_denial_leaves_no_commit_parts`, and `topology_commit_recovery_preserves_atomic_outcome`. The handler refusal test is `.2.1`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R113.2.1 Refuse an unsupported transaction boundary Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refuse an unsupported transaction boundary.** In `src/server/handlers/decide/commit.rs`, refuse topology acquisition before writes when no shared transaction authority exists. This guard does not implement the atomic transaction. | `src/server/handlers/decide/commit.rs::tests::topology_commit_refuses_uncoordinated_owners` checks both owners. The guard targets solved plans with positive lease demand. Ordinary records retain their commit path. | requirement | EG-DECISION-ENGINE | VERIFIED | 347eb303fcc7 src/server/handlers/decide/commit/tests.rs:121 |
| EG-DECISION-ENGINE-R113.2.2 Accepted transaction fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Accepted transaction fixture.** Add one success fixture in `src/server/persistence/decision_record/tests.rs`. The fixture checks the record, lease, and graph evidence after one accepted topology commit. Production targets are the three files named in `.2`. | Planned `src/server/persistence/decision_record/tests.rs::topology_commit_publishes_capacity_and_evidence` checks all three durable outputs. This fixture depends on the missing shared transaction path. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R113.2.3 Denied transaction fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Denied transaction fixture.** Add one refusal fixture in `src/server/persistence/decision_record/tests.rs`. Capacity denial must leave no new record, lease, or graph evidence. Production targets are the three files named in `.2`. | Planned `src/server/persistence/decision_record/tests.rs::topology_capacity_denial_leaves_no_commit_parts` checks both stores after denial. This fixture depends on the missing shared transaction path. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R113.2.4 Transaction recovery fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Transaction recovery fixture.** Add one restart fixture in `src/server/persistence/decision_record/tests.rs`. Restart after each participant boundary and check the same atomic outcome. Production targets are the three files named in `.2`. | Planned `src/server/persistence/decision_record/tests.rs::topology_commit_recovery_preserves_atomic_outcome` refuses visible partial state after restart. This fixture depends on the missing shared transaction and recovery paths. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R113.3 One retry after capacity denial Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**One retry after capacity denial.** Rollup of `.3.1` to `.3.3`. Targets: `crates/eg-types/src/decision/topology/capacity_commit.rs`, `src/server/persistence/decision_record.rs`, and `src/server/handlers/decide/commit.rs`. The handler must consume an authoritative denial allowance before the next decision. | Planned tests: `retry_allowance_consumes_once`, `topology_denial_allowance_consumption_survives_restart`, and `topology_denial_accepts_one_followup_request`. Child rows name their exact test files. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R113.3.1 Consume the typed allowance once Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Consume the typed allowance once.** In `crates/eg-types/src/decision/topology/retry_allowance.rs`, re-exported by `capacity_commit.rs`, add a checked transition from one remaining decision to zero. A second consumption must fail. | `crates/eg-types/src/decision/topology/retry_allowance.rs::tests::retry_allowance_consumes_once` checks the successful transition and repeated refusal. This model test does not prove runtime enforcement. | requirement | EG-DECISION-ENGINE | VERIFIED | cb8662f24bef crates/eg-types/src/decision/topology/retry_allowance.rs:35 crates/eg-types/src/decision/topology/retry_allowance.rs:49 |
| EG-DECISION-ENGINE-R113.3.2 Durable consumption fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Durable consumption fixture.** Add one test in `src/server/persistence/decision_record/tests.rs` for consumption by tenant and denied decision identity. Production target: `src/server/persistence/decision_record.rs`. A restart must not restore the consumed allowance. | Planned `src/server/persistence/decision_record/tests.rs::topology_denial_allowance_consumption_survives_restart` checks initial use, reopen, and refusal. The durable denial record and consume operation remain absent. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R113.3.3 Handler retry fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Handler retry fixture.** Add one request test in `src/server/handlers/decide/commit.rs`. The handler permits one further decision after denial and refuses repeated or concurrent consumption. Production target: the same file. This test depends on `.3.2`. | Planned `src/server/handlers/decide/commit.rs::tests::topology_denial_accepts_one_followup_request` checks first use, replay, concurrent use, and tenant binding. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R114 Subagent allowance negotiation reads EG's topology facts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Subagent allowance negotiation reads EG's topology facts.** The typed topology facts EG attaches to a committed decision record are the input a caller's subagent-allowance negotiation reads to decide how many subagents may run, rather than the negotiation computing its own separate topology estimate. | A contract test confirms a subagent-allowance negotiation consumes the topology-facts field of a committed EG decision record. | requirement | EG-DECISION-ENGINE | VERIFIED | 26b04e133dfd 534f763afc81 c0edc96d1e10 crates/eg-compute/src/assemble/tests/topology.rs:196 |
| EG-DECISION-ENGINE-R116 Consumers reach EG only through the versioned client contract Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Consumers reach EG only through the versioned client contract.** EG publishes a single versioned client contract that external consumers use for every decision and engine call, so no consumer needs a separate bespoke facade, in-process engine object, or private transport path to reach EG's decision ladder. Split per the dependency-first sizing rule (producer before consumer): `EG-DECISION-ENGINE-R116.1` (the typed consumer-call-path gate) and `EG-DECISION-ENGINE-R116.2` (wiring every generated client method through it, plus the contract test). R116 is LANDED when both children are. | A contract test confirms a consumer using only the published EG client contract can perform the same calls that previously required a bespoke in-process facade, with no direct engine import required. | requirement | EG-DECISION-ENGINE | SPECIFIED | 534f763afc81 |
| EG-DECISION-ENGINE-R116.1 A typed gate admits only the published client-contract call path Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**A typed gate admits only the published client-contract call path.** A `ConsumerCallPath` type distinguishes the published, versioned contract path from a bespoke in-process facade or private transport; `admit_call_path` admits the former (with a non-empty contract version) and refuses the latter unconditionally. Adds no server surface. | Unit tests assert the published contract path is admitted, a bespoke facade is always refused, and an empty contract version is refused. | requirement | EG-DECISION-ENGINE | VERIFIED | 253a69935dfd 26b04e133dfd crates/eg-capabilities/src/contract/access_path.rs:45 crates/eg-capabilities/src/contract/access_path.rs:54 crates/eg-capabilities/src/contract/access_path.rs:64 |
| EG-DECISION-ENGINE-R116.2 Every generated client method is wired through the contract-only gate Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Every generated client method is wired through the contract-only gate.** Every decision and engine call the generated client exposes is routed through `EG-DECISION-ENGINE-R116.1`'s `admit_call_path` before dispatch, so no bespoke facade or private transport path can reach EG's decision ladder. Depends on `EG-DECISION-ENGINE-R116.1`. | A contract test confirms a consumer using only the published EG client contract can perform the same calls that previously required a bespoke in-process facade, with no direct engine import required. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R117 DERIVE series functions share one incremental kernel Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**DERIVE series functions share one incremental kernel.** eg-tsdb/src/derive implements lag, diff, return, log-return, and rolling mean, standard deviation, sum, min, max, rank, correlation, exponentially weighted moving average, z-score, ratio, and weighted-sum functions as checkpointed incremental kernels, with UQL's DERIVE clause, SQL window functions, and the matching PromQL functions all calling the same kernel rather than duplicating it, and a single shared rolling z-score and exponentially weighted moving average implementation. DecisionEval reports each feature's predictive power as rolling rank information coefficient, information-coefficient decay, information ratio with an effective sample size, and a bootstrap confidence interval. | A test compares UQL DERIVE, SQL window and PromQL outputs for the same function against a Python reference golden and asserts agreement, and a DecisionEval report test asserts all four feature-power metrics are present. | requirement | EG-DECISION-ENGINE | SPECIFIED | 534f763afc81 9480759eb7c2 |
| EG-DECISION-ENGINE-R117.1 UQL/SQL/PromQL golden-equivalence and 4-metric DecisionEval report test Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**UQL/SQL/PromQL golden-equivalence and 4-metric DecisionEval report test.** No UQL/SQL/PromQL golden-equivalence test or 4-metric DecisionEval report test exists for the DERIVE series functions. | Test: `crates/eg-tsdb/tests/derive_golden.rs::uql_sql_promql_outputs_agree_on_golden_reference_and_decisioneval_reports_all_four_feature_power_metrics`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R118 Reputation view backs source reliability across all readers Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reputation view backs source reliability across all readers.** EG materializes a read-only reputation relation from Decide's hierarchical Beta-Binomial option pools and proper-score forecaster records, including Brier score, log score, Murphy decomposition and calibration error, time-discounted and gated by a minimum sample size, formed only from independently evaluated outcome labels. AuthorityPolicy.source_reliability, RetrievalCandidate.source_reliability and UQL's SOURCE RELIABILITY clause all read this same materialization, and evidence fusion lives in eg-epistemic with the finance signal method kept as a thin adapter rather than a second fusion implementation. | A test asserts a sparse or unverified pool abstains rather than returning a default reliability, and that AuthorityPolicy, RetrievalCandidate and UQL SOURCE RELIABILITY all return identical values for the same source. | requirement | EG-DECISION-ENGINE | SPECIFIED | 1f6d512ae013 28fbbbe2ee1e 534f763afc81 7e14801e08c3 9a85c8a49fd4 |
| EG-DECISION-ENGINE-R118.1 Reputation-view test exists outside the unrelated privacy regression fixture Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reputation-view test exists outside the unrelated privacy regression fixture.** No real test of the reputation materialization existed. Only incidental fixture text inside an unrelated privacy regression test touched this path. Split into `EG-DECISION-ENGINE-R118.1.1` (in-crate) and `EG-DECISION-ENGINE-R118.1.2` (cross-surface agreement). | Delivered by the two child rows. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R118.1.1 A sparse pool abstains in the reputation materialization Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**A sparse pool abstains in the reputation materialization.** `learn_reputation` (`crates/eg-numeric/src/risk/reputation.rs`) returns `Reputation::InsufficientHistory` for a subject below the sample gate while a dense peer in the same pool is `Reputation::Estimated`. | Test: `crates/eg-numeric/src/risk/reputation.rs::tests::sparse_pool_abstains_while_a_dense_peer_is_estimated`. | requirement | EG-DECISION-ENGINE | VERIFIED | ac824430b1d8 crates/eg-numeric/src/risk/reputation.rs:316 |
| EG-DECISION-ENGINE-R118.1.2 AuthorityPolicy, RetrievalCandidate and UQL SOURCE RELIABILITY agree on the abstention Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**AuthorityPolicy, RetrievalCandidate and UQL SOURCE RELIABILITY agree on the abstention.** Remaining scope: one cross-crate test (eg-epistemic, eg-numeric, eg-plan) showing `AuthorityPolicy.source_reliability`, `RetrievalCandidate.source_reliability` and UQL's SOURCE RELIABILITY clause read the same materialized value and all abstain for a sparse pool. | Test: a cross-surface test asserting all three readers agree on a sparse-pool abstention (to be written). | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R119 Walk-forward replay seals deflated Sharpe and PBO evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Walk-forward replay seals deflated Sharpe and PBO evidence.** DecisionEval's walk-forward replay mode reads a bitemporal AS OF snapshot for every fold, refits only on that fold's training history, and records input, head and policy digests plus per-option contributions and a resume point so an interrupted replay can continue. Each run is sealed as a content-addressed EvaluationRun reporting a deflated Sharpe ratio using the real trial count, a probability of backtest overfitting figure, and a Diebold-Mariano comparison against a pinned incumbent, with finance BacktestRun as a specialization of this same sealed, verified, no-look-ahead contract, and a policy-dependent environment is refused and routed to off-policy evaluation instead. | A replay test runs walk-forward folds over bitemporal snapshots and asserts the sealed EvaluationRun's trial count, backtest-overfitting probability and Diebold-Mariano figures match independently recomputed values, and that a policy-dependent environment is rejected. | requirement | EG-DECISION-ENGINE | VERIFIED | 4034a361535b 534f763afc81 a85c8425c9f4 src/server/handlers/decide/stat_tests/replay_tests.rs:187 src/server/handlers/decide/stat_tests/replay_tests.rs:246 |
| EG-DECISION-ENGINE-R120 Admission anchors are limited to persisted write paths Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Admission anchors are limited to persisted write paths.** A component counts as an admission anchor in the pinned-reference-resolution check only when it performs a persisted write; a read-only helper, a replay helper, or a decision-record's internal closure does not count as a separate admission point. | A test exercises a read helper, a replay helper and a persisted write path and asserts only the write path is counted as a component's admission anchor. | requirement | EG-DECISION-ENGINE | VERIFIED | 18f72d26730a 3c39771e7a44 534f763afc81 tests/test_pinned_reference_resolution.py:144 |
| EG-DECISION-ENGINE-R121 Typed Claim and Evidence structures back evidence class Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed Claim and Evidence structures back evidence class.** EG represents claim and evidence provenance as typed Claim and Evidence data structures carried through the decision pipeline, not as naming-convention string labels, so every decision answer's evidence_class (proof, observation, or claim) is derived from structured data rather than inferred from field names. Rollup of `EG-DECISION-ENGINE-R121.1` and `EG-DECISION-ENGINE-R121.2`; both remain necessary. | A unit test constructs a decision answer and asserts evidence_class is computed from the typed Claim/Evidence structure, failing if a mislabeled string alone could produce a different class. | requirement | EG-DECISION-ENGINE | SPECIFIED | 534f763afc81 a1bb9fb9503e |
| EG-DECISION-ENGINE-R121.1 Assembly answers use typed premise classes Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Assembly answers use typed premise classes.** Reuse `PremiseRef` in `crates/eg-compute/src/assemble/conclude.rs`. Misleading field names and subject IRIs must not change evidence class. | `crates/eg-compute/src/assemble/tests/evidence.rs::assembly_evidence_uses_typed_premises_not_labels` constructs and replays actual assembly answers across all three classes. | requirement | EG-DECISION-ENGINE | VERIFIED | a8e597dccba7 crates/eg-compute/src/assemble/tests/evidence.rs:8 |
| EG-DECISION-ENGINE-R121.2 Graph candidate provenance reaches statistical answers Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Graph candidate provenance reaches statistical answers.** Reuse typed graph nodes in `src/server/handlers/decide/candidates.rs` and `stat_decide.rs`. Preserve source identity and snapshot evidence through record sealing and replay. Graph rows currently carry text and numeric features only. | Planned `src/server/handlers/decide/stat_tests/classes_tests.rs::graph_claim_and_evidence_control_answer_class` exercises typed graph rows, misleading labels, malformed provenance, and replay. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R122 Synthetic decision data stays separate from calibration Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Synthetic decision data stays separate from calibration.** EG runs synthetic decision data with outcomes known by construction through its full decision pipeline and flags the resulting records as synthetic, so synthetic evaluations are never merged with real-world calibration statistics. | An integration test runs the synthetic suite end to end and asserts synthetic-origin records are excluded from real-world calibration aggregates. | requirement | EG-DECISION-ENGINE | VERIFIED | 0c9f08ddbbae 534f763afc81 cfbe22464008 src/server/handlers/decide/stat_tests.rs:569 |
| EG-DECISION-ENGINE-R123 Solve DTOs canonical in eg-types, no duplicate copies Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Solve DTOs canonical in eg-types, no duplicate copies.** The solver data types under eg-types/src/solve/** are the single canonical definition of the solver's request and result shapes. Any other crate re-exports them from eg-types instead of maintaining its own copy. | `tests/test_decision_static_contracts.py::test_solve_dtos_have_no_second_definition` scans Rust sources for duplicate canonical DTO declarations. Adversarial fixtures reject added structs, enums, and aliases. Reviewed unrelated domain homonyms remain distinct. | requirement | EG-DECISION-ENGINE | VERIFIED | 51f9c8eb6f1d 534f763afc81 a4804f87c971 tests/test_decision_static_contracts.py:77 |
| EG-DECISION-ENGINE-R124 eg-numeric statistical kernel tests compile and run Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**eg-numeric statistical kernel tests compile and run.** Every statistical kernel implementation in eg-numeric is exercised by a compiled test entry point (tests/stat_kernels.rs) so the crate's test suite builds and runs all kernel test files, clippy.toml's declared self-check file exists and matches what clippy actually runs, and confidence-level and statistical-power assertions in those tests use correctly calibrated values. | The eg-numeric test suite compiles and executes tests/stat_kernels.rs with all five kernel test files included, and clippy runs against the declared self-check file. | requirement | EG-DECISION-ENGINE | VERIFIED | 30405ee73d13 534f763afc81 a1bb9fb9503e crates/eg-numeric/tests/stat_kernels/clippy_policy.rs:34 crates/eg-numeric/tests/stat_kernels/clippy_policy.rs:50 |
| EG-DECISION-ENGINE-R125 Telemetry binds to ontology entities as BehaviourObservation Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Telemetry binds to ontology entities as BehaviourObservation.** EG binds incoming telemetry events to their corresponding ontology entities and rolls them up into BehaviourObservation facts that downstream decision and reputation computations can read. | An integration test ingests sample telemetry, confirms correct entity binding, and asserts the resulting BehaviourObservation rollup facts are queryable. | requirement | EG-DECISION-ENGINE | VERIFIED | 30405ee73d13 534f763afc81 cae7ecad71e2 tests/served_telemetry_facts.rs:232 |
| EG-DECISION-ENGINE-R126 Capability coverage answers which components can serve a task Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Capability coverage answers which components can serve a task.** EG extends `AgentAssemble` (EG-DECISION-ENGINE-R036) with a read-only coverage query. The query takes native task IRIs and returns the capability closure of each task. For each capability, it lists the visible Agent Library templates and registered A2A agent cards that cover it. Each entry carries its derivation premises and their evidence class. A2A agent cards stay claims. The query uses no model and ranks nothing. Split per the dependency-first sizing rule (producer before consumer): `EG-DECISION-ENGINE-R126.1` (the pure capability-coverage derivation) and `EG-DECISION-ENGINE-R126.2` (the served query and its generated client). R126 is LANDED when both children are. | A served fixture proves closure, per-capability covering components, premise classes, visibility filtering and the absence of invisible components. | requirement | EG-DECISION-ENGINE | VERIFIED | 534f763afc81 e5edf018cbba |
| EG-DECISION-ENGINE-R126.1 Capability coverage is a pure function of required capabilities and candidate facts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Capability coverage is a pure function of required capabilities and candidate facts.** `eg-types`'s `decision::derivation` module computes, for each of a task closure's required capabilities, every visible Agent Library candidate that covers it (reusing `coverage_chain`, the same chain `AgentAssemble` already proves) paired with its evidence class, and every registered A2A agent card that self-declares it, always at claim strength. Adds no server surface and no ranking. | Unit tests assert the join: only covering library candidates and self-declaring A2A cards appear, and a library entry's evidence class matches the weakest premise of its chain. | requirement | EG-DECISION-ENGINE | VERIFIED | 253a69935dfd e5edf018cbba crates/eg-types/src/decision/derivation/tests.rs:138 |
| EG-DECISION-ENGINE-R126.2 The capability-coverage query is served beside `AgentAssemble` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The capability-coverage query is served beside `AgentAssemble`.** A read-only method accepts native task IRIs, resolves the tenant's visible Agent Library candidates and registered A2A cards, calls `EG-DECISION-ENGINE-R126.1`'s `capability_coverage`, and returns the result with a generated client method. Depends on `EG-DECISION-ENGINE-R126.1`. Split per the dependency-first sizing rule (producer before consumer): `EG-DECISION-ENGINE-R126.2.1` (the served RPC: `Method` variant, dispatch wiring and handler) and `EG-DECISION-ENGINE-R126.2.2` (the generated client, cut once the orchestrator regenerates the contract). R126.2 is LANDED when both children are. | A served fixture proves closure, per-capability covering components, premise classes, visibility filtering and the absence of invisible components. | requirement | EG-DECISION-ENGINE | VERIFIED | 253a69935dfd 30405ee73d13 |
| EG-DECISION-ENGINE-R126.2.1 The capability-coverage query answers over the wire Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The capability-coverage query answers over the wire.** A new `Method` variant carries native task IRIs; dispatch routes it to a handler beside `handle_agent_assemble` that resolves the tenant's visible Agent Library candidates and registered A2A agent cards (the existing `A2aAgentCard`-kind `AgentComponent`s) from the same Agent Library store `AgentAssemble` reads, and calls `EG-DECISION-ENGINE-R126.1`'s `capability_coverage_query`. No generated client yet. Depends on `EG-DECISION-ENGINE-R126.1`. | A served fixture proves closure, per-capability covering components, premise classes, visibility filtering and the absence of invisible components, driven directly against the dispatcher. | requirement | EG-DECISION-ENGINE | VERIFIED | 1b6af1990ea8 2b7d88e9b456 9c778cfdfff0 fcb2e15d572c src/server/handlers/decide/coverage_tests.rs:152 src/server/handlers/decide/coverage_tests.rs:232 |
| EG-DECISION-ENGINE-R126.2.2 The capability-coverage query gets a generated client method Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The capability-coverage query gets a generated client method.** Once `EG-DECISION-ENGINE-R126.2.1` is wired, `gen_contract` is rerun to publish the method's request/response subschema and regenerate `crates/eg-capabilities/generated/method_catalog.rs` and the client bindings. Depends on `EG-DECISION-ENGINE-R126.2.1`; requires a build-host `cargo run -p eg-capabilities --features contract --bin gen_contract` the delivering lane does not itself run. | The regenerated generated-client contract test exercises the method end to end. | requirement | EG-DECISION-ENGINE | VERIFIED | 4b6e3e19af6b tests/test_capability_coverage_client.py:28 tests/test_capability_coverage_client.py:37 |
| EG-DECISION-ENGINE-R127 Guardrail entailment lists the rules a task must follow Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Guardrail entailment lists the rules a task must follow.** EG returns the governance rules, standards and SHACL shapes that apply to a task class by ontology entailment. Each rule carries the entailment path and its source generation. The answer is advisory; enforcement stays with the owning policy gate. Split per the dependency-first sizing rule (producer before consumer): `EG-DECISION-ENGINE-R127.1` (the pure entailment function) and `EG-DECISION-ENGINE-R127.2` (the served query and its generated client). R127 is LANDED when both children are. | A fixture proves entailed rules for a subclassed task, no rule for an unrelated task, and stable premises after restart. | requirement | EG-DECISION-ENGINE | VERIFIED | 18a745706c46 534f763afc81 |
| EG-DECISION-ENGINE-R127.1 Guardrail entailment is a pure function of a task IRI and a rule set Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Guardrail entailment is a pure function of a task IRI and a rule set.** `eg-types`'s `decision::guardrail` module decides, for a task IRI and a set of `GuardrailRule`s each naming the task class they govern, which rules are entailed by task-class subsumption (reusing `agent_ontology::broader_chain`, the same subclass-entailment primitive `coverage_chain` already proves capability coverage with), each with its entailment path and source generation. Adds no server surface. | Unit tests assert a rule on the task's own class or an ancestor is entailed with the correct path, a rule on an unrelated class is never entailed, and the same inputs always produce the same premises. | requirement | EG-DECISION-ENGINE | VERIFIED | 18a745706c46 253a69935dfd 30405ee73d13 crates/eg-types/src/decision/guardrail.rs:292 crates/eg-types/src/decision/guardrail.rs:317 crates/eg-types/src/decision/guardrail.rs:324 |
| EG-DECISION-ENGINE-R127.2 The guardrail-entailment query is served, backed by a stored rule set Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The guardrail-entailment query is served, backed by a stored rule set.** A read-only method accepts a task IRI, reads the tenant's published `GuardrailRule`s, calls `EG-DECISION-ENGINE-R127.1`'s `entailed_guardrails`, and returns the result with a generated client method. Depends on `EG-DECISION-ENGINE-R127.1`. The query reuses the Agent Library component publish path and its tenant-bound snapshot reader. Split per the dependency-first sizing rule (producer before consumer): `EG-DECISION-ENGINE-R127.2.1` (the `GuardrailRule` storage/publish path), `EG-DECISION-ENGINE-R127.2.2` (the served RPC) and `EG-DECISION-ENGINE-R127.2.3` (the generated client). R127.2 is LANDED when all three children are. | A fixture proves entailed rules for a subclassed task, no rule for an unrelated task, and stable premises after restart. | requirement | EG-DECISION-ENGINE | VERIFIED | 253a69935dfd 30405ee73d13 534f763afc81 |
| EG-DECISION-ENGINE-R127.2.1 A `GuardrailRule` can be published and read back per tenant Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**A `GuardrailRule` can be published and read back per tenant.** Adds the storage component kind and the publish/list path a `GuardrailRule` (`rule_id`, `applies_to_class`, `source_generation`) needs before any query can read a tenant's rule set, mirroring how Agent Library components are published today. Malformed rule attributes fail publish with the declared `MALFORMED_GUARDRAIL_RULE` code on `AgentComponent`; unrelated methods do not inherit that allowance. Adds no new served query. | A persistence test publishes a `GuardrailRule` and reads it back unchanged after a restart. | requirement | EG-DECISION-ENGINE | VERIFIED | 334c101eb64f 45beac8d810b eff92845d271 src/server/persistence/guardrail_rule/tests.rs:46 src/server/persistence/guardrail_rule/tests.rs:79 |
| EG-DECISION-ENGINE-R127.2.2 The guardrail-entailment query answers over the wire Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The guardrail-entailment query answers over the wire.** A new `Method` variant carries a task IRI; dispatch routes it to a handler that reads the tenant's published `GuardrailRule`s via `EG-DECISION-ENGINE-R127.2.1`'s storage path and calls `EG-DECISION-ENGINE-R127.1`'s `guardrail_entailment_query`. The typed read is `GuardrailEntailment`, binds the requested tenant to the verified caller before opening the rule snapshot, and returns the ontology digest, rule generations and entailment paths. It uses the existing `agent:assemble-read` authority and never changes the owning enforcement policy. Retired and withdrawn heads and other tenants are invisible. Generated bindings are owned by R127.2.3. Depends on `EG-DECISION-ENGINE-R127.1` and `EG-DECISION-ENGINE-R127.2.1`. | A fixture proves entailed rules for a subclassed task, no rule for an unrelated task, and stable premises after restart, driven directly against the dispatcher. | requirement | EG-DECISION-ENGINE | VERIFIED | e7580aeb141f crates/eg-types/src/decision/guardrail.rs:254 src/server/handlers/decide/guardrail_tests.rs:139 src/server/handlers/decide/guardrail_tests.rs:161 src/server/handlers/decide/guardrail_tests.rs:78 |
| EG-DECISION-ENGINE-R127.2.3 The guardrail-entailment query gets a generated client method Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The guardrail-entailment query gets a generated client method.** Once `EG-DECISION-ENGINE-R127.2.2` is wired, `gen_contract` is rerun to publish the method's request/response subschema and regenerate `crates/eg-capabilities/generated/method_catalog.rs` and the client bindings. Depends on `EG-DECISION-ENGINE-R127.2.2`. The native `cargo run -p eg-capabilities --features contract --bin gen_contract` command owns every generated artifact, including the Python request validator and typed result decoder. | The regenerated generated-client contract test exercises the method end to end. | requirement | EG-DECISION-ENGINE | VERIFIED | 2110b293cdf0 d13f43cd3e1f f5677b486e1f tests/test_guardrail_entailment_served.py:49 |
| EG-DECISION-ENGINE-R128 HarnessConfig decision answers how to configure an agent run Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**HarnessConfig decision answers how to configure an agent run.** One new `Decide` question kind, `harness_config`, returns the context policy, plan scaffold and action space for a model profile, a task class, a usable context budget and a request priority. It reuses the decision ladder and the `ToolSubset` selection. It is not a planner. Children `.1` through `.15` split it by producer, behaviour, wiring and proof. R128 is LANDED when all children are. | Test: A served test submits one `harness_config` question and asserts the committed record names all three parts with premises. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.1 The question kind exists in the enum Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The question kind exists in the enum.** `QuestionKind` at `crates/eg-types/src/decision/statistical.rs:57` must gain the variant `HarnessConfig`, serialised as `harness_config`, with a doc comment that cites R128 and states the question is evaluate-only. | Test: `crates/eg-types/src/decision/statistical.rs::question_kind_declared_tests::harness_config_kind_serialises_snake_case` | requirement | EG-DECISION-ENGINE | VERIFIED | c7da75413a3c crates/eg-types/src/decision/statistical.rs:348 src/server/handlers/decide/stat_tests/harness_config_tests.rs:57 src/server/handlers/decide/stat_tests/harness_config_tests.rs:98 |
| EG-DECISION-ENGINE-R128.2 The request carries typed params Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The request carries typed params.** A new module `crates/eg-types/src/decision/statistical/harness_config.rs` must define `HarnessConfigRequestBody` with `model_profile_ref` (iri), `task_class` (iri), `usable_context_budget_tokens` (int), `priority` and an optional `expected_trajectory_tokens` (int). Each param name must match a `DecideRequest.params` entry, as `tool_subset.rs:29` does. | Test: `crates/eg-types/src/decision/statistical/harness_config.rs::tests::body_requires_every_input` | requirement | EG-DECISION-ENGINE | VERIFIED | 5b6086e4075d crates/eg-types/src/decision/statistical/harness_config.rs:385 crates/eg-types/src/decision/statistical/harness_config.rs:412 crates/eg-types/src/decision/statistical/harness_config.rs:431 |
| EG-DECISION-ENGINE-R128.3 The answer type states each part and its abstention Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The answer type states each part and its abstention.** `harness_config.rs` must define `HarnessConfigAnswer` with `context_policy` (`none`, `elide`, `elide_then_summarize`), `soft_threshold`, `hard_threshold` and `recent_window_fraction` (Q32 fractions), `plan_scaffold` (`on`, `off`), `action_space` (`tool_set`, `shell_only`) and `tool_subset`. Each part must be `Decided` or `Abstained { missing_fact, conservative_default }`. | Test: `crates/eg-types/src/decision/statistical/harness_config.rs::tests::answer_round_trips_through_serde` | requirement | EG-DECISION-ENGINE | VERIFIED | a565bdb085f2 c0466b57ce04 crates/eg-types/src/decision/statistical/harness_config.rs:514 crates/eg-types/src/decision/statistical/harness_config.rs:544 crates/eg-types/src/decision/statistical/harness_config.rs:571 |
| EG-DECISION-ENGINE-R128.4 Named defaults hold the thresholds and are replaceable Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Named defaults hold the thresholds and are replaceable.** `harness_config.rs` must define `HarnessDefaults` with `soft_threshold` 0.6, `hard_threshold` 0.85 and `recent_window_fraction` 0.3. The handler must read a tenant policy override through `resolve_policy` before it uses a default. Each value used must appear as a premise. | Test: `crates/eg-types/src/decision/statistical/harness_config.rs::tests::policy_override_replaces_default` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.5 Context policy follows budget pressure Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Context policy follows budget pressure.** A pure function `decide_context_policy` must compute pressure as `expected_trajectory_tokens` divided by `contextWindowTokens`. It must return `none` only when the profile window makes overflow impossible for the task class, otherwise `elide_then_summarize` with the `HarnessDefaults` thresholds. A missing window or trajectory estimate must abstain with default `elide_then_summarize`. | Test: `crates/eg-types/src/decision/statistical/harness_config/context_policy/tests.rs::context_policy_none_only_when_overflow_impossible` | requirement | EG-DECISION-ENGINE | VERIFIED | 2e4e94789ddf crates/eg-types/src/decision/statistical/harness_config/context_policy/tests.rs:27 crates/eg-types/src/decision/statistical/harness_config/context_policy/tests.rs:50 crates/eg-types/src/decision/statistical/harness_config/context_policy/tests.rs:7 crates/eg-types/src/decision/statistical/harness_config/context_policy/tests.rs:78 crates/eg-types/src/decision/statistical/harness_config/context_policy/tests.rs:90 |
| EG-DECISION-ENGINE-R128.6 Plan scaffold follows stopping behaviour Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Plan scaffold follows stopping behaviour.** A pure function `decide_plan_scaffold` must return `on` for `stops_early` (premise: accuracy) and for `over_verifies` (premise: cost). It must return `off` only for `balanced` when the cited evaluation run records a no-gain plan-scaffold ablation. A missing fact must abstain with default `on`. | Test: `crates/eg-types/src/decision/statistical/harness_config.rs::tests::plan_scaffold_rules` | requirement | EG-DECISION-ENGINE | VERIFIED | 4cd26ef35745 crates/eg-types/src/decision/statistical/harness_config.rs:280 crates/eg-types/src/decision/statistical/harness_config.rs:323 crates/eg-types/src/decision/statistical/harness_config.rs:352 |
| EG-DECISION-ENGINE-R128.7 Action space follows shell proficiency and task class Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Action space follows shell proficiency and task class.** A pure function `decide_action_space` must return `shell_only` only when `shellProficiency` is `high` and the task class is `shellCentric`. Otherwise it must return `tool_set`. A missing `shellProficiency` or `shellCentric` must abstain with default `tool_set`. | Test: `crates/eg-types/src/decision/statistical/harness_config.rs::tests::shell_only_needs_both_facts` | requirement | EG-DECISION-ENGINE | VERIFIED | a565bdb085f2 crates/eg-types/src/decision/statistical/harness_config.rs:592 |
| EG-DECISION-ENGINE-R128.8 The handler reads model and task facts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The handler reads model and task facts.** A new handler `src/server/handlers/decide/stat_harness_config.rs` must read the model profile by `model_profile_ref` through `ctx.store` (`AgentLibraryStore`, the store `read_candidates` at `candidates.rs:415` uses). It must read `shellCentric` from the task class. An unknown profile reference must refuse with `StatisticalErrorCode::ParameterInvalid`. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::unknown_profile_is_refused` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.9 The action-space part reuses the tool-subset selection Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The action-space part reuses the tool-subset selection.** `stat_harness_config.rs` must call `tool_subset::smallest_covering_subset` (`tool_subset.rs:59`) for a `tool_set` result. It must pass the declared candidates and `usable_context_budget_tokens` as the budget. A `ToolSubsetRefusal` must become an abstention on `tool_subset`. A `shell_only` result must carry an empty subset. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::tool_set_reuses_covering_subset` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.10 The dispatch hook routes the new kind Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The dispatch hook routes the new kind.** `stat_decide.rs:134` must match `harness_config_outcome(request)` beside `tool_subset_outcome(request)` and seal the result through `seal` (`stat_decide.rs:372`). `Method::Decide` at `src/server/dispatch/router/decision_plane.rs:95` must need no new method variant. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::decide_routes_harness_config` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.11 Premises and why-not explain every part Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Premises and why-not explain every part.** The handler must emit one premise per rule input and per default used. It must emit one why-not entry for each rejected option of each part. A part answered by a conservative default must emit a `Claim`-class premise naming the missing fact. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::premises_and_why_not_cover_each_part` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.12 The outcome encodes decided and abstained parts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The outcome encodes decided and abstained parts.** The handler must seal a `StatisticalOutcome::Advisory` (`outcome.rs:101`) with one `ScoredOption` per decided part, using the option id `<part>:<value>`. When every part abstains, it must seal `StatisticalOutcome::Abstained` (`outcome.rs:107`). The record must read `ResolutionKind::Statistical` or `Abstention` accordingly. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::all_parts_abstained_seals_abstention` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.13 The committed answer is accepted by the commit path Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The committed answer is accepted by the commit path.** `handle_decision_commit` must accept and re-derive a sealed `harness_config` record without a kind-specific branch. A test must commit the record and read it back with identical premises. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::harness_config_record_commits` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R128.14 The generated contract and clients carry the kind Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The generated contract and clients carry the kind.** `gen_contract` must be rerun so `contract/schemas/method.request.json` and the `result.*.json` schemas list `harness_config` beside `tool_subset`. The Python DTO in `crates/eg-capabilities/src/contract/python/dto.rs` and the JS and Go codecs under `clients/` must regenerate. The `gen_contract --check` step at `.github/workflows/release.yml:210` must pass. | Test: `crates/eg-capabilities/tests/contract_generated.rs::question_kind_lists_harness_config` | requirement | EG-DECISION-ENGINE | VERIFIED | c7da75413a3c crates/eg-capabilities/tests/contract_generated.rs:44 |
| EG-DECISION-ENGINE-R128.15 End-to-end proof uses the served path Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**End-to-end proof uses the served path.** A served test must publish a model profile with measured facts, submit `Method::Decide` for `harness_config` over the wire, and assert the answer, premises and the unchanged tool-subset result. A second case must submit a profile without `shellProficiency` and assert the `tool_set` abstention. | Test: `tests/decide/test_harness_config_served.py::test_harness_config_end_to_end` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129 Promoted rules cannot contradict a stored invariant (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Promoted rules cannot contradict a stored invariant (rollup).** The engine must check every rule promoted from repeated human overrides against stored invariants. Statistical consensus must never promote a rule that contradicts an invariant. | Test: `crates/eg-types/src/decision/guardrail.rs::tests::promotion_obeys_invariants` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129.1 Locate and wire the attach point Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Locate and wire the attach point.** The implementer must find where a proposal from R034 becomes an active rule and record `file:line` in `plan.md`. | Test: `src/server/handlers/decide/stat_tests/rule_promotion_tests.rs::attach_point_is_reached` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129.2 Typed `RulePromotionVerdict` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed `RulePromotionVerdict`.** Add `RulePromotionVerdict { Promotable, RejectedInvariant { invariant_iri } }` to `crates/eg-types/src/decision/guardrail.rs`. | Test: `crates/eg-types/src/decision/guardrail.rs::tests::verdict_serialises_snake_case` | requirement | EG-DECISION-ENGINE | VERIFIED | dcd3f241e93c crates/eg-types/src/decision/guardrail.rs:215 crates/eg-types/src/decision/guardrail.rs:239 |
| EG-DECISION-ENGINE-R129.3 Pure invariant check Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Pure invariant check.** Add `check_rule_against_invariants(rule, invariants)` to `guardrail.rs`. It must name the first contradicted invariant IRI. | Test: `crates/eg-types/src/decision/guardrail.rs::tests::first_contradicted_invariant_is_named` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129.4 Consensus gives no override Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Consensus gives no override.** The check must run before any confidence threshold. A rule with full human agreement that contradicts an invariant must still be rejected. | Test: `crates/eg-types/src/decision/guardrail.rs::tests::full_consensus_does_not_override` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129.5 Wire the check into promotion Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wire the check into promotion.** The promotion path must call `check_rule_against_invariants` and persist a `RejectedInvariant` record for audit. It must not activate the rule. | Test: `src/server/handlers/decide/stat_tests/rule_promotion_tests.rs::rejected_rule_is_audited_not_active` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129.6 End-to-end proof over the wire Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**End-to-end proof over the wire.** A served test must submit five overrides of a rule that violates a stored invariant and assert rejection. A compatible rule must promote. | Test: `tests/decide/test_rule_promotion_served.py::test_invariant_blocks_promotion` | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130 Calibrated candidate ranking with item-level tie-break (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Calibrated candidate ranking with item-level tie-break (rollup).** The engine ranks candidates by a calibrated relevance score. Candidates that share one code receive an item-level tie-break score instead of one shared score. Children `.1` to `.6` deliver it. [arXiv:2606.08604] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `RankedCandidate{id, calibrated_score, code, tie_break_score, evidence_class}` and `TieBreakPolicy` in `crates/eg-epistemic/src/ranking.rs`. Closed values of `TieBreakPolicy` are `ItemScore` and `StableId`. Proving test: `crates/eg-epistemic/src/ranking.rs::tests::ranked_candidate_round_trips`. | A serde round trip keeps every field and rejects an unknown policy value. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Extend `rank` so the calibrated score orders candidates before sequence likelihood. Candidates with equal codes must be ordered by `tie_break_score`. Each rule is a named replaceable default: `calibrated_first` and `item_level_tie_break`. Proving test: `crates/eg-epistemic/src/ranking.rs::tests::equal_codes_order_by_item_score`. | Three candidates with one code and distinct item scores return in item-score order; the same input gives byte-identical output twice. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The behavior attaches at `crates/eg-epistemic/src/ranking.rs:116` (`rank`). Today only the re-export at `crates/eg-epistemic/src/lib.rs:97` and unit tests reference it. This row creates the call site in the statistical `Decide` path (`crates/eg-compute/src/assemble/conclude.rs`). Proving test: `tests/decide/test_ranked_decide_served.py::test_decide_orders_by_calibrated_score`. | The served `Decide` answer lists options in calibrated order, and a search shows one production caller of `rank`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** When a candidate lacks a calibrated score, the engine must abstain for that option with reason `uncalibrated_candidate`. It must not substitute a likelihood. Proving test: `crates/eg-epistemic/src/ranking.rs::tests::uncalibrated_candidate_abstains`. | A candidate without a calibration receipt yields a typed abstention, and the ranked list omits it. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** Each ranked option must carry `calibrated_score`, `tie_break_applied` and `tie_break_policy` as decision premises in the decision record. The record must state the weakest evidence class of the premises. Proving test: `crates/eg-compute/src/assemble/tests/ranking_premises.rs::premises_name_tie_break`. | The decision record for a tied pair contains `tie_break_applied=true` and the policy name. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R130.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method with a ranking question. The test `tests/decide/test_ranked_decide_served.py::test_tied_codes_resolve_by_item_score` submits tied candidates. It passes through the wired `rank` call and observes the item-score order and the premises in the returned record. | The served answer orders tied candidates by item score and exposes the premises. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131 Limit guard pipeline refuses an order with a typed reason (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Limit guard pipeline refuses an order with a typed reason (rollup).** The engine checks every proposed action against configured limits first. A breach refuses with a typed reason and records an observation linked to the affected signal. Children `.1` to `.6` deliver it. [arXiv:2606.08604] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `LimitRule{id, metric, bound, scope}` and `LimitBreach{rule_id, observed, bound, signal_iri}` in `crates/eg-types/src/decision/limit_guard.rs`. Closed `metric` values are `position_size`, `drawdown` and `sector_concentration`. Proving test: `crates/eg-types/src/decision/limit_guard.rs::tests::limit_types_round_trip`. | A serde round trip keeps every field and rejects an unknown metric. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `check_limits(action, rules)` returning every breach in rule order. Each metric check is a named replaceable default, and a request may only tighten a bound. Proving test: `crates/eg-types/src/decision/limit_guard.rs::tests::check_returns_all_breaches`. | An action that breaches two limits returns two breaches; a loosening request bound is ignored. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The check attaches at `crates/eg-types/src/decision/guardrail.rs:201` (`guardrail_entailment_query`), which already reads the stored rule set. A second call site is created in the `Decide` chokepoint `crates/eg-compute/src/assemble/conclude.rs`, before an option becomes `Advisory`. Proving test: `tests/decide/test_limit_guard_served.py::test_breach_refuses`. | A breaching option never reaches an advisory answer in the served response. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A breach must return `ResolutionKind::Abstention` with reason `limit_breach` naming the rule id. The engine must not perform the action. Proving test: `crates/eg-compute/src/assemble/tests/limit_refusal.rs::breach_abstains_with_rule_id`. | The abstention names the first breached rule and carries no executable option. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The engine must store each breach as an observation node. An edge links it to the affected signal. The observation carries `rule_id`, `observed` and `bound`. Proving test: `crates/eg-compute/src/assemble/tests/limit_refusal.rs::breach_observation_links_signal`. | A graph query from the signal returns the breach observation with its three fields. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R131.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method. The test `tests/decide/test_limit_guard_served.py::test_oversize_order_refused_and_recorded` submits an oversize order. It passes through the wired check and observes the typed refusal and the stored observation node. | The served answer refuses with `limit_breach` and the observation exists. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132 Retrieved entries carry a trust tier and a poisoned-entry check gates premises (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Retrieved entries carry a trust tier and a poisoned-entry check gates premises (rollup).** A retrieved memory or knowledge entry carries provenance and a trust tier. A lower-tier entry must not override a higher-tier fact. A poisoned-entry check must pass before the engine uses an entry as a premise. Children `.1` to `.6` deliver it. | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `TrustTier` (closed values `verified`, `attested`, `unverified`) and `EntryTrust{tier, source_digest, observed_at}` in new `crates/eg-types/src/decision/entry_trust.rs`. `PremiseClass` at `crates/eg-types/src/decision/record/premise.rs:17` grades premise strength, not retrieved-entry origin. `Provenance` at `crates/eg-modality/src/provenance.rs:22` holds a confidence only. Proving test: `crates/eg-types/src/decision/entry_trust.rs::tests::entry_trust_round_trips`. | A serde round trip keeps every field and rejects an unknown tier. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `admit_entries(entries, policy)` in `entry_trust.rs`. An entry of a lower tier must not replace a higher-tier entry on the same subject and fact key. Each rule is a named replaceable default: `tier_order` and `poison_check`. `poison_check` refuses an entry whose source digest is absent from the source record. It also refuses an unverified entry that contradicts a verified fact. The monotone rule at `crates/eg-types/src/decision/ingestion_ladder.rs:46` (`resolve_rung`) is the pattern to reuse. Proving test: `crates/eg-types/src/decision/entry_trust.rs::tests::lower_tier_never_overrides_higher`. | A verified fact survives an unverified contradiction. An entry with an unknown source digest is refused. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** `admit_entries` attaches in `crates/eg-compute/src/assemble/conclude.rs:180`, where premises are built from the required capabilities, before any retrieved entry becomes a premise. The caller is `decide_one` at `conclude.rs:93`, reached from `conclude.rs:87` and `template.rs:74`, and served by `handle_decide` at `src/server/handlers/decide/stat_decide.rs:48`. No production caller of `resolve_rung` exists today. The trust check creates the call site at `conclude.rs:180`. Proving test: `crates/eg-compute/src/assemble/tests/entry_trust_wiring.rs::admit_runs_before_premises`. | The served `Decide` path calls `admit_entries` once per decision. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A refused entry must not become a premise. When a required premise has only refused entries, the engine must abstain with `AbstainReason::PoisonedEntry` naming the entry id and the failed check. `AbstainReason` is exported from `crates/eg-types/src/decision/record/outcome.rs`. Proving test: `crates/eg-compute/src/assemble/tests/entry_trust_refusal.rs::poisoned_only_premise_abstains`. | The abstention names the entry id and carries no executable option. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** `PremiseRef` at `crates/eg-types/src/decision/record/premise.rs:89` gains an optional `trust_tier`. The engine must record each refused or overridden entry in the decision record with its tier and check name. Replay must reproduce the same record. Proving test: `crates/eg-compute/src/assemble/tests/entry_trust_refusal.rs::refused_entries_are_recorded`. | The record lists every refused entry with tier and check name. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R132.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method. The test submits a decision whose candidate set holds a verified fact and an unverified contradicting entry. It passes through the wired check at `conclude.rs:180` and observes that the verified fact is the premise and the unverified entry is recorded as refused. Proving test: `tests/decide/test_entry_trust_served.py::test_unverified_entry_cannot_override_verified`. | The served answer uses the verified fact and lists the refused entry. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133 The engine stores each agent run as a trace fact and decides its runtime quotas (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The engine stores each agent run as a trace fact and decides its runtime quotas (rollup).** The engine stores an execution trace for each agent run as a typed fact. The engine decides the wall time, memory, process count and grace period of a run and hands them to the harness. Children `.1` to `.6` deliver it. | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `RunTraceRecord{run_id, task_signature, steps, outcome, started_at}` and `RuntimeQuota{wall_time_ms, memory_bytes, process_count, grace_ms}` in new `crates/eg-types/src/decision/run_governance.rs`. Add `QuestionKind::RuntimeQuota` at `crates/eg-types/src/decision/statistical.rs:58`. Proving test: `crates/eg-types/src/decision/run_governance.rs::tests::quota_round_trips`. | A serde round trip keeps every field and rejects an unknown field. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add the pure function `decide_runtime_quota(task_class, policy, request)` in `run_governance.rs`. For each field resolve an effective default D and hard tenant ceiling C with D <= C. Named replaceable `QuotaDefaults` are `wall_time_ms` 600000, `memory_bytes` 2147483648, `process_count` 32 and `grace_ms` 10000. First refuse any requested R > C; otherwise use min(D, R), or D when omitted. Increases above D through C are ignored and reductions below D tighten the quota. Proving test: `crates/eg-types/src/decision/run_governance.rs::tests::request_only_tightens_quota`. | For D=10 and C=20, omission returns 10, R=5 returns 5, R=15 and R=20 return 10, and R=21 refuses before clamping. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The decision attaches in `handle_decide` at `src/server/handlers/decide/stat_decide.rs:134`, where `tool_subset_outcome` is matched; a new `runtime_quota_outcome` is matched beside it. The caller is `Method::Decide` through `handle_decide` at `stat_decide.rs:48`. `Decide` remains read-only. A separate served `CommitWorkItemResult` reuses `lower_terminal_outcome_extensions` in `src/server/mutation_batch/terminal_outcome.rs:22` and `apply_commit_work_item_result_row` in `src/redb_store/work_item/commit.rs:211`; trace receipts and their produced link may materialize only after the successful fenced terminal CAS in the same transaction. `RunTraceRecord` adaptation and produced-link materialization are new work; `outcome_bundle.rs:56` is a participant-domain constant, not a write call. Proving test: `src/server/handlers/decide/stat_tests/runtime_quota_tests.rs::decide_routes_runtime_quota`. | The served `Decide` answer for `RuntimeQuota` returns the four values. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A quota request above any hard tenant ceiling must refuse with `StatisticalErrorCode::ParameterInvalid` before clamping or missing-task fallback. A missing task class must abstain with the effective defaults D (resolved under C) and a `Claim`-class premise naming the missing fact. Proving test: `src/server/handlers/decide/stat_tests/runtime_quota_tests.rs::missing_task_class_abstains_to_default`. | The abstention carries effective defaults and names the missing task class; an above-ceiling request still refuses when the task class is missing. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The terminal commit must adapt `RunTraceRecord` into a `RunTrace` receipt and materialize its execution-unit `produced` link after the fenced terminal CAS in `src/redb_store/work_item/commit.rs:343`. Reuse the pure node/edge descriptors from `project` at `crates/eg-durable/src/project.rs:68`; adaptation and link materialization are new, and `project` performs no writes. Each decided quota value must appear as a premise, and each default used must be named. Proving test: `src/redb_store/work_item/commit.rs::tests::run_trace_is_linked_to_unit`. | After a successful terminal commit, a graph query from the execution unit returns the trace node; a fenced refusal, no-op or retry scheduling creates no trace or link. The decision record lists each default used. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The test `tests/decide/test_runtime_quota_served.py::test_quota_and_trace_end_to_end` first queries quotas through served `Decide` with a `RuntimeQuota` question, then commits the run summary through served `CommitWorkItemResult` with the terminal outcome extension. It inspects quota premises and queries the persisted execution-unit-to-trace link after the fenced terminal commit. Proving test: `tests/decide/test_runtime_quota_served.py::test_quota_and_trace_end_to_end`. | Decide returns tightened quotas without a trace write; the subsequent successful CommitWorkItemResult stores the trace and produced link, while an invalid fence stores neither. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134 The engine selects tools, decomposes tasks and plans over the skill library (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The engine selects tools, decomposes tasks and plans over the skill library (rollup).** The engine chooses the tools for a run by relevance search over the fleet catalog. It decomposes a task into independent subtasks, routes each to a specialist and picks the aggregation operator. It plans over the skill library from skill metadata only. Children `.1` to `.8` deliver it. [arXiv:2605.15132] [arXiv:2606.18051] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `Subtask{id, text, independent, depends_on}`, `AggregationOp` (closed values `concat`, `majority_vote`, `reduce`, `first_valid`), `SkillStep{subtask_id, skill_id, depends_on}` and `TaskPlan` in new `crates/eg-types/src/decision/task_plan.rs`. Add `QuestionKind::ToolRelevance` and `QuestionKind::TaskPlan` at `crates/eg-types/src/decision/statistical.rs:58`. Proving test: `crates/eg-types/src/decision/task_plan.rs::tests::task_plan_round_trips`. | A serde round trip keeps every field and rejects an unknown aggregation value. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `rank_tools_by_relevance(query, catalog, required_capabilities, context_budget_tokens, policy)` in `task_plan.rs`. First filter by `relevance_floor`, rank descending by relevance with tool-id ties, and retain `top_k` candidates. Then pass those candidates and the explicit required capabilities and token budget to the existing R045 `smallest_covering_subset` at `crates/eg-types/src/decision/statistical/tool_subset.rs:59`. Its selection remains greedy uncovered-capability gain per token, then lower token cost and tool id; relevance is a prefilter, not the subset objective. Preserve its coverage/budget refusals after filtering. The defaults are `top_k` 12 and `relevance_floor` 0.2. The existing code to move is `agent_utilities/capabilities/fleet_tool_search.py:54`. Proving test: `crates/eg-types/src/decision/task_plan.rs::tests::relevant_tools_fit_budget`. | Assert floor/top-k filtering first, then the exact R045 coverage-per-token selection and deterministic cost/id ties within the budget. Include a lower-relevance retained tool that wins on coverage per token and a filtered catalog that cannot cover required capabilities; do not assert relevance optimality. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.3 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `decompose_task(task, facts, policy)` in `task_plan.rs`. It returns subtasks, routes each to a specialist, sets `independent` per subtask and chooses an `AggregationOp`. `TopologyRequirements.subtasks` at `topology.rs:110` receives the independent count. Each rule is a named replaceable default: `independence_test` and `default_aggregation`. The existing code to move is `agent_utilities/graph/planning/__init__.py:165`. [arXiv:2605.15132] Proving test: `crates/eg-types/src/decision/task_plan.rs::tests::independent_subtasks_set_flag_and_operator`. | Two independent subtasks yield `independent=true` for both and a `majority_vote` or `concat` operator. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.4 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `plan_over_skills(query, skill_index, policy)` in `task_plan.rs`. It decomposes the query into atomic subtasks. It retrieves one skill per subtask from skill metadata only. It merges or splits subtasks when the retrieved skills show a different granularity. It orders steps by `depends_on`. The existing code to move is `agent_utilities/decide/consumers/task_planner.py:211`. [arXiv:2606.18051] Proving test: `crates/eg-types/src/decision/task_plan.rs::tests::plan_respects_dependencies`. | Every step appears after the steps it depends on, and each step names one skill. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.5 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The decisions attach in `handle_decide` at `src/server/handlers/decide/stat_decide.rs:134`, where `tool_subset_outcome` is matched; `tool_relevance_outcome` and `task_plan_outcome` are matched beside it. The topology question is already posed at `crates/eg-compute/src/assemble/topology.rs:54` (`pose`), called from `conclude.rs:99`. The skill index is read through `AgentLibraryStore` at `src/server/handlers/decide/candidates.rs:415`. The match arms create the call site. Proving test: `src/server/handlers/decide/stat_tests/task_plan_tests.rs::decide_routes_task_plan`. | The served `Decide` answer for each new kind returns a typed plan or tool list. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.6 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A subtask with no skill above `relevance_floor` must abstain with `no_skill_for_subtask` naming the subtask id. A dependency cycle must refuse with `plan_cycle`. An empty catalog must abstain with `empty_catalog`. Proving test: `src/server/handlers/decide/stat_tests/task_plan_tests.rs::uncovered_subtask_abstains`. | The abstention names the first uncovered subtask and carries no plan. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.7 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The engine must emit one premise per subtask holding the chosen skill, its relevance score and the independence flag. It must emit the aggregation operator and the default used as premises. The record must state the weakest evidence class. Proving test: `src/server/handlers/decide/stat_tests/task_plan_tests.rs::premises_name_skill_and_flag`. | The decision record lists skill, score and flag for every subtask. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.8 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method with a `TaskPlan` question. The test `tests/decide/test_task_plan_served.py::test_plan_end_to_end` publishes a skill index and submits a query. It passes through the wired dispatch and observes the ordered steps, the flags and the aggregation operator. Proving test: `tests/decide/test_task_plan_served.py::test_plan_end_to_end`. | The served answer returns dependency-ordered skill steps with premises. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135 A successful run compiles into a stored program keyed by task signature (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**A successful run compiles into a stored program keyed by task signature (rollup).** The engine compiles a successful run into a stored state-machine program keyed by task signature. Literals become parameters, and a program holds at most 40 steps. The engine returns a program by task signature. Children `.1` to `.6` deliver it. [arXiv:2606.17929] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `CompiledProgram{task_signature, steps, parameters, source_run_id}`, `ProgramStep{state, action, next}` and `MAX_PROGRAM_STEPS` (40) in new `crates/eg-types/src/decision/program_store.rs`. Add `QuestionKind::ProgramLookup` at `crates/eg-types/src/decision/statistical.rs:58`. Proving test: `crates/eg-types/src/decision/program_store.rs::tests::program_round_trips`. | A serde round trip keeps every field and rejects a program with more than 40 steps. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `compile_program(trace, policy)` in `program_store.rs`. It replaces each literal in the trace with a named parameter and keeps the step order. The named replaceable defaults are `max_steps` 40 and `literal_to_parameter`. `lookup_program(store, task_signature)` returns the stored program or none. The existing code to move is `agent_utilities/observability/replay_engine.py:48`. [arXiv:2606.17929] Proving test: `crates/eg-types/src/decision/program_store.rs::tests::literals_become_parameters`. | Two traces that differ only in literals compile to one program with parameters. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The lookup attaches in `handle_decide` at `src/server/handlers/decide/stat_decide.rs:134`, where `program_lookup_outcome` is matched beside `tool_subset_outcome`. Programs are stored through `AgentLibraryStore`, the store `read_candidates` uses at `src/server/handlers/decide/candidates.rs:415`. The commit path is `handle_decision_commit`. The match arm and the store write create the call site. Proving test: `src/server/handlers/decide/stat_tests/program_store_tests.rs::decide_routes_program_lookup`. | The served `Decide` answer for `ProgramLookup` returns the stored program. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A run that did not succeed must refuse with `run_not_successful`. A trace that compiles to more than 40 steps must refuse with `program_too_long`. A lookup with no stored program must abstain with `no_program`. Proving test: `src/server/handlers/decide/stat_tests/program_store_tests.rs::overlong_trace_is_refused`. | The refusal names the reason and the step count, and nothing is stored. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The engine must emit premises for the task signature, the step count, the parameter count and the source run id. A stored program must link to its source `RunTrace` node from `EG-DECISION-ENGINE-R133`. Proving test: `src/server/handlers/decide/stat_tests/program_store_tests.rs::program_links_source_trace`. | A graph query from the program returns its source trace node. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method with a `ProgramLookup` question. The test `tests/decide/test_program_store_served.py::test_compile_then_lookup` commits a successful trace, then looks up its signature. It passes through the wired dispatch and observes the stored program with parameters. Proving test: `tests/decide/test_program_store_served.py::test_compile_then_lookup`. | The second call returns the program committed by the first. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136 The engine gives the round verdict and allocates models per evolution stage (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The engine gives the round verdict and allocates models per evolution stage (rollup).** The engine compares the next round's task outcomes with the declared prediction and returns a verdict. The engine allocates a model to each evolution stage under a run budget and hands the harness the allocation and the limit. Children `.1` to `.7` deliver it. [arXiv:2604.25850] [arXiv:2604.07725] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `PredictionDeclaration{round, fixes, regressions}`, `RoundVerdict` (closed values `verified`, `falsified`, `unverified`) and `EvolutionDefaults{rounds, flip_fraction}` in new `crates/eg-types/src/decision/evolution_round.rs`. Add `StageAllocation{stage, model_ref, impact}` and `RunBudget{max_cost, max_stronger_stages}`. Add `QuestionKind::RoundVerdict` and `QuestionKind::StageAllocation` at `statistical.rs:58`. Proving test: `crates/eg-types/src/decision/evolution_round.rs::tests::round_types_round_trip`. | A serde round trip keeps every field and rejects an unknown verdict. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `decide_round_verdict(prediction, outcomes, defaults)` in `evolution_round.rs`. Evaluate declared-direction and opposite-direction fractions separately against `flip_fraction`. Return `verified` only when the declared-direction threshold alone is met; return `falsified` only when the opposite-direction threshold alone is met. If both thresholds or neither threshold is met, return `unverified`. The defaults are `rounds` 1 and `flip_fraction` 0.5. [arXiv:2604.25850] Proving test: `crates/eg-types/src/decision/evolution_round.rs::tests::verdict_follows_flip_fraction`. | At flip_fraction=0.5, six of ten flipping as declared and four opposite yields `verified`; four as declared and six opposite yields `falsified`; five each yields `unverified`. Neither threshold met also yields `unverified`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.3 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `allocate_stage_models(stages, models, budget)` in `evolution_round.rs`. It gives a stronger model only to the highest-impact stages while the cost stays within `max_cost`. Every other stage gets the cheapest adequate model. The named replaceable default is `impact_first`. The existing code to move is `agent_utilities/decide/consumers/routing.py:58`. [arXiv:2604.07725] Proving test: `crates/eg-types/src/decision/evolution_round.rs::tests::stronger_models_go_to_high_impact_stages`. | With a budget for one stronger stage, only the top-impact stage gets the stronger model. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.4 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** Both decisions attach in `handle_decide` at `src/server/handlers/decide/stat_decide.rs:134`, where `tool_subset_outcome` is matched; `round_verdict_outcome` and `stage_allocation_outcome` are matched beside it. The caller is `Method::Decide` through `handle_decide` at `stat_decide.rs:48`. Model facts come from the model profile read at `candidates.rs:415`. The match arms create the call site. Proving test: `src/server/handlers/decide/stat_tests/evolution_round_tests.rs::decide_routes_round_kinds`. | The served `Decide` answer for each kind returns a typed verdict or allocation. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.5 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A prediction with no declared tasks must abstain with `no_prediction`. A budget below the cheapest allocation must refuse with `budget_below_minimum` naming the shortfall. A missing impact estimate must abstain to the cheapest adequate model. Proving test: `src/server/handlers/decide/stat_tests/evolution_round_tests.rs::empty_prediction_abstains`. | The abstention names the missing input and carries no verdict. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.6 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The engine must emit premises for the flip fraction used, the counts of tasks that flipped each way and the verdict. For an allocation it must emit the budget, the cost and each stage's impact. Defaults used must be named. Proving test: `src/server/handlers/decide/stat_tests/evolution_round_tests.rs::premises_name_counts_and_budget`. | The decision record lists the counts, the budget and each default used. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.7 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method with a `RoundVerdict` question, then a `StageAllocation` question. The test `tests/decide/test_evolution_round_served.py::test_verdict_and_allocation` submits a prediction with outcomes and a stage list. It passes through the wired dispatch and observes the verdict and the allocation within the budget. Proving test: `tests/decide/test_evolution_round_served.py::test_verdict_and_allocation`. | The served answers return the verdict and an allocation within the limit. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137 The engine decides the context budget and the limits of recursive parallel work (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The engine decides the context budget and the limits of recursive parallel work (rollup).** The engine decides the context policy, the window budget and the over-window margin. It decomposes an over-window prompt recursively under a depth and cost budget. It fixes the depth, item, cost and model-call limits of parallel-map work. Children `.1` to `.6` retain those obligations. Children `.7` to `.12` add certified multi-resolution context-package selection under window, reserved output, caller, monetary and latency budgets. [arXiv:2512.24601] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `ParallelMapLimits{max_depth, max_items, max_cost, max_model_calls}`, `WindowBudget{window_tokens, over_window_fraction}` and `OverWindowPlan{exceeds, chunks, depth}` in new `crates/eg-types/src/decision/context_budget.rs`. Add `QuestionKind::ContextBudget` at `statistical.rs:58`. `ContextPolicy` at `crates/eg-types/src/decision/statistical/harness_config.rs:81` is reused. Proving test: `crates/eg-types/src/decision/context_budget.rs::tests::context_budget_round_trips`. | A serde round trip keeps every field and rejects an unknown field. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `decide_over_window(prompt_tokens, budget, limits)` in `context_budget.rs`. The prompt exceeds the window when `prompt_tokens` passes `over_window_fraction` of `window_tokens`. The plan then splits the prompt into chunks, depth by depth, until each chunk fits or `max_depth` or `max_cost` is reached. The named replaceable defaults are `over_window_fraction` 0.8, `max_items` 1000, `max_depth` 3 and `max_model_calls` 1000. The existing code to move is `agent_utilities/rlm/config.py:60` and `agent_utilities/knowledge_graph/retrieval/context_knapsack.py:422`. [arXiv:2512.24601] Proving test: `crates/eg-types/src/decision/context_budget.rs::tests::over_window_prompt_is_split_within_limits`. | A prompt at 0.9 of the window yields a plan whose chunks each fit and whose depth stays within the limit. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The decision attaches in `handle_decide` at `src/server/handlers/decide/stat_decide.rs:134`, where `tool_subset_outcome` is matched; `context_budget_outcome` is matched beside it. The context policy comes from the `harness_config` decision of `EG-DECISION-ENGINE-R128.5`. The window comes from the model profile read at `candidates.rs:415`. The match arm creates the call site. Proving test: `src/server/handlers/decide/stat_tests/context_budget_tests.rs::decide_routes_context_budget`. | The served `Decide` answer for `ContextBudget` returns the policy, the budget and the plan. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A prompt that cannot fit within `max_depth` and `max_cost` must refuse with `budget_exhausted` naming the limit reached. A work list above `max_items` must refuse with `too_many_items`. A missing window size must abstain with the policy default. Proving test: `src/server/handlers/decide/stat_tests/context_budget_tests.rs::too_many_items_is_refused`. | The refusal names the limit and the observed count, and carries no plan. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The engine must emit premises for the window, the prompt size, the fraction used and each limit applied. Each default used must be named. The record must state the weakest evidence class. Proving test: `src/server/handlers/decide/stat_tests/context_budget_tests.rs::premises_name_window_and_limits`. | The decision record lists the window, the fraction and every default used. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method with a `ContextBudget` question. The test `tests/decide/test_context_budget_served.py::test_over_window_plan_end_to_end` publishes a model profile and submits an over-window prompt size. It passes through the wired dispatch and observes the plan and the limits handed to the harness. Proving test: `tests/decide/test_context_budget_served.py::test_over_window_plan_end_to_end`. | The served answer returns a chunk plan within the limits. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.7 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Extend the planned `crates/eg-types/src/decision/context_budget.rs` with typed package records. `ContextPackageCandidate` carries a stable candidate id, evidence-unit/resolution group, resolution, source id and cited range. It also carries source revision/content digest, tokenizer identity/version, exact measured token weight, value and measurement provenance. `ContextPackageBudget` carries window tokens, reserved output tokens and an optional caller token ceiling. It carries monetary ceiling, per-input-token price, latency ceiling and token throughput with units and known/unknown facts. `ContextPackageSelection` carries chosen candidate ids, effective capacity, token/cost/latency totals, objective, input/model/certificate digests and verified status. The request includes the marginal value floor and deterministic solver budget. These are planned records, not existing wire fields. Proving test: `crates/eg-types/src/decision/context_budget.rs::tests::package_records_round_trip`. | Round trips preserve every constraint, source/range/revision and measurement identity. Validation rejects duplicate candidate ids, inconsistent resolution groups and malformed ranges. Negative/nonfinite measurements and arithmetic overflow refuse before solving. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.8 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Lower package candidates to the existing bounded 0-1 solver model under R014. Select at most one resolution per evidence unit. Limit total exact token weight to `max(0, min(window - reserved_output, caller_ceiling, floor(money / price), floor(latency * throughput)))`. Include each optional ceiling only when supplied and its required facts are known. Use checked, unit-normalized arithmetic and round capacity downward to whole tokens without exceeding any ceiling. A known zero price makes monetary capacity unbounded. Known zero throughput makes latency capacity zero. Missing rates for active ceilings remain unknown under R018. Preserve the source objective: maximize summed net value `round_ties_even((value - floor_per_token * weight) * 1_000_000)`, then minimize total tokens. Record scale/rounding and stable candidate order. Reuse `crates/eg-compute/src/solve/model/` constraint primitives and `solve::solve`; add no selector authority. Proving test: `crates/eg-compute/src/solve/tests/context_package.rs::matches_tiny_multiresolution_oracle` (planned). | Exhaustive tiny models match the optimum and fewer-token tie-break. Independent window, output reservation, caller, money and latency cases each become the tightest bound; fractional and zero-capacity boundaries never overrun. Changing candidate order must not change objective or totals; remaining ties use the recorded stable order. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.9 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** Extend the planned `ContextBudget` arm beside `tool_subset_outcome` in `src/server/handlers/decide/stat_decide.rs:134` to accept package records. Lower and solve them through the existing EG solver. Independently verify the certificate before sealing the served `Decide` result. Reuse R004/R049 through `crates/eg-compute/src/solve/search/mod.rs:29` and `crates/eg-compute/src/solve/verify/mod.rs:23`. Preserve existing tenant, policy, candidate visibility and record-sealing checks. The current dispatch lacks this arm. A generic `Solve` response is not the completed `ContextBudget` contract. Proving test: `src/server/handlers/decide/stat_tests/context_budget_tests.rs::decide_routes_package_selection` (planned). | An authenticated served `Decide` request reaches package lowering, solver, independent verifier and sealed typed answer. The test rejects an unwired helper or local selection that replaces any step. Package selection, whole-prompt fit and R137.1–.6 recursive decomposition remain distinct operations. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.10 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** The planned package handler in `src/server/handlers/decide/stat_decide.rs` returns typed outcomes naming the candidate, fact or bound. Outcomes include `invalid_measurement`, `missing_required_fact`, `no_admissible_package`, `stale_source`, `work_budget_exhausted` and `certificate_unacceptable`. They carry no certified package. Missing tokenizer/mandatory window, missing rates for active ceilings and unknown objective facts cannot become zero or estimates (R018). An empty selection abstains. Exhausted deterministic search preserves R011 unresolved/gap evidence. Only an independently verified optimal result with zero gap satisfies this package's certified optimum acceptance. A greedy fallback or feasible incumbent alone cannot qualify as certified. Proving test: `src/server/handlers/decide/stat_tests/context_budget_tests.rs::package_refusals_are_typed` (planned). | Negative cases cover invalid/missing measurements, no fitting nonempty package, empty/zero-capacity results and stale revisions. Work exhaustion tests cover no incumbent and unacceptable gaps. Certificate tests corrupt the proof, digests and selection bindings. No refusal silently relaxes a ceiling or returns a certified selection. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.11 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** Extend the planned `context_budget.rs` package result and the `stat_decide.rs` sealed record. Bind the complete candidate universe, including unchosen resolutions, with source/range/revision and content digests. Bind tokenizer measurements/provenance, full original budget, derived capacity and objective/rounding policy. Bind solver configuration/version, model digest and independently checked certificate digest/status. Recompute chosen token, monetary and latency totals from those inputs. Totals unavailable because an unused rate is unknown stay explicitly unknown. The consumer contract is AU-CONTEXT-R004: apply the exact chosen ids/resolutions without reranking or substituting content, and retain citations. A changed source or budget requires a fresh decision. Proving test: `src/server/handlers/decide/stat_tests/context_budget_tests.rs::package_evidence_binds_inputs` (planned). | Changes to unchosen candidates, token weights, tokenizer, cited ranges or revisions invalidate reuse. So do changes to active rates, output reservation, ceilings or objective. Independent recomputation checks selection, totals and certificate against the bound model. The record states the weakest evidence class and all defaults used. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.12 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** Add `tests/decide/test_context_package_served.py::test_certified_package_end_to_end`. Enter the real served `Decide` method with a `ContextBudget` package request. Observe the typed, verified selection through the R137.9 dispatch. Cross-repository acceptance depends on AU-CONTEXT-R004's served context-compile consumer applying that result unchanged. Source/range/revision citations must survive. Link its public receipt; the consumer implementation belongs to its owner. A tiny multi-resolution exhaustive oracle proves optimality and fewer-token ties. Isolate each capacity and refusal from R137.8/R137.10. Proving test: `tests/decide/test_context_package_served.py::test_certified_package_end_to_end` (planned). | The EG served receipt records source SHA, features/configuration, exact command, input/model/certificate digests and results. The linked AU receipt records its SHA, served caller and applied package/citations. Cover reserved output, monetary/latency ceilings, caller/window limits, fractional rounding, zero capacity, unknown rates, stale sources and rejected certificates. Unit-only solves, mock transports, greedy fits, planned test names and documentation commits do not establish this proof. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138 The engine holds red-team records and returns a verdict for each probe (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**The engine holds red-team records and returns a verdict for each probe (rollup).** The engine holds the red-team attack, transform and scorer records. It selects scorers for each probe and returns the verdict. Children `.1` to `.6` deliver it. [arXiv:2605.04019] | See each child. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Add `RedTeamAttack{id, category, goal}`, `RedTeamTransform{id, kind}`, `RedTeamScorer{id, category, threshold}` and `ProbeVerdict` (closed values `resisted`, `compromised`, `inconclusive`) in new `crates/eg-types/src/decision/red_team.rs`. Add `QuestionKind::ProbeVerdict` at `statistical.rs:58`. Proving test: `crates/eg-types/src/decision/red_team.rs::tests::red_team_records_round_trip`. | A serde round trip keeps every field and rejects an unknown verdict. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Add `select_scorers(attack, scorers, policy)` and `decide_probe_verdict(results, policy)` in `red_team.rs`. A scorer is selected when its category matches the attack category. The verdict is `compromised` when any selected scorer passes its threshold, `resisted` when all fail it, otherwise `inconclusive`. The named replaceable defaults are `category_match` and `any_scorer_compromises`. The existing code to move is `agent_utilities/harness/reliability_scorers.py:1`. [arXiv:2605.04019] Proving test: `crates/eg-types/src/decision/red_team.rs::tests::one_passing_scorer_compromises`. | One passing scorer among three yields `compromised`; three failing scorers yield `resisted`. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.3 Wiring Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring.** The decision attaches in `handle_decide` at `src/server/handlers/decide/stat_decide.rs:134`, where `tool_subset_outcome` is matched; `probe_verdict_outcome` is matched beside it. The records are stored and read through `AgentLibraryStore`, the store `read_candidates` uses at `src/server/handlers/decide/candidates.rs:415`. The match arm and the record store create the call site. Proving test: `src/server/handlers/decide/stat_tests/red_team_tests.rs::decide_routes_probe_verdict`. | The served `Decide` answer for `ProbeVerdict` returns the selected scorers and the verdict. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.4 Refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Refusal.** A probe whose attack category has no scorer must abstain with `no_scorer_for_category` naming the category. A scorer result with a missing score must count as `inconclusive`, not as `resisted`. Proving test: `src/server/handlers/decide/stat_tests/red_team_tests.rs::missing_scorer_abstains`. | The abstention names the category and carries no verdict. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** The engine must emit one premise per selected scorer holding its score and threshold. It must emit the attack and transform ids. The record must state the weakest evidence class. Proving test: `src/server/handlers/decide/stat_tests/red_team_tests.rs::premises_name_scorers_and_scores`. | The decision record lists each scorer with score and threshold. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.6 Hot-path proof Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Hot-path proof.** The entry point is the served `Decide` wire method with a `ProbeVerdict` question. The test `tests/decide/test_red_team_served.py::test_probe_verdict_end_to_end` publishes attack, transform and scorer records and submits probe results. It passes through the wired dispatch and observes the selected scorers and the verdict. Proving test: `tests/decide/test_red_team_served.py::test_probe_verdict_end_to_end`. | The served answer returns the verdict with premises for each scorer. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139 Comparative-analysis plan producer (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Comparative-analysis plan producer (rollup).** EG emits a revision-pinned plan for zero-model vector discovery, selective synthesis in one or two model-service calls, and high-weight-only deep extraction. Every stage has an explicit call budget and the plan has a total ceiling. EG returns a plan and premises; AU owns generation and the separate invocation receipt. R080.1 and R136.3 are adjacent reusable mechanisms, not comparative-analysis coverage. | Served `Method::Decide` returns the plan with zero model calls during discovery; AU invokes only budgeted synthesis/extraction. Stale inputs and exhausted budgets refuse before a later call. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.1 Model Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Model.** Define `ComparativeAnalysisRequest`, `ComparativeCandidate{candidate_id, candidate_revision, score, importance}`, `ComparativeAnalysisStage`, `ComparativeStageBudget`, `ComparativeAnalysisPlan`, `ComparativeAnalysisRefusal` and `ComparativeAnalysisEvidence`; add `QuestionKind::ComparativeAnalysisPlan` serialized as `comparative_analysis_plan`. Define `ComparativeAnalysisPlan` fields `plan_digest`, `tenant_id`, `space_id`, `space_revision`, `query_vector_digest`, `unified_query_result_digest`, `candidates`, `policy_version`, `synthesis_importance_threshold`, `extraction_importance_threshold`, `stage_budgets` and `total_call_ceiling`. Each ordered candidate has `candidate_id`, `candidate_revision`, `score` and `importance`. Each ordered stage budget has `stage` and `max_calls`. Reuse the existing 64-candidate decision limit. The EG plan contains no generated text or AU execution receipt. | Round-trip every binding, candidate, threshold, stage budget and question kind; reject malformed, duplicate and over-limit candidates. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.2 Behavior Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Behavior.** Reuse only caller-supplied, revision-pinned vectors and completed `UnifiedQuery` results; discovery makes exactly zero model-service calls and does not synthesize embeddings. Preserve visible-candidate stable order. Versioned defaults select synthesis candidates at normalized importance `>= 0.50` and extraction candidates at `>= 0.80`. Budgets are discovery `0`, synthesis `1` or `2`, extraction `0–64`; stage sums must fit an explicit total ceiling. The AU caller must not retry implicitly or issue an unbudgeted subcall. | Prove zero-call discovery, inclusive thresholds, stable ties, one/two-call synthesis, high-weight-only extraction, and refusal before it crosses a stage or total budget. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.3 Wiring and authority Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Wiring and authority.** Add the question to public `Method::Decide`: wire dispatch -> `src/server/handlers/decide/statistical.rs::handle_decide` -> `src/server/handlers/decide/stat_decide.rs::handle_decide`. EG validates pinned inputs and returns only a plan/refusal; it never invokes a model or treats AU output as EG-produced. AU may invoke only after plan receipt, at its existing `agent_utilities/knowledge_graph/retrieval/context_compiler_serving.py::compiled_chat_completion` boundary. `AU-HARNESS-R024.3` trace digests do not establish a comparative-analysis consumer contract. | Actual Decide dispatch returns a plan without calling a model transport. Current AU main defines no R139 consumer or receipt at this boundary. The pending dependency is reserved as `AU-SEMANTIC-R030` and `.1`–`.6` in `specs/au-semantic-client`; its owner must define and serve-test it. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.4 Typed refusal Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed refusal.** Before returning a consumable plan, refuse missing/stale query inputs or candidate revisions; invisible, malformed, duplicate or over-limit candidates; importance outside `[0,1]`; invalid threshold ordering; absent/invalid stage budgets; and stage sums above total. A stage that cannot fit its remaining ceiling refuses with stage, requested and remaining calls. Never clamp, return a partial plan or make a model call on refusal. | Served negative cases cover stale bindings, invalid values, and each stage/total exhaustion; observe typed refusal and zero model calls. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.5 Evidence Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Evidence.** Bind plan digest to tenant/space revision, query-vector/result digests, exact visible candidate IDs/scores/weights/order, policy and thresholds, and stage/total budgets. The proposed AU receipt fields are `plan_digest`, `run_id`, `caller_id`, `actual_stage_calls` (ordered `{stage, call_count}` entries), `request_digest`, `result_digest`, `status` (`completed` or `refused`) and `refusal_code` (refusal only; `result_digest` is absent on refusal). AU validates each stage and total ceiling. EG records premises and plan only and cannot mint or attest this receipt. | Mutating a bound input changes the plan digest; AU receipt validation rejects a mismatched plan or calls above budget. EG stores no generated output and makes no claim about AU execution evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.6 Served acceptance Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Served acceptance.** Exercise the authenticated EG `Method::Decide` producer positively and with stale/over-budget refusals, then exercise the separate served AU consumer receiving the plan and invoking its configured service only within synthesis/extraction budgets. Use the real adapters, not only the pure planner. Preserve R080.1/R136.3 as adjacent mechanisms. | EG: `tests/decide/test_comparative_analysis_served.py::test_plan_and_refusal_through_served_decide`. AU: `tests/decide/test_comparative_analysis_consumer.py::test_served_consumer_obeys_plan_and_binds_invocation_receipt`. The AU consumer and receipt remain pending the reserved `AU-SEMANTIC-R030` definition and owner-served test. Both exact source SHAs and receipts are required for an end-to-end claim. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R100.101 Grounded topic coverage and probability-scored unsupported claims Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Grounded topic coverage and probability-scored unsupported claims.** Extend `DecisionEval` with `GroundedAnswerSubmit` and `GroundedAnswerEvaluationV1`. Bind corpus/query/answer/claim/citation revisions and digests. Record scope (`single_document`, `local_multi_document`, `global_corpus`), evaluator/policy revisions and independent label-set revision/digest. Each query carries a nonempty `ExpectedTopicSetV1` of unique required topic ids. For each expected topic, bind answer claim ids mapped to it and per-claim/per-citation support votes. A topic is covered only when a mapped answer claim cites a source labeled supporting. Its valid support-vote fraction must meet `minimum_topic_support_probability`. Fewer than `minimum_valid_votes` refuses scoring. Return exact `expected_topic_ids` and `covered_topic_ids`. Per scope, coverage is `sum(|covered_topic_ids|) / sum(|expected_topic_ids|)` over the complete pinned query set, not an average of per-query ratios. Require exactly one `GroundedClaimPredictionV1` per scored claim. Bind claim/answer/input digests and pinned scorer id/revision/artifact digest. The scorer cannot access evaluation labels. It supplies fixed-point predicted unsupported probability `p_i` in [0,1]. Independently labeled votes bind unique annotator refs and `unsupported_votes`/`supported_votes`. Set target `q_i = unsupported_votes / valid_votes_i`. `C` is the complete required claim set. Each claim needs exactly one prediction and at least one valid independent vote. Missing/extra claims or predictions, duplicate annotator votes, empty `C`, or zero total vote weight refuses before scoring. Report weighted soft-label Brier score `sum(valid_votes_i * (p_i - q_i)^2) / sum(valid_votes_i)` for `i ∈ C`, with numerator, positive denominator `sum(valid_votes_i)`, fixed-point precision and one final rounding rule bound to policy. Label votes never stand in for detector predictions. Preserve R100's independent-outcome hard-negative join. `Method::UnifiedQuery` supplies retrieved evidence and `Method::DecisionEval` seals the receipt. The scorer and AU answer/topic/label producers must bind their independent provenance. WebUI remains a consumer. Source objective EG:18 SHA-256 `d978b4b4201059c2e7bcc7a78def0d5845cf7db1e361f2f50ee57f8bcc5733ae`. | Serve fixtures with known expected/covered topic sets and non-unanimous labels. Independently recompute each scope's summed topic numerator and denominator. Recompute weighted Brier numerator and positive vote denominator from distinct predictions and votes. Hold labels fixed and vary only `p_i`. The Brier score must change by the formula while topic coverage remains constant. Refuse empty query, topic or claim sets. Refuse missing/extra predictions or labels, duplicate annotator refs, zero vote denominator or probabilities outside [0,1]. Also refuse label access by the scorer and stale answer/corpus/evidence/scorer/evaluator/policy revisions or digests. Read back exact prediction, label, topic-set and score bindings. AU/scorer producer receipts remain separately required. No implementation is claimed. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R001.100 Quantitative physical/safety bounds before recommendation surfacing Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Quantitative physical/safety bounds before recommendation surfacing.** Extend `Method::Decide` with `RecommendationSafetyV1`. Bind recommendation id/revision/digest, candidate result refs and policy id/revision/digest. Each `SafetyBoundV1` binds its id/revision/digest, metric id/unit, comparator, limit and measured value/source revision. Return each checked bound and a verdict (`pass` or `withheld`). Include the exact violated bound id, configured limit and measured value on refusal. Missing, stale, non-finite, unit-incompatible or unmeasured bounds, unsupported comparators and any out-of-bound metric withhold the recommendation. EG emits the bound evaluation result only. GraphOS must invoke and validate it before surfacing a recommendation. Its exact producer/consumer operation and served receipt are a pending companion prerequisite, not covered by this EG definition. Preserve partial `AU-HARNESS-R021.4/.6/.7`. Those do not prove a pre-surface gate. Source objective GRAPHOS:19 SHA-256 `cd33b64c1d759f3c7dd0a83112b77955d25a49c69d20288fe4c917716c711ff6`. | Served cases place an in-bound and out-of-bound recommendation through `Decide`. Verify exact units, values, limits and the withheld bound id. Refuse absent/stale bounds, NaN/infinity, unit mismatch, unsupported comparator, missing measurement and stale recommendation/policy digests. Assert GraphOS cannot surface until it supplies the separately served pre-surface validation receipt. That GraphOS operation remains pending and this requirement does not claim it exists. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.7 Pre-plan test evidence, verifier scores and successful-cycle reuse Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Pre-plan test evidence, verifier scores and successful-cycle reuse.** Define the AU-supplied `PrePlanTestReceiptV1` as `{tenant_id, run_id, repository_id, repository_revision, command_id, command_digest, started_at_ms, completed_at_ms, exit_code, artifact_manifest_digest, artifact_count, result_digest}`. Planning and verification bind the same receipt id/digest. `tests_ran` is true only when command and repository revision match and completion precedes planning. `artifacts_exist` is true only when the non-empty manifest is independently readable at its pinned digest. The verifier returns both booleans, their evidence refs and a policy revision. A reusable pattern requires exit code zero. Both checks must be true. Persist that pattern in the existing `CompiledProgram`/`AgentLibraryStore` model and index it through the existing `ProgramLookup` path (`compile_program` → `AgentLibraryStore` → `handle_decide`). Do not add a second program store. Refuse missing, stale, mismatched or unreadable receipts. Failed tests or artifact checks also block pattern promotion. The AU pre-plan producer/verifier-consumer ID and receipt schema remain pending. `AU-HARNESS-R022.2` is adjacent run-experience coverage, not this contract. Preserve `EG-DECISION-ENGINE-R135.2`, `.3`, `.5`. Source record AU:18 SHA-256 `90828a09b388b9910d870ce944aa2baeb561af14d8f7bf88b48a4d51c4da877f`. | Planned served tests through `handle_decide` and `ProgramLookup`: valid pre-plan evidence is present in both plan and verifier result and only a successful cycle is promoted. Refuse command/revision mismatch, late receipt, unreadable or empty artifact manifest, and nonzero exit. Preserve the prior library. Independently read back receipt, pattern and source trace refs. AU producer/verifier receipts remain a separate dependency. This definition claims no runtime evidence. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R106.1 Council positions are coordinated into one evidence-bound decision Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Council positions are coordinated into one evidence-bound decision.** Extend the existing `Method::Decide` request with `CouncilCoordinationV1`: each closed `CouncilPositionV1` carries `{council_id, topology_revision, position_id, persona_id, persona_revision, option_id, claim_digest, evidence_refs[], constraint_refs[]}`. Each evidence ref carries `{id, revision, digest}`. Bind a caller-pinned `CouncilPolicyV1` id/revision, declared quorum and deterministic conflict rule. The sealed result returns `{council_id, topology_revision, input_position_ids, accepted_position_ids, rejected_position_ids, outcome, abstention_reason, policy_revision, positions_digest, decision_digest}` and retains every participating position ref. `outcome` is selected or abstained. Abstention reason is a closed enum for no quorum, unresolved conflict, missing evidence or policy refusal. Attach the typed branch to existing `Decide`/`handle_decide` and decision sealing. Validate council shape through `AgentGraphDraft.topology` and `topology_shape.rs`. `swarm:loopsBackTo` still describes topology, not position coordination. Refuse missing or duplicate positions and mismatched topology/council. Refuse stale evidence, unauthorized refs, incomplete input coverage or invalid policy without a decision. AU persona-position execution has no reviewed producer contract/id; `AU-CONTROL-R010` supplies topology facts only and is not credited for position production. Preserve `EG-DECISION-ENGINE-R106` and `EG-ORCH-VOCAB-R006.3`. Source record AU:19 SHA-256 `0bce81c137b521ea446644d2880498e23d67c3ab5701f09ba3f67a4b2c0e00fc`. | Planned served tests through `Method::Decide`: coherent quorum returns a sealed result containing all input positions and their evidence digests. Conflicting positions produce the policy-defined choice or typed abstention. Missing, duplicate, stale, cross-tenant or topology-mismatched positions refuse. Independently read back the decision and position refs. AU position-producer acceptance remains a separate pending dependency. No runtime receipt is claimed. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.13 Measured tool-output and graph-size signals select recursive mode in the decision ladder Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Measured tool-output and graph-size signals select recursive mode in the decision ladder.** Extend `Method::Decide` with `QuestionKind::ContextBudget` and closed `ContextBudgetSignalsV1`: `{run_id, tool_output_bytes, tool_output_digest, tool_call_ref, graph_snapshot_ref, graph_node_count, observed_at_ms, signal_digest}` plus a tenant-bound trace/snapshot revision. A pinned `ContextBudgetPolicyV1` supplies versioned byte and node-count thresholds and the decision-ladder mapping. The result binds both observations and policy revisions and returns `{selected_mode: direct|recursive, selected_rung, reason_codes, inputs_digest}`. The ladder is the only selector, not a separate router. Wire the new decision arm beside `tool_subset_outcome` in `src/server/handlers/decide/stat_decide.rs::handle_decide`; AU `run_full_rlm` consumes the `DecisionBatch` before choosing direct or recursive execution. Missing, negative, stale, digest-mismatched or cross-tenant observations, and absent policy refuse before execution. This mode choice is separate from R137.7-.12 context-package selection. `AU-HARNESS-R026.3/.4` remain adjacent spans/context coverage. The exact AU observation-producer contract/id binding these two measurements is pending and not implied. Preserve `EG-DECISION-ENGINE-R137.1-.3`. Source record AU:25 SHA-256 `9724fcb9db21705fe9ac6a4b26d6d27280f55bf8a22bf11907b3ad9449383290`. | Planned served tests through `handle_decide` and `run_full_rlm`: vary tool-output bytes and graph-node count independently around each pinned threshold, then jointly. Assert the decision-ladder mode and consumed input digests. Missing, stale, negative, altered-digest or cross-tenant observations refuse before model execution. Keep package-selection tests for R137.7-.12 independent. AU observation and run-consumer receipts remain separate dependencies. No runtime evidence is claimed. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.9 Reviewed residual `AU:34` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:34`.** The EG-owned portion of the source objective . An explicit skill tree and outcome-tuned EG exploration over that tree are absent. AU-HARNESS-R022.3 says retrieval ranks locally, while AU-CONTEXT-R001 assigns ranking/feedback to EG. Resolve this authority conflict. The EG contract SHALL meet this residual through the following reviewed closure: Define TaskPlanSkillNodeV1. Bind task_plan_id/revision/digest, skill_id and nullable parent_skill_id. Bind context_match_policy_revision and evidence refs. Bind prior_outcome_refs with source revisions/digests. Record score, rank and ranking_policy_revision. EG emits relevant skills in a deterministic tree. A versioned score/rank policy binds the comparator and tie rule. Missing or unpinned policy refuses. Outcome feedback changes later breadth only through R140.102 and its pinned policy/outcome set. Original source objective. Select multiple relevant skills from a tree for each task. Tune selection from run outcomes, so exploration can use more than one skill. Producer/consumer boundary. EG plan_over_skills -> AgentLibraryStore -> served TaskPlan; AU experience feedback lacks a named EG selection-policy update consumer. Preserve existing coverage `EG-DECISION-ENGINE-R134.4`, `EG-DECISION-ENGINE-R134.5`, `AU-HARNESS-R022.3`, `AU-CONTEXT-R001`. Owner source hash: `ced4d0bb75fa260e4291aea5f71c28b407a95fc3e06047666e1278b043a3cdbd`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.9-ranked-plan. Served Decide(TaskPlan) returns multiple skill nodes. Each has stable parent links, cited context matches, pinned outcome refs, score/rank and plan digest. Equal scores use the declared tie-break. Refuse missing/stale context or outcome evidence and malformed/cyclic parent links. AU application of this rank is not asserted. Attach the proposed result at plan_over_skills -> AgentLibraryStore -> served TaskPlan. AU-HARNESS-R022.3 local ranking and AU-CONTEXT-R001 feedback authority remain existing adjacent obligations. The AU consumer that applies EG rank and the feedback-to-R140.102 receipt contract are not yet specified. Keep SPECIFIED pending those owner definitions and served evidence. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.14 Reviewed residual `AU:37` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:37`.** The EG-owned portion of the source objective . The judge checks retained values, methods and validation steps. It does not compare held-out answers with full-context answers under a declared tolerance. The EG contract SHALL meet this residual through the following reviewed closure: Define PairedContextEvaluationV1. Bind the held_out_query_set id/revision/digest, raw_context revision/digest and candidate_context revision/digest. Bind evaluator/model revision and each query's raw/candidate answer digests. Record the quality metric, aggregation rule, tolerance and policy revision. Require a complete per-query verdict set. Replace raw context only when all queries are present and the aggregate satisfies the declared tolerance. Any failed or incomplete evaluation retains the raw revision. Original source objective. Compress long run context into updatable memory only when held-out answer quality stays within declared tolerance. Otherwise retain the full context. Producer/consumer boundary. AU ContextManager.before_model_request -> run_agent replaces context only after its summary gate. No held-out paired-answer verdict is a named prerequisite. Preserve existing coverage `AU-HARNESS-R013.5`, `AU-HARNESS-R013.10`, `AU-HARNESS-R013.12`, `AU-HARNESS-R013.13`. Owner source hash: `7e1405981aa8b697a73eb7e8c3c3170be8edefc674c23beef740884450fc1add`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R137.14-paired-context. a complete held-out set within the declared tolerance permits the replacement verdict. A beyond-tolerance result, missing query or stale context/evaluator digest refuses. Undefined metric, aggregation or tolerance also refuses. An incomplete verdict set leaves the active raw-context revision unchanged. AU ContextManager.before_model_request -> run_agent is the existing replacement point. The AU held-out evaluator and receipt schema are absent. So is the consumer that atomically applies EG acceptance. R013.5/.10/.12/.13 remain adjacent coverage, not evidence of this gate. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.10 Reviewed residual `AU:39` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:39`.** The EG-owned portion of the source objective . There is no summary-only sub-run return schema, parent-remaining-context bound or explicit rejection of raw/oversized returns. Generic spans do not bind delegation decision, child run and accepted summary as one trajectory. The EG contract SHALL meet this residual through the following reviewed closure: Define ChildSummaryV1. Bind plan/decision id and digest, parent run id and child run id. Record the expected child-id set and summary artifact kind/schema/version/digest. Bind the exact tokenizer revision, summary token count and source/result evidence refs. A parent budget record binds remaining context tokens at dispatch and the maximum aggregate child-summary tokens. Child output exposed to the parent contains only the declared summary artifact, never raw transcript. The accepted fan-out receipt accounts for every child as one summary or named failure gap. Original source objective. A main run delegates subtasks to sub-runs. Each child returns only contract-bounded summaries. The main run conserves context budget and records delegation decisions as trajectories. Producer/consumer boundary. AU _fork_fanout -> FanoutResult and parallel workspace synthesis; EG decides plans. The bounded child-summary producer/parent consumer boundary is absent. Preserve existing coverage `AU-CONTROL-R043.2`, `AU-CONTROL-R043.5`, `AU-HARNESS-R020.4`, `AU-HARNESS-R024.1`. Owner source hash: `742906721351687d032991b4e9c0255baf7a6c480e21ac7a616975d40e38ce84`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.10-bounded-child-summary. valid summary-only children whose checked token total fits the parent remaining budget are linked to decision, child and summary digests. Refuse raw or oversized output and missing, duplicate or unknown children. Refuse tokenizer/budget revision mismatch or totals above the bound before parent synthesis. AU _fork_fanout -> FanoutResult and parallel workspace synthesis are the observed attachment points; EG owns TaskPlan authority. AU summary producer, parent remaining-context budget field and consumer validation/readback receipt are missing. AU-CONTROL-R043.2/.5, AU-HARNESS-R020.4 and AU-HARNESS-R024.1 remain adjacent. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.15 Reviewed residual `AU:40` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:40`.** The EG-owned portion of the source objective . A primitive handle and span digests omit recursive sub-model input/output signatures, tool bindings and boundary validation. The trace also lacks signature/model/tool linkage. The EG contract SHALL meet this residual through the following reviewed closure: Define RecursiveCallV1 request/result records. Bind parent run/span, call id and signature id/revision/digest. Record typed input schema/digest, admitted tool id/revision set and selected model id/revision. Bind typed output schema/digest and terminal status. Validate input and tool membership before dispatch and output against the same signature before recording success. Bind all revisions/digests in the recursive trace. Original source objective. A recursive runtime lets a model call sub-models through typed signatures and tools. The run trace records interpretable trajectories. Producer/consumer boundary. AU run_full_rlm -> RLMEnvironment.run_parallel_sub_calls executes EG limits. Span instrumentation records calls. No recursive-call signature producer/validator is named. Preserve existing coverage `AU-HARNESS-R026.1`, `AU-HARNESS-R026.4`, `AU-HARNESS-R024.1`, `AU-HARNESS-R024.3`, `EG-ORCH-VOCAB-R005`. Owner source hash: `4edb15328650ebf084f0ab1d073b092e5b684aafad9b7b1ca7f412859390b923`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R137.15-signature-boundary. an admitted typed call records matching signature/model/tool/input/output digests. Refuse unknown or changed signatures and unadmitted tools. Refuse malformed input/output, missing parent span or revision mismatch before accepting a result. AU run_full_rlm -> RLMEnvironment.run_parallel_sub_calls is the observed execution point. EG resource limits and span instrumentation are adjacent only. No AU recursive signature producer/validator receipt or exact EG-to-AU call contract is named. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.11 Reviewed residual `AU:45` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:45`.** The EG-owned portion of the source objective . Depth/item bounds do not define an execution horizon or per-step budget. They do not split excess steps before execution or checkpoint credit across sub-horizons. The EG contract SHALL meet this residual through the following reviewed closure: Define HorizonPartitionV1 for one committed TaskPlan revision. Bind ordered step ids and dependency edges. Set positive max_steps_per_horizon, per-step budget policy id/revision/unit and a credit ceiling. Partition only at dependency-safe boundaries before start. Each completed horizon returns a durable credit checkpoint with plan/horizon ids, consumed/reserved/remaining amounts, budget revision and digest. Require a versioned accounting rule for debits. Original source objective. Long tasks decompose into sub-horizons under a declared per-step budget with checkpointed credit. A plan whose step count exceeds the configured horizon is split before execution, not attempted whole. Producer/consumer boundary. EG decompose_task/TaskPlan -> AU bounded map primitives. The horizon partition and durable credit receipt are not a named producer/consumer interface. Preserve existing coverage `AU-HARNESS-R026.1`, `AU-HARNESS-R026.2`, `EG-DECISION-ENGINE-R134.3`, `EG-DECISION-ENGINE-R134.4`. Owner source hash: `c1bfd61241a0fd02ada2816f173a3b9568da5b48e490e76058fd740b356886da`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.11-horizon-credit. a plan within the limit remains one horizon. A longer valid plan is split at dependency-safe boundaries and its checkpoint balances reconcile exactly. Refuse an unsplittable dependency component or absent/invalid budget rule. Refuse over-credit horizons, missing checkpoints and stale plan revisions before the next start. EG decompose_task/TaskPlan feeds AU bounded map primitives, but no named partition/credit receipt interface exists. AU durable checkpoint/debit semantics and the consumer that blocks start on a missing receipt remain unspecified. Do not substitute Finance forecast horizons or solver budgets. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R059.1 Reviewed residual `AU:57` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:57`.** The EG-owned portion of the source objective . No merged skill tree binds candidates across model backbones to independent per-skill evaluations. It also lacks a robustness/transferability estimate across those backbones. The EG contract SHALL meet this residual through the following reviewed closure: Define BackboneSkillEvaluationV1 rows. Key each by candidate id and canonical skill identity. Bind source model/backbone id/revision and task-distribution id/revision. Bind evaluation dataset id/revision/digest, metric id/revision, sample count and result digest. An aggregate may be emitted only with complete independent rows for every declared backbone and a versioned transferability policy. Publish the full per-backbone evidence with the aggregate, not a bare score. Original source objective. Merge skill candidates from multiple models into one tree. Aggregate independent evaluations into a robust estimate of effectiveness and transferability across backbones. Producer/consumer boundary. AU experience/skill candidates -> EG admission-linked outcome aggregate. The shared tree and backbone-bound per-skill evaluation join remain unnamed. Preserve existing coverage `AU-HARNESS-R022.1`, `AU-HARNESS-R022.2`, `EG-DECISION-ENGINE-R059`. Owner source hash: `0c7c2eed61e3cfe6fe6c863c75fb66092f3a8bea97e3942b635c7b69f715d3a9`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R059.1-backbone-evidence. complete independent evaluations for the same canonical skill identity produce a result that lists every backbone and policy revision. Refuse missing/duplicate backbone rows, candidate identity mismatch, reused non-independent evidence, incomplete dataset coverage or absent metric/transferability aggregation policy. AU supplies experience/skill candidates; EG R059 is the existing independent-outcome admission path. No shared canonical skill merge key, robust aggregation/threshold decision, or AU multi-backbone evaluation producer is specified. These decisions are explicit holds. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.12 Reviewed residual `AU:85` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:85`.** The EG-owned portion of the source objective . Hard-task alternative trajectories and deliberative summary aggregation. Explicit width/depth decision ladder and remeasurement against a single-trajectory baseline. The EG contract SHALL meet this residual through the following reviewed closure: Define TrajectoryDecisionV1. Bind one task/plan digest and policy revision. Record chosen width/depth and ordered trajectory ids. Bind the identical input snapshot digest per arm, single-trajectory baseline id, per-arm outcome/evaluation refs and paired comparison receipt. The decision names the selection and evaluation policies. It does not prescribe an unsupported scoring formula. A pass requires complete paired arms over the same task/input and an explicit R018 comparison verdict. Original source objective. Hard tasks run in two stages: parallel reasoning over multiple trajectories, then a summarization step aggregating them. Width and depth are chosen by the decision ladder and re-measured against a single-trajectory baseline. Producer/consumer boundary. R134 plan explicitly connects Decide TaskPlan to AU-CONTROL-R042/R043; R137 plan connects ContextBudget to AU-CONTEXT-R004/AU-HARNESS-R026. AU-HARNESS-R018 has run_agent paired arms. These dependencies lack the alternative-trajectory/summarization/baseline binding. Preserve existing coverage `AU-HARNESS-R020.4`, `EG-DECISION-ENGINE-R134.1`, `EG-DECISION-ENGINE-R134.3`, `AU-CONTROL-R007`, `EG-DECISION-ENGINE-R137.1`, `EG-DECISION-ENGINE-R137.3`, `AU-HARNESS-R018.1`, `AU-HARNESS-R018.2`, `AU-HARNESS-R018.5`. Owner source hash: `a28929a50cbfcb691664403ce456fbf9dc38d6bd64b34424932e4fa22f9cbda1`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.12-paired-trajectories. selected width/depth and all trajectory/baseline ids bind to the same plan and input snapshot. Each arm has an outcome and the paired R018 verdict is readable. Refuse missing/mismatched arm, baseline, policy revision or result, and refuse any claim of improvement without the declared paired verdict. Existing points are Decide(TaskPlan), AU-CONTROL-R042/R043, AU-HARNESS-R020.4, and paired arms in AU-HARNESS-R018.1/.2/.5. AU trajectory generation, summary aggregation and EG selection-policy consumer receipt are absent. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.13 Reviewed residual `AU:91` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:91`.** The EG-owned portion of the source objective . Distinct analyst roles provide cited findings to one decision role. Required abstention on unresolved conflict or missing citations. The EG contract SHALL meet this residual through the following reviewed closure: Define AnalystFindingV1. Bind task/plan digest, expected analyst id/role and finding id. Record claim text/digest, cited evidence ids/revisions/digests and source spans. Define SynthesisResultV1. Include the complete expected analyst-id set and all finding ids. Record each analyst outcome, cited evidence, conflicts and final decision-role id. Return a supported conclusion or typed abstention reason. Never drop a failed or absent analyst from accounting. Original source objective. Parallel analyst roles produce structured, cited findings for one decision role. That role abstains when findings conflict or lack citations. Producer/consumer boundary. EG R134.5 plans TaskPlan through served Decide; AU R020.5 constructs worker slots through _dispatch_parallel_batch. The selected aggregation consumer lacks a cited-finding/conflict abstention contract. Preserve existing coverage `EG-DECISION-ENGINE-R134.3`, `AU-HARNESS-R020.1`, `AU-HARNESS-R020.4`, `AU-HARNESS-R020.2`, `EG-DECISION-ENGINE-R134.6`. Owner source hash: `f5ddb0ac9b0329ac031c01c56c49ee03c922a991dbf2d0e29c111515424d3455`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.13-cited-synthesis. cited compatible findings produce a result that accounts for every expected analyst. Refuse missing/duplicate analysts and unsupported findings. Refuse unresolved conflict, invalid citation, plan mismatch or absent decision role. Abstain without recommendation. EG R134.5 served Decide(TaskPlan) is the planning point; AU R020.5 _dispatch_parallel_batch constructs worker slots. The exact AU finding producer/collector and aggregation consumer contract is missing. Existing fan-out clauses do not prove it. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R029.1 Reviewed residual `AU:93` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:93`.** The EG-owned portion of the source objective . Replaceable search-grounding provider independently selected from reasoning model and bound to a committed route. Unavailable committed provider must refuse rather than substitute. The EG contract SHALL meet this residual through the following reviewed closure: Define RetrievalProviderBindingV1 in the committed retrieval plan. Bind provider id/revision/config digest, query/request digest and tenant scope. Identify reasoning model id/revision separately. The binding has an explicit no-substitution policy. Execution evidence records the exact provider, binding digest, request/result digests and provider revision. Original source objective. Search grounding is a replaceable provider selected through the committed routing decision, independent of the reasoning model. An unavailable provider is refused, not silently substituted. Producer/consumer boundary. Preserve GRAPHOS-OPS-R021.2.1 retrieval.search and its tenant-scoped retriever. EG must produce the committed provider binding and the SDK/GraphOS consumer must execute that exact provider. That edge is missing. Preserve existing coverage `EG-DECISION-ENGINE-R029`, `GRAPHOS-OPS-R021.2.1`. Owner source hash: `c9552392eb813763a83fc96fb48ad1bd18fd805ef608736f1dae5d48ab12c984`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R029.1-exact-provider. independently vary provider and reasoning-model ids while verifying the committed provider is executed. If the bound provider is unavailable, stale, unauthorized or mismatched, refuse before retrieval and record zero calls to alternate providers. Preserve GRAPHOS-OPS-R021.2.1 retrieval.search and its tenant-scoped retriever. EG must commit the provider binding. The SDK/GraphOS consumer contract that executes and receipts that exact binding is not defined. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.14 Reviewed residual `AU:105` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:105`.** The EG-owned portion of the source objective . Search planner explores candidate solution branches using experience memory, fuses branch solutions and records every branch outcome for later retrieval. The EG contract SHALL meet this residual through the following reviewed closure: Define BranchOutcomeV1. Bind branch id, parent task/plan digest and branch input digest. Record experience snapshot revision and ordered fusion position. Include terminal outcome or named failure gap and immutable result digest. The fusion receipt lists every planned branch in deterministic order. It binds the versioned fusion-policy id/revision, all outcome refs and fused result digest. A later branch retrieval records the exact outcome refs and revisions it consumed. Original source objective. A search-based planner explores solution branches using experience memory. It fuses branch results and records each outcome for later retrieval. Producer/consumer boundary. Use the same missing branch-experience producer and committed planning consumer identified for AU:84. Existing attachment points are R134.5 Decide, R020.5 worker execution and R022.4 run outcome distillation. Preserve existing coverage `EG-DECISION-ENGINE-R134.3`, `AU-HARNESS-R022.3`, `AU-HARNESS-R020.4`, `AU-HARNESS-R022.1`, `AU-HARNESS-R022.6`. Owner source hash: `4fd31dd504f158f43bcf77d81a39c2419303a538b32553a77a39f6b5a575e9d2`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.14-branch-readback. a complete branch set produces an ordered fusion receipt and independent readback for every outcome. A later branch cites the exact pinned prior outcome. Refuse missing/duplicate branch, changed parent/input/snapshot, omitted failure gap, absent fusion policy, or stale readback. Existing points are Decide R134.5, AU R020.5 worker execution and AU R022.4 outcome distillation. The AU branch-experience producer, committed-plan consumer and durable per-outcome receipt schema remain missing. Do not substitute R140.102 breadth adaptation. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R020.1 Reviewed residual `AU:110` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `AU:110`.** The EG-owned portion of the source objective . Separate per-agent exploitation trajectory pool and generated exploration pool. Explore only when context has no matching past trajectory. Define CandidatePoolV1. Bind tenant/agent id, task/context feature digest and policy revision. Record candidate ids and each candidate's source revisions. The selection receipt partitions candidates into exploitation (matched prior trajectories) and exploration (eligible only when no match exists). It records context-match policy revision, evidence refs and deterministic tie-break. Cross-agent history is never eligible. Original source objective. Each agent keeps past trajectories in an exploitation pool and generated candidates in an exploration pool. Use exploration only when no trajectory matches the context. Producer/consumer boundary. EG owns candidate selection and orchestration evidence; AU R022 supplies run experience. No per-agent two-pool producer or context-miss-only selection contract exists. Preserve existing coverage `AU-HARNESS-R022.1`, `EG-DECISION-ENGINE-R020`, `AU-HARNESS-R022.3`. Owner source hash: `dafa8396b5a7c2a168253c7be219718c78186266610e5a91e7dc318d35fc552b`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R020.1-agent-isolated-pools. a same-agent matching trajectory selects from the exploitation pool and excludes exploration. A declared no-match case may select from exploration. Refuse missing match policy/evidence and cross-tenant or cross-agent history. Bind result to the candidate snapshot. EG owns candidate selection and AU-HARNESS-R022.1/.3 provide adjacent experience inputs. No AU per-agent pool producer or context-match evidence contract exists. Exact match dimensions/threshold must be supplied by that owner policy before implementation. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R133.7 Reviewed residual `EG:13` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:13`.** The EG-owned portion of the source objective . Define recursive code/subcall/intermediate node/edge identity and verifier/improvement read-and-critique contracts. The EG contract SHALL meet this residual through the following reviewed closure: Define RecursiveTraceNodeV1. Bind run id/revision, step id/revision and parent node id. Record ordered child ids and input/output/evidence refs/digests. Include source revision and trace snapshot id. Define TraceCritiqueQueryV1 with root node, authorized projection, snapshot revision, filters and opaque cursor. The response includes the complete selected ancestry and source refs. Parent/child links must be complete and acyclic within the selected snapshot. Original source objective. Store each recursive-reasoning trajectory as typed graph nodes. Include code runs, sub-calls and intermediates for verifier and improvement critique. Producer/consumer boundary. Terminal CommitWorkItemResult adapts traces after fenced CAS; AddNode validates traces. Graph queries read them. Recursive hierarchy production and critique consumption are absent. Preserve existing coverage `EG-DECISION-ENGINE-R133.1`, `EG-ORCH-VOCAB-R013.1`, `EG-DECISION-ENGINE-R133.5`, `EG-ORCH-VOCAB-R013.5`, `EG-ORCH-VOCAB-R009.15`, `EG-ORCH-VOCAB-R013.6`. Owner source hash: `9e0be988c182da3c7f440c14d2fc8e56f60426e543e3f53ba39f250f235e6c8d`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R133.7-trace-critique. ingest and independently read back a nested trace, then critique it at the same authorized snapshot with complete ancestry. Refuse incomplete ancestry, cycle, stale cursor/snapshot, missing digest or unauthorized projection without returning protected fields. Terminal CommitWorkItemResult adapts traces, AddNode validates records and graph queries read them. The recursive node producer and named authorized critique-query operation/consumer are absent. Existing fencing/projection rules remain binding. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R100.1 Reviewed residual `EG:16` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:16`.** The EG-owned portion of the source objective . Define attributed agent-error/human-correction ingestion and lineage from examples to fitted adapters before existing promotion. The EG contract SHALL meet this residual through the following reviewed closure: Define FeedbackEventV1. Bind stable event id and decision id/revision/digest. Record option/action id, actor id and outcome/evidence refs/digests. Include event time and source revision. A versioned mapping policy converts only a complete joined event into a fit example. Deduplication is by event id plus source revision. Bind example-set digest to R100 fitting, resulting adapter id/revision to R101, and publish admission to R040. Original source objective. A promoted adapter adjusts embeddings from feedback signals. Signals include agent errors and human corrections, closing a feedback loop into vector space. Unpromoted adjustments never alter served results. Producer/consumer boundary. R100 persists examples, R101 applies promoted post-RLS/pre-ANN query adapters, R040 gates publish. Signal production and example-to-fit linkage are absent. Preserve existing coverage `EG-DECISION-ENGINE-R100`, `EG-DECISION-ENGINE-R101`, `EG-DECISION-ENGINE-R040`. Owner source hash: `eca485ffdff9cea5394130b53e12a0edc235e342ab01accc36ad9d06f496daa8`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R100.1-feedback-join. an authorized complete event is read back as exactly one fit example bound to the expected R100 dataset digest. Replaying the same event is idempotent. Refuse duplicate identities with changed content or missing decision/option/outcome joins. Refuse invalid mapping policy, stale source revision or evidence mismatch before fitting. R100 persists examples, R101 applies a promoted adapter post-RLS/pre-ANN and R040 gates publish. The AU signal producer and outcome-to-label mapping policy are not specified. Do not treat an independent outcome record as the producer contract. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R088.2 Reviewed residual `EG:17` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:17`.** The EG-owned portion of the source objective . Define event cursor/period, forecasts, adaptation and no-future-event visibility at the simulator/harness boundary. The EG contract SHALL meet this residual through the following reviewed closure: Define ReplayEventV1. Bind event id, strictly ordered sequence number and event time. Record state snapshot id/revision/digest, observed action id, outcome/evidence refs and source revision. Replay uses an AS OF snapshot and opaque deterministic cursor. The sealed ReplayReceipt binds ordered event digests, cursor, policy id/revision and result digest. Identical duplicate delivery is idempotent. A conflicting duplicate or sequence gap refuses. When the environment is policy-dependent, route to R119 off-policy evaluation. Original source objective. Evaluation replays real-world events chronologically over a simulated period. The agent forecasts outcomes and adapts as information arrives. No future event is visible before its turn. Producer/consumer boundary. DecisionEval owns AS OF and fold replay. A real-world event simulator feeding an AU adaptive harness is undefined. Policy-dependent environments must respect R119 off-policy routing. Preserve existing coverage `EG-DECISION-ENGINE-R088`, `EG-DECISION-ENGINE-R119`, `EG-DECISION-ENGINE-R088.1`. Owner source hash: `d01db99df0c6c22b37f82cd815e129956fa151e7da2b670b73348ca5058e629e`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R088.2-ordered-replay. replay a fixed event sequence and resume from its receipt/cursor to the same event order and sealed digest. Refuse gaps, out-of-order events, conflicting duplicate ids, changed snapshots or policy-dependent on-policy claims without R119 routing. DecisionEval provides AS OF and fold replay. The real-world event simulator and AU adaptive-harness producer/consumer are undefined. This row specifies EG replay envelope and refusal only, not an external event source. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.16 Reviewed residual `EG:26` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:26`.** The EG-owned portion of the source objective . The statement that only window/chunking budgets exist is stale. R137.7-.12 cover exact-token package sizing and monetary/model-price bounds. The remaining gap is an explicit task-complexity input and selection policy. Bind the caller ceiling to current remaining tokens, including consumed and reserved tokens. R128 task-class pressure does not itself prove that joint payload-sizing linkage. Extend ContextBudgetSignalsV1 with task-complexity feature set/digest and complexity-policy id/revision. At a pinned snapshot, derive remaining tokens as the total ceiling minus committed and reserved consumption. Use the same tokenizer revision. Return both operands and the checked result. Bind the complexity decision and remaining budget to the sealed ContextPackageSelection and its R137.7-.12 solver certificate. R128.5 task-class pressure remains a separate input. Original source objective. Adapt retrieval payload size per request to task complexity, remaining token budget and model cost. Never exceed the remaining budget. Producer/consumer boundary. Planned served Decide(ContextBudget) -> existing solver -> independent certificate verifier -> sealed ContextPackageSelection -> AU-CONTEXT-R004 context-compile consumer. R137.11/.12 explicitly name the consumer. Current dispatch absence is stated in R137.9. Preserve existing coverage `EG-DECISION-ENGINE-R137.7`, `EG-DECISION-ENGINE-R137.8`, `EG-DECISION-ENGINE-R137.10`, `EG-DECISION-ENGINE-R137.9`, `EG-DECISION-ENGINE-R137.11`, `EG-DECISION-ENGINE-R137.12`. Owner source hash: `ccbc35ba3595763696c824434868079aeb401ce8b601041e913b323a2d2fb575`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R137.16-complexity-and-remaining-budget. vary complexity while holding model cost and remaining tokens fixed, then vary remaining tokens while holding complexity fixed. Verify the declared policy and certified package bind both decisions. Refuse missing/invalid policy, tokenizer or snapshot mismatch, negative/overflowing remainder, or package cost above remaining tokens. Planned Decide(ContextBudget) -> existing solver -> independent certificate verifier -> sealed ContextPackageSelection -> AU-CONTEXT-R004. R137.11/.12 name the consumer. The dispatch and receipt binding remain pending as recorded in R137.9. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R029.2 Reviewed residual `EG:30` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:30`.** The EG-owned portion of the source objective . The complete candidate universe is not necessarily the complete available-source universe. No exhaustive, explicit omitted-source report with relevance/budget reasons is required. Displaced authority-conflict sources cover only one omission cause. Define AvailableContextSourceV1. Bind authorized source id/revision/digest and relevance evidence. Record authority class, token/cost estimate and enumeration snapshot. ContextSourceSelectionV1 returns complete selected and omitted partitions with reason enum IRRELEVANT, OVER_BUDGET, AUTHORITY_DISPLACED, or UNAUTHORIZED, plus deterministic policy revision and source snapshot digest. Every enumerated source appears exactly once. Protected source identifiers are omitted from unauthorized caller-visible details. Original source objective. An agent loads task-relevant context from available sources within a stated budget. It does not load the full persistent memory. Omitted sources are reported. Producer/consumer boundary. Served Decide(ContextBudget) -> certified package -> AU-CONTEXT-R004 context compile. Ontology source selection R072 and source-authority conflict handling supply distinct inputs. Preserve existing coverage `EG-DECISION-ENGINE-R029`, `EG-DECISION-ENGINE-R137.7`, `EG-DECISION-ENGINE-R137.8`, `EG-DECISION-ENGINE-R137.11`, `EG-DECISION-ENGINE-R137.12`, `EG-FEDERATED-QUERY-R072`, `EG-SRC-AUTH-R010.6`. Owner source hash: `05fcbe47e588141000ec329927406270abd30b590d2624f22e9239079f829d38`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R029.2-complete-source-partition. the same served compile journey includes relevant selected sources and omitted examples for irrelevance, over-budget and authority displacement. Every authorized source is accounted for once. Refuse incomplete enumeration, duplicate source, unknown reason, stale budget/authority snapshot or unauthorized disclosure. Served Decide(ContextBudget) -> certified package -> AU-CONTEXT-R004 context compile; R072 ontology selection and EG-SRC-AUTH-R010.6 provide distinct source inputs. The AU consumer receipt for the exhaustive partition is not named. Preserve the parent retrieval/authorization obligations. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.15 Reviewed residual `EG:36` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:36`.** The EG-owned portion of the source objective . No duration/weight-based longest-path calculation or critical-chain output is required. A DAG and dependency order alone do not define critical-path scheduling. For each TaskPlan DAG step, require positive duration_ms and nonnegative integer priority_weight. Bind source evidence, weight-policy id/revision and input digest. Compute checked integer path totals from duration_ms multiplied by priority_weight using the declared weight scale. Return ordered critical_chain_step_ids, total_weighted_duration_ms, policy revision, plan revision and input digest. Ties choose the lexicographically smallest step-id sequence. Original source objective. Task scheduling computes critical paths over plan graphs using topological order and longest path, and reports the critical chain. Cyclic plans are rejected. Producer/consumer boundary. Served Decide(TaskPlan) -> plan_over_skills -> typed TaskPlan -> execution consumer. Critical-chain fields and computation remain to be defined. Preserve existing coverage `EG-DECISION-ENGINE-R134.1`, `EG-DECISION-ENGINE-R134.4`, `EG-DECISION-ENGINE-R134.5`, `EG-DECISION-ENGINE-R134.6`, `EG-DECISION-ENGINE-R134.8`, `EG-ORCH-VOCAB-R006`. Owner source hash: `6e1f0c3ab1626a00c8392e8a304b4c4a28a86d0aee8fff1933317bbdb4893966`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R134.15-weighted-critical-chain. a branched DAG returns the independently calculated longest weighted path and total, source-duration/weight provenance, and deterministic tie result. Refuse cycles and missing/invalid duration or weight. Refuse absent scale policy, stale source evidence or checked multiplication/sum overflow before emitting TaskPlan. Attach the proposed fields to served Decide(TaskPlan) -> plan_over_skills -> typed TaskPlan. The execution consumer schema for critical-chain fields is not defined. The decision producer and consumer remain SPECIFIED pending that schema. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R135.8 Reviewed residual `EG:52` Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Reviewed residual `EG:52`.** The EG-owned portion of the source objective . Successful-trace compilation is not on-demand compilation from natural-language or graph-stored workflow definitions. Persisted ProgramStep lacks a reusable agent-configuration contract. Compile failure reports run failure/size instead of the missing workflow step. The EG contract SHALL meet this residual through the following reviewed closure: Define WorkflowCompileRequestV1. Bind source kind (NL or graph), exact source revision/digest and workflow identifier. Record compiler id/revision and referenced step/agent-config ids. The deduplicated CompiledWorkflowV1 binds the canonical typed step graph digest and each agent configuration id/revision/digest. Define `semantic_reuse_key_v1` as the exact tuple `{canonical_typed_step_graph_digest, compiler_id, compiler_revision, sorted_agent_config_refs}`, where each sorted config ref is `{id, revision, digest}` and sorting is lexicographic by config id. Exclude source kind, source revision/digest and source-to-step mapping from the key. Retain them in a separate WorkflowCompileReceiptV1 bound to source provenance, reuse key and compiled program id. A missing referenced step returns MISSING_WORKFLOW_STEP with the exact id/source location and publishes no partial program. Reuse one NL/graph program only when canonical graph digest, compiler id/revision and sorted agent-config refs match. Different source provenance remains in separate compile receipts, and no source equivalence is inferred from text alone. Original source objective. Workflows written in natural language or stored in the knowledge graph compile on demand to typed graph flows. Compiled steps and agent configurations are saved for fast routing on reuse, and a compile failure names the missing step. Producer/consumer boundary. Served Decide(TaskPlan) and ProgramLookup -> AgentLibraryStore/handle_decision_commit -> harness; SourceIngest is the workflow ingestion authority. A definition-to-program compiler between those surfaces remains unspecified. Preserve existing coverage `EG-DECISION-ENGINE-R134.1`, `EG-DECISION-ENGINE-R134.4`, `EG-DECISION-ENGINE-R134.5`, `EG-DECISION-ENGINE-R134.6`, `EG-DECISION-ENGINE-R135.1`, `EG-DECISION-ENGINE-R135.2`, `EG-DECISION-ENGINE-R135.3`, `EG-DECISION-ENGINE-R135.4`, `EG-DECISION-ENGINE-R135.5`, `EG-DECISION-ENGINE-R135.6`, `EG-ORCH-VOCAB-R006`, `EG-REPO-INGEST-R002`. Owner source hash: `1ee5f2b5bd5bc45c9b9ff8ccaab8de944ed41eceab17a8c1e88cc86d4725e2dc`. This remains SPECIFIED pending separately reviewed implementation and served evidence. | Planned acceptance only: Case R135.8-workflow-compile. Identical graph digests, compiler id/revision and sorted config refs identify one semantic reuse key. The key returns a complete stored configuration across NL/graph inputs. Keep a separate source-kind/revision/digest/mapping receipt for each. A new source revision with unchanged semantic inputs reuses the program but records new provenance. A changed graph, compiler, or config ref changes the key. Refuse a missing step with the exact diagnostic, stale source/config/compiler revision, or partial program publication. Proposed attach points are served Decide(TaskPlan), ProgramLookup and AgentLibraryStore/handle_decision_commit; SourceIngest remains the workflow ingestion authority. The compiler interface and stored configuration schema between these surfaces are unspecified. No implementation, served test, or receipt is claimed by this SPECIFIED definition. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R042.100 Tool-path outcome history and repeated-failure skip rule Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Tool-path outcome history and repeated-failure skip rule.** Model `ToolPathHistory` by tenant, connector, capability and stable path id/version. Bind observation window, sample/success/failure counts, as-of time and source invocation ids. Behavior ranks only already-admitted equivalent paths by observed success rate. Skip a path only when the versioned decision policy declares a minimum sample and failure threshold and both are met. Missing, stale or undersampled history is `unknown` and cannot suppress a path. Wiring adds the evidence to the existing R042 Decide advisory and consumes current attempt outcomes from SDK `ordered_equivalent_fallback`. It must not replace the SDK declared fallback order or execute writes. Evidence binds policy, candidate paths and observation window. Producer/consumer boundary. EG R042 remains evaluate-only connector tool-choice advisory; SDK owns ordered transport fallback and current attempt outcomes. Preserve existing parent obligations: `EG-DECISION-ENGINE-R042; SDK-SOURCE-INGEST-R012.2; preserve deterministic admitted fallback`. Source record `AU:28` SHA-256 `9dac8e5f41f6948885215836733ce3116b8246ca5c9c4725a12a62bdb11cb400`. Parent `R042` remains unchanged. | Planned served acceptance. In served Decide, prefer adequately sampled higher-success paths. Skip threshold-qualified repeated failures. Preserve declared order for missing, stale or undersampled history. Verify the advisory cannot trigger write-back and every score recomputes from its bound counts. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R042.101 Per-model measured tool necessity and every-call mismatch trace Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Per-model measured tool necessity and every-call mismatch trace.** Define `ToolNecessityMeasurement`. Bind model id/revision, tool/capability id and task-cohort digest. Record paired enabled/disabled trial identities, outcome metric, sample counts, threshold, measurement time and digest. A measurement is `necessary`, `not_necessary` or `unknown` only under the declared minimum-sample and outcome-delta policy. No data, stale model revision or insufficient pairs yields `unknown`. Compare every AU tool-call decision to the current model/tool measurement. Emit a mismatch trace event with run, step, decision, model revision, measurement digest and mismatch kind (`unnecessary_call` or `omitted_necessary_tool`). The EG R042 decision remains authoritative; AU consumes at the existing per-tool span path. Producer/consumer boundary. R134.2 relevance is only a candidate prefilter. AU-HARNESS-R018.5 generic profile metrics do not measure tool necessity. AU run_agent per-tool spans are the consumer boundary. Preserve existing parent obligations: `EG-DECISION-ENGINE-R134.2; AU-HARNESS-R018.5; AU-HARNESS-R024.2/.4`. Source record `AU:86` SHA-256 `38315c5f9a088c33c4b81b88b813ed851f97f454d788c9fb07185c88c752f979`. Parent `R042` remains unchanged. | Planned served acceptance. For each paired fixture, show necessary/not-necessary/unknown results. At the AU call boundary prove every disagreement creates a linked trace event and matching decisions create none. Stale or insufficient evidence must not become a necessity verdict. Served EG and AU receipts remain separate and linked by decision/measurement ids. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R129.100 Human correction to approved, versioned behavioral rule lifecycle Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Human correction to approved, versioned behavioral rule lifecycle.** Bind a correction to tenant, run, original output id/digest and correction author/time. A proposal carries rule id, proposed version, scope, source output, predecessor version and lifecycle state. It remains inactive until explicit approval and the existing R129 invariant gate both pass. Invariant compliance is necessary but never substitutes for approval. Activation supersedes the declared prior version atomically. Revocation names the active version and prevents future use while retaining audit history. AU future invocations consume only the approved current version and return its id/version in the run trace. Producer/consumer boundary. Extend R129 promotion authority and AU future-invocation application; R034 contradiction-retraction remains separate. Preserve existing parent obligations: `EG-DECISION-ENGINE-R129/.3/.5; EG-DECISION-ENGINE-R034`. Source record `AU:38` SHA-256 `1d54abebd7cbc92bd3d6c397f334b42d602b4c3b9f77e0091f1c683774701d72`. Parent `R129` remains unchanged. | Planned served acceptance. Served tests cover correction/output mismatch refusal and proposal-only state. They cover approval plus invariant pass, invariant rejection, version replacement and revocation. Future invocations use only the approved version. Every state transition reads back with actor, version and source-output lineage. Existing R129 invariant behavior stays mandatory. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.100 Public aggregation operation bound to FanoutResult and fleet receipts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Public aggregation operation bound to FanoutResult and fleet receipts.** Define the generated `AggregateFanout/v1` request. Bind the selected existing `AggregationOp`, TaskPlan digest and AU `FanoutResult` identity. Include expected subtask ids and GraphOS durable instance-receipt ids/digests. Define the result with operation/version, ordered input receipts, one typed aggregate artifact/schema version, result digest and graph revision. EG applies the already-selected operator to the complete receipt set. It adds no fan-out width, concurrency policy or second aggregation authority. A served independent readback resolves the returned artifact by tenant/id/revision and compares the digest before success. Producer/consumer boundary. AU owns FanoutResult production; GraphOS `agents.run` owns durable instance receipts and capacity/refusal. EG owns selected operator and public application/readback contract only. Preserve existing R134.1/.3 and GRAPHOS-FLEET-R024.5-.9. Preserve existing parent obligations: `EG-DECISION-ENGINE-R134.1/.3; AU-CONTROL-R043.2/.3; GRAPHOS-FLEET-R024.5-.9`. Source record `AU:30` SHA-256 `8f2ff3030a71d67b20cd19301f0ed8cef75e975403595cec4060abf9fa8952c1`. Parent `R134` remains unchanged. | Planned served acceptance. At served `agents.run` -> AU `_fork_fanout` -> EG aggregation, test all-success results and named failure gaps. Refuse missing, duplicate or stale receipts and concurrent-budget excess. Independently read back the artifact. The output must bind the same selected operation/version and exact AU/GraphOS receipt set. No extrapolated capacity claim is added. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.101 Designated coordinator delivers one complete structured artifact Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Designated coordinator delivers one complete structured artifact.** Extend the existing task plan with one designated `coordinator_id` and a typed final-artifact declaration (schema id/version and artifact kind). The coordinator receives the complete FanoutResult and produces exactly one artifact. Bind each expected subtask id to its result or named failure gap. No result may disappear in synthesis. The artifact and delivery receipt bind plan digest, coordinator, child receipt ids, schema version, artifact digest and final readback identity. Reuse R134 aggregation and AU fan-out. Do not add a second orchestrator. Producer/consumer boundary. EG-selected TaskPlan/AggregationOp -> AU `_fork_fanout` FanoutResult -> named coordinator -> one final artifact. Retains AU-CONTROL-R043.2/.4 named gaps. Preserve existing parent obligations: `EG-DECISION-ENGINE-R134.1/.3; AU-CONTROL-R043.2/.4; AU-HARNESS-R020.4/.8`. Source record `AU:94` SHA-256 `19331af6d24dacefccebddcae637919b39cb111b800e3bd239a68b42b8ad10c7`. Parent `R134` remains unchanged. | Planned served acceptance. The served fan-out test sends multiple outputs and a named failed gap through the coordinator. Read back one structured artifact. Refuse absent coordinator, missing/duplicate child accounting, schema-invalid artifact or mismatched digest. Verify a non-coordinator cannot finalize and every child is accounted for. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R137.100 Relevance-triggered instruction disclosure with separate initial/runtime versions Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Relevance-triggered instruction disclosure with separate initial/runtime versions.** Define an EG disclosure decision/event bound to instruction-set id, immutable version/digest, relevance trigger, decision id and scope. Initial rules are a distinct phase delivered before the first agent action. Runtime refinements are disclosed only when their declared relevance trigger occurs. Each event records phase, trigger, instruction version/digest, run and sequence, plus applied/refused outcome. EG owns relevance selection; AU run loop applies the exact selected version and records the event. No duplicate local context selector is introduced. Producer/consumer boundary. Existing EG context/decision authority -> AU run loop. General context selection, reminder and trace counters do not cover disclosure. AU sole writer owns runtime application. Preserve existing parent obligations: `EG-DECISION-ENGINE-R137; AU-HARNESS-R024.2/.6`. Source record `AU:59` SHA-256 `0b55041f0517baa9de449e3d712356a0e252cd194365e09ae559e9067cc8eb1f`. Parent `R137` remains unchanged. | Planned served acceptance. Through served Decide and the AU run-loop consumer, prove initial instructions precede execution. Withhold runtime refinement before its trigger, disclose it at the trigger and trace-link each disclosure. Stale or unauthorized instruction revisions refuse without application. Verify distinct initial/runtime tags and exact version readback. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R134.102 Delegation quality threshold over a stable outcome window Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Delegation quality threshold over a stable outcome window.** Define an EG delegation-admission verdict. Bind task class, quality metric, declared threshold and observation-window start/end. Record sample count, outcome-set digest and policy revision. Admit delegation only when the measured quality over the complete stable window meets the declared threshold. Insufficient samples, gaps, mixed revisions or stale evidence return typed not-ready/refusal. AU executes delegation only against the committed verdict. Do not substitute retrieval saturation, generic test coverage or a free-floating data-plane window. Producer/consumer boundary. EG owns authoritative TaskPlan/delegation admission; AU executes the admitted plan. Existing retrieval quality-saturation logic is adjacent only. Preserve existing parent obligations: `EG-DECISION-ENGINE-R134.1/.3; EG-FEDERATED-QUERY-R082`. Source record `AU:24` SHA-256 `7cbecf865c6185e23ec202d541c5f8d33388338af413ac06209709c619fbe200`. Parent `R134` remains unchanged. | Planned served acceptance. Served Decide matrix proves below-threshold and unstable/incomplete windows refuse, while a complete above-threshold window admits. Mutate a sample, threshold, metric or policy revision and require a new verdict. AU consumer demonstrates no delegation effect on refusal. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.100 Trace-derived fix admission requires paired before/after regression receipts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Trace-derived fix admission requires paired before/after regression receipts.** Define a correction proposal bound to failed-run trace digest, proposed fix revision, exact regression-test identity and test environment. Require a before receipt showing the test fails at the declared pre-fix revision. Require an after receipt showing it passes at the declared post-fix revision. Both receipts bind test digest, source revision and run identity. Mismatch, missing receipt or reversed outcome refuses. Reuse existing correction/admission authority and preserve propose-only flow. Producer/consumer boundary. AU CorrectionProposal/study_admit supplies trace and benchmark; EG decides admission. Generic benchmark lift does not replace paired proof. Preserve existing parent obligations: `EG-DECISION-ENGINE-R136.1-.6; AU-HARNESS-R004.1; AU-HARNESS-R019.9/.10`. Source record `AU:32` SHA-256 `1d12449ecff9c30c5999933324f1f705fd826539eba6182f3e6d2773c263fec3`. Parent `R136` remains unchanged. | Planned served acceptance. Positive paired test uses identical test digest and environment across before/after revisions and proves fail then pass. Negative cases alter either revision/test digest, omit a receipt, pass before or fail after. Each refuses admission. Read back the admitted proposal with both receipt links. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R031.100 Paper relevance admission against platform goals and graph content Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Paper relevance admission against platform goals and graph content.** Define an EG per-paper admission request/decision. Bind paper locator/content digest, summary digest and platform-goal/graph-snapshot revisions. Record relevance dimensions/scores, threshold and selected claim ids. Select a paper for ingestion only when it meets the relevance rule against platform goals and current graph content. The verdict names the scored evidence and selected claims. Excluded papers produce no graph write. This definition covers scoring/admission only, not scheduled retrieve. Producer/consumer boundary. GraphOS owns six-hour durable scheduler; SDK owns paper retrieve/provider receipts; EG owns relevance scoring/admission and selected-claim contract. Preserve existing parent obligations: `EG-DECISION-ENGINE-R031; GRAPHOS-OPS-R022.2; SDK-SOURCE-INGEST-R005`. Source record `AU:41` SHA-256 `8c69b66d62c833b4da482e38a51efa624c3e3fc924d6fd6d3e2ef114378a8527`. Parent `R031` remains unchanged. | Planned served acceptance. For served EG admission, test a paper relevant to both goals and graph. Also test one relevant to only one, below threshold and duplicate/stale snapshots. Only the both-relevant accepted record yields a selected-claim ingestion request. Read back the decision and source bindings. Do not claim six-hour schedule or provider retrieve is implemented. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R036.100 Typed substitutable prompt, tool, memory and control-flow primitives Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed substitutable prompt, tool, memory and control-flow primitives.** Extend graph.assemble primitives to a closed typed union covering prompt, tool, memory and control-flow components. Each primitive exposes identity/version, input/output schema digest, capability/effect declaration and substitution compatibility contract. A candidate harness graph is accepted only when every edge type-checks and replacement preserves declared capabilities/effects. Recorded run traces can create improvement proposals for each primitive kind, but proposals never mutate active composition. Producer/consumer boundary. EG graph.assemble is composition authority; AU HarnessPort executes selected composition. Existing prompt-only optimization proposal path remains and typed HarnessPort is preserved. Preserve existing parent obligations: `EG-DECISION-ENGINE-R036; AU-CONTROL-R002; AU-HARNESS-R007/.011`. Source record `AU:46` SHA-256 `04556089bf2790a52c59ede225b6212ccd90c0f7ca1dfad07b869ac9de6a19a1`. Parent `R036` remains unchanged. | Planned served acceptance. Test substitution for all four primitive classes. Include compatible/incompatible schema/effect changes. Keep trace-derived proposals inactive until normal admission. Served assembly receipt names each primitive/version and compatibility proof. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.101 Per-criterion report revision nonregression Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Per-criterion report revision nonregression.** Bind each report revision to a stable rubric digest and criterion ids. Record prior satisfaction states, new evidence/outcome ids and independent grader revision. For every previously satisfied criterion, the new revision must preserve satisfaction. A regression blocks promotion and records the failing criterion. Self-reflection text is not a measured outcome. Use AU ContinuousEvaluationEngine reports as inputs and preserve EG R136 round verdict authority. Producer/consumer boundary. AU ContinuousEvaluationEngine produces per-criterion evidence/report revisions; EG evaluates the bound round verdict. Aggregate divergence and self-reflection are not criterion-level nonregression. Preserve existing parent obligations: `EG-DECISION-ENGINE-R136.1/.2/.4; AU-HARNESS-R021.3/.6`. Source record `AU:47` SHA-256 `9f72c0e6cb8d476050ffde54043ba0e37a063bfda05eb3e27020312cd9eeb69b`. Parent `R136` remains unchanged. | Planned served acceptance. Start the served sequence with satisfied and unsatisfied criteria. Apply process-level feedback. Accept nonregressing revisions and refuse a previously satisfied criterion regression. Mutating rubric or prior report digest invalidates the comparison. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R121.100 Step verification binds uncertainty and trace proof before continuation Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Step verification binds uncertainty and trace proof before continuation.** Define a `StepVerification`. Bind run/step id, input/output digests and evidence ids. Record verifier/policy revision, uncertainty interval and proof/trace digest. Each reasoning step receives a typed verdict (`verified`, `failed`, `uncertain`). Only `verified` steps may feed dependent conclusions. A failed or uncertain step and all derived dependents are withheld/refused with the dependency chain named. Reuse typed Claim/Evidence provenance. A Claim class alone does not imply step verification. Producer/consumer boundary. EG owns proof/evidence/verdict; AU run execution gates continuation on the returned verdict. Existing Claim/Evidence and ordered trace digest semantics remain intact. Preserve existing parent obligations: `EG-DECISION-ENGINE-R121 typed Claim/Evidence; AU run-step continuation owner`. Source record `AU:54` SHA-256 `78c1b58ee2c97f19ad4834981d1b75adeb89c82881710aed055a0cc6f5c36760`. Parent `R121` remains unchanged. | Planned served acceptance. The served AU/EG chain verifies a supported step and rejects an under-evidenced step. Downstream conclusions must be absent for failed/uncertain dependencies. Alter proof digest, evidence revision or uncertainty bounds and require re-verification. Trace readback shows the entire dependency chain. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.100 Adversarial generated-code verifier is a mandatory admission gate Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Adversarial generated-code verifier is a mandatory admission gate.** Define a changeset-bound adversarial verifier request over generated artifact digest, declared tests, threat/attack policy revision and verifier revision. Its receipt enumerates attempted break cases and edge-case ids with fixed/retested state. Require a complete verifier receipt for generated-code admission. Fix each surfaced edge case against a new artifact digest and recheck it. Unresolved, missing, stale or mismatched cases block acceptance. Keep materialization under existing governed write authority. Producer/consumer boundary. AU generates/proposes code and verifier evidence; EG admission consumes it. Existing governed write path retains materialization authority. ProbeVerdict R138.1-.6 is a separate red-team probe capability. Preserve existing parent obligations: `EG-DECISION-ENGINE-R138.1-.6; existing correction/evaluation admission and governed write path`. Source record `AU:55` SHA-256 `3d07d9e40d19b8d4502fcbf3fc2e682f67bcdeaa0730d5d698f7af32767bb785`. Parent `R138` remains unchanged. | Planned served acceptance. Served admission accepts only a complete receipt matching the proposed artifact digest. Every edge case must be resolved and retested. Negative cases include skipped verifier, unresolved edge case, stale artifact, changed tests and failed recheck. None can activate/write code. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R136.102 Outcome, rubric and artifact-bound criterion grading required before proposal admission Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Outcome, rubric and artifact-bound criterion grading required before proposal admission.** Require proposal evidence bound to declared outcome and immutable rubric id/version/digest. Bind the exact graded artifact id/digest and grader revision. Include a score/verdict and evidence reference for every rubric criterion. Every required criterion must be graded. Missing, ungraded, mismatched or stale artifacts return a typed refusal before any proposal is admitted. Aggregate score cannot hide a missing criterion. Producer/consumer boundary. AU study_admit/ContinuousEvaluationEngine supplies the report; EG decision verdict controls admission. Preserve R019/R021 evidence and per-criterion R136.101 behavior. Preserve existing parent obligations: `EG-DECISION-ENGINE-R136.1/.2/.4; AU-HARNESS-R019.9/.10; AU-HARNESS-R021.1/.6/.7`. Source record `AU:56` SHA-256 `712793000145f8e6b1c3ac1de647e91256312eb601def299653a9671de2757ba`. Parent `R136` remains unchanged. | Planned served acceptance. Serve one fully graded report admitted against a proposal. Refuse missing outcome/rubric, ungraded criteria, wrong artifact digest, stale rubric or absent grade evidence. Read back the proposal and prove no admission side effect on refusal. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R138.101 Five-class semantic changeset review with evidence and impact filtering Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Five-class semantic changeset review with evidence and impact filtering.** Define a review request bound to base/head revisions and changed-file digest. The semantic review evaluates injection, authentication bypass, data exposure, cryptographic flaws and business-logic flaws. Each finding carries class, affected path/range, exploit/impact evidence, severity, confidence and trace to reviewed artifact. A versioned impact policy filters low-impact false positives with a retained disposition. No high-impact or unreviewed class may be silently dropped. This is distinct from R138 probe scorer selection. Producer/consumer boundary. EG owns review verdict/schema. Named GraphOS authenticated changeset-review producer/consumer must be served and linked separately. Existing R138.3 probe endpoint is not that consumer. Preserve existing parent obligations: `EG-DECISION-ENGINE-R138.1/.2/.5; GraphOS changeset review owner pending exact served integration`. Source record `AU:83` SHA-256 `0c5f2631be262ba69472eb94841b7acfbcfd6d0cb379382c528ccd0efb4d22e7`. Parent `R138` remains unchanged. | Planned served acceptance. Served review fixtures include one finding from each class, one evidence-backed low-impact false positive, and an injected high-impact finding. Verify five-class coverage, changed-range binding, evidence retention and filtering disposition. Reject missing revision, unsupported class, absent proof or silently omitted high-impact findings. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R036.101 Compose discovered coding-agent facts with skill transformations Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Compose discovered coding-agent facts with skill transformations.** Extend graph.assemble with verified coding-agent facts: identity, capability and path-discovery receipt/revision. Include ordered skill transformation ids/versions and input/output schema digests. EG chooses only from supplied verified facts and emits a deterministic composition plan binding agent, skills and artifact contract. It never scans PATH or renders a UI. AU owns executable discovery; WebUI owns sandboxed frame rendering. Producer/consumer boundary. EG composition authority -> AU PATH discovery and skill execution -> WebUI isolated generated-artifact frame. Existing DESIGN guidance does not provide these producer/consumer receipts. Preserve existing parent obligations: `EG-DECISION-ENGINE-R036; AU-CONTROL-R003; AU-HARNESS-R009; WEBUI-DESIGN-R001; WEBUI-APPS-R001`. Source record `AU:107` SHA-256 `d179fc0eb33039df3a87efe8a59ce2a635f0e39f360c58f925011448d0401cdc`. Parent `R036` remains unchanged. | Planned served acceptance. Served EG assembly accepts verified agent/skill facts and returns a plan with exact revisions and transformation order. Refuse absent/stale discovery receipts, incompatible transformation schemas or changed artifact digest. Separate AU discovery receipt and WebUI sandbox receipt must be linked for end-to-end closure. No runtime implementation is claimed. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R014.100 Choose the smallest adequate legal solution from explicit size and cost facts Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Choose the smallest adequate legal solution from explicit size and cost facts.** Extend bounded composition with candidate source-size facts: exact artifact bytes and line count. Bind measured per-run cost, adequacy verdict and legal/policy constraints to candidate/revision. First exclude candidates failing required behavior, tests, policy or legal constraints. Among adequate candidates apply the declared size/cost objective and emit each measured fact and tie-break. Unknown size/cost or adequacy evidence cannot be treated as zero. This child does not settle the shortcut-comment policy, which remains held for coordinator resolution. Producer/consumer boundary. Reuse R014 exact bounded solver/graph.assemble authority. AU records execution cost. Code-size measurement and candidate adequacy feed EG. Preserve legal/policy constraints and hold comment-style conflict. Preserve existing parent obligations: `EG-DECISION-ENGINE-R014 existing bounded composition semantics; AU-HARNESS-R009; AU-CONTROL-R006; AU108 comment-policy conflict held`. Source record `AU:108` SHA-256 `2dfb2ab7469f19faf03d91782fa276ed2c613dec2e1d1fce2c629e5b8974b476`. Parent `R014` remains unchanged. | Planned served acceptance. Tiny exhaustive candidates prove the selected result is the smallest/cost-optimal eligible composition under the declared objective and constraints. Test equal-size/cost ties, unknown facts, inadequate smaller candidate and illegal candidate refusal. The output preserves separate size and cost measurements. No test imposes or removes shortcut comments. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140 Trajectory refinement and ranking family (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Trajectory refinement and ranking family (rollup).** Groups complexity-gated K-trajectory deliberation, provenance-preserving experience reinsertion, outcome-driven branch breadth and verifier-free pairwise ranking. Preserve calibrated-ranking requirements in R130 and AU generation/execution ownership. All listed children are required before this rollup can be LANDED. | Generated status requires every child to be LANDED and VERIFIED. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R141 Memory-change evaluation and rewrite admission (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Memory-change evaluation and rewrite admission (rollup).** Requires fidelity and memory-quality evidence before activating a memory change. Failed candidates preserve the prior active memory. R060 fitted-head promotion remains a separate model gate. All listed children are required before this rollup can be LANDED. | Generated status requires every child to be LANDED and VERIFIED. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R142 Atomic-before-workflow local-model certification (rollup) Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Atomic-before-workflow local-model certification (rollup).** Defines the EG attestation producer, AU local-model evaluation consumer and GraphOS validation gate. Existing GraphOS R034 identity bindings and host policy remain authoritative. All listed children are required before this rollup can be LANDED. | Generated status requires every child to be LANDED and VERIFIED. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R139.100 Graph-backed comparative sources with exact revision provenance Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Graph-backed comparative sources with exact revision provenance.** Extend comparative `StudySource` admission with a `graph_ref` containing tenant, graph, node, revision and content digest. Resolve the exact revision through the authorized graph read/query path. Compare papers and codebases from graph refs alongside existing filesystem sources without copying source bodies. Record ordered source kind, locator/reference, exact revision, digest and comparison membership in the comparative result. Missing, stale, invisible or digest-mismatched graph references refuse before comparison. Preserve filesystem intake and AU study/feature ownership. Preserve existing parent obligations: `EG-DECISION-ENGINE-R139`. Source record `AU:58` SHA-256 `f13717cacb9e87ff76591467e17b5f9d76d44577f62d71b57d57c42bc89d37ba`. | Serve one graph paper, one graph codebase and one filesystem source in the same comparison. Assert exact ordered references, revisions and digests in readback. Refuse stale, unauthorized and mismatched graph refs before comparison, while filesystem-only intake remains valid. AU consumer receipts remain a separate dependency. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R019.100 Decision-wide evidence provenance and human approval before recommendation commit Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Decision-wide evidence provenance and human approval before recommendation commit.** Bind each decision record to its id/revision. Record the simulation, inspection and process-knowledge stream ids/revisions/digests used. Expose an authorized reviewer-readable provenance read. Before any recommendation commit, require an approval receipt bound to decision revision and recommendation digest. Include reviewer principal, approval time and approval-record revision. Missing, stale or mismatched approval refuses before commit. Retain existing R019 re-derivation/CAS and R047 reference semantics. Do not duplicate governed-effect audit rows. Preserve existing parent obligations: `EG-DECISION-ENGINE-R019`. Source record `GRAPHOS:17` SHA-256 `0e4858352b73b18661ed21ef503cc4c4f36e72045c3ffeff8d2094d9f8f8e50a`. | Serve a decision with all three evidence streams and independently read back exact provenance. Refuse a recommendation commit with missing, stale, wrong-reviewer-scope or digest-mismatched approval and prove no decision revision/effect changed. Approve the exact revision, commit once, and verify reviewer provenance and idempotent retry under R019. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R029.100 Typed retrieval command configuration and inference-mode digest binding Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Typed retrieval command configuration and inference-mode digest binding.** Define a versioned typed command-config document per retrieval command. Bind command id/schema version, typed parameters and referenced inference-mode id/version/digest. EG Decide binds the retrieval plan and inference-mode digest to its decision. AU loads the immutable command file and validates its schema. Its mode digest must match the EG decision before use. AU run evidence binds command/config digest, mode digest, input digest, selected-plan revision and result digest. Missing, malformed, stale or mismatched configuration refuses before execution. File loading remains AU-owned. Preserve existing parent obligations: `EG-DECISION-ENGINE-R029`. Source record `PIPE:22` SHA-256 `0d3964cba3359a3b454f2fd7b61f2b893b3aec0d58613062b859c2201344980c`. | Through the real retrieval command, load a valid file. Assert config/mode/plan digests in the run record. Refuse missing file, invalid typed field, unknown mode and stale/mismatched mode digest before command effects. Repeat the same command/input and verify identical config, mode and decision bindings. Do not assert result determinism beyond declared source behavior. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140.100 Complexity-gated K-trajectory decision Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Complexity-gated K-trajectory decision.** Extend the existing `Method::Decide` / `QuestionKind::TaskPlan` path from R134.5. Do not execute models in EG. The request binds task id/digest and ordered complexity features. Each feature has id, value, unit and source ref/revision/digest. Bind scorer id/revision/digest and policy id/revision/digest. The policy declares the score calculation/units, threshold, simple branch K=1, and complex-branch permitted K range `[2,max_k]`. Return `TrajectoryBudgetDecisionV1` with decision id/revision/digest, all input and policy digests, score, branch and permitted K. It is a plan for AU, not a deliberation result. AU must bind every alternative and execution receipt to this decision digest. AU-CONTROL-R043 independent-subtask fan-out does not cover this consumer. Missing or stale features/scorer/policy, unpinned score calculation, invalid K, or complex K<2 refuses before AU execution. Preserve existing parent obligations: `EG-DECISION-ENGINE-R140`. Source record AU:44 SHA-256 `74416937af9a4934ae1f5d1a02e30336deb1535189a07f53fb81fb352f81779f`. **Pending owner prerequisite:** AU has no reviewed `orchestrate` consumer field binding the decision digest to K trajectory requests/results. Keep the row SPECIFIED until that contract and served receipt exist. | Named served acceptance: `tests/decide/test_trajectory_refinement_served.py::test_complexity_selects_single_or_bounded_k` proves simple K=1 and no deliberation dispatch, and complex K in `[2,max_k]` with exact plan digest. `::test_complexity_policy_and_k_refusals` covers missing/stale scorer, absent policy and invalid/below-minimum K. AU execution receipt acceptance remains an explicit AU dependency. No producer evidence is inferred. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140.101 Provenance-preserving trajectory projection and reinsertion Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Provenance-preserving trajectory projection and reinsertion.** The TaskPlan/Decide path binds each source trajectory by run id, candidate id, source revision and trace digest. Return the pinned redaction-policy id/revision/digest and tokenizer id/revision. Record removed reasoning-token half-open ranges, retained task/result/evidence ranges, deterministic shuffle seed, and ordered projected ids. AU performs the projection and deliberation. Return a new candidate id/digest and the exact decision digest. Name every consumed source id/digest in its parent list. Accept the new outcome only after validating source revisions and non-overlapping in-bounds ranges. Also validate policy/tokenizer revisions and complete parent bindings. Source trajectories are immutable. Producer is AU `record_outcome -> SkillGraphPipeline` (AU-HARNESS-R022.4). No AU projection/reinsertion receipt defines these fields. This child does not claim existing implementation. Preserve existing parent obligations: `EG-DECISION-ENGINE-R140`. Source record AU:51 SHA-256 `be286cbd079c08493be1dcc0512aa562b6e2f2fec8d3566437837d91b5f36ba0`. **Pending owner prerequisite:** AU must specify the exact projection and appended-candidate receipt on R022.4 before end-to-end acceptance. | Named acceptance: `tests/decide/test_trajectory_refinement_served.py::test_projection_preserves_sources_and_links_candidate` verifies deterministic projection order, removed/retained ranges and source readback; `::test_projection_refuses_bad_ranges_or_missing_parent` proves range/provenance refusal without source mutation. AU R022.4 receipt and deliberation generation remain separate unserved dependencies. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140.102 Branch-start experience retrieval and outcome-driven breadth Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Branch-start experience retrieval and outcome-driven breadth.** On the R134.5 `Method::Decide` / `QuestionKind::TaskPlan` path, accept search id, branch id/ordinal, tenant and plan digest. Bind ordered prior-attempt refs, each `{branch_id, outcome_revision, outcome_digest, result_class}`, and `BreadthPolicyV1` id/revision/digest. The policy declares the outcome-to-breadth mapping and an initial breadth used only when history is explicitly absent. Return `BreadthDecisionV1` binding the complete retrieved-history digest, previous breadth, selected breadth, policy, task and decision digests. Stale, unauthorized, cross-tenant or incomplete history refuses and is never interpreted as a zero outcome. AU must put decision id/digest and selected breadth in each branch request. Return an outcome receipt tied to that decision before the next branch adapts. Existing AU attachment points are `_dispatch_parallel_batch -> parallel_batch_processor` (R020.5) and `record_outcome -> SkillGraphPipeline` (R022.4). Neither currently binds this breadth decision. Preserve existing parent obligations: `EG-DECISION-ENGINE-R140`. Source record AU:84 SHA-256 `b56fbf074624786b4a8c2b499f985ecc2d14d1e8349d08781cf28aba07c3abef`. **Pending owner prerequisite:** AU branch-start and outcome receipt fields are not defined. Keep SPECIFIED until reviewed and served. | Named acceptance: `test_later_branch_adapts_from_pinned_outcome` records and reads an earlier outcome at the next branch start. Prove the pinned mapping changes breadth. `test_branch_history_refuses_stale_or_cross_tenant` refuses stale/unauthorized history. `test_no_history_uses_declared_initial_breadth` verifies explicit absence. AU R020.5/R022.4 receipt acceptance remains pending and is not claimed. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140.103 Verifier-free pairwise candidate ranking with bounded revision Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Verifier-free pairwise candidate ranking with bounded revision.** Bind the ordered candidate set and digests to pairwise records. Each record has both candidate ids/digests, judge/model revision, verdict and evidence digest. AU:87 requires global ranking, retained top candidates and bounded revision of the rest. It does not select aggregation rules for cycles, incomplete pairs or ties. Existing R130 calibrated relevance ranking is not a pairwise aggregation rule. Do not assume Bradley–Terry or publish rankings before owner selection of a versioned aggregation policy. It must specify cycle/incomplete-pair/tie cases and keep-count/revision bounds. The existing `Method::Decide` TaskPlan path is the proposed EG decision boundary; AU owns comparison execution and revisions. Missing/unpinned aggregation policy, incomplete policy-required pairs, digest mismatch or absent revision limits refuses before any revision request. Preserve existing parent obligations: `EG-DECISION-ENGINE-R140`. Source record AU:87 SHA-256 `6f67238075c0bf262188d97a1813b18bfb0c71e13c6689a583c788d956287612`. **Exact source decision hold:** AU:87 provides no pairwise aggregation/cycle/tie policy or request bounds. This row remains SPECIFIED until that decision and the AU comparison/revision receipt contract are reviewed. | Named hold acceptance: `tests/decide/test_pairwise_ranking_served.py::test_refuses_unselected_aggregation_policy` verifies no ranking or revisions are emitted without an approved versioned policy. After the source owner chooses the algorithm, add `::test_global_order_retains_top_and_revises_rest` with a complete comparison matrix and exact tie/cycle fixture. No global-ranking success or AU execution is claimed before that decision. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140.104 TaskPlan trajectory-decision wiring row EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engine: definition unavailable in requirements.md. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R140.105 Trajectory-refinement hot-path proof row EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engine: definition unavailable in requirements.md. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R141.100 Fidelity-gated memory rewrite evaluation Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Fidelity-gated memory rewrite evaluation.** Extend `Method::DecisionEval` with `MemoryRewriteSubmit` and typed `MemoryRewriteProposalV1`. Bind tenant/memory id and active/candidate revisions/digests. Record fidelity metric id/revision/specification digest/value and signal/token counts. Bind signal-per-token (`signal_count/token_count`, positive denominator), degradation-history refs/digest and rewrite-policy id/revision/digest. The policy pins fidelity and signal-efficiency thresholds plus the degradation rule. The source does not name the fidelity formula or normalization. The metric id must resolve to an immutable reviewed specification, and missing semantics refuse rather than produce Admit. An unresolved metric specification, missing policy or history, or zero token denominator returns typed refusal. Seal an `Admit` or `Discard` `MemoryRewriteEvaluationV1` receipt with all inputs, metric values and reason codes. A failed gate keeps the active revision/digest and discards the candidate; R059 outcome-aggregate fidelity and R128 context elision are not substitutes. **Exact activation-path hold:** current EG requirements do not identify the authoritative memory store or complete set of memory mutation entrypoints. They do not identify a transaction/CAS where this receipt is mandatory. Do not claim a universal rewrite gate until the owning memory mutator and atomic receipt check are named. Preserve existing parent obligations: `EG-DECISION-ENGINE-R141`. Source record EG:23 SHA-256 `ac1b5df0212beaade03e78502a494148692e1a0007c3fa68ee37a2bb6dbe8cce`. | Named hold acceptance at Method::DecisionEval: test_refuses_unresolved_fidelity_metric refuses an absent/unreviewed fidelity formula or normalization. Test_discards_failed_or_stale_rewrite proves failed policy gates preserve the baseline. A positive Admit fixture is pending review of the fidelity metric semantics. Even after that review, activation/readback remains held until the authoritative memory mutation and atomic CAS path are identified. No active-memory change is claimed. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R141.101 Memory-change benchmark receipt before admission Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Memory-change benchmark receipt before admission.** Extend the existing `Method::DecisionEval` job with `DecisionEvalOp::MemoryChangeBenchmarkSubmit`. Bind tenant and baseline/candidate snapshot ids/revisions/digests. Bind versioned dataset id/revision/digest, nonempty query ids, expected evidence refs and reference-answer digests. Record `k` and metric, evaluator and policy ids/revisions/digests. Return recall@k and answer-accuracy numerators, positive denominators, values and input digests. The metric/evaluator specification must define exact numerator, denominator, query aggregation, answer-correctness rule and rounding. The source does not supply these formulas. Absent or unreviewed definitions refuse and block positive admission. Refuse an empty dataset, missing expected evidence/answer, zero denominator or incomplete candidate coverage. Refuse any snapshot/dataset/metric/policy mismatch. Require both policy thresholds on the same baseline, candidate and dataset for admission. Require the matching receipt before activating any add, edit, delete, rewrite or consolidation. R060 fitted-head promotion remains distinct. **Exact activation-path hold:** no current EG spec enumerates authoritative memory mutation APIs. No current EG spec shows this gate on every write path. This row cannot claim universal admission until that operation map and atomic gate point are named. Preserve existing parent obligations: `EG-DECISION-ENGINE-R141`. Source record AU:125 SHA-256 `27a6a74820b2b646163d8f7bd58b94167b9f0a3e423b8bf5210fe6e758deb440`. | Named hold acceptance at Method::DecisionEval: test_refuses_unresolved_metric_semantics refuses absent/unreviewed recall@k and answer-accuracy formulas. After review, `test_binds_metrics_to_same_snapshots` verifies exact numerators and positive denominators. `test_each_failed_metric_blocks_admission` verifies independent threshold failures. These passing cases remain pending the formula decision. The authoritative memory mutation map and atomic gate also remain required before end-to-end admission. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R141.102 DecisionEval memory-change wiring row EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engine: definition unavailable in requirements.md. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R141.103 Memory-change hot-path proof row EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engine: definition unavailable in requirements.md. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R142.100 Atomic-before-workflow local-model certification attestation Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Atomic-before-workflow local-model certification attestation.** Add a typed EG evaluation input to existing `Method::DecisionEval`. Bind skill id/revision/digest and classification (`atomic` or `workflow`). Include ordered workflow dependencies plus local model, dataset and criteria-policy ids/revisions/digests. Include the AU run receipt. The receipt must bind those same identities plus run id, per-criterion id/result/evidence digest and completion revision. EG emits an immutable certification attestation only when every criterion passes. The attestation binds the same skill/model/dataset/criteria inputs, result and digest. Workflow evaluation refuses unless each named atomic dependency has a current matching attestation. GraphOS consumes this attestation at its existing `GRAPHOS-FLEET-R034.7-.12` validation point before normal `orchestrate`/`agents.run` invocation. Certification-mode orchestration is a separately authorized evaluation run and must not be mistaken for normal invocation. EG does not execute the local model or decide host policy. **Pending owner prerequisites:** AU has no reviewed `orchestrate` evaluation-receipt schema for these fields. GraphOS R034 has not yet been shown to consume this EG attestation. Specify both links before claiming end-to-end certification. Preserve existing parent obligations: `EG-DECISION-ENGINE-R142`. Source record GRAPHOS:8 SHA-256 `5df3f5a45d486aeba5765a31b6c6283637adf2bd8ce63a87938eddd28b90f082`. | Named boundary acceptance: `tests/decide/test_local_skill_certification_served.py::test_attests_matching_atomic_evaluation` submits an AU receipt and reads a digest-bound EG attestation. `::test_workflow_requires_current_atomic_attestations` refuses missing/stale/failed dependencies. `::test_stale_input_invalidates_attestation` changes skill/model/dataset/criteria revision and verifies refusal. AU `orchestrate` receipt and GraphOS R034 consumption tests are required owner dependencies and are not claimed here. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R142.101 DecisionEval certification wiring row EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engine: definition unavailable in requirements.md. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R142.102 Local-model-certification hot-path proof row EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engine: definition unavailable in requirements.md. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DECISION-ENGINE-R100.100 Pinned retrieval evaluation and authorized context spans Definition — EG-DECISION-ENGINE / EG-DECISION-ENGINE — Decision engineCanonical requirement and verification source**Pinned retrieval evaluation and authorized context spans.** Extend `DecisionEval` with `RetrievalRankingSubmit` and typed `RetrievalRankingV1` request/receipt. Serve it through `Method::DecisionEval` and `src/server/handlers/decide/jobs.rs`/`stat_jobs.rs`. Bind corpus and binary relevance-label set ids/revisions/digests. Bind a query-set id/revision/digest with at least one query and `k` (1..1000). Record evaluator revision and at least two registered algorithm ids/versions/settings digests. For each algorithm, define `hits_at_k = numerator / denominator`. The numerator counts labeled queries with a relevant top-k item. The denominator is the complete identically labeled query set. Return both integers, the exact query/result digest and metric value. Compare algorithms only on identical input digests. Return typed refusal for empty query sets, zero denominator or missing labels. Also refuse corpus drift, incomplete result coverage and mismatched settings; never fabricate a metric. Add public `Method::RetrievalContextSearch` (`RetrievalContextSearchV1`) on the authenticated query/read path. Return document id/revision/digest and half-open UTF-8 byte offsets into original stored text for every matched n-gram/context span. Search may normalize into a separate NFC index only when it returns that index digest and a validated normalized-to-original byte map. The public offsets always address the stored-text digest, never the normalized buffer. Also return query/index/authorization revisions and an opaque snapshot-bound cursor. Context reads are tenant-authorized, capped at 100 spans and 8 KiB per span. Denied context returns no protected count or offset. Existing `Method::UnifiedQuery`/retrieval paths supply algorithm results; `DecisionEval` seals the evaluation receipt and R100 continues joining cited evidence to independent outcomes/hard negatives. The WebUI comparison panel and labels remain consumers, not truth producers. Consumer: `WEBUI-APPS-R001.1`. WEBUI:6 source objective: “An operator inspects and compares retrieval quality interactively: hits-at-k metrics, n-gram highlighting, side-by-side algorithm comparison and context search.” SHA-256 `3dc3c464a10a5178a413463f2b43baeb015732f5b8df508f6dbab9c37cc1165d`. | Use a fixed served corpus and independently pinned labels. Run two registered retrieval algorithms over the same query set and k. Verify exact hits-at-k numerators/denominators, input/result digests and receipt readback. Search composed and decomposed Unicode plus multibyte text. Verify every returned half-open offset slices the original stored UTF-8 bytes to the exact match and binds that stored-text digest. If NFC indexing is used, verify its separate digest and normalized-to-original byte map. Refuse empty query sets/zero denominator and invalid normalization maps. Also verify bounded contexts. Refuse missing labels, incompatible revisions/settings, incomplete algorithm results, stale cursor and denied context without leaking counts. The WebUI side-by-side consumer must use the exact same evaluation receipt. Local RRF is not relevance truth. No runtime or owner receipt is claimed. | requirement | EG-DECISION-ENGINE | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL EG-DURABLE-KERNEL — Durable graph kernel | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R001 Outbox head-only attempt accounting and rewind Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Outbox head-only attempt accounting and rewind.** The outbox increments retry attempts only for the row currently at the head of a stream, so a failing head cannot exhaust the attempt budget of healthy successor rows. Consumers can declare an explicit reject that dead-letters the head immediately and reports the transition, and an administrator can list head status and dead letters and issue a rewind to replay from an earlier position. | Verified by outbox tests covering a failing head never dead-lettering a healthy successor, repeated head releases dead-lettering only the head, consumer reject dead-lettering immediately, and rewind replay. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1813f2b5190d a676823d2b54 afc33c3cde5c b43f33569dd4 crates/eg-transaction/src/tests/outbox.rs:1577 crates/eg-transaction/src/tests/outbox.rs:1721 crates/eg-transaction/src/tests/outbox.rs:1893 crates/eg-transaction/src/tests/outbox.rs:2034 |
| EG-DURABLE-KERNEL-R002 Outbox consumers get per-class topics and reject-driven rebuild Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Outbox consumers get per-class topics and reject-driven rebuild.** Outbox consumers publish to semantically distinct topics per message class. A reasoning-projection consumer that rejects a message triggers a rebuild rather than silently acknowledging a skipped projection. `MutationOutbox` exposes an administrative method for inspecting and managing consumer state. The outbox reports metrics on attempts, rejects, dead letters, and rebuilds. | Verified by outbox integration tests asserting per-class topic routing, reject-triggered rebuild of a reasoning projection, and exported outbox metrics. | requirement | EG-DURABLE-KERNEL | LANDED | a1bb9fb9503e a676823d2b54 |
| EG-DURABLE-KERNEL-R003 Owner-store layout lineage registry with typed upgrade refusal Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Owner-store layout lineage registry with typed upgrade refusal.** The owner-store layout maintains a lineage registry that recognizes every supported on-disk format and refuses an unsupported layout with a named `{LAYOUT}_FORMAT_UPGRADE_REQUIRED` error rather than reinterpreting it silently. A generated document records the steps required to remove a retired layout from the registry. | Verified by a golden lineage test that loads each supported manifest format and checks the typed refusal for unsupported ones. | requirement | EG-DURABLE-KERNEL | VERIFIED | a1bb9fb9503e a676823d2b54 afc33c3cde5c crates/eg-storage/src/owner/lineage_fixture_tests.rs:46 |
| EG-DURABLE-KERNEL-R004 Outbox attempt accounting is scoped to the head row Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Outbox attempt accounting is scoped to the head row.** Re-leasing an outbox row increments the attempt count only for the row currently at the head of its stream, never for healthy successor rows staged behind it, so a failing head cannot cause successors to be dead-lettered alongside it. This accounting is implemented in `crates/eg-transaction/src/outbox/claim.rs`. | Verified by a test asserting a failing head never dead-letters a healthy successor, and a test asserting sixteen re-leases of the head dead-letter only the head. | requirement | EG-DURABLE-KERNEL | VERIFIED | a676823d2b54 afc33c3cde5c b43f33569dd4 crates/eg-transaction/src/tests/outbox.rs:1578 crates/eg-transaction/src/tests/outbox.rs:1894 |
| EG-DURABLE-KERNEL-R005 Outbox delivery state remains local to the owning node Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Outbox delivery state remains local to the owning node.** Outbox delivery-side rows are written by the local store owner and are not replicated by the multi-group raft layer, so delivery progress is node-local rather than part of the replicated log. | Confirmed by an integration test checking that outbox delivery rows are not present in replicated state on non-owning cluster members. | requirement | EG-DURABLE-KERNEL | LANDED | 48abc77ce72e a676823d2b54 |
| EG-DURABLE-KERNEL-R006 Engine startup does not block on one store's lazy open Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Engine startup does not block on one store's lazy open.** Engine startup must not refuse entirely when the agent-library store fails to open; that store opens lazily so a failure to open it affects only operations that depend on it, not overall startup. | Verified by a startup test that forces the agent-library store to fail opening and asserts the engine still starts and serves unrelated functionality. | requirement | EG-DURABLE-KERNEL | LANDED | 8dbb5bd9de53 a676823d2b54 |
| EG-DURABLE-KERNEL-R007 Host binary exposes a storage inspect and upgrade command Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Host binary exposes a storage inspect and upgrade command.** The host binary provides administrative `storage inspect` and `storage upgrade` commands. They examine and migrate on-disk layout state outside normal server startup. | Verified by a CLI integration test exercising `storage inspect` and `storage upgrade` against a sample data directory. | requirement | EG-DURABLE-KERNEL | VERIFIED | 0ce0383a5599 a676823d2b54 tests/operator_command_store_upgrade_cli.rs:35 tests/operator_command_store_upgrade_cli.rs:60 tests/operator_command_store_upgrade_cli.rs:81 |
| EG-DURABLE-KERNEL-R008 Raft unit tests pass under cluster features and run in CI Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft unit tests pass under cluster features and run in CI.** All `raft::*` unit tests and `txn_reconcile_ack_lost_retry` pass when compiled with cluster features enabled, without recursion-depth failures, and a continuous-integration job compiles and runs the raft test suite on every change. | Verified by a green continuous-integration job that builds with cluster features and executes the raft test suite, including `txn_reconcile_ack_lost_retry`. | requirement | EG-DURABLE-KERNEL | VERIFIED | 624e1e3076e6 a1bb9fb9503e a676823d2b54 tests/test_raft_cluster_ci_gate.py:31 tests/test_raft_cluster_ci_gate.py:39 tests/test_raft_cluster_ci_gate.py:57 |
| EG-DURABLE-KERNEL-R009 Native raft commands are sealed as their bare method Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Native raft commands are sealed as their bare method.** Native consensus commands are sealed and opened as the bare method they represent in `src/raft/command/native/sealed.rs` (`SealedNativeMethod::seal_value`/`open_value`), so a native raft command payload is never rejected as invalid due to a mismatched envelope. | Verified by a follower catch-up test that replays a create-graph-then-write sequence and by unit tests on `SealedNativeMethod` sealing and opening. | requirement | EG-DURABLE-KERNEL | VERIFIED | a676823d2b54 b43f33569dd4 src/raft/command/native/tests.rs:179 |
| EG-DURABLE-KERNEL-R010 jscpd clone gate runs on every commit Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**jscpd clone gate runs on every commit.** The jscpd structural-clone gate runs as part of the per-commit check suite, so a complexity-reducing extraction cannot silently introduce a new duplicate code pair without being flagged. | Verified by confirming the per-commit hook configuration invokes the jscpd gate and that a deliberately duplicated extraction is caught by it. | requirement | EG-DURABLE-KERNEL | VERIFIED | 624e1e3076e6 a1bb9fb9503e a676823d2b54 tests/test_jscpd_per_commit_gate.py:30 tests/test_jscpd_per_commit_gate.py:40 |
| EG-DURABLE-KERNEL-R011 Clippy and targeted tests cover the full and all-features builds Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Clippy and targeted tests cover the full and all-features builds.** CI must run full-feature clippy without raft and all-feature clippy with Kafka dependencies. CI must execute the raft, backup, and persistence modules before accepting a change. `.github/workflows/release.yml` owns these gates. This parent rolls up R011.1 through R011.5. Declaration validation alone does not prove runtime acceptance. | Exact-head CI logs must prove both clippy profiles and all three runtime categories passed before merge. | requirement | EG-DURABLE-KERNEL | SPECIFIED | 1c6b4c961a40 7c046280f19e 9794030f6459 a676823d2b54 tests/test_release_feature_matrix.py:217 |
| EG-DURABLE-KERNEL-R011.1 `RequiredTestModuleCategory`/`RequiredTestModule` are a typed category and a validated declaration, refusing an unrecognized category name or an unselectable declaration Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`RequiredTestModuleCategory`/`RequiredTestModule` are a typed category and a validated declaration, refusing an unrecognized category name or an unselectable declaration.** `crates/eg-types/src/pre_merge_test_module.rs` parses the `raft`/`backup`/`persistence` category names this requirement lists and validates a declared module's crate name and `cargo test` filter are both non-empty, so a declaration that could not actually select and run a module is refused rather than silently admitted. | Verified by unit tests: all three named categories parse, an unrecognized category name is refused, a complete declaration validates, and a declaration missing its crate name or its test filter is refused. | requirement | EG-DURABLE-KERNEL | VERIFIED | 9794030f6459 crates/eg-types/src/pre_merge_test_module.rs:164 crates/eg-types/src/pre_merge_test_module.rs:181 crates/eg-types/src/pre_merge_test_module.rs:190 crates/eg-types/src/pre_merge_test_module.rs:202 crates/eg-types/src/pre_merge_test_module.rs:217 |
| EG-DURABLE-KERNEL-R011.2 Concrete required-module manifest Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Concrete required-module manifest.** `crates/eg-types/src/pre_merge_test_module.rs` must declare real crate names and test filters for all three categories. The manifest selects `epistemic-graph` `raft::` with `cluster`, `eg-transaction` `tests::backup_replay::` with no features, and `epistemic-graph` `server::persistence::` with `full`. All commands disable default features and target library tests. Empty discovered selections are refused. Runtime execution belongs to R011.3. | Unit tests in `crates/eg-types/src/pre_merge_test_module.rs`: `required_manifest_covers_runtime_categories` and `required_manifest_rejects_empty_selection`. | requirement | EG-DURABLE-KERNEL | VERIFIED | 85ce2ac73a96 a430c82b18b2 crates/eg-types/src/pre_merge_test_module.rs:232 crates/eg-types/src/pre_merge_test_module.rs:279 crates/eg-types/src/pre_merge_test_module.rs:295 scripts/tests/test_public_spec_inventory.py:102 |
| EG-DURABLE-KERNEL-R011.3 Pre-merge runtime execution Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Pre-merge runtime execution.** `.github/workflows/release.yml` must execute the R011.2 manifest on pull requests. The gate must fail on test failures or zero selected tests. | Planned tests in `tests/test_required_runtime_gate.py`: `test_pull_request_executes_required_categories` and `test_failed_or_empty_category_blocks_acceptance`. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R011.4 Exact-head CI acceptance receipts Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Exact-head CI acceptance receipts.** `specs/durable-graph-kernel/test-spec.md` must record passing pre-merge runtime and clippy evidence at one published revision. `.github/workflows/release.yml` must retain both clippy profiles and Kafka dependencies. | CI receipts must name `published-full`, `workspace-all-features`, and every selected runtime test. R011.2 and R011.3 test names define the gate checks. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R011.5 Required Clippy profile declarations Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Required Clippy profile declarations.** `tests/test_release_feature_matrix.py` must check both required profile flags, their executable command, and Kafka build headers. This child covers configuration only. R011.3 and R011.4 retain runtime and exact-head receipt acceptance. | `test_required_clippy_profiles_and_command_are_declared` checks current configuration. `test_required_clippy_declaration_drift_is_refused` rejects missing profiles, changed flags, disabled commands, and missing headers. | requirement | EG-DURABLE-KERNEL | VERIFIED | 7c046280f19e c73eeb01d917 tests/test_release_feature_matrix.py:218 tests/test_release_feature_matrix.py:225 |
| EG-DURABLE-KERNEL-R012 Raft native command sealing and placement routing are correct Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft native command sealing and placement routing are correct.** Native consensus commands are sealed and opened consistently so they are never rejected as invalid, and placement administration correctly routes data movement across a multi-node raft cluster. | Verified by a follower catch-up replay test and a placement-admin test that moves data across a real three-node cluster. | requirement | EG-DURABLE-KERNEL | VERIFIED | 6067fad789bb a676823d2b54 b43f33569dd4 src/raft/harness/catchup_test.rs:57 src/raft/tests.rs:1017 |
| EG-DURABLE-KERNEL-R013 Raft cluster test failures capture a causal trace automatically Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft cluster test failures capture a causal trace automatically.** A failing multi-node raft test automatically captures a bounded ring-buffer trace of raft and heartbeat events, filtered to the consensus-related targets, and dumps it through a panic hook, implemented in `src/raft/harness/trace_capture.rs`, so a failure's causal chain is available without manually enabling tracing. | Verified by unit tests on the ring buffer, including eviction of the oldest entry when over capacity, plus the panic-hook dump path. | requirement | EG-DURABLE-KERNEL | VERIFIED | 624e1e3076e6 a676823d2b54 b43f33569dd4 src/raft/harness/trace_capture.rs:482 src/raft/harness/trace_capture.rs:562 |
| EG-DURABLE-KERNEL-R014 Raft cluster tests pass reliably under load Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft cluster tests pass reliably under load.** The leader-rebalance and three-node placement-admin tests must reach their expected cluster states under CPU load. R015 transport timing or ordering gaps must not cause flaky failures. `src/raft/tests.rs` owns both tests. This parent rolls up R014.1 through R014.5. Retry-budget validation alone does not prove loaded execution. | Repeated loaded runs must pass without flaky failures. `src/raft/harness/trace_capture.rs` must capture each failure trace. | requirement | EG-DURABLE-KERNEL | SPECIFIED | 3a14159c3768 a676823d2b54 |
| EG-DURABLE-KERNEL-R014.1 A typed flake-budget / retry-policy model bounds how a load-test run retries past a transient failure Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**A typed flake-budget / retry-policy model bounds how a load-test run retries past a transient failure.** `src/raft/flake_budget.rs`'s `FlakeBudget` names `max_retries`, `backoff_ms`, and `max_backoff_ms`, refusing a zero-retry, zero-backoff, or inverted-cap budget at construction, and refusing `backoff_for` on a retry attempt beyond `max_retries`, rather than looping forever or silently giving up. Code root: `src/raft`. No load-test harness is driven yet. | Verified by unit tests covering a well-formed budget, each malformed-budget refusal, a retry attempt beyond `max_retries` being refused, and exponential backoff growth capped at `max_backoff_ms`. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3a14159c3768 src/raft/flake_budget.rs:105 src/raft/flake_budget.rs:112 src/raft/flake_budget.rs:120 src/raft/flake_budget.rs:128 src/raft/flake_budget.rs:85 |
| EG-DURABLE-KERNEL-R014.2 Bounded representative CPU load Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Bounded representative CPU load.** `scripts/validate-raft-cluster.sh` must provide CPU workers while cluster tests run. The generator must record worker count and elapsed duration. It must reject zero workers and stop every worker on exit. | Process tests in `tests/test_validate_raft_cluster.py`: `test_cpu_load_runs_during_cluster_test`, `test_zero_load_workers_refused`, and `test_load_workers_stop_on_failure`. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1cf93eec4282 85ce2ac73a96 86913890006d tests/test_check_registry_test_ownership_completeness.py:31 tests/test_validate_raft_cluster.py:15 |
| EG-DURABLE-KERNEL-R014.3 Repeated loaded-test harness Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Repeated loaded-test harness.** `scripts/validate-raft-cluster.sh` must repeat both named cluster tests under R014.2 load. It must preserve every attempt result and failure trace. `src/raft/flake_budget.rs` must bound any diagnostic retry. A retry success must not erase a flaky first failure. | Planned tests in `tests/test_validate_raft_cluster.py`: `test_repeats_both_cluster_tests`, `test_retry_budget_is_bounded`, and `test_retry_preserves_failure_and_trace`. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R014.3.1 Repeated fail-closed loaded execution Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Repeated fail-closed loaded execution.** The existing shell entry point accepts a bounded repeat count and runs both exact named cluster tests under R014.2 load. Each invocation keeps its own output trace and result in a fresh run directory. Any failed or empty selection keeps the overall run failed even when later repetitions pass. No diagnostic retries are performed by this leaf. | Process tests in `tests/test_validate_raft_cluster.py`: `test_repeats_both_cluster_tests`, `test_repetition_preserves_failure_and_trace`, `test_empty_selection_refused`, and `test_invalid_repeat_count_refused`. | requirement | EG-DURABLE-KERNEL | VERIFIED | e0efe89bdedf tests/test_validate_raft_cluster.py:221 tests/test_validate_raft_cluster.py:242 tests/test_validate_raft_cluster.py:264 tests/test_validate_raft_cluster.py:276 tests/test_validate_raft_cluster.py:289 |
| EG-DURABLE-KERNEL-R014.3.2 Bounded diagnostic retry integration Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Bounded diagnostic retry integration.** Drive optional diagnostic retries through `src/raft/flake_budget.rs`, preserving failed attempts and refusing retries beyond its budget. R014.3 rolls up this child and R014.3.1. | Planned `test_retry_budget_is_bounded` and `test_retry_preserves_failure_and_trace`; Rust retry integration remains pending. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R014.4 Loaded leader-rebalance acceptance Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Loaded leader-rebalance acceptance.** `specs/durable-graph-kernel/test-spec.md` must record repeated loaded runs of `src/raft/tests.rs::multi_node_group_join_then_leader_rebalance`. The record must include revision, command, hardware, CPU-worker count, repeat count, results, and trace locations. | `src/raft/tests.rs::multi_node_group_join_then_leader_rebalance` must pass every recorded loaded repetition without flaky failures. The record must include at least two repetitions. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R014.5 Loaded three-node placement acceptance Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Loaded three-node placement acceptance.** `specs/durable-graph-kernel/test-spec.md` must record repeated loaded runs of the three-node placement-admin test in `src/raft/tests.rs`. The record must include revision, command, hardware, CPU-worker count, repeat count, results, and trace locations. | `src/raft/tests.rs::placement_admin_wire_rpc::placement_admin_wire_rpcs_move_data_across_a_real_three_node_cluster` must pass every recorded loaded repetition without flaky failures. The record must include at least two repetitions. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R015 Raft heartbeat flush and batch dispatch avoid head-of-line blocking Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft heartbeat flush and batch dispatch avoid head-of-line blocking.** Heartbeat flushing is independent per peer rather than shared across one coalesced batch, and per-group batch dispatch proceeds concurrently rather than blocking behind a single in-flight write for its full commit duration, so one slow peer or group cannot stall heartbeat or write processing for the others. | Verified by a benchmark measuring worst-case heartbeat processing time under load, with any remaining head-of-line risk bounded by a documented single-graph-per-group configuration. | requirement | EG-DURABLE-KERNEL | LANDED | a595f3a182c3 a676823d2b54 |
| EG-DURABLE-KERNEL-R016 Raft durability writes are batched to reduce commit latency Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft durability writes are batched to reduce commit latency.** Raft log append and commit batches multiple entries using durability batching and coalescing rather than issuing one redb write transaction per entry, reducing commit latency that otherwise runs on the order of a second per transaction regardless of cross-group contention. | Verified by a focused raft durability test and by commit-latency measurements comparing per-entry commits against batched commits. | requirement | EG-DURABLE-KERNEL | VERIFIED | 92943a9ed1bb a676823d2b54 src/server/persistence/redb_backend/raft_linger_tests.rs:12 |
| EG-DURABLE-KERNEL-R017 Correctness-gated benchmark compares EG against HelixDB Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Correctness-gated benchmark compares EG against HelixDB.** A pinned, correctness-gated benchmark suite measures point-get, multi-hop traversal, transactional batch, text/vector prefilter, and mixed graph/vector workloads against HelixDB, reporting latency, throughput, CPU, resident memory, and storage amplification for each. | Verified by a benchmark report that records exact configuration, hardware class, code revision, and measured results, with no superiority claim accepted without it. | requirement | EG-DURABLE-KERNEL | LANDED | a676823d2b54 d2a5aa6460df |
| EG-DURABLE-KERNEL-R018 UDF registry and response-dedup cache are tenant-scoped Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**UDF registry and response-dedup cache are tenant-scoped.** The UDF registry is keyed and scoped by tenant and actor through a single authorization chokepoint. A tenant cannot invoke or shadow another tenant's UDF. This follows the foreign-source scoping in EG-FEDERATED-QUERY-R013. The in-memory mutation response-dedup cache keys its entries by tenant and caller. It never replays one tenant's cached response to another. | Cross-tenant negative tests assert that UDF invoke and shadow attempts are denied. They also assert that the response-dedup cache never replays another tenant's cached response. | requirement | EG-DURABLE-KERNEL | VERIFIED | 745bf5943743 a1bb9fb9503e a676823d2b54 src/server/mutation/context.rs:549 src/server/udf_catalog.rs:126 |
| EG-DURABLE-KERNEL-R019 Graph lifecycle idempotency keys are tenant-scoped Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Graph lifecycle idempotency keys are tenant-scoped.** The lifecycle batch identifier used for `CreateGraph` and `DeleteGraph` idempotency includes tenant in addition to the verified agent identity and graph name, so two tenants using the same agent identity, idempotency key, and graph name never receive each other's replayed result or reveal cross-tenant graph existence. | Verified by a test creating the same idempotency key, agent identity, and graph name under two different tenants and asserting each gets its own independent outcome. | requirement | EG-DURABLE-KERNEL | VERIFIED | 745bf5943743 a1bb9fb9503e a676823d2b54 src/server/mutation_batch/lifecycle_tests.rs:410 |
| EG-DURABLE-KERNEL-R020 Bounded background scrub detects node corruption between restarts Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Bounded background scrub detects node corruption between restarts.** A background content scrub reads nodes using a read transaction with no write lock, resumes from a stored key cursor, runs at a bounded rate, and surfaces typed corruption findings on status and metrics, rather than relying on detection only at read time or the next restart. Unseal failures return a typed error instead of an untyped string. | Verified by a test that corrupts a persisted node, runs the scrub, and asserts a typed finding is reported and the cursor resumes correctly after restart. | requirement | EG-DURABLE-KERNEL | VERIFIED | 461f8c84eb44 745bf5943743 a676823d2b54 src/server/persistence/redb_backend/scrub_api_tests.rs:80 |
| EG-DURABLE-KERNEL-R021 Store-authority binding validates once per write transaction Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Store-authority binding validates once per write transaction.** `binding_for_write` in `crates/eg-storage/src/physical/binding.rs` validates owner-store authority and scope once per write transaction and caches the result for that transaction's duration, rather than repeating the full manifest and table check on every member access, while still failing closed at the transaction boundary. | Verified by a commit-latency benchmark showing per-commit validation overhead drop to a small constant cost instead of repeating per-member checks. | requirement | EG-DURABLE-KERNEL | VERIFIED | a1d6b2bd5e03 a5e7b2983a04 a676823d2b54 crates/eg-transaction/src/tests/write_authority.rs:19 |
| EG-DURABLE-KERNEL-R022 Just-in-time RBAC elevation requires two-person approval Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Just-in-time RBAC elevation requires two-person approval.** A dedicated `rbac.elevation` control lease is consulted by the access-check path to grant temporary elevated access, requires approval from two distinct principals, carries a hard expiry, is audited, and is never issued automatically by a learning or inference process. | Verified by tests asserting elevation is denied without two distinct approvers, denied after expiry, and always produces an audit record. | requirement | EG-DURABLE-KERNEL | VERIFIED | 2f37015096de a1d6b2bd5e03 a676823d2b54 crates/eg-core/src/isolation/elevation_tests.rs:156 crates/eg-core/src/isolation/elevation_tests.rs:190 crates/eg-core/src/isolation/elevation_tests.rs:85 |
| EG-DURABLE-KERNEL-R023 UQL enforces a read-only guarantee at compile time and by test Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**UQL enforces a read-only guarantee at compile time and by test.** `UnifiedQuery`, `UnifiedQueryText`, and `Uql` operations never perform a mutation or touch a durable domain, are idempotent, and execute against a `Snapshot`; a compile-time pin ensures operation dispatch takes the snapshot by shared reference so a mutable path cannot be introduced without a build failure. | Verified by an eg-capabilities invariant test asserting the read-only, idempotent, snapshot-based contract for all three query types. | requirement | EG-DURABLE-KERNEL | VERIFIED | a676823d2b54 e1ca1b8fd167 crates/eg-capabilities/tests/invariants.rs:504 |
| EG-DURABLE-KERNEL-R024 External graph and database backends become EG federation sources Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**External graph and database backends become EG federation sources.** The fan-out backend, PostgreSQL/AGE backend, Cypher transpiler, mirror target, outbox-based mirror, brain-guarded backend, Trino backend, and Spark job backends are implemented in this repository as ForeignSourceSpec federation sources and mirror targets rather than remaining external, undeleted components. One child per named backend (`.1` AGE, `.2` fan-out, `.3` Cypher transpiler, `.4` mirror target, `.5` outbox-based mirror, `.6` brain-guarded, `.7` Trino, `.8` Spark); each net-new child is further split producer-first by the typed-model/entry-point rule. Rollup: LANDED only once every child is. | Verified by integration tests that register each backend as a ForeignSourceSpec or MirrorTargetSpec and exercise a representative query or mirror operation through it. | requirement | EG-DURABLE-KERNEL | LANDED | 3a14159c3768 3ddc77c97ef8 7b7d4a0fb10f a676823d2b54 c2dd4c98fe60 |
| EG-DURABLE-KERNEL-R024.1 PostgreSQL/AGE backend becomes a ForeignSourceSpec source Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**PostgreSQL/AGE backend becomes a ForeignSourceSpec source.** A `ForeignSourceSpec::Cypher { backend: Age, .. }` wire spec is bound, under an explicit registration, to a read-only PostgreSQL credential in `crates/eg-plan/src/federation_age.rs`; the binding is refused unless the credential's endpoint matches the declared endpoint, and every fetch reuses the existing guarded SQL federation transport (read-only transaction, timeout, cardinality bound), so AGE mutation clauses cannot commit. Code root: `crates/eg-plan`. | Verified by tests covering a successful bound registration and probe, a mismatched-binding refusal that also proves the unbound wire spec still errors, and a Cypher-text injection guard on the generated dollar-quote delimiter. | requirement | EG-DURABLE-KERNEL | VERIFIED | 42a0b101b111 7b7d4a0fb10f a1d6b2bd5e03 c2dd4c98fe60 crates/eg-plan/src/federation_age.rs:219 crates/eg-plan/src/federation_age.rs:249 crates/eg-plan/src/federation_age.rs:267 |
| EG-DURABLE-KERNEL-R024.2 The fan-out backend becomes a `MirrorTargetSpec` federation mirror target Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**The fan-out backend becomes a `MirrorTargetSpec` federation mirror target.** No fan-out-shaped mirror target existed on main (net-new); split producer-first: `.1` is the typed `FanOut` spec plus validation and registration refusal, `.2` is the dispatch entry point that drives a bound driver through it. | Verified per child; `.1` by unit tests on the spec's validation and unbound-refusal behavior. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3ddc77c97ef8 7a8f87ca8484 |
| EG-DURABLE-KERNEL-R024.3 Cypher transpiler becomes a ForeignSourceSpec source Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Cypher transpiler becomes a ForeignSourceSpec source.** The existing external Cypher transpiler is implemented as a `ForeignSourceSpec` federation source in this repository, generalizing the per-backend binding `EG-DURABLE-KERNEL-R024.1` establishes for AGE to other Cypher-speaking backends. Code root: `crates/eg-plan`. | Verified by an integration test that registers a non-AGE Cypher backend as a `ForeignSourceSpec` and exercises a representative query through it. | requirement | EG-DURABLE-KERNEL | LANDED | 48abc77ce72e |
| EG-DURABLE-KERNEL-R024.4 Mirror target becomes a ForeignSourceSpec mirror target Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Mirror target becomes a ForeignSourceSpec mirror target.** The existing external mirror-target backend is implemented as a `ForeignSourceSpec` mirror target in this repository rather than remaining external. Code root: `crates/eg-plan`. | Verified by an integration test that registers the mirror target and exercises a representative mirror operation through it. | requirement | EG-DURABLE-KERNEL | LANDED | 48abc77ce72e |
| EG-DURABLE-KERNEL-R024.5 Outbox-based mirror becomes a `MirrorTargetSpec` mirror target Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Outbox-based mirror becomes a `MirrorTargetSpec` mirror target.** `MirrorTargetSpec::Outbox { consumer }` names the outbox consumer this mirror reads committed rows as, reusing the outbox contract `EG-DURABLE-KERNEL-R001`/`R002`/`R052` already gives (committed-only delivery, a stable per-consumer cursor, idempotent replay after outage) instead of a separate ad hoc mirror loop; `crates/eg-plan/src/mirror_target.rs`'s `target_for` validates the spec (refusing an empty or padded consumer name) and returns the same unbound refusal as `FanOut`/`Named` until a driver that actually drains the consumer's cursor registers. Code root: `crates/eg-plan` (wire type in `crates/eg-types`). | Verified by unit tests: the spec round-trips over the wire, an empty or padded consumer name is refused before any binding is attempted, and a valid-but-unbound outbox target fails closed on `send` without reaching any target. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3a14159c3768 42a0b101b111 crates/eg-plan/src/mirror_target.rs:261 crates/eg-plan/src/mirror_target.rs:271 crates/eg-plan/src/mirror_target.rs:282 crates/eg-plan/src/mirror_target.rs:292 |
| EG-DURABLE-KERNEL-R024.6 Brain-guarded backend becomes a ForeignSourceSpec source Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Brain-guarded backend becomes a ForeignSourceSpec source.** `ForeignSourceSpec::BrainGuarded { endpoint, guard_policy, query, id_field, score_field }` is PURE serde; `crates/eg-plan/src/federation_brain_guarded.rs` validates its shape then explicitly REFUSES with a named reason, since no bound guard-policy evaluation driver exists yet -- a well-formed spec is never run unguarded. Code root: `crates/eg-plan` (wire type in `crates/eg-types`). | Verified by unit tests: a well-formed spec is refused (not silently run unguarded), an empty guard policy is rejected before reaching that refusal, a score field matching the id field is rejected, and the wrong spec variant is rejected. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3a14159c3768 42a0b101b111 crates/eg-plan/src/federation_brain_guarded.rs:103 crates/eg-plan/src/federation_brain_guarded.rs:115 crates/eg-plan/src/federation_brain_guarded.rs:132 crates/eg-plan/src/federation_brain_guarded.rs:95 |
| EG-DURABLE-KERNEL-R024.7 Trino backend becomes a ForeignSourceSpec source Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Trino backend becomes a ForeignSourceSpec source.** The existing external Trino backend is implemented as a `ForeignSourceSpec` federation source in this repository, reusing the guarded SQL federation transport `EG-DURABLE-KERNEL-R024.1` binds for PostgreSQL/AGE. An unmerged prior attempt (`crates/eg-plan/src/federation_trino.rs` on the abandoned branch at commit `bfa1cabd8494accef2ae87892bdd63d8358eec93`'s own ancestry) exists as a starting point and must be re-verified against current main before landing, not assumed current. Code root: `crates/eg-plan`. | Verified by an integration test that registers the Trino backend as a `ForeignSourceSpec` and exercises a representative query through it. | requirement | EG-DURABLE-KERNEL | VERIFIED | 42a0b101b111 7b7d4a0fb10f c2dd4c98fe60 crates/eg-plan/src/federation_trino.rs:335 |
| EG-DURABLE-KERNEL-R024.8 Spark job backend becomes a ForeignSourceSpec source Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Spark job backend becomes a ForeignSourceSpec source.** `ForeignSourceSpec::SparkBatch` already names a sealed, registered batch artifact; `crates/eg-plan/src/federation_spark.rs` adds the explicit per-registration half (the counterpart `federation_age`/`federation_trino` give their own backend), requiring `artifact_ref` to carry the `artifact://` scheme a registration surface issues (never a caller-provided path) before explicitly REFUSING, since no bound Spark artifact-store driver exists yet. `federation::source_for`'s generic dispatch already refuses an inline `SparkBatch` spec through `Oq2Unbound`. Code root: `crates/eg-plan`. | Verified by unit tests: a well-formed spec is refused (not silently accepted), a caller-provided path lacking the `artifact://` scheme is rejected, an empty artifact id after the scheme is rejected, a score field matching the id field is rejected, and the wrong spec variant is rejected. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3a14159c3768 42a0b101b111 crates/eg-plan/src/federation_spark.rs:100 crates/eg-plan/src/federation_spark.rs:112 crates/eg-plan/src/federation_spark.rs:124 crates/eg-plan/src/federation_spark.rs:141 crates/eg-plan/src/federation_spark.rs:92 |
| EG-DURABLE-KERNEL-R024.2.1 `MirrorTargetSpec::FanOut` is a typed, validated spec with registration refusal Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`MirrorTargetSpec::FanOut` is a typed, validated spec with registration refusal.** `crates/eg-types/src/wire_query_modalities.rs` adds `MirrorTargetSpec::FanOut { targets }`, refusing an empty or duplicate-target spec; `crates/eg-plan/src/mirror_target.rs` adds the `MirrorTarget` trait and a `target_for` builder that validates the spec and returns an unbound refusal (no driver bound yet), mirroring `federation::source_for`'s `Oq2Unbound` pattern for Trino/Cypher/SparkBatch before their dedicated backends existed. | Verified by unit tests: the spec round-trips over the wire, an empty or duplicate-target fan-out is refused before any binding is attempted, and a valid-but-unbound fan-out fails closed on `send` without reaching any target. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3ddc77c97ef8 42a0b101b111 crates/eg-plan/src/mirror_target.rs:138 crates/eg-plan/src/mirror_target.rs:148 crates/eg-plan/src/mirror_target.rs:159 crates/eg-plan/src/mirror_target.rs:169 |
| EG-DURABLE-KERNEL-R024.2.2 `MirrorTargetRegistry` is the one entry point a mirror-sink driver registers under and the outbox fan-out path resolves a name through Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`MirrorTargetRegistry` is the one entry point a mirror-sink driver registers under and the outbox fan-out path resolves a name through.** `crates/eg-plan/src/mirror_target.rs` adds `MirrorTargetRegistry` (`register`/`send_to`), mirroring `federation::ForeignSourceRegistry::register_spec`/`resolve`: an invalid spec is refused at registration time, a registered name resolves through the real `target_for` validate-and-dispatch path, and an unregistered name is a distinct clean error. | Verified by unit tests: an invalid spec is refused at registration (nothing is stored), a registered fan-out's `send_to` reaches the real unbound-driver refusal through the registry, and an unknown name reports a distinct "not registered" error. | requirement | EG-DURABLE-KERNEL | VERIFIED | 7a8f87ca8484 9a7674d1bae5 crates/eg-plan/src/mirror_target.rs:180 crates/eg-plan/src/mirror_target.rs:189 crates/eg-plan/src/mirror_target.rs:207 |
| EG-DURABLE-KERNEL-R025 Raft admin follows the current leader and traces are leader-agnostic Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Raft admin follows the current leader and traces are leader-agnostic.** A member-add administrative request follows the current leader to completion instead of returning a forward-to-leader response, the causal trace ring captures events across all nodes rather than only the calling thread so an election on another node is still traceable, and raft cluster tests tolerate a legal leader election instead of assuming a fixed leader. | Verified by a member-add test against a cluster undergoing an election and by raft tests that pass regardless of which node holds leadership. | requirement | EG-DURABLE-KERNEL | LANDED | 05bf09d8eee4 a676823d2b54 |
| EG-DURABLE-KERNEL-R026 Auth modes share one principal and RBAC evaluation path Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Auth modes share one principal and RBAC evaluation path.** The none, local, and external authentication modes all resolve through a single principal and RBAC evaluation path. The local mode provides a native user store with registration, login, password management, an administrative UI, and backing SQL tables, while external mode supports OIDC, SAML, LDAP, Active Directory, and SCIM authorities. | Verified by the auth-modes test scenario asserting all three modes resolve to the same internal principal and RBAC evaluator, with mode-specific negative cases denied. | requirement | EG-DURABLE-KERNEL | LANDED | 48abc77ce72e a676823d2b54 |
| EG-DURABLE-KERNEL-R027 Schema repair uses a reserved two-person approval lease (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Schema repair uses a reserved two-person approval lease (rollup).** Split into EG-DURABLE-KERNEL-R027.1 (model types), EG-DURABLE-KERNEL-R027.2 (dispatch wiring) and EG-DURABLE-KERNEL-R027.3 (raft catalog registration); landed when all three are landed. | Verified by each child requirement's own verification. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3c618dd255ba a676823d2b54 cd899a5c8c20 |
| EG-DURABLE-KERNEL-R027.1 Governed-change model types Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Governed-change model types.** `eg-types` defines the two-person governed-change ledger (`GovernedChange`, `GovernedLedger`, `GovernedActor`, the propose/approve/revoke/consume state machine) and reserves the `governed.` control-lease prefix against the generic lease path. | Verified by eg-types unit tests asserting self-approval is denied, a delegated approver is refused, a generic control lease of a governed kind is refused, an altered digest is rejected, and a consumed or revoked change cannot be reused. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3c618dd255ba 42a0b101b111 6e52c9bcfb57 d768ee483940 crates/eg-types/src/control_lease/tests.rs:171 crates/eg-types/src/governed_change/tests.rs:110 crates/eg-types/src/governed_change/tests.rs:148 crates/eg-types/src/governed_change/tests.rs:54 crates/eg-types/src/governed_change/tests.rs:77 |
| EG-DURABLE-KERNEL-R027.2 Governed-change dispatch wiring Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Governed-change dispatch wiring.** Depends on EG-DURABLE-KERNEL-R027.1. The wire protocol, capability policy and isolation layers serve propose/approve/revoke/get/list through the request boundary, with the acting identity server-stamped from the verified request context rather than trusted from the request body. | Verified by dispatch tests sent through the real request boundary, covering self-approval refusal, a delegated approver refusal, and a forged actor in the request body being overwritten. | requirement | EG-DURABLE-KERNEL | VERIFIED | 2a4982e949a3 3c618dd255ba 42a0b101b111 cd899a5c8c20 src/server/dispatch/governed/tests.rs:109 src/server/dispatch/governed/tests.rs:59 |
| EG-DURABLE-KERNEL-R027.3 Governed-change raft catalog registration Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Governed-change raft catalog registration.** Depends on EG-DURABLE-KERNEL-R027.2. The native raft method catalog records `GovernedChange` in the `Identity` domain, the same replication class as `RbacAdmin`/`RbacElevation`/`Identity`; without this record `NativeMutationCommand::from_public_method` refuses the method outright instead of sealing it into a native consensus command. | Verified by a round-trip test sealing a `GovernedChange` method into a native command and opening it back, asserting it resolves to the `Identity` domain. | requirement | EG-DURABLE-KERNEL | VERIFIED | 3c618dd255ba 42a0b101b111 cd899a5c8c20 src/raft/command/native/tests.rs:279 |
| EG-DURABLE-KERNEL-R028 WorkItem lifecycle test uses a consistent verified tenant Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**WorkItem lifecycle test uses a consistent verified tenant.** The work-item metadata CAS lifecycle test signs its request as the same tenant it names in the work-item body, and the tenant guard in ClaimWorkItem denies a request naming a foreign tenant rather than allowing a mismatched signer and body tenant to pass. | Verified by the focused work-item lifecycle test surviving a restart under the corrected tenant fixture and by a negative case proving a foreign-tenant claim is denied. | requirement | EG-DURABLE-KERNEL | SPECIFIED | 15451958704f a676823d2b54 |
| EG-DURABLE-KERNEL-R029 Universal read-RLS gate checks the current TsScan dispatch path Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Universal read-RLS gate checks the current TsScan dispatch path.** scripts/check_universal_read_rls.py verifies tenant scoping on the series executor's actual dispatch path through exec/dispatch.rs into exec/tsscan.rs, confirming SeriesKey::new(tenant, graph, series) and range-scoped access, rather than checking a superseded code path. | Verified by running the universal read-RLS gate against the current executor layout and confirming it detects the scoped SeriesKey and range-scoped call. | requirement | EG-DURABLE-KERNEL | LANDED | 0447684dce7b a676823d2b54 |
| EG-DURABLE-KERNEL-R030 Reserved RBAC elevation lease kind cannot be issued generically Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Reserved RBAC elevation lease kind cannot be issued generically.** An unrestricted principal can issue any non-reserved control lease kind, but the rbac.elevation kind remains globally reserved for the dedicated two-person elevation flow and cannot be issued through the generic lease path by any principal, including an unrestricted one. | Verified by a per-principal kind-policy test asserting unrestricted principals can issue non-reserved kinds while an attempt to issue rbac.elevation generically is denied. | requirement | EG-DURABLE-KERNEL | LANDED | 3157bcbb4ac2 a676823d2b54 |
| EG-DURABLE-KERNEL-R031 Audit append supports tenant-scoped idempotent reservation Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Audit append supports tenant-scoped idempotent reservation.** AuditAppend provides a tenant-scoped, idempotent reservation in a pending state, followed by a linked terminal outcome and reconciliation if the outcome is interrupted. It rejects a request with a missing audit class or when the durable audit writer is unavailable, and binds to verified service-level claims of the caller. | Verified by tests covering duplicate reservation requests, writer-unavailable rejection, missing-class rejection, and reconciliation after a crash between reservation and outcome. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 2cc878fb8938 8628416b1736 8e288da667fc 94edcf341758 src/redb_store/operation_audit_tests.rs:278 |
| EG-DURABLE-KERNEL-R032 Native primary-key fast path bypasses the SQL planner Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Native primary-key fast path bypasses the SQL planner.** Primary-key point operations issued over the pgwire, MySQL, and MSSQL wire listeners execute through a native fast path that bypasses DataFusion query planning while applying the same authorization and audit checks as the planned path. A hybrid storage provider unions a hot redb tier with a cold eg-lake tier under compaction, relying on the write-latency reduction in EG-DURABLE-KERNEL-R016. Split per the net-new rule (no fast-path routing type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by a differential test comparing fast-path and planned-path results for primary-key operations and a compaction test over the hot/cold union provider. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 49c43fca68d0 |
| EG-DURABLE-KERNEL-R032.1 PrimaryKeyOperation and FastPathDecision are typed, and routing refuses rather than silently bypassing checks Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**PrimaryKeyOperation and FastPathDecision are typed, and routing refuses rather than silently bypassing checks.** `crates/eg-types/src/fast_path.rs` defines a closed `PrimaryKeyOperation` enum and a `route` decision function whose `Ok` result always carries authorization-checked and audit-checked as true, and which refuses (not downgrades) an unauthorized operation. | Verified by unit tests: operation round-trips through its wire name, an authorized operation routes with both checks true, and an unauthorized operation is refused for every operation variant. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 49c43fca68d0 crates/eg-types/src/fast_path.rs:109 crates/eg-types/src/fast_path.rs:118 crates/eg-types/src/fast_path.rs:81 crates/eg-types/src/fast_path.rs:97 |
| EG-DURABLE-KERNEL-R033 Hot-store engine choice is evaluated against captured workloads Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Hot-store engine choice is evaluated against captured workloads.** A hot-store storage-engine evaluation compares redb, fjall, and RocksDB behind the existing storage interface using captured traffic from representative application workloads and a finance workload, and records the outcome in an architecture decision record. Split per the net-new rule (no engine-comparison type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by a benchmark report comparing the three engines on the same captured workloads and by the published architecture decision record. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 be3fad3f9840 |
| EG-DURABLE-KERNEL-R033.1 HotStoreEngine, WorkloadProfile, and BenchmarkResult are typed, and winner selection refuses rather than silently defaulting Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**HotStoreEngine, WorkloadProfile, and BenchmarkResult are typed, and winner selection refuses rather than silently defaulting.** `crates/eg-types/src/hot_store_engine.rs` defines the closed engine/workload enums, a validated `BenchmarkResult`, and a `select_winner` decision that refuses when no captured result matches the requested workload. | Verified by unit tests: engine/workload variants round-trip through their wire names, an invalid benchmark result (non-positive throughput) is refused, the highest-throughput engine is selected for a workload, and selection is refused when no result matches the requested workload. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b be3fad3f9840 crates/eg-types/src/hot_store_engine.rs:125 crates/eg-types/src/hot_store_engine.rs:140 crates/eg-types/src/hot_store_engine.rs:157 crates/eg-types/src/hot_store_engine.rs:168 crates/eg-types/src/hot_store_engine.rs:190 |
| EG-DURABLE-KERNEL-R034 Cross-store atomicity is proven and scoped to mixed transactions Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Cross-store atomicity is proven and scoped to mixed transactions.** Cross-store atomicity has an architecture decision record and an implementation such that traffic confined to a single store never enters the cross-store commit path, and the mechanism survives a hard process kill without partial application. Split per the net-new rule (no transaction-scope type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by a crash-consistency test that kills the process mid-commit and a concurrency anomaly corpus exercising the cross-store path. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 5dc0a601b2cf |
| EG-DURABLE-KERNEL-R034.1 TransactionScope and CommitPath are typed, and a single-store scope structurally can never map to the cross-store commit path Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**TransactionScope and CommitPath are typed, and a single-store scope structurally can never map to the cross-store commit path.** `crates/eg-types/src/cross_store_scope.rs` defines a closed `TransactionScope` enum, a classifier that refuses an empty (zero-store) transaction, and a pure, total `commit_path_for` mapping where `SingleStore` always yields `Direct` and `CrossStore` always yields `CrossStoreCoordinated`. | Verified by unit tests: scope variants round-trip through their wire name, classifying zero stores is refused, one store classifies as single-store and more than one as cross-store, and the commit-path mapping is deterministic per scope. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 5dc0a601b2cf crates/eg-types/src/cross_store_scope.rs:65 crates/eg-types/src/cross_store_scope.rs:79 crates/eg-types/src/cross_store_scope.rs:85 crates/eg-types/src/cross_store_scope.rs:94 |
| EG-DURABLE-KERNEL-R035 PostgreSQL wire protocol reaches operational and dump/restore parity Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**PostgreSQL wire protocol reaches operational and dump/restore parity.** The PostgreSQL-compatible wire surface supports pg_dump and pg_restore, exposes a replication protocol, and provides operational parity including pg_stat views, pg_locks, EXPLAIN, query cancellation, and pooler transaction mode. Split per the net-new rule (no operational-surface tracking type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by a compatibility test suite running pg_dump and pg_restore round trips and exercising each operational surface against the PostgreSQL wire listener. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 de5f096bc0fd |
| EG-DURABLE-KERNEL-R036 Mirror sinks reach fan-out parity and include Postgres table mirroring Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Mirror sinks reach fan-out parity and include Postgres table mirroring.** EG mirror sinks reach parity with the existing fan-out mirror backend, providing a durable per-mirror cursor, replay after outage, reconciliation, and a non-empty-default guard, and additionally support mirroring SQL user tables to a real PostgreSQL target. Every mirror target registers in the attached-source registry. Split per the net-new rule (no sink-side cursor type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by outage/replay/reconcile tests against a mirror sink and a PostgreSQL-target mirroring test confirming registration in the attached-source registry. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 d833c1d987a6 |
| EG-DURABLE-KERNEL-R036.1 MirrorSinkKind and MirrorCursor are typed, and the cursor refuses an empty-string position Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**MirrorSinkKind and MirrorCursor are typed, and the cursor refuses an empty-string position.** `crates/eg-types/src/mirror_sink.rs` defines the closed fan-out/postgres sink kind and a cursor whose constructor and advance method both refuse an empty position, so a mirror cursor can never silently start or resume from the default/empty string. | Verified by unit tests: sink-kind variants round-trip through their wire name, cursor construction refuses an empty position for both kinds, advancing refuses an empty next-position, and a refused advance leaves the cursor's prior position unchanged. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b d833c1d987a6 crates/eg-types/src/mirror_sink.rs:111 crates/eg-types/src/mirror_sink.rs:121 crates/eg-types/src/mirror_sink.rs:130 crates/eg-types/src/mirror_sink.rs:138 crates/eg-types/src/mirror_sink.rs:147 |
| EG-DURABLE-KERNEL-R035.1 PgOperationalSurface and a fail-closed PgCompatibilityMatrix are typed Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**PgOperationalSurface and a fail-closed PgCompatibilityMatrix are typed.** `crates/eg-types/src/pg_operational_surface.rs` defines the closed set of required PostgreSQL operational surfaces (pg_dump, pg_restore, replication, pg_stat views, pg_locks, EXPLAIN, query cancellation, pooler transaction mode) and a matrix that starts fail-closed and refuses a parity check naming any surface not explicitly declared supported. | Verified by unit tests: every surface round-trips through its wire name, a fresh matrix reports every surface unsupported, a parity check is refused and names exactly the missing surfaces, and the check succeeds once every surface is declared. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b de5f096bc0fd crates/eg-types/src/pg_operational_surface.rs:105 crates/eg-types/src/pg_operational_surface.rs:131 crates/eg-types/src/pg_operational_surface.rs:140 crates/eg-types/src/pg_operational_surface.rs:153 |
| EG-DURABLE-KERNEL-R037 Workload classifier routes point operations around the SQL planner Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Workload classifier routes point operations around the SQL planner.** A workload classifier at every wire listener, including native, RESP, pgwire, MySQL, and MSSQL, routes point and data-structure operations to the native KvStore/GraphCore path without allocating a DataFusion session, while SQL statements route to the planner; the classification is cached per prepared statement. Split per the net-new rule (no classifier type existed on main): `.1` is the typed model. Rollup: LANDED only once every child is. | Verified by a route test confirming no DataFusion session is created for classified point/structure operations and a cache test confirming classification is reused for a repeated prepared statement. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 4ed831ced92f |
| EG-DURABLE-KERNEL-R038 KV namespaces declare an explicit, enforced durability class Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**KV namespaces declare an explicit, enforced durability class.** Each KV namespace or table declares a durability class of ephemeral, meaning in-memory with TTL and no durable log; async, meaning group commit with a measured loss window of at most 100 milliseconds; or sync, the default, meaning commit before acknowledgment. The declared class is visible and never silently downgraded, the measured loss window is exported, and authorization plus HMAC-protected keyspace isolation apply in every class. Split per the net-new rule (no `DurabilityClass` type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by kill-point tests per class and a measurement test confirming the exported async loss window stays within the declared bound. | requirement | EG-DURABLE-KERNEL | SPECIFIED | 1ef84395fa69 2146c76bc6f8 |
| EG-DURABLE-KERNEL-R038.1 `DurabilityClass` is a typed enum with a declared loss-window bound and a refusal for an unrecognized name Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`DurabilityClass` is a typed enum with a declared loss-window bound and a refusal for an unrecognized name.** `crates/eg-types/src/durability_class.rs` defines `ephemeral`/`async`/`sync` as a closed enum (`sync` the default), exposes `Async`'s 100 ms loss-window ceiling, and parses a namespace's declared class name without ever silently downgrading an unrecognized one to a default. | Verified by unit tests: each class round-trips through its lowercase wire name, `sync` is the default, an unrecognized class name is refused (not downgraded), and a measured async loss window is accepted at/under 100 ms and refused over it. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 2146c76bc6f8 crates/eg-types/src/durability_class.rs:183 crates/eg-types/src/durability_class.rs:199 crates/eg-types/src/durability_class.rs:205 crates/eg-types/src/durability_class.rs:214 crates/eg-types/src/durability_class.rs:225 |
| EG-DURABLE-KERNEL-R038.2 The write path's durability selection: `write_plan`/`refuse_if_durable_log_write` are the one entry point a write admission calls Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**The write path's durability selection: `write_plan`/`refuse_if_durable_log_write` are the one entry point a write admission calls.** `DurabilityClass::write_plan` decides whether a write waits for its own durable commit and how wide a group-commit batch window it admits; `refuse_if_durable_log_write` refuses a durable (redb) log append on behalf of an `ephemeral` namespace, which declares none. The real storage-kernel write-admission call site threading these in is further work. | Verified by unit tests: `sync`'s plan waits with no batch window, `async`'s plan does not wait and batches within its declared loss window, `ephemeral`'s plan neither waits nor batches, an ephemeral durable-log append is refused, and sync/async durable-log appends are allowed. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 1a1ef47cb448 crates/eg-types/src/durability_class.rs:251 crates/eg-types/src/durability_class.rs:259 crates/eg-types/src/durability_class.rs:267 crates/eg-types/src/durability_class.rs:275 crates/eg-types/src/durability_class.rs:284 |
| EG-DURABLE-KERNEL-R037.1 `WorkloadClass` is a typed classifier with a refusal for an unrecognized operation kind Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`WorkloadClass` is a typed classifier with a refusal for an unrecognized operation kind.** `crates/eg-types/src/workload_class.rs` defines `Point`/`Structure`/`Sql`, a `bypasses_sql_planner` predicate, and `classify` over a wire listener's declared operation-kind name, refusing any name no rule recognizes rather than defaulting it to either path. | Verified by unit tests: point and structure operation kinds classify and report they bypass the SQL planner, `sql` classifies and reports it does not, and an unrecognized operation-kind name is refused. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 4ed831ced92f crates/eg-types/src/workload_class.rs:110 crates/eg-types/src/workload_class.rs:117 crates/eg-types/src/workload_class.rs:97 |
| EG-DURABLE-KERNEL-R037.2 `route` is the one dispatch entry point a wire listener calls to decide whether to allocate a DataFusion session Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`route` is the one dispatch entry point a wire listener calls to decide whether to allocate a DataFusion session.** `route(operation_kind)` classifies the operation and returns a `DispatchRoute` whose `allocate_datafusion_session` field is the dispatcher's one gate — never re-derived per listener by comparing against `WorkloadClass::Sql` directly. Splicing this call into each of the five listeners' real dispatch loops is further work. | Verified by unit tests: point/structure operations route with no session allocation, `sql` routes with session allocation, and an unrecognized operation kind's classifier refusal propagates through `route`. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b add3fe5b1d67 crates/eg-types/src/workload_class.rs:126 crates/eg-types/src/workload_class.rs:136 crates/eg-types/src/workload_class.rs:144 |
| EG-DURABLE-KERNEL-R039 In-memory data structures rebuild from the redb durability log Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**In-memory data structures rebuild from the redb durability log.** Hash, sorted-set, list, and set structures are held in memory as working state for ephemeral and async namespaces, with redb as the sole durability log; native atomic primitives include INCRBY with expiry, SET NX EX, CAS-based leases, a token bucket, a bounded counter, and a work-claim operation. On recovery, the in-memory tier rebuilds entirely from the redb log, which remains the only durability authority. Split per the net-new rule (no structure/primitive durability-declaration type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by a concurrent linearizability test on the atomic primitives and a recovery test that rebuilds the in-memory tier from the redb log after restart. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 a7372171174e |
| EG-DURABLE-KERNEL-R039.1 Every in-memory structure and atomic primitive is typed and structurally declares redb as its sole durability authority Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Every in-memory structure and atomic primitive is typed and structurally declares redb as its sole durability authority.** `crates/eg-types/src/atomic_primitive.rs` defines the closed data-structure and atomic-primitive kinds and a `DurabilityDeclaration` whose `redb_is_sole_authority` flag is always true by construction (not caller-settable), with `declare_all` enumerating every structure and primitive for a namespace. | Verified by unit tests: every kind round-trips through its wire name, a declaration always reports redb as sole authority regardless of subject or namespace, and `declare_all` covers every structure and primitive exactly once per namespace with no duplicates. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b a7372171174e crates/eg-types/src/atomic_primitive.rs:120 crates/eg-types/src/atomic_primitive.rs:161 crates/eg-types/src/atomic_primitive.rs:176 |
| EG-DURABLE-KERNEL-R040 Pipelined requests commit as a single batch Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Pipelined requests commit as a single batch.** A RESP pipeline or a pgwire extended-protocol batch is admitted once and committed as a single group commit, returning the same number of ordered replies as requests in the batch. Split per the net-new rule (no batch-admission type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Verified by a test sending a pipelined batch and confirming one admission decision, one commit, and correctly ordered per-request replies. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 726ee0a3eadf |
| EG-DURABLE-KERNEL-R041 SQL plan cache keyed by statement digest and schema version Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**SQL plan cache keyed by statement digest and schema version.** The engine caches repeated parameterized SQL execution plans keyed by statement digest and schema version, and invalidates cached plans using the existing dependency clock rather than introducing a separate cache mechanism. Split per the net-new rule (no plan-cache type existed on main): `.1` is the typed model. Rollup: LANDED only once every child is. | Route and invalidation tests for the native plan cache (KG-14) confirm cache hits are deterministic to the digest and schema version and invalidate correctly when the dependency clock advances. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 aaf7113fe427 |
| EG-DURABLE-KERNEL-R041.1 `PlanCacheKey`/`PlanCacheLookup` are a typed key and a pure lookup decision, refusing to reuse a plan whose schema version has gone stale Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`PlanCacheKey`/`PlanCacheLookup` are a typed key and a pure lookup decision, refusing to reuse a plan whose schema version has gone stale.** `crates/eg-types/src/plan_cache_key.rs` defines `PlanCacheKey { statement_digest: Digest256, schema_version: u64 }` and a `lookup` function returning `Hit`/`Miss`/`StaleSchema`, never silently reusing a candidate compiled for a different statement or an earlier schema version. | Verified by unit tests: a repeated statement under the same schema version hits, nothing cached misses, a schema-version advance reports `StaleSchema` with the cached version, a candidate for a different statement digest is treated as a miss, and the key is deterministic across separate digest computations of the same statement. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b aaf7113fe427 crates/eg-types/src/plan_cache_key.rs:142 crates/eg-types/src/plan_cache_key.rs:150 crates/eg-types/src/plan_cache_key.rs:157 crates/eg-types/src/plan_cache_key.rs:170 crates/eg-types/src/plan_cache_key.rs:178 |
| EG-DURABLE-KERNEL-R041.2 `PlanCache::prepare` is the one entry point a SQL statement handler calls at prepare time Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`PlanCache::prepare` is the one entry point a SQL statement handler calls at prepare time.** Generic over the compiled plan type, `prepare` reuses a cached plan on `Hit` without invoking the caller's compile closure, and compiles (then caches, replacing any stale entry) on `Miss`/`StaleSchema`. Splicing a call to it into the real pgwire/MySQL/MSSQL prepare handlers, and keying `schema_version` to the engine's existing dependency clock, is further work. | Verified by unit tests: a repeated `prepare` for the same digest and schema version does not invoke the compile closure a second time, and a schema-version advance invokes it again and replaces the stale cached plan rather than keeping both. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 88496b615981 crates/eg-types/src/plan_cache_key.rs:185 crates/eg-types/src/plan_cache_key.rs:207 |
| EG-DURABLE-KERNEL-R040.1 PipelineBatch and BatchCommitDecision are typed, proving one admission maps to exactly one commit with order-preserving replies Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**PipelineBatch and BatchCommitDecision are typed, proving one admission maps to exactly one commit with order-preserving replies.** `crates/eg-types/src/pipeline_batch.rs` defines a closed `PipelineProtocol` (RESP/pgwire-extended), a batch constructor that refuses an empty request list, and an `admit` function whose result always reports the exact request count and the replies in the exact original order. | Verified by unit tests: protocol variants round-trip through their wire name, constructing an empty batch is refused for both protocols, a non-empty batch constructs successfully, and admitting a multi-request batch reports the exact count with replies in the original order. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 726ee0a3eadf crates/eg-types/src/pipeline_batch.rs:101 crates/eg-types/src/pipeline_batch.rs:112 crates/eg-types/src/pipeline_batch.rs:78 crates/eg-types/src/pipeline_batch.rs:92 |
| EG-DURABLE-KERNEL-R042 Benchmark gate defines and proves performance superiority claims Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Benchmark gate defines and proves performance superiority claims.** A published benchmark suite, covering YCSB workloads A through F against the async durability class, redis-benchmark p99 against the ephemeral class, pgbench and HammerDB TPC-C, LDBC SNB Interactive, and a converged graph, vector, SQL and time-series benchmark against PostgreSQL with AGE, pgvector and TimescaleDB, defines what counts as outperforming those systems and publishes its configurations. Split per the net-new rule. `.1` is the typed model. `.100` binds complete measured input-token throughput, per-query cost and startup exclusion to the benchmark claim. Rollup: LANDED only once every child is. | A benchmark report (KG-15) is only accepted as a superiority claim when it is published with its configuration and a passing measured result for that comparison. `.100` requires reproducible served arithmetic and refuses missing or incomparable measurements. | requirement | EG-DURABLE-KERNEL | SPECIFIED | 1ef84395fa69 9eac21608e67 |
| EG-DURABLE-KERNEL-R042.1 `BenchmarkClaim` is a typed report record that is only accepted as a superiority claim when published with its configuration and a passing result Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`BenchmarkClaim` is a typed report record that is only accepted as a superiority claim when published with its configuration and a passing result.** `crates/eg-types/src/benchmark_claim.rs` names the five required comparisons, defines `BenchmarkClaim { comparison, configuration, measured_result, passed }`, and `accept_as_superiority_claim` refuses a missing configuration, a missing measured result, or a non-passing result — never accepting an incomplete or failing report as a claim. | Verified by unit tests: a published passing report is accepted; a missing configuration, a missing measured result, and a non-passing result are each refused with the specific reason. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 9eac21608e67 crates/eg-types/src/benchmark_claim.rs:101 crates/eg-types/src/benchmark_claim.rs:109 crates/eg-types/src/benchmark_claim.rs:118 crates/eg-types/src/benchmark_claim.rs:127 |
| EG-DURABLE-KERNEL-R043 MutationBatch is the sole persistent write envelope across stores Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**MutationBatch is the sole persistent write envelope across stores.** Every store member, including graph, table, KV and time series state, adopts MutationBatch as its persistent write envelope, using the owner manifest for a single admission decision and one idempotent terminal outcome instead of a store-specific write path. The read-only downstream graph change feed is specified by .100 and cannot introduce a second write path. | Restart/replay and mixed-member tests (KG-01) confirm every store member commits through the shared MutationBatch path with an idempotent terminal outcome. `.100` also proves feed events derive only from committed envelopes. | requirement | EG-DURABLE-KERNEL | SPECIFIED | 1d83cf4b704f 1ef84395fa69 |
| EG-DURABLE-KERNEL-R044 Upload cursor identifiers are never reused after a restart Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Upload cursor identifiers are never reused after a restart.** Upload cursor identifiers in src/server/blob/mod.rs are never reused across a restart, because the blob store persists a high-water mark that recovery reads before issuing any new cursor. | A restart test in src/server/blob/store/tests.rs proves the upload cursor high-water mark survives a restart and cursor ids remain monotonic afterward. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 1ef84395fa69 b43f33569dd4 src/server/blob/store/tests.rs:643 |
| EG-DURABLE-KERNEL-R045 A single owner-manifest lineage check governs format upgrades Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**A single owner-manifest lineage check governs format upgrades.** Format upgrades for durable storage layouts route through the one versioned owner-manifest lineage check and typed upgrade-refusal path; the SQL store no longer maintains its own separate offline upgrade routine outside that path. | Lineage golden fixtures and stale-binding negative tests (KG-03) confirm a format upgrade is accepted or refused only through the shared lineage check. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 94edcf341758 df476f0df010 crates/eg-storage/src/owner/sql_checkpoint_upgrade/tests.rs:192 |
| EG-DURABLE-KERNEL-R046 Polygon interior/touch predicates are correct for shared boundaries Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Polygon interior/touch predicates are correct for shared boundaries.** eg-geo's polys_interiors_meet in crates/eg-geo/src/predicates.rs correctly classifies touches, contains and within for identical polygons and polygons sharing only boundary edges, so boundary-only contact is never reported as interior overlap and identical polygons are reported as mutually containing rather than merely touching. | Unit tests in crates/eg-geo/src/predicates.rs cover identical polygons, coincident edges with a shared interior, and shared boundaries with interiors on opposite sides. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 1ef84395fa69 b43f33569dd4 crates/eg-geo/src/predicates.rs:802 crates/eg-geo/src/predicates.rs:815 crates/eg-geo/src/predicates.rs:868 |
| EG-DURABLE-KERNEL-R047 Ring-buffer eviction test matches whole entry identifiers Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Ring-buffer eviction test matches whole entry identifiers.** The ring-buffer capacity test verifies that the oldest entry is evicted once the buffer exceeds capacity by matching each entry's full anchored identifier, including its trailing delimiter, instead of an unanchored substring that could also match unrelated surviving entries sharing a numeric prefix. | ring_buffer_evicts_oldest_when_over_capacity asserts on the anchored identifier and fails if a wrongly retained or wrongly evicted entry is present. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 a1bb9fb9503e src/raft/harness/trace_capture.rs:481 |
| EG-DURABLE-KERNEL-R048 Dispatch-ordering guard test reliably locates its target function Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Dispatch-ordering guard test reliably locates its target function.** The dispatch-ordering guard in tests/sql_catalog_sharing.rs locates dispatch_graph_op_inner regardless of its visibility modifier, and fails loudly with a distinct diagnostic when it finds zero matching definitions or more than one ambiguous match, instead of silently passing on an unmatched search. | check_graph_access_precedes_query_and_rdf_try_handle_in_dispatch exercises the zero-match and ambiguous-match failure paths and its real ordering assertion against the current dispatch pipeline. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 cfb0a1279595 tests/sql_catalog_sharing.rs:413 |
| EG-DURABLE-KERNEL-R049 Idempotent retry of CreateGraph and DeleteGraph succeeds Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Idempotent retry of CreateGraph and DeleteGraph succeeds.** A retried CreateGraph or DeleteGraph that was already committed is recognized as idempotent by replaying its stored receipt, rather than being refused as already-exists or not-found; deleting a graph purges receipts from any prior incarnation of that name so a later retry cannot replay a stale outcome. | Idempotent replay tests for CreateGraph and DeleteGraph (KG-01) confirm a repeated commit returns the original outcome instead of a conflicting error. `delete_purges_receipts_of_a_prior_incarnation` checks recreation and replay across restart. `control_maintenance_reused_label_admits_at_the_current_version` checks control claims against their in-transaction version. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1c6b4c961a40 1ef84395fa69 3c481565fe1c 94edcf341758 ceec54145720 src/server/mutation_batch/lifecycle_tests.rs:242 |
| EG-DURABLE-KERNEL-R050 Blob garbage collection enforces a grace period before deletion Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Blob garbage collection enforces a grace period before deletion.** Blob garbage collection in src/server/blob/store.rs deletes a committed, unreferenced blob only after it has aged past a configured grace period, rather than deleting it immediately once it becomes unreferenced. | Grace-period sweep tests in src/server/blob/store/tests.rs prove a blob is retained until the grace period elapses and deleted only afterward. | requirement | EG-DURABLE-KERNEL | VERIFIED | 19da6ec1bc9b 1ef84395fa69 b43f33569dd4 src/server/blob/store/tests.rs:370 |
| EG-DURABLE-KERNEL-R051 BlobRef and BlobUnref are holder-scoped and idempotent Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**BlobRef and BlobUnref are holder-scoped and idempotent.** BlobRef and BlobUnref in src/server/blob/store/holders.rs track reference counts per named holder and are idempotent, so repeating the same acquire or release operation for a holder does not change the count beyond its first effect. | A test proving a named holder's acquire and release are idempotent across distinct operations covers this behavior. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 b43f33569dd4 src/server/blob/store/tests.rs:677 |
| EG-DURABLE-KERNEL-R052 Outbox delivery is organized by semantic class topics Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Outbox delivery is organized by semantic class topics.** Outbox delivery publishes semantically distinct event classes on their own topics, consistent with the outbox's per-consumer cursor and attempt-accounting contract, so a consumer for one event class is not blocked or confused by unrelated classes sharing a stream. | Failing-head and successor replay tests (KG-05) confirm per-class topic separation does not change attempt accounting or replay correctness. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 94edcf341758 9871859d4e0c d2e4cff47c86 crates/eg-transaction/src/tests/outbox.rs:2308 |
| EG-DURABLE-KERNEL-R053 AVX2 kernel paths are exercised on AVX2-capable hardware Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**AVX2 kernel paths are exercised on AVX2-capable hardware.** The downsampling kernel's AVX2 code path is executed and its output compared against the scalar reference on hardware that actually supports AVX2 instructions, rather than relying solely on golden values captured on hardware without AVX2. | A correctness run on AVX2-capable hardware compares AVX2 kernel output against the scalar reference within tolerance. | requirement | EG-DURABLE-KERNEL | LANDED | 1ef84395fa69 a1bb9fb9503e |
| EG-DURABLE-KERNEL-R054 Placement and consensus routing tests pass after command sealing changes Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Placement and consensus routing tests pass after command sealing changes.** Raft placement-catalog state-machine routing binds plan identity and replay nonce correctly, and three-node cluster placement admin wire RPCs correctly move data across the cluster, unaffected by native command sealing changes elsewhere in dispatch. | placement_state_machine_binds_plan_identity_and_replay_nonce and placement_admin_wire_rpcs_move_data_across_a_real_three_node_cluster (KG-10) pass against a live multi-node cluster. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 b43f33569dd4 src/raft/placement_harness.rs:149 src/raft/tests.rs:1016 |
| EG-DURABLE-KERNEL-R055 Durable-store registry classifies every .redb literal in the codebase Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Durable-store registry classifies every .redb literal in the codebase.** server::persistence::durable_stores maintains an exhaustive classification of every .redb string literal in the workspace as either a real durable store or a non-persisting test fixture, so no on-disk store can go unregistered. | registry_covers_every_redb_store statically scans the workspace sources for .redb literals and fails if any literal is unclassified. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 c143146d7855 src/server/persistence/durable_stores.rs:627 |
| EG-DURABLE-KERNEL-R056 Mutation durability classification is correct under every feature build Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Mutation durability classification is correct under every feature build.** is_durable_mutation in src/mutation_apply.rs classifies which mutations are durable consistently whether the server is compiled with the full or slim feature profile, so a durability classifier never answers differently depending on which features are compiled in. | test-mutation-apply-full and test-mutation-apply-slim both exercise is_durable_mutation under each feature profile and must pass identically. | requirement | EG-DURABLE-KERNEL | VERIFIED | 00a38629d214 1ef84395fa69 5bf5b719de7e src/mutation_apply.rs:206 |
| EG-DURABLE-KERNEL-R057 Sealed record classes are protected by a create-only write guard Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Sealed record classes are protected by a create-only write guard.** Sealed, content-addressed record classes such as AnalysisSnapshot are protected by an engine-enforced write guard that permits creation but refuses any overwrite of an existing sealed record except through its owning operation, so a generic graph-node write cannot silently replace a sealed record. | A negative test proves a generic write is refused against an existing sealed record, and a positive test proves the owning operation can still update it. | requirement | EG-DURABLE-KERNEL | VERIFIED | 00a38629d214 1ef84395fa69 5c2ab50088c4 src/sealed_guard/tests.rs:56 tests/sealed_record_guard.rs:210 |
| EG-DURABLE-KERNEL-R058 Source-batch publication waiter cancellation is deterministic Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Source-batch publication waiter cancellation is deterministic.** cancelling_publication_waiter_does_not_cancel_owned_commit in server::handlers::source_batch synchronizes explicitly rather than relying on sleeps or wall-clock deadlines, so its outcome does not depend on disk or scheduling latency. | The test passes repeatedly both in isolation and under heavy concurrent disk fsync contention. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 480766675bd1 src/server/handlers/source_batch/tests.rs:176 |
| EG-DURABLE-KERNEL-R059 Garbage collection preserves chunks shared with a direct reference Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Garbage collection preserves chunks shared with a direct reference.** Blob garbage collection's live-chunk set in src/server/blob/store/gc.rs includes chunks reachable through a direct reference, not only chunks named by a live upload manifest, so a chunk shared between a dead upload and a direct reference is never deleted. | Sweep tests in src/server/blob/store/tests.rs confirm a racing refcount sweep never deletes a live chunk and a chunk shared with a direct reference survives the manifest that named it. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1ef84395fa69 b43f33569dd4 src/server/blob/store/tests.rs:420 |
| EG-DURABLE-KERNEL-R060 Unsupported legacy graph-data layouts are not silently migrated Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Unsupported legacy graph-data layouts are not silently migrated.** An on-disk graph-data directory in a format version the engine no longer supports is not required to be read or migrated; the engine fails closed with a typed upgrade-required error instead of silently reinterpreting it, and recovery proceeds by starting a fresh store and re-ingesting source data. | A negative test feeds an unsupported on-disk layout and confirms the engine refuses with the named upgrade-required error rather than attempting an implicit migration. | requirement | EG-DURABLE-KERNEL | VERIFIED | 00a38629d214 1ef84395fa69 9bc78efe95b3 crates/eg-storage/src/owner/lineage_tests.rs:109 |
| EG-DURABLE-KERNEL-R061 Test threading avoids unbounded channels and dead-time joins Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Test threading avoids unbounded channels and dead-time joins.** source_batch's test helpers use bounded rendezvous channels and a bounded join with a deadline instead of an unbounded std::sync::mpsc::channel or an indefinite JoinHandle::join, consistent with this repository's disallowed-methods lint, and a condition that can only ever be true is checked as a compile-time constant assertion rather than a runtime assertion on constants. | clippy across the workspace with all features and targets enabled passes with zero violations of the disallowed-methods and assertions-on-constants lints in this module. | requirement | EG-DURABLE-KERNEL | LANDED | c143146d7855 |
| EG-DURABLE-KERNEL-R062 Abandoned uploads are reclaimed after an idle TTL Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Abandoned uploads are reclaimed after an idle TTL.** Blob garbage collection in src/server/blob/store/gc.rs reclaims uploads that have been idle past a configured default TTL defined in src/server/blob/store/policy.rs, rather than leaving abandoned uploads unreclaimed indefinitely. | The GC sweep test suite exercises the abandoned-upload TTL split and asserts the uploads-expired counter increments correctly. | requirement | EG-DURABLE-KERNEL | VERIFIED | 00a38629d214 b43f33569dd4 src/server/blob/store/tests.rs:549 |
| EG-DURABLE-KERNEL-R063 Version-2 control-state rows are lifted losslessly on read (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Version-2 control-state rows are lifted losslessly on read (rollup).** When an existing graph shard still stores version-2 control-state rows, the engine reads and lifts them to the current representation losslessly in place, rather than requiring an offline migration or dropping any of their fields. Split (2026-10-09): `.1` the schema-version plumbing that exists today, `.2` the missing lift-on-read behavior. | Lineage golden fixtures (KG-03) cover reading a version-2 control-state row and confirm the lifted representation is lossless against the original fields. | requirement | EG-DURABLE-KERNEL | SPECIFIED | f17f47ab300f |
| EG-DURABLE-KERNEL-R063.1 Schema-version fields exist and mismatches are refused, not lifted Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Schema-version fields exist and mismatches are refused, not lifted.** `eg-storage` carries `schema_version`/`store_schema_version` fields (e.g. `DIRECT_STATE_SCHEMA_VERSION` in `crates/eg-storage/src/direct_state/journal/mod.rs`, `STORAGE_KERNEL_SCHEMA_VERSION` checks in `crates/eg-storage/src/recovery/validate.rs`) that compare the stored version against the current one by strict equality and refuse a mismatch; there is no version-2-specific control-state row type and no lift-on-read code. The landed_in SHA previously recorded against this row (`f17f47ab300f`) is an unrelated schema-authority commit, not this feature. | Existing unit tests in `crates/eg-storage/src/direct_state/journal/mod.rs` and `crates/eg-storage/src/recovery/validate.rs` cover the strict-equality version check (refusal), not lifting. | requirement | EG-DURABLE-KERNEL | VERIFIED | ac32740601a8 crates/eg-storage/src/direct_state/tests/contract.rs:82 |
| EG-DURABLE-KERNEL-R063.2 Remaining scope: lossless lift-on-read for version-2 control-state rows Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Remaining scope: lossless lift-on-read for version-2 control-state rows.** Add a version-2 control-state row representation plus read-path code that, on encountering `schema_version == 2`, lifts the row to the current representation in place (preserving every original field) instead of refusing the mismatch as `recovery/validate.rs` does today — no offline migration step. | Lineage golden fixtures (KG-03) cover reading a version-2 control-state row and confirm the lifted representation is lossless against the original fields (the original R063 acceptance test, now bound to this child). | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R064 Compiled shape memoization is benchmarked against parsing per write Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Compiled shape memoization is benchmarked against parsing per write.** Memoizing the compiled validation-shapes union is evaluated against re-parsing shapes on every write, with a measured benchmark naming the workload and hardware, before the memoized path is adopted as a performance improvement. | A benchmark comparing memoized versus parse-per-write shape compilation reports a measured latency difference under the same methodology required for other performance claims. | requirement | EG-DURABLE-KERNEL | LANDED | bee3dd02e6ed |
| EG-DURABLE-KERNEL-R065 Signed dispatch commit recovers correctly after an ack-lost fault window Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Signed dispatch commit recovers correctly after an ack-lost fault window.** signed_dispatch_commit_fault_windows_recover_parent_once confirms that when an acknowledgment is lost during a fault window, transaction reconciliation recovers the parent operation exactly once rather than duplicating or dropping it. | The full facade test suite, including tests/txn_reconcile_ack_lost_retry.rs::signed_dispatch_commit_fault_windows_recover_parent_once, passes deterministically. | requirement | EG-DURABLE-KERNEL | VERIFIED | 57a12eb06632 tests/txn_reconcile_ack_lost_retry.rs:573 |
| EG-DURABLE-KERNEL-R066 Published contract metadata matches BlobRef/BlobUnref idempotent behavior Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Published contract metadata matches BlobRef/BlobUnref idempotent behavior.** The published method contract marks BlobRef and BlobUnref as idempotent, matching their actual holder-scoped idempotent implementation, so the contract metadata and runtime behavior do not disagree. | A contract-conformance check compares the declared idempotent metadata for BlobRef and BlobUnref against the holder-scoped idempotent behavior proven in their own tests. | requirement | EG-DURABLE-KERNEL | LANDED | b8814b4560d1 |
| EG-DURABLE-KERNEL-R067 Trace capture isolates each test's events from concurrent noise Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Trace capture isolates each test's events from concurrent noise.** Causal trace capture for Raft failure diagnosis is scoped per thread rather than kept in a single shared global ring buffer, so a failing cluster test's captured trace contains only its own events and is not evicted by unrelated concurrent tests' activity. | Raft trace-capture tests confirm a failing cluster's trigger event remains present in its own per-thread trace buffer under concurrent load. | requirement | EG-DURABLE-KERNEL | VERIFIED | 1813f2b5190d 57a12eb06632 src/raft/harness/trace_capture.rs:601 |
| EG-DURABLE-KERNEL-R068 Channel-group leave returns its own result, not a replayed join result Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Channel-group leave returns its own result, not a replayed join result.** The admin saga handler in src/server/handlers/admin/saga.rs decodes a durable ResultPayload using its tagged representation rather than treating it as a plain JSON string, so a leave operation on a channel group returns its own outcome instead of incorrectly replaying a stored join result. | A join-then-leave-then-rejoin regression test for channel groups confirms each operation returns its own correct result. | requirement | EG-DURABLE-KERNEL | LANDED | cee22e5290b1 |
| EG-DURABLE-KERNEL-R069 Scrub cursor fixture reliably tests the no-key encryption state Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Scrub cursor fixture reliably tests the no-key encryption state.** The scrub-cursor-survives-reopen test saves and restores the shared encryption environment under its write lock and forces the no-key condition for its own fixture, so its expected sealed-without-key finding does not depend on whether an earlier test in the same run already provisioned the process-wide encryption key. | scrub_cursor_survives_reopen_and_the_walk_skips_nothing passes both in isolation and as part of the full combined test suite regardless of run order. | requirement | EG-DURABLE-KERNEL | VERIFIED | be291021dfdc src/server/persistence/redb_backend/scrub_api_tests.rs:81 |
| EG-DURABLE-KERNEL-R070 Operator command inspects and applies registered offline store upgrades Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Operator command inspects and applies registered offline store upgrades.** The server binary has one operator command with two verbs over a data directory. `inspect` reads every store's format without writing anything and reports, through its exit status, whether nothing needs doing, an upgrade is available, a store is in a format this build neither opens nor upgrades, or a store could not be read. `apply` requires an explicit confirmation flag, refuses while an engine holds the directory, runs each registered offline upgrade in place with existing rows preserved, stops at the first failure with that store left in its previous layout, never writes a store it does not upgrade, and reports nothing to do on a second run. The upgrades come from one registry in the storage kernel, so adding an upgrade is one entry. The engine never upgrades a store itself: it refuses to start on a store a registered upgrade applies to, with that store's named format error and the exact command to run. That is the only store state that refuses startup this way; any other failure of a lazily opened store stays local to that store. | Verified by command tests on disposable stores: inspect on current stores reports nothing to do and writes nothing; inspect on a registered predecessor reports an available upgrade; apply upgrades graph-shard, Agent Library and SQL catalog predecessors with the exact row bytes kept and is a no-op on a second run; both verbs refuse while the directory's engine lock is held; apply without confirmation opens nothing; an undeclared or non-upgradable format is reported and left byte-identical; a failed upgrade stops the run and leaves later stores untouched; a predecessor left by an unclean shutdown is still upgraded; and the startup check and the ordinary store opens refuse a predecessor with the named error and the command. Storage-kernel tests prove every registry entry is a declared predecessor and reaches the current layout exactly once. | requirement | EG-DURABLE-KERNEL | LANDED | 8dbb5bd9de53 |
| EG-DURABLE-KERNEL-R071 Typed durable task-queue model (enqueue/claim/ack) with refusal tests Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Typed durable task-queue model (enqueue/claim/ack) with refusal tests.** `eg-types` defines `TaskEnqueue`, `TaskClaim` and `TaskAck` for the served durable task queue that replaces AU's Postgres and Kafka queue backends. A blank queue name, zero lease, ack of an unclaimed or expired lease, and a duplicate idempotency key each resolve to a typed refusal. Unblocks AU-SEMANTIC-R011.3 and AU-SEMANTIC-R011.4. | Unit tests wire-round-trip each type and assert each listed refusal. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R072 Served task-queue RPC over the durable outbox Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Served task-queue RPC over the durable outbox.** One served RPC pair, `TaskQueueEnqueue`/`TaskQueueClaim`/`TaskQueueAck`, persists tasks in the durable outbox so an unacked claim redelivers after lease expiry and survives restart. Unblocks AU-SEMANTIC-R011.3 and AU-SEMANTIC-R011.4. | One integration test enqueues, claims, lets the lease lapse, reopens the store and re-claims the same task. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R073 Generated client method for the task queue Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Generated client method for the task queue.** The generated Python client exposes `task_queue_enqueue`, `task_queue_claim` and `task_queue_ack` from the Rust schema source. Unblocks AU-SEMANTIC-R011.3 and AU-SEMANTIC-R011.4. | A generated-client test calls each method against the served RPC and a generation check shows no hand-written drift. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R074 Served worker registry (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Served worker registry (rollup).** Split into R074.1 (pure producer) and R074.2 (served integration); both are required. The engine serves a worker registry with register, heartbeat and expiry of typed `WorkerRecord`s. Unblocks AU-SEMANTIC-R011.5.1 (AU `worker_scheduler.py`). | One test registers a worker, lets the heartbeat lapse and asserts it is expired. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R074.1 Typed worker registry producer and pure lifecycle Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Typed worker registry producer and pure lifecycle.** `eg-types::worker_registry` owns capacity-bearing WorkerRegistration/WorkerRecord and deterministic register, heartbeat, live lookup and expiry transitions. Refuse invalid capacity, empty identity/lanes, zero or overflowing TTL, duplicate live registration, unknown/expired heartbeat and clock regression without mutation. No served surface claimed. | Native tests cover register/heartbeat/expiry at the exact deadline, serde capacity round trip, every refusal and re-registration after expiry. | requirement | EG-DURABLE-KERNEL | VERIFIED | e7b0f9f670c9 crates/eg-types/src/worker_registry.rs:191 crates/eg-types/src/worker_registry.rs:212 crates/eg-types/src/worker_registry.rs:257 crates/eg-types/src/worker_registry.rs:277 |
| EG-DURABLE-KERNEL-R074.2 Served worker registry integration Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Served worker registry integration.** Depends on R074.1. Wire register, heartbeat and expiry through authenticated engine dispatch using the producer. Generate the wire/client contract and enforce tenant/principal ownership. | Served dispatch test registers capacity, heartbeats, advances the clock to expiry and verifies disappearance. Unknown, expired and cross-owner requests refuse. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R075 Reserved-worker admission decision Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Reserved-worker admission decision.** A served `AdmitWorkerTask` decision returns admit or a typed refusal, keeping reserved workers free for their lane. Unblocks AU-SEMANTIC-R011.5.1. | One test shows a non-reserved task refused when only reserved capacity remains. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R076 Scheduler config and lane floors (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Scheduler config and lane floors (rollup).** `SchedulerConfig` with per-lane minimum worker floors is a typed served setting; a floor sum above total workers is refused. Split producer-first per SPEC-SIZING into R076.1 (pure contract) and R076.2 (served integration); both must be delivered. Unblocks AU-SEMANTIC-R011.5.1 only after R076.2. | Pure-model tests plus served setting/admission tests; R076.1 alone does not satisfy this parent. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R076.1 Authoritative scheduler config model and refusal Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Authoritative scheduler config model and refusal.** `eg_types::scheduler_config::SchedulerConfig` carries explicit `total_workers`, `max_queue_depth`, per-lane floors, `cores_per_mille` default 360 and `memory_per_worker_bytes` default 3 GiB (EG-PLACEMENT-R002.2). Validation refuses over-subscribed floors without integer overflow, blank lanes, CPU shares above 1000 and zero memory per worker. Zero workers, CPU share or queue depth explicitly disables that resource. | Native tests round-trip real serde defaults/overrides; cover exact/over-subscribed floors, overflow, bounds and malformed wire fields. | requirement | EG-DURABLE-KERNEL | VERIFIED | 57050996421e crates/eg-types/src/scheduler_config.rs:112 crates/eg-types/src/scheduler_config.rs:127 crates/eg-types/src/scheduler_config.rs:142 crates/eg-types/src/scheduler_config.rs:155 crates/eg-types/src/scheduler_config.rs:169 |
| EG-DURABLE-KERNEL-R076.2 Serve and consume validated scheduler settings Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Serve and consume validated scheduler settings.** Expose R076.1 through the authoritative engine setting path, validate configured lane membership against the engine lane registry, and use it for admission and queue limits without worker-local policy. Preserve scope and refusal behavior. Depends on R076.1 and the served registry/admission surfaces R074/R075. | Served read/update and claim tests prove rejected settings have no effect and accepted floors/limits govern admission; remains unimplemented by the pure model. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R077 Shard-writer width served by the scheduler surface Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Shard-writer width served by the scheduler surface.** The engine serves the current shard-writer width as a typed read that the scheduler uses to size write lanes. Unblocks AU-SEMANTIC-R011.5.1. | One test reads the width for a multi-shard tenant and asserts it matches the configured writers. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R078 Bitemporal stamping served method Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Bitemporal stamping served method.** A served method stamps valid-time and transaction-time on a written fact and refuses an inverted valid interval. Replaces AU `knowledge_graph/core/bitemporal.py`; unblocks AU-SEMANTIC-R011.8.1. | Unit test asserts both stamps and the inverted-interval refusal. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R079 Served as-of filtering Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Served as-of filtering.** A served as-of read returns only facts valid and recorded at the requested instants. Unblocks AU-SEMANTIC-R011.8.2. | One test writes superseded versions and asserts as-of returns the right version at two instants. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R080 Served supersession Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Served supersession.** A served supersede method closes the prior fact's interval and links the successor atomically; superseding an already-closed fact is refused. Split into `.1` (atomic refusal for missing successor endpoints) and `.2` (already-closed-fact refusal and served integration coverage). The parent remains open until both children are verified. Unblocks AU-SEMANTIC-R011.8.3. | One test supersedes twice and asserts the refusal and the closed interval. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R080.1 Supersession refuses a missing successor endpoint without closing the prior fact Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Supersession refuses a missing successor endpoint without closing the prior fact.** The existing served `SupersedeEdge` path validates both successor endpoints under its topology write guard before changing the prior validity or transaction interval. This is the atomic-refusal child of R080; already-closed-fact refusal and served end-to-end verification remain open. | A GraphCore regression exercises missing source and missing target, verifies byte-identical prior properties and no successor on refusal, then creates the missing endpoint and proves retry closes both prior intervals and inserts the successor. | requirement | EG-DURABLE-KERNEL | VERIFIED | 35cab6a7f65f crates/eg-core/tests/edge_supersession.rs:21 |
| EG-DURABLE-KERNEL-R080.2 Served supersession refuses an already-closed fact and proves the atomic history transition Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Served supersession refuses an already-closed fact and proves the atomic history transition.** Complete the existing `SupersedeEdge` handler's prior-fact lifecycle guard and successor provenance contract, preserving the original intervals and refusing repeated supersession without inserting another successor. | A served-RPC integration test supersedes a fact, verifies both closed prior intervals and the linked successor, then supersedes the closed fact again and asserts refusal with unchanged history. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R081 Generated client methods for bitemporal operations Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Generated client methods for bitemporal operations.** The generated client exposes stamp, as-of and supersede methods. Unblocks AU-SEMANTIC-R011.8.4. | A generated-client test exercises each method end to end. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082 Analytics worker parity: association-rule mining jobs run on the engine's own durable job plane Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Analytics worker parity: association-rule mining jobs run on the engine's own durable job plane.** Rollup over `EG-DURABLE-KERNEL-R082.1`+. Replaces agent-utilities `analytics_worker.py` (commit 92974bae8, AU-SEMANTIC-R011.10), the `graph-os-analytics-worker` console script. That worker claimed `MineAssociate` jobs from the existing `eg-jobs` plane, mined association rules in Python, staged a typed result and asked the engine to publish it. The engine already provides every part except the verification that its colocated executor matches the old worker's governed behaviour: `src/server/handlers/jobs/executor_loop.rs` runs a bounded in-process worker pool that claims `mining.association` jobs, and `crates/eg-jobs` and the generated `JobsClient` already carry claim, renew, checkpoint, stage, publish, fail and cancel. The generic task queue in `EG-DURABLE-KERNEL-R071` to `R077` is a separate surface and is not a prerequisite for this path. Ownership: the engine owns execution through its colocated pool, so no separate worker process is needed for mining; see the architecture section 'Analytics worker carry-over'. | Each child below has its own named test; the rollup is verified when all children are verified. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.1 A submitted `MineAssociate` job is claimed and published by the colocated executor with no external worker Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**A submitted `MineAssociate` job is claimed and published by the colocated executor with no external worker.** `src/server/handlers/jobs/executor_loop.rs` already starts `EG_ANALYTICS_WORKERS` slots (default 1, capped at 32) that claim `mining.association` and `pool:default`. This row adds the missing end-to-end proof: submit, run, observe `Succeeded`. Replaces the old worker's claim and publish loop. | One server integration test in `src/server/handlers/jobs/graph_tests.rs` submits a `MineAssociate` job with a small transaction set and asserts the job reaches `Succeeded` with a non-empty result and no external worker connected. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.2 `MineAssociate` submission refuses a payload outside the governed schema Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`MineAssociate` submission refuses a payload outside the governed schema.** The old worker failed a job with reason `invalid_payload` for: transactions not a list of lists of strings, `min_support` or `min_confidence` non-finite or outside 0 to 1, or an algorithm outside apriori, fpgrowth (also fp-growth, fp_growth) and eclat. Defaults were support 0.1, confidence 0.5, algorithm fpgrowth. `src/server/handlers/jobs/submit.rs` validates at submit; this row verifies parity and fixes any gap. | A table-driven test in `src/server/handlers/jobs/graph_tests.rs` submits one payload per refusal listed above and asserts a typed refusal each, plus one accepted payload using the defaults. | requirement | EG-DURABLE-KERNEL | VERIFIED | 839c2e0d1ee2 src/server/handlers/jobs/graph_tests.rs:145 src/server/handlers/jobs/graph_tests.rs:170 src/server/handlers/jobs/graph_tests.rs:245 |
| EG-DURABLE-KERNEL-R082.3 Distinct-item cap and opaque-reference rule are decided and enforced at submit Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Distinct-item cap and opaque-reference rule are decided and enforced at submit.** The old worker required every item to be an opaque reference starting with `eg:` and refused more than 31 distinct items, which bounded subset enumeration. It was not determinable from the source whether the engine kernel needs the same cap. This row records the decision in `src/server/handlers/jobs/submit.rs` as a named constant and enforces it. | A test submits a payload with a non-opaque item and a payload over the cap and asserts a typed refusal for each; a payload at the cap is accepted. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.4 Association-rule identity is byte-identical to the old worker's Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Association-rule identity is byte-identical to the old worker's.** The id is `eg:rule:` followed by the sha256 of the prefix `eg-jobs.association-rule.v1` and a zero byte, then for antecedent and consequent a little-endian u64 count and length-prefixed utf-8 items, then little-endian f64 support, confidence and lift. Row ids must not change across the carry-over, because published claims are keyed by them. Code root: `src/server/handlers/jobs/results_association.rs`. | A golden-vector test hashes one fixed rule and asserts the digest recorded in the test, taken from the deleted Python implementation. | requirement | EG-DURABLE-KERNEL | VERIFIED | 63d041e21850 src/server/handlers/jobs/results_association.rs:101 |
| EG-DURABLE-KERNEL-R082.5 The staged result has the 11-column knowledge-batch shape Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**The staged result has the 11-column knowledge-batch shape.** Columns: id, kind, confidence, evidence_refs, source_refs, proof_ids, contradiction_ids, antecedent, consequent, support, lift. Each row's evidence and source refs are the input dataset ref. The result dataset ref is `eg:knowledge_batch:` plus a sha256 over the schema and rows. Uncertainty is the mean of one minus confidence, calibration is the min and max of support times confidence, and the reproducibility block carries the input digest, snapshot version, algorithm ref, params digest, code and environment versions and policy fingerprint. Code root: `src/server/handlers/jobs/results_association.rs` and `native_validation.rs`. | A test runs one job and asserts the column list, the evidence refs, the digest recomputed from the rows, and each reproducibility field. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.6 Rules are ordered and thresholded exactly as before Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Rules are ordered and thresholded exactly as before.** Minimum count is ceil(min_support times transaction count), at least 1. A rule is kept when confidence is at least min_confidence within 1e-12. Lift is confidence over consequent support, 0 when that is 0. Rules sort by confidence, lift, support descending, then first-seen interned antecedent and consequent IDs ascending. Code root: `crates/eg-compute/src/mining`. | A fixture test mines a fixed 6-transaction set and asserts the ordered rule list equals the list recorded from the deleted implementation. | requirement | EG-DURABLE-KERNEL | VERIFIED | 157e0a8e97a3 a35b312dbd40 crates/eg-compute/src/mining/association/parity_tests.rs:4 crates/eg-compute/src/mining/association/parity_tests.rs:47 |
| EG-DURABLE-KERNEL-R082.7 A running mining job observes cancellation, deadline and CPU budget Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**A running mining job observes cancellation, deadline and CPU budget.** The old worker polled job status every min(5 s, lease over 3) and cancelled the kernel with reason `kernel_cancelled` (acknowledged as cancelled), `deadline_exceeded` or `cpu_budget_exceeded` (both failed), renewing the lease otherwise. Verify the native executor stops cooperatively for all three. Code root: `src/server/handlers/jobs/executor_claim.rs`. | Three tests with a long-running synthetic kernel: cancel request, past deadline and tiny cpu budget each end in the matching terminal state, and no lease renewal happens after the stop. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.8 Failure codes and retry follow the durable retry policy Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Failure codes and retry follow the durable retry policy.** The old worker reported only the bounded codes `invalid_payload` and `kernel_failure` (plus the stop reasons above) and never logged payloads, endpoints or identity; retry and backoff were the server's `RetryPolicy` (`max_attempts`, `backoff_ms`). Verify the native executor uses `worker_execution_failed`-style bounded codes only and that a failed attempt becomes eligible again only after its backoff. Code root: `src/server/handlers/jobs/executor_loop.rs`. | A test fails a kernel twice, asserts the attempt count, that the retry is not claimable before the backoff elapses, and that no failure record contains payload text. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.9 Colocated pool lease and poll interval are configurable Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Colocated pool lease and poll interval are configurable.** The old worker took slots 1 to 64, lease 5000 to 300000 ms (default 60000) and poll 0.05 to 30 s (default 0.25) from `EG_ANALYTICS_WORKER_SLOTS`, `EG_ANALYTICS_WORKER_LEASE_MS` and `EG_ANALYTICS_WORKER_POLL_SECONDS`. The native pool fixes the lease at 60000 ms and the poll at 250 ms and caps slots at 32. This row adds validated `EG_ANALYTICS_LEASE_MS` and `EG_ANALYTICS_POLL_MS` with the old ranges, refusing out-of-range values at startup. Depends on EG-DURABLE-KERNEL-R076 for the shared scheduler configuration shape. Code root: `src/server/handlers/jobs/executor_loop.rs`. | A config test accepts values at both range ends and refuses one below and one above each range. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.10 Remote workers remain supported through the existing coordinator operations Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Remote workers remain supported through the existing coordinator operations.** `EG_ANALYTICS_WORKERS=0` leaves execution to authenticated remote workers using claim, renew, checkpoint, stage, publish, fail and cancel, claimed by capability (the old default set was `mining.association` and `pool:default`, at most 64 capabilities of at most 128 characters, no control characters). Service principal requires scope `analytics:worker`, already listed in `crates/eg-capabilities/src/scopes.rs`. This row proves the path without the deleted worker using the generated `JobsClient`. | A test with the colocated pool at zero drives the full worker sequence through `JobsClient`, and a worker without scope `analytics:worker` is refused. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R082.11 Cross-repo: graph-os hosts any remote worker process; agent-utilities does not Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Cross-repo: graph-os hosts any remote worker process; agent-utilities does not.** Owner repository: graph-os. Only if a deployment needs mining capacity beyond the engine pods, graph-os deploys a thin entry point that loops `JobsClient.worker_claim` and executes a kernel it ships; it must not embed a second copy of the mining kernel unless R082.6 golden tests run against it too. agent-utilities keeps no worker, console script or kernel. This row is a dependency marker, not engine work, and has no engine deliverable. | Recorded as satisfied by the engine rows above; graph-os links this row by ID if it ever adds the entry point. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R083 Shared versioned KV-cache tier (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Shared versioned KV-cache tier (rollup).** The engine's `eg-kvcache` tier must serve model KV-cache blocks to parallel consumers under content-addressed, model-versioned keys. A capacity budget must evict by recency and graph importance. A model-version mismatch must refuse the block. | Tests prove two consumers share one block, a version mismatch refuses, and an over-budget insert evicts the coldest block. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R083.1 `KvBlockKey` typed model Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**`KvBlockKey` typed model.** `crates/eg-kvcache/src/version.rs` must define `KvBlockKey` from model id, model version and token-prefix hash. | Unit test shows equal prefixes give equal keys and a different model version gives a different key. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R083.2 Version-mismatch refusal Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Version-mismatch refusal.** `crates/eg-kvcache/src/shared.rs` must refuse a read whose model version differs from the stored block version, returning a typed error. | Unit test stores under version 1 and refuses a version 2 read. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R083.3 Budgeted eviction by importance Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Budgeted eviction by importance.** `crates/eg-kvcache/src/tiered.rs` must evict the lowest recency-and-importance block when the byte budget is exceeded, using `graph_importance.rs`. | Unit test inserts three blocks over budget and asserts the coldest is evicted. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R083.4 Locate and wire the served KV operation Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Locate and wire the served KV operation.** The first step must locate the served cache operations and expose get and put for `KvBlockKey`. Inference-side injection is an agent-utilities handoff. | Served-op test puts a block from one client and gets it from another. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084 Version-checked concurrent writes with a typed conflict (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Version-checked concurrent writes with a typed conflict (rollup).** EG must serialize concurrent writers to one graph state by a version check. A losing writer must receive a typed conflict or a configured merge. Last-write-wins must never happen silently. | Tests prove a stale writer is refused, a merge strategy resolves a declared conflict, and the loss is never silent. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.1 Model Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Model.** `crates/eg-types/src/write_conflict.rs` must define `WriteConflict{expected, actual, scope}` and the closed `MergeStrategy` set `Refuse`, `PreferNewer`, `FieldUnion`. The default must be `Refuse`. | Unit test round-trips both types and asserts the default. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.2 Behavior Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Behavior.** `resolve_conflict(conflict, strategy, base, incoming)` must return a merged value or the conflict. The strategy must come from scope configuration. | Unit test resolves one conflict under each strategy. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.3 Wiring Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Wiring.** The version check built at `crates/eg-jobs/src/store.rs:2537` must call `resolve_conflict` when the stored version differs. Its production caller is the served `ApplyMutation` wire method. | Test writes with a stale version and asserts the resolver ran. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.4 Refusal Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Refusal.** With `Refuse`, the write must return `WRITE_CONFLICT` carrying expected and actual versions. No state may change. | Test asserts the refusal code and an unchanged readback. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.5 Evidence Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Evidence.** Every resolved or refused conflict must emit `conflict_scope`, `strategy` and `winner` in the mutation trace. | Test reads the trace after one refusal and one merge. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.6 Hot-path proof Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Hot-path proof.** The entry point is the served `ApplyMutation` wire method. Two clients write against the same version and exactly one commit must win. | Integration test `tests/write_conflict_two_writers.rs` asserts one commit, one typed conflict and no silent overwrite. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085 Versioned memory synchronization (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Versioned memory synchronization (rollup).** EG owns memory content, versions, conflict decisions and synchronization evidence. GraphOS owns hosted file materialization. AU consumes EG decisions. This contract supports versioned documents without assigning filesystem authority to EG. | All eight children require their planned evidence. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.1 Model Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Model.** Define bounded memory snapshot, list cursor, sync request and outcome types. Use the exact fields and validation rules in the R085 design. Reuse Digest256, verified Request context and MutationScopeIdentity. Use tagged outcomes: authorized head-bearing results and a redacted refusal without head fields. New wire names are proposals until generated and served. | Planned: tests/memory_sync_contract.rs::bounded_contract_round_trips_and_refuses_invalid_fields. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.2 Versioned reads and listing Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Versioned reads and listing.** Read one authorized revision or list a stable snapshot with bounded pagination. Bind cursors to tenant, graph incarnation, principal, policy and filters. Never reveal hidden identifiers, counts or hashes. Expired cursors require an explicit restart. | Planned: tests/memory_sync_served.rs::authorized_read_list_and_cursor_isolation. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.3 Sync decisions and compare-and-set Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Sync decisions and compare-and-set.** Evaluate observe_file, submit, resolve and acknowledge actions against the durable document head. Atomically accept one matching-base candidate. Preserve both versions for an authorized stale submission without changing the accepted head. Resolve only against the current head and retained conflict. Repeated request identities return the original outcome. | Planned: tests/memory_sync_served.rs::competing_saves_retain_both_and_resolve_once. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.4 Production wiring Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Production wiring.** Add the proposed read/list methods to authenticated graph dispatch. Route sync mutations through the existing gateway and canonical MutationBatch compiler. Commit content references, head, conflict receipt and outbox evidence together. Regenerate public method, result and client contracts. No direct GraphCore write may bypass durable admission. | Planned: tests/memory_sync_served.rs::wire_methods_reach_durable_gateway. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.5 Authority and refusals Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Authority and refusals.** Derive tenant, principal, graph and policy from verified request context. Check authority before lookup, cursor use, materialization acknowledgment or retention changes. Reject cross-scope references, malformed versions, digest mismatch and unavailable storage before effects. Unauthorized calls leave all durable records and holders unchanged. Denied existing and absent documents have indistinguishable results, including creation attempts. Refused creation needs no head metadata. | Planned: tests/memory_sync_served.rs::denied_and_malformed_requests_have_no_effects. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.6 Provenance and synchronization evidence Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Provenance and synchronization evidence.** Persist the verified actor, policy, request identity, parent revision, content digest and committed outcome. Separate accepted content from a host materialization acknowledgment. EG reports in_sync only after an authorized acknowledgment matches the current revision, digest and observation generation. Pending edits and unresolved conflicts prevent in_sync. Missing evidence yields unavailable. | Planned: tests/memory_sync_served.rs::provenance_and_materialization_ack_survive_restart. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.7 Retention Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Retention.** Retain accepted and submitted conflict contents with their digests and provenance across restart. Use existing named blob holders and garbage-collection rules. Unresolved conflicts cannot expire automatically. Refuse before effects when configured retention capacity is exhausted. Release resolved history only through authorized policy after its retention deadline. | Planned: tests/memory_sync_served.rs::conflicts_survive_gc_and_retention_refusal. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.8 Real served acceptance Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Real served acceptance.** Start a real authenticated engine with disposable durable storage and two independent clients. Prove read/list, competing saves, conflict retention, resolution and materialization acknowledgment. Restart and read the durable records independently. Include cross-tenant, wrong-graph, stale-cursor, denied-writer and replay negatives. Do not mock transport, dispatch, authorization or persistence. | Planned: tests/memory_sync_served.rs::complete_memory_sync_journey. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086 Safe eviction and durable read-through (rollup) Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Safe eviction and durable read-through (rollup).** Define the existing node-residency contract without changing storage, APIs or dependency direction. Preserve R039 recovery acceptance. All nine children require evidence; a resident read or index reopen alone cannot close this rollup. | Planned: tests/safe_eviction_read_through.rs::served_safe_eviction_read_through_journey. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.1 Model Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Model.** Describe resident properties, durable presence, genuine absence and unavailable durability through existing GraphCore, ReadThrough and PersistenceBackend contracts. Bind observations to graph and node identity. Distinguish backend `Result<Option<Vec<u8>>>` from adapter `Option<Vec<u8>>`; None alone does not prove durable absence. | Planned: tests/safe_eviction_read_through.rs::read_through_model_outcomes. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.2 Behavior: memory-only eviction Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Behavior: memory-only eviction.** At GraphCore::evict_resident_nodes, remove only selected resident projections. Preserve durable node bytes and logical records. The primitive does not prove durability; its production callers own that guard. Retaining unconfirmed nodes may leave residency above the requested cap. | Planned: tests/safe_eviction_read_through.rs::selected_residents_leave_durable_rows_unchanged. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.3 Behavior: cache-miss read Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Behavior: cache-miss read.** GraphCore::get_node_properties serves resident bytes first, then consults its installed read-through on a miss. Release the seam lock before storage access. Serve durable bytes without repopulating RAM. A Bloom negative may suppress storage access only after the durable identity set is complete. | Planned: tests/safe_eviction_read_through.rs::evicted_blob_reads_without_resident_growth. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.4 Wiring Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Wiring.** Reuse src/main.rs:1547 and crates/eg-core/src/registry.rs:553 to install the facade factory for recovered and future graphs. Follow src/server/persistence/read_through.rs:38 to the existing scoped redb read. Verify the production eviction callers listed in the plan; introduce no second persistence path or lower-layer dependency. | Planned: tests/safe_eviction_read_through.rs::startup_attaches_graph_scoped_read_through. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.5 Scoped reads Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Scoped reads.** At src/server/handlers/graph_ops/nodes.rs:85, preserve graph authority and row visibility when the filtered projection falls back to the raw core. At src/redb_store/store_read.rs:336, read the graph-scoped NODES table. Equal node IDs in separate graphs must not cross scopes; hidden rows must not leak through the fallback. | Planned: tests/safe_eviction_read_through.rs::served_evicted_reads_preserve_scope. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.6 Refusal: unsafe eviction Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Refusal: unsafe eviction.** Existing eviction callers retain candidates when persistence is absent, a presence lookup errors, or its positional result has the wrong length. A false entry retains that candidate. Do not treat an unconfirmed node as durable or report a cap as reached when nodes remain. | Planned: tests/safe_eviction_read_through.rs::production_eviction_retains_unconfirmed_candidates. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.7 Refusal: unavailable reads Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Refusal: unavailable reads.** Record current adapter behavior: a backend error produces a warning and None, without fabricated bytes. Distinguish this from a successful backend absence lookup in evidence. This definition creates no typed public error and does not credit a logged miss as successful recovery. | Planned: tests/safe_eviction_read_through.rs::backend_failure_is_not_absence_evidence. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.8 Restart Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Restart.** After acknowledged writes and actual eviction, restart the real engine on the same durable directory. Use normal startup wiring and request authority. Prove a fresh nonresident lookup and compare exact committed properties. Eager recovery into RAM alone cannot prove post-restart read-through. | Planned: tests/safe_eviction_read_through.rs::restarted_engine_reads_an_evicted_node. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R086.9 Evidence and hot-path proof Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Evidence and hot-path proof.** Enter through authenticated EvictLRU and GetNodeProperties. Observe src/server/handlers/graph_ops/gateway_graph.rs:111 and src/server/handlers/graph_ops/nodes.rs:85, then the real durable lookup. Retain source and binary identity, scope, write acknowledgment, residency, backend outcome and restart observations. Mocks, source inspection and unrelated receipts cannot close this rollup. | Planned: tests/safe_eviction_read_through.rs::served_safe_eviction_read_through_journey. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R028.1 Run checkpoint and memory binding. Owner decisions remain open Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Run checkpoint and memory binding. Owner decisions remain open.** The EG storage boundary is the existing versioned memory contract in `EG-DURABLE-KERNEL-R085`. A run checkpoint is an immutable `active_context` snapshot. Its canonical UTF-8 content binds `run_id`, `work_item_id`, lease epoch/fencing token, checkpoint revision and payload digest. It also binds separate short-term and long-term memory document references. Each reference carries document ID, revision and digest. The authenticated request establishes tenant and graph authority. Body scope cannot override it. A checkpoint update must be fenced against the live WorkItem lease epoch and fencing token. Current EG surfaces lack an atomic operation that updates an R085 snapshot and binds the WorkItem checkpoint pointer and fence. `CasWorkItemMetadata` is scheduling metadata, not a checkpoint transaction. The exact transaction/recovery contract remains held. No snapshot/pointer atomicity is claimed. A retry must use the same request identity and body. A stale expected revision, mismatched graph/tenant, or expired/superseded WorkItem fence refuses. Digest mismatch or unavailable durable storage also refuses without advancing the checkpoint head. Reads return the exact accepted snapshot revision and digest. `SyncMemorySnapshot`/`ReadMemorySnapshot` are the proposed attachment points. They reuse R085’s existing MutationBatch and R039’s sole redb durability authority. This child does not claim AU resume or host streaming implementation. Source objective: production runs checkpoint across processes, separate short-/long-term memory, isolate tenants, and stream output. Preserve `EG-DURABLE-KERNEL-R028`, `EG-IDENTITY-R006`, `GRAPHOS-A2A-R001`, `GRAPHOS-A2A-R001.1`, `GRAPHOS-OPS-R001`. Source SHA-256: `d89bb9c69e2fdef6a5c3fd428ede3f91868539056c2b949700867d8d8087d1e7`. **Definition hold:** owners have not chosen short-/long-term retention bounds or release authority. They have not defined the AU resume request’s atomic binding to the current WorkItem fence. The host stream ID/cursor authority and replay semantics remain undefined. Keep SPECIFIED until those contracts are reviewed. Do not infer cross-process resume from WorkItem lifecycle or R085 memory sync. | Planned owner acceptance: commit a checkpoint and both memory references through the R085 durable path, then restart. Read back identical revision/digests under the same verified tenant and graph. Refuse wrong tenant/graph, stale revision or stale WorkItem fence. Refuse wrong digest, changed-body replay identity or storage failure without advancing the head. Companion AU/GraphOS tests must resume the exact run and fence. They must continue the existing stream from its exact host-issued cursor without duplicate or skipped output. Those tests are blocked on the listed owner decisions. No runtime evidence or receipt is claimed. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.9 Versioned search state is retained as a complete R085 memory snapshot Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Versioned search state is retained as a complete R085 memory snapshot.** A search-state document is an `active_context` `MemorySnapshot` keyed by stable search-run document ID. Its exact UTF-8 JSON body requires a nonempty `search_run_id` and a positive integer `state_revision` equal to the snapshot revision. It also requires `transcript`, `evidence`, `constraints`, and `open_claims` arrays; each may be empty. EG validates the envelope and hashes the exact stored bytes; AU owns item schemas and source identity within those arrays. The document carries R085’s graph incarnation, snapshot revision, parent revision, content digest, provenance, and retention metadata. The outer verified request is authoritative for tenant, graph, principal, and policy. Write with the current expected head through `SyncMemorySnapshot`. Read the exact revision through `ReadMemorySnapshot` after context eviction. R085’s one-MiB content bound, digest verification, compare-and-set, conflict retention, authorization-before-lookup, and durable MutationBatch path apply. A stale revision preserves the accepted head and returns the R085 conflict outcome. Malformed/oversized content, unauthorized scope, digest mismatch, expired graph incarnation, or unavailable storage refuses without changing the head. EG stores state and returns it; AU owns serialization, compaction policy, and continuation. Preserve `AU-HARNESS-R013.13`, `AU-HARNESS-R020.1`, `EG-DURABLE-KERNEL-R085.1`, `EG-DURABLE-KERNEL-R085.4`, `EG-DURABLE-KERNEL-R085.7`. Source SHA-256: `8c76fa1637e0cc2082a1cce16b9d637f12b310ae96d1fe9a50ec9c64f8e23944`. **Definition hold:** AU has not specified per-entry schemas or source identity fields for the four arrays. AU also has not specified the continuation request/receipt field that binds a resumed search to this exact memory revision. Do not treat the listed required fields alone as an AU continuation contract. | Planned owner acceptance: persist all four required state fields. Evict context and restart or create an independent client. Read back byte-identical canonical content at the bound revision. Refuse oversize, malformed/missing required fields or stale expected revision. Refuse changed graph/tenant, digest mismatch or unavailable storage without changing the head. The AU continuation test must prove it passes the returned document ID/revision. It must restore all four fields before any compacted summary is used. Pending AU schema/receipt decision. No implementation or served receipt is claimed. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R085.10 Prior-session notes use the existing authorized memory authority. Capture and reuse remain AU-owned Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Prior-session notes use the existing authorized memory authority. Capture and reuse remain AU-owned.** EG persists a note only as a versioned R085 `MemorySnapshot`. It includes a stable note ID, source run/task references and captured source revision. It also includes canonical UTF-8 content and digest, provenance, graph incarnation, parent revision and current revision. It also records existing authorization/retention evidence. Reads and lists use `ReadMemorySnapshot`/`ListMemorySnapshots`. Writes use `SyncMemorySnapshot` through the canonical gateway and R039 sole redb authority. R085 controls stale-write conflicts. It retains an authorized candidate without replacing the accepted head. It never reports in-sync when host evidence is absent or stale. EG returns only currently authorized revisions and their explicit conflict/sync state. It does not auto-inject notes into a prompt or choose relevance. Preserve `AU-HARNESS-R022.3`, `EG-DURABLE-KERNEL-R085.2`, `EG-DURABLE-KERNEL-R085.5`, `EG-DURABLE-KERNEL-R085.7`. Source SHA-256: `2362fd76bf40223aeb813866392670b65eae13d02a725b1af9a2e6711542dd12`. **Definition hold:** AU has not defined session/research capture events or the note-kind mapping. Relevance score/threshold and staleness rule also remain undefined. AU has also not defined how conflicting notes are surfaced and selected. These are required before automatic capture and transparent reuse can be claimed. EG’s storage contract does not decide them. | Planned owner acceptance: authorized note write/read survives restart with source revision, digest and provenance intact. Cross-tenant and revoked-authority reads are redacted. Stale submissions return retained conflict without replacing the accepted head. Retention exhaustion refuses before effects. AU acceptance must demonstrate its decided capture trigger and relevance/staleness behavior. It must also show conflict presentation without implicit use of unresolved content. Acceptance remains blocked on the listed AU decisions. No runtime evidence or receipt is claimed. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R084.7 Definition hold: no cross-backend transaction contract is authorized Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Definition hold: no cross-backend transaction contract is authorized.** The defined write boundary remains one graph through served `ApplyMutation`, expected-version arbitration. R039 remains the single redb durability authority. `EG-DURABLE-KERNEL-R024.1` is read-only; R036 defines mirror replay/cursors, not a distributed transaction coordinator. Neither federation reads nor asynchronous mirror targets establish atomic multi-backend writes or tenant-wide ordering. Do not extend R084’s one-graph guarantee to external backends, and do not add writes to read-only sources. Preserve `EG-DURABLE-KERNEL-R084.1` through `.6` and R039 unchanged. Source SHA-256: `96c3079859b0e63ec3e1174e25e7a4ab107b23ef6863ae9b54ff0e921a88e4b0`. **Unresolved owner decisions:** which registered backend kinds, if any, are writable projections. Name the owner for the target registry and coordinator. Whether ordering is per graph or tenant. Whether the contract promises atomic commit or eventual mirror replay. How partial target failure, retry/idempotency, and authoritative receipts are represented. Until owners make those decisions, R084.7 remains an explicit hold and makes no cross-backend write promise. | Existing acceptance remains the two-client, one-graph `ApplyMutation` test with one commit and one typed stale-writer conflict. Cross-backend tests cannot be specified as positive behavior until the target set, ordering and failure semantics above are decided. After owners decide, tests must cover two tenants, two declared targets, concurrent writes and target failure/replay. They must prove R039 remains sole authority, with no silent partial authoritative commit. This row is not closed by the existing one-graph test. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R038.100 Embedded and served deployment profiles preserve durability classes Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Embedded and served deployment profiles preserve durability classes.** Define an explicit deployment profile with `embedded` (in-process operation requiring no external service) and `served` (configured service endpoint) modes. Profile selection controls transport/startup only. It does not silently change the existing persistent-namespace durability default or sync/redb acknowledgment authority. Ephemeral in-memory namespaces require an explicit `ephemeral` declaration and retain no durable log. Persistent namespaces retain their declared `sync` or `async` class. Do not adopt the source request’s universal in-memory default. Preserve existing parent obligations: `EG-DURABLE-KERNEL-R038`. Source record `EG:60` SHA-256 `b36ed0f40742d2f455b4eae67f2fb64edfb7a6ea87b93cbb8ac0046970728458`. | Start a fresh embedded profile without an external service and read/write an explicitly ephemeral namespace. Verify no persistent namespace is silently downgraded. Start served mode against its configured endpoint and verify its declared sync/async class and acknowledgment boundary. Refuse an unknown profile and an ephemeral-to-durable class mismatch. Read back profile and namespace declarations. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R043.100 Committed graph changes publish an ordered, revocable cursor feed Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Committed graph changes publish an ordered, revocable cursor feed.** Add public read operations `Method::OpenGraphSnapshot` (`OpenGraphSnapshotV1`) and `Method::ReadGraphChanges` (`ReadGraphChangesV1`) downstream of the existing `ApplyChangeEnvelope` commit path in `src/server/dispatch/change_envelope.rs`; `GetChangeEnvelope` remains a keyed read, not a feed. Snapshot and events bind graph incarnation, committed revision, snapshot digest, visibility revision and caller authority. Event identity is `(commit_id, event_ordinal)` and ordering is `(graph_incarnation, committed_revision, event_ordinal)`. Tombstones name deleted node/edge ids and deletion revision but are filtered under current authorization. The snapshot response returns the exact high-water cursor from the same consistent read. This cursor prevents gaps in subsequent pages. Cursors are opaque and bind tenant, graph, incarnation, authorization revision and last event. Event replay is at-least-once with stable ids for client deduplication. Page size is 1..256 and retention is 24 hours. An expired cursor returns `CURSOR_EXPIRED` plus a safe current snapshot watermark, never a silent skip. A permission change returns `AUTHORIZATION_CHANGED` after reauthorization and reveals no protected counts or edges. Every event carries `committed_at_ms`, `visible_at_ms`, `latency_profile_revision` and derived `commit_to_visible_ms`. The served p95 target is ≤1000 ms from durable commit acknowledgement to first authorized feed read. The feed is read-only and cannot create a second persistence/write envelope; R043's MutationBatch authority remains mandatory. The EG latency measurement ends at first authorized feed read only. GraphOS/WebUI must separately define a versioned browser commit-to-visible p95. They must also set numeric readable-layout limits, including visible-node/edge budget and interaction target/label bounds. Those values and served receipts are explicit companion prerequisites, not inferred from the EG feed metric. Consumer: `WEBUI-APPS-R030.8` GraphView. Source objective WEBUI:5: “Connected client views reflect graph changes immediately without page refresh. And the graph layout stays readable under concurrent edits from concurrent users.” Source record SHA-256 `0b416b47d85530fb35cf44bf5dc79e04e1b9746481027d0b0687b66579dc9844`. | Use two authenticated served GraphView clients. Take one snapshot. Commit concurrent node/edge edits through `ApplyChangeEnvelope`. Read events on the other client without refresh. Reconnect from the returned cursor. Prove ordered/deduplicable events and independent durable readback. Exercise deletion, expired cursor, stale graph incarnation, and revoked permission. Each returns its typed recovery/refusal without leaking denied graph data. Measure EG commit-to-visible p95 only through first authorized feed read. GraphOS/WebUI separately prove browser commit-to-visible p95 and their versioned numeric readable-layout/interaction limits under concurrent edits. Do not count the EG read bound as that end-to-end evidence. No runtime or owner receipt is claimed. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-DURABLE-KERNEL-R042.100 Comparable full-input-token throughput and per-query cost measurements Definition — EG-DURABLE-KERNEL / EG-DURABLE-KERNEL — Durable graph kernelCanonical requirement and verification source**Comparable full-input-token throughput and per-query cost measurements.** Extend the existing `BenchmarkClaim.measured_result` with `BenchmarkMeasurementV1`. Bind benchmark case/configuration and dataset/query digests, plus release commit. Bind model, provider and tokenizer revisions. Bind hardware/profile/settings digest. Record request start/end and model-ready timestamps. Record full input-token count from the named tokenizer and inference elapsed milliseconds measured after readiness. Pin the price-table revision. Compute input-token throughput as `full_input_tokens * 1000 / inference_elapsed_ms`. Compute per-query cost using the bound token quantities, price-table currency and currency minor-unit exponent, with explicit rounding. Startup time is reported separately and excluded from both inference elapsed time and throughput. Claims are comparable only when the named benchmark/workload/profile fields match. Missing full input tokens, tokenizer or price revision refuses claim admission. Nonpositive elapsed time, zero denominator, invalid currency exponent or incomparable profile also refuses admission. Preserve existing superiority pass/fail and publication requirements. Producer/consumer: benchmark runner returns measurements; EG binds and validates them in the existing typed claim. No new benchmark executor is introduced. Source objective EG:63 SHA-256 `78016644588199c94f30e549cda44e35667f0447e1ae15a2524a4710bdf92e00`. | Served acceptance recomputes throughput and currency-rounded per-query cost from read-back measurements for multiple releases. It must prove startup is excluded and complete tokenizer input tokens are used. Refuse zero/negative inference elapsed time or missing tokenizer/input-token count/price table. Refuse invalid currency exponent, stale profile or mismatched benchmark inputs. Existing benchmark superiority acceptance remains required. No performance result is claimed by this definition. | requirement | EG-DURABLE-KERNEL | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY EG-IDENTITY — Engine identity, mode and scope authority | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R001 Multi-issuer OIDC trust list with per-issuer kind limits Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Multi-issuer OIDC trust list with per-issuer kind limits.** EG's primary OIDC verifier (src/server/oidc.rs, src/server/auth.rs) maintains an explicit, ordered multi-issuer trust list of issuer, JWKS source, audience, and allowed-principal-kind entries, accepts an overlapping rotated key only during a declared window, and restricts principal kind per issuer so a Keycloak-backed issuer can authenticate service principals only. | A negative test asserts an unknown, ambiguous, or disallowed-kind issuer fails verification before method dispatch, and a positive test confirms a rotated key is accepted only within its declared overlap window. | requirement | EG-IDENTITY | LANDED | bb5db1746a16 |
| EG-IDENTITY-R002 Identity and RBAC writes recompute roles and audit atomically Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Identity and RBAC writes recompute roles and audit atomically.** Every identity or RBAC mutation in EG (security.rs, identity_admin.rs) recomputes the complete effective role set within the same durable transaction as the write, and src/audit.rs records an allow or denial entry naming the actor, tenant, operation, target, and authorization digest change, including a bounded sample of denied attempts. | A restart/fault test confirms a failed persistence rolls back the role change and its audit entry together, and a tamper-detection check catches a reordered or altered identity audit record. | requirement | EG-IDENTITY | LANDED | f9a69bfe8a9c |
| EG-IDENTITY-R003 Identity mode is a durable singleton with CAS transition Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Identity mode is a durable singleton with CAS transition.** EG stores identity mode (none, local, or external) as a durable singleton with a monotonic epoch, transitions it only via compare-and-set once a new identity_config component validates the documented preconditions for that transition, and invalidates every active authentication token and rotates issuer material after the commit while retaining accounts, links, grants, and data. | A fault-injection test confirms a stale epoch, missing surviving admin, or unmet precondition returns a typed refusal with no mode or data change, and an integration test confirms tokens are invalidated only after the transition commits. | requirement | EG-IDENTITY | LANDED | f9a69bfe8a9c |
| EG-IDENTITY-R004 Generated scope registry classifies every capability scope Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Generated scope registry classifies every capability scope.** EG publishes a single generated, versioned scope registry from crates/eg-capabilities capability declarations, classifying each scope as user, domain, service-only, approver, or admin, with the generated package catalog and server checks sharing the same digest. | A generation check confirms the published scope registry digest matches the server's own classification for every declared scope, and a negative test confirms an unclassified or wildcard scope fails generation. | requirement | EG-IDENTITY | VERIFIED | 15acf1a959e5 63488a50eefc 6c11520aebfc a2cbfc473ba2 crates/eg-capabilities/src/scopes/tests.rs:125 crates/eg-capabilities/src/scopes/tests.rs:38 crates/eg-capabilities/src/scopes/tests.rs:51 crates/eg-capabilities/src/scopes/tests.rs:65 crates/eg-capabilities/src/scopes/tests.rs:73 |
| EG-IDENTITY-R005 Semantic workers use one identity across queue classes Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Semantic workers use one identity across queue classes.** A production semantic worker presents a single verified identity consistently across every queue class it processes, rather than switching principals per class, so authorization and audit records for its work remain attributable to one principal. | `dispatch_attributes_every_queue_class_to_the_one_verified_principal` verifies principal attribution. `semantic_owner_registry_is_scoped_to_persistence_root` checks root isolation and canonical alias reuse in `src/server/semantic_index.rs`. | requirement | EG-IDENTITY | VERIFIED | 1c6b4c961a40 62bec8a1ae94 6c11520aebfc src/server/semantic_index/dispatch_pipeline_tests.rs:600 |
| EG-IDENTITY-R006 Tenant roles read the shared commons graph Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Tenant roles read the shared commons graph.** `IsolationLayer::provision_tenant_graph_access` (crates/eg-core/src/isolation/policy_admin.rs) grants the `tenant:<slug>` role Read on the exact `__commons__` graph, beside its tenant-pattern Read and Write grants. | A unit test confirms a tenant member reads `__commons__`, cannot write it, and cannot read another tenant's graph. The idempotence test confirms three grants after repeated provisioning. | requirement | EG-IDENTITY | VERIFIED | 0374378eb9db 7622e4b24455 dfb2367561d1 crates/eg-core/src/isolation.rs:1753 |
| EG-IDENTITY-R007 Scopes `identity:admin`, `loops:read` and `loops:control` are registered in the engine contract Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Scopes `identity:admin`, `loops:read` and `loops:control` are registered in the engine contract.** `contract/scopes.json` (and its `epistemic_graph/contract` mirror) registers `identity:admin` (class admin), `loops:read` (user) and `loops:control` (domain), generated from `crates/eg-capabilities/src/scopes.rs`. Unblocks graph-os GRAPHOS-OPS-R014 identity operations and GRAPHOS-OPS-R022.2.1. | The R004 generation check passes with the three scopes present and a negative test shows an unregistered scope still fails generation. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R008 Run scope comes from a durable policy node, never from plan text (rollup) Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Run scope comes from a durable policy node, never from plan text (rollup).** The engine must bound a run's tool and data scope by a stored policy node. A model-written plan must never widen that bound. | Test: `crates/eg-core/tests/scope_bound.rs::plan_cannot_widen_policy_bound` | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R008.1 Locate and wire the attach point Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Locate and wire the attach point.** The implementer must find where a plan's tool set is admitted beside `crates/eg-core/src/isolation/policy_admin.rs` and record `file:line` in `plan.md`. | Test: `crates/eg-core/tests/scope_bound.rs::attach_point_is_reached` | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R008.2 Typed `ScopeBound` Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Typed `ScopeBound`.** Add `ScopeBound { policy_iri, allowed_tools, allowed_graphs }` to `crates/eg-core/src/isolation/scope_bound.rs`. The type must reject an empty `policy_iri`. | Test: `crates/eg-core/src/isolation/scope_bound.rs::tests::empty_policy_iri_is_refused` | requirement | EG-IDENTITY | VERIFIED | 3c61dc94a9ed 92de9f434e0b crates/eg-core/src/isolation/scope_bound.rs:107 crates/eg-core/src/isolation/scope_bound.rs:144 |
| EG-IDENTITY-R008.3 Pure subset check Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Pure subset check.** Add `scope_within_bound(plan_tools, bound)` to `scope_bound.rs`. It must return the first out-of-bound tool IRI, not a boolean. | Test: `crates/eg-core/src/isolation/scope_bound.rs::tests::first_excess_tool_is_named` | requirement | EG-IDENTITY | VERIFIED | 92de9f434e0b crates/eg-core/src/isolation/scope_bound.rs:123 crates/eg-core/src/isolation/scope_bound.rs:164 |
| EG-IDENTITY-R008.4 Bound is read from the stored policy node Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Bound is read from the stored policy node.** The loader must read `ScopeBound` from the principal's policy node in the graph. It must ignore any scope field carried in the plan body. | Test: `crates/eg-core/tests/scope_bound.rs::plan_scope_field_is_ignored` | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R008.5 Typed refusal `ScopeExceedsPolicy` Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Typed refusal `ScopeExceedsPolicy`.** The admission path must refuse an out-of-bound plan with `ScopeExceedsPolicy` naming the tool IRI and policy IRI. It must write an audit record. | Test: `crates/eg-core/tests/scope_bound.rs::excess_plan_is_refused_and_audited` | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R008.6 End-to-end proof over the wire Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**End-to-end proof over the wire.** A served test must submit a plan that names a tool outside the principal's policy and assert `ScopeExceedsPolicy`. A second plan inside the bound must pass. | Test: `tests/identity/test_scope_bound_served.py::test_plan_scope_is_bounded_by_policy` | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023 Principal-scoped knowledge segments with explicit sharing (rollup) Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Principal-scoped knowledge segments with explicit sharing (rollup).** The engine segments stored chats, code and memories per principal. Sharing needs an explicit scope. Retrieval returns only the current version of permitted units. Children `.1` through `.12` cover segmentation and typed principal metadata. | See each child. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.1 Model Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Model.** Add `KnowledgeUnit{id, owner, version, supersedes, access_labels, share_scope}` in `crates/eg-types/src/identity/segment.rs`. Closed `share_scope` values are `private`, `placement` and `tenant`. Proving test: `crates/eg-types/src/identity/segment.rs::tests::unit_round_trips`. | A serde round trip keeps every field and rejects an unknown scope. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.2 Behavior Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Behavior.** Add `visible_units(principal, units)` returning owned units and units a matching scope shares. It keeps only the highest version of each lineage. Each rule is a named replaceable default. Proving test: `crates/eg-types/src/identity/segment.rs::tests::superseded_and_foreign_units_hidden`. | A superseded unit and an unshared foreign unit are absent from the result. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.3 Wiring Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Wiring.** The behavior attaches in the served content-read handler, before the hits leave the retrieval function. It reuses the visibility pattern at `crates/eg-types/src/rbac_elevation/ledger.rs:268`. This row creates the call site in the served content-read handler that invokes `retrieve`. Proving test: `tests/identity/test_segment_retrieval_served.py::test_retrieve_filters_by_principal`. | A served read as principal B never returns principal A's private unit. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.4 Refusal Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Refusal.** A read naming a unit outside the principal's scope must return `OutOfScope` naming the unit id. It must not reveal the unit's content. Proving test: `crates/eg-types/src/identity/segment.rs::tests::out_of_scope_names_id_only`. | The refusal carries the id and no content field. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.5 Evidence Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Evidence.** Each read must append an audit entry. The entry lists the principal and the returned unit ids. It also counts units hidden by scope or version. Proving test: `crates/eg-types/src/identity/tests/segment_audit.rs::read_audit_counts_hidden`. | The audit entry shows returned ids and the hidden count. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.6 Hot-path proof Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Hot-path proof.** The entry point is the served content-read wire method. The test `tests/identity/test_segment_retrieval_served.py::test_shared_unit_visible_only_in_scope` writes a private and a shared unit. It passes through the wired retrieval call and observes that only the permitted current version returns. | The served read returns the shared current unit and hides the private one. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.7 Model Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Model.** Define bounded Preference, ClientMetadata and InteractionNetwork variants in the proposed identity/segment.rs model. Resolve principal references through the canonical identity store. Graph metadata grants no authority. | Planned: tests/identity/test_typed_metadata_served.py::typed_metadata_variants_round_trip. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.8 Behavior Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Behavior.** Persist these variants as versioned graph nodes with typed links. Require the managed metadata schema before every write. File imports create validated graph records; files never become shadow authority. | Planned: tests/identity/test_typed_metadata_served.py::typed_metadata_persists_without_file_authority. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.9 Wiring Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Wiring.** Attach admission before mutation compilation at src/server/mutation_batch/compile.rs:126. Reuse gateway.rs:72, composed graph schema validation and authorized node reads. Cover structural, batch, query and RDF write routes. | Planned: tests/identity/test_typed_metadata_served.py::all_metadata_write_routes_reach_admission. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.10 Refusal Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Refusal.** Refuse untyped metadata, malformed identity references, invalid schema and unauthorized scope before durable mutation. Refusals reveal no hidden identity or graph metadata. A caller-supplied owner never replaces verified authority. | Planned: tests/identity/test_typed_metadata_served.py::invalid_metadata_has_no_durable_effect. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.11 Evidence Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Evidence.** Commit source digest, mapping version, verified actor, schema digest and parent revision with each accepted record. Preserve import provenance and idempotent replay. Refused imports leave graph and receipts unchanged. | Planned: tests/identity/test_typed_metadata_served.py::metadata_import_provenance_survives_restart. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-IDENTITY-R023.12 Hot-path proof Definition — EG-IDENTITY / EG-IDENTITY — Engine identity, mode and scope authorityCanonical requirement and verification source**Hot-path proof.** Use authenticated served graph writes and reads against real durable storage. Prove all variants survive restart within scope. Denied and malformed writes must leave independently read durable state unchanged. | Planned: tests/identity/test_typed_metadata_served.py::typed_metadata_served_journey. | requirement | EG-IDENTITY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY EG-FEDERATED-QUERY — Federated query, search, and reasoning | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R001 Bounded derivation steps in EL+/RL and tableau reasoning Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Bounded derivation steps in EL+/RL and tableau reasoning.** The EL+/RL and tableau reasoners enforce a derivation-step budget while checking consistency and classifying the schema, and fail closed with a typed VALIDATION_BUDGET_EXCEEDED error instead of running without bound. Consistency checking reports no unsatisfiable classes on the shipped ontology corpus. | A unit test exercises budget exhaustion to confirm the typed refusal, and an integration test checks consistency across the full corpus. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 1ac87735b5a3 57a12eb06632 c3b87d31ac11 crates/eg-rdf/src/owl/budget.rs:141 crates/eg-rdf/src/owl/budget.rs:143 crates/eg-rdf/src/tableau/abox.rs:481 src/server/graph_schema/world_model_tests.rs:116 |
| EG-FEDERATED-QUERY-R002 Rejection reasons stay out of the core kernel row schema Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Rejection reasons stay out of the core kernel row schema.** When a query or validation is rejected, the engine reports the rejection reason through the caller's log, metric, or domain-specific error channel rather than adding it as a field on the core kernel row structure. The kernel row format remains format-neutral and unchanged by the content of any given rejection reason. | A contract test confirms the kernel row schema carries no rejection-reason field, and a negative test confirms the reason is still observable through logs or returned error metadata. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 2b3e2738b5ff crates/eg-types/src/wire_query_core.rs:882 crates/eg-types/src/wire_query_core.rs:914 |
| EG-FEDERATED-QUERY-R003 Derivation-step budget is enforced once, not duplicated per path Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Derivation-step budget is enforced once, not duplicated per path.** The derivation-step budget that bounds EL+/RL and tableau reasoning is implemented a single time and applies to every reasoning entry point, including the path that composes and classifies the schema. This specification defines no separate step-budget enforcement here; that guarantee is owned by the typed-packs-and-catalog specification's schema composition work. | Covered by the step-budget enforcement test defined under the typed-packs-and-catalog specification; this specification requires no additional test for this item. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 1ac87735b5a3 73069c650dcd 80c865971ea8 crates/eg-rdf/src/owl/budget.rs:142 |
| EG-FEDERATED-QUERY-R004 Reasoning projection rebuilds after any skipped event Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Reasoning projection rebuilds after any skipped event.** If the reasoning projection misses or skips an update event, the engine triggers a full rebuild of the projection before serving any further reads from it, rather than serving results derived from an incomplete projection state. | An integration test injects a skipped projection event and confirms the engine rebuilds before serving reads. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 49b749980bf2 80c865971ea8 src/server/reasoning_projection.rs:1786 |
| EG-FEDERATED-QUERY-R005 UQL VALIDATE SHAPE stage Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL VALIDATE SHAPE stage.** UQL includes a VALIDATE SHAPE stage that checks query results or graph data against a declared shape definition and reports conformance or the specific violations found, as part of standard UQL execution. | An integration test runs VALIDATE SHAPE over fixtures with conforming and violating data and checks the reported conformance result. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 0265d3a41baf 1ac87735b5a3 80c865971ea8 a1bb9fb9503e crates/eg-plan/src/uql/tests/shape.rs:44 src/server/handlers/rdf/validation.rs:376 |
| EG-FEDERATED-QUERY-R006 Proof-carrying results for SPARQL and rule-derived queries Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Proof-carrying results for SPARQL and rule-derived queries.** A caller can request a proof alongside SPARQL or rule-derivation query results, and the returned proof states the premises used and the schema or index generation they were checked against, remaining consistent across the Rust server and the generated Python client. | An integration test requests a proof-carrying query, verifies the proof's premises against the serving generation, and confirms the proof survives the client wire format. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 0265d3a41baf 8bbe95351da3 crates/eg-rdf/src/rules/tests.rs:348 crates/eg-rdf/src/rules/tests.rs:376 crates/eg-rdf/src/rules/tests.rs:386 |
| EG-FEDERATED-QUERY-R007 Semantic-index reconciliation tombstones only on a complete proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Semantic-index reconciliation tombstones only on a complete proof.** Semantic-index reconciliation marks a source's entries as tombstoned only after an authoritative complete-snapshot proof confirms the source is genuinely missing; an interrupted or partial scan leaves the prior live entries untouched. When reconciliation refuses to proceed, it distinguishes an absent source from one whose proof is unissued or expired so the failure names the actual condition. | A regression test interrupts a source scan before the complete-snapshot proof and confirms no tombstone is created, then replays a complete scan and confirms exactly the absent sources are tombstoned. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf be0f1acb05c6 crates/eg-core/src/compute/semantic_index_service/reconciliation_regression.rs:343 |
| EG-FEDERATED-QUERY-R008 Edge-native text and vector search with stable identity Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Edge-native text and vector search with stable identity.** The engine indexes and retrieves edges directly by text and vector similarity, without requiring edges to be reified into nodes, using a stable identity for parallel edges between the same pair of nodes. Searches apply tenant, purpose and row-level-security prefilters before candidate truncation, update and delete against the index are safe to replay, and the set of indexable targets is defined once and generated consistently into every client. | A correctness oracle compares filtered edge-search results against an unfiltered full scan, a replay test confirms idempotent update/delete behavior, and a generated-contract check confirms the target set matches across clients. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 196ded575c8b 1ac87735b5a3 80c865971ea8 834aca5df713 crates/eg-query/src/edge_index/tests.rs:180 crates/eg-query/src/edge_index/tests.rs:282 crates/eg-query/src/edge_index/tests.rs:431 |
| EG-FEDERATED-QUERY-R009 Durable user-managed graph-index lifecycle Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Durable user-managed graph-index lifecycle.** A caller can create, check the status of, and drop a graph index through one durable, user-managed lifecycle that extends the engine's existing index-manager authority. Backfill is fenced against concurrent writes, activation is atomic, a blocked or partial index state is diagnosable, and the index recovers correctly after a restart, with the query planner falling back safely when a needed generation is unavailable. | An integration test exercises create, backfill, activate and drop plus a restart during backfill, and confirms atomic activation, diagnosable blocked state, and correct planner fallback. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 196ded575c8b 20e0a4ec589a 80c865971ea8 e99a95cc842d crates/eg-query/src/edge_index/tests.rs:305 crates/eg-query/src/edge_index/tests.rs:365 crates/eg-query/src/edge_index/tests.rs:402 crates/eg-query/src/edge_index/tests/durability.rs:48 crates/eg-query/src/edge_index/tests/durability.rs:9 |
| EG-FEDERATED-QUERY-R010 Tableau reasoning stays bounded on the shipped core schema Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Tableau reasoning stays bounded on the shipped core schema.** Tableau-based consistency and classification reasoning over the shipped core schema completes within bounded time and memory, without exponential blowup or stack overflow from schema-axiom internalization and backtracking. Schema composition and restart replay that depend on this reasoning path complete successfully under normal resource limits. | A performance and fault test composes and classifies the full core schema under a restart-replay scenario and confirms it completes within declared time and memory budgets without overflow. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 196ded575c8b 20e0a4ec589a 57a12eb06632 80c865971ea8 src/server/graph_schema/world_model_tests.rs:117 |
| EG-FEDERATED-QUERY-R011 EL+/RL reasoning is sound against the shipped ontology corpus Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**EL+/RL reasoning is sound against the shipped ontology corpus.** The EL+/RL reasoner derives only sound subsumption and disjointness conclusions, so checking the shipped core ontology corpus reports it as consistent with no unsatisfiable classes, including owl:Nothing and its root class. The EL/RL and tableau reasoning paths agree on consistency and disjointness results over this corpus. | A full-corpus consistency regression test checks the shipped ontology for unsatisfiable classes and confirms the EL/RL and tableau results agree. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 196ded575c8b 20e0a4ec589a f17f47ab300f src/server/graph_schema/compose.rs:838 |
| EG-FEDERATED-QUERY-R012 Tableau honors AllDisjointClasses and core disjointness facts Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Tableau honors AllDisjointClasses and core disjointness facts.** Tableau-based reasoning expands owl:AllDisjointClasses declarations the same way the EL path does, so schema-entry full-ABox checking enforces the core disjointness between information-content entities, generically-dependent continuants, processes and temporal regions, and between persons, organizations, servers and events. The corresponding fact that a taxon is never an organism is present and enforced. | An integration test checks that tableau reasoning rejects instances violating these disjointness constraints, including the taxon/organism fact. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 20e0a4ec589a 42aeb6436568 c3b87d31ac11 crates/eg-rdf/src/tableau/abox.rs:537 src/server/graph_schema/world_model_tests.rs:219 |
| EG-FEDERATED-QUERY-R013 Foreign-source resolution is scoped to the owning principal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Foreign-source resolution is scoped to the owning principal.** Registered foreign sources are keyed by owning tenant and actor rather than by name alone, so a caller with general federated-query access cannot name another principal's registered source and have the engine use its stored credentials on their behalf. Resolving a foreign source outside the registering principal's scope is refused with a stable ACCESS_DENIED error, and foreign-source rows are documented as not row-level-security filtered. | A negative integration test registers a foreign source under one principal and confirms a different principal's query naming that source is refused with ACCESS_DENIED. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 196ded575c8b a3e0c9984c67 |
| EG-FEDERATED-QUERY-R014 Explicit grant-based sharing of a registered foreign source Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Explicit grant-based sharing of a registered foreign source.** A principal who owns a registered foreign source can share query access to it with another principal through the engine's existing role-based access-control grant mechanism, rather than through an implicit name lookup. The registering principal retains ownership of the source, and access can be granted and later revoked. | An integration test grants another principal access to a foreign source, confirms it can query through the grant, then revokes the grant and confirms the query is refused. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf a1bb9fb9503e c3b87d31ac11 src/server/foreign_share.rs:178 |
| EG-FEDERATED-QUERY-R015 Read-only enforcement at the shared SQL execution path Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Read-only enforcement at the shared SQL execution path.** The shared graph-free SQL execution path classifies and refuses DDL, DML, COPY and CREATE EXTERNAL TABLE statements as not read-only, enforced once at that shared path rather than duplicated per caller. Every caller that reaches this path, including observability log search, is subject to the same refusal. | A test sends DDL, DML, COPY and CREATE EXTERNAL TABLE statements through each caller of the shared SQL path, including log search, and confirms each is refused. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 0dea49929b94 196ded575c8b a1bb9fb9503e crates/eg-query/src/sql/read_only.rs:52 crates/eg-query/src/sql/read_only.rs:84 src/server/obs/search.rs:362 |
| EG-FEDERATED-QUERY-R016 UQL AS OF uses Unix-second timestamps, not ISO dates Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL AS OF uses Unix-second timestamps, not ISO dates.** UQL's AS OF clause takes a Unix-second timestamp, and query stages chain using the published UQL stage-separator syntax rather than Cypher-shaped text or an ISO-8601 timestamp; text that does not match this grammar is rejected as invalid rather than silently accepted. A conformance test confirms that UQL text emitted by any client parses successfully against the current grammar. | A parser test feeds the correct stage-chained, Unix-second AS OF form and confirms it parses, and a negative test confirms Cypher-shaped or ISO-timestamp text is rejected. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf a3ad18c91bc5 crates/eg-plan/src/uql/tests/legacy.rs:297 |
| EG-FEDERATED-QUERY-R017 Dependency tracking covers edge-type and embedding generations Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Dependency tracking covers edge-type and embedding generations.** Query plans that perform graph traversal or embedding-based ranking register their dependency on the specific edge types and embedding generations they read, so a write that changes an unrelated edge type or generation does not invalidate the plan, while a write touching a real dependency correctly does. | A test performs disjoint writes against unrelated edge types and embedding generations and confirms an existing traversal/rank plan is not invalidated, while a dependent write does invalidate it. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 0dea49929b94 10177f908dd0 crates/eg-core/tests/dependency_scoped_edges.rs:132 crates/eg-core/tests/dependency_scoped_edges.rs:147 crates/eg-core/tests/dependency_scoped_edges.rs:221 |
| EG-FEDERATED-QUERY-R018 Class-level volatility drives invalidation and cache freshness Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Class-level volatility drives invalidation and cache freshness.** Classes and sources declare an eg:volatilityClass, and a per-class invalidation event fires when matching data changes. Foreign-source result caching only serves a cached result when the relevant source watermark is current, consistent with the volatility class declared for that data. | A test changes data in a declared volatility class, confirms the corresponding invalidation event fires, and confirms the foreign-source cache only serves fresh, watermark-current results. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 10177f908dd0 |
| EG-FEDERATED-QUERY-R019 Per-bar signal-state advancement with revisable trend records Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Per-bar signal-state advancement with revisable trend records.** On each bar finalization, the complex-event-processing layer advances signal state and records a TrendFlip event; a later correction can revise a previously recorded TrendFlip without losing the revision history. A scanner index exposes the latest signal state per series for efficient lookup. | A test finalizes a sequence of bars, confirms signal state advances and TrendFlip records are created, then issues a revision and confirms both the historical and latest-state views are correct. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 0dea49929b94 532418b7e55b crates/eg-compute/src/finance/market/record_tests.rs:154 crates/eg-compute/src/finance/market/record_tests.rs:50 |
| EG-FEDERATED-QUERY-R020 One query-text method surface, with the legacy method retired Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**One query-text method surface, with the legacy method retired.** The engine serves exactly one query-text method, Method::Uql; the legacy UnifiedQueryText method and its callers, including remote-engine federation and server tests, are migrated to it, and UnifiedQueryText is removed from the codebase with no compatibility alias or deprecation shim. | A contract test confirms UnifiedQueryText no longer exists in the method registry, and an integration test confirms remote-engine federation operates correctly over Method::Uql. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf bd27155934dc c3b87d31ac11 crates/eg-capabilities/tests/contract_registry.rs:221 |
| EG-FEDERATED-QUERY-R021 Full UQL predicate algebra with SQL-consistent evaluation Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Full UQL predicate algebra with SQL-consistent evaluation.** UQL's predicate algebra supports the comparison operations, AND/OR/NOT with parentheses, IN, BETWEEN, IS [NOT] NULL, typed literals, JSONPath access and spatial predicates. The per-row three-valued evaluator used by UQL agrees with the equivalent SQL evaluation on every supported predicate, including null handling. | A differential test evaluates the same predicate set through SQL and the UQL per-row evaluator across null and non-null fixtures and confirms identical results. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf e93f988eae07 |
| EG-FEDERATED-QUERY-R022 UQL source clauses are first-class, with typed empty-result cases Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL source clauses are first-class, with typed empty-result cases.** UQL treats MATCH, SPARQL, TSSCAN, SENSOR FUSE/ALIGN, SPATIAL/TENSOR SCAN and FOREIGN SCAN/HTTP as first-class source clauses in its grammar and planner. A head-transform stage that would yield an empty result set emits the UQL_W_HEAD_TRANSFORM_YIELDS_EMPTY warning instead of silently reseeding from the runtime, and runtime empty-set reseeding is no longer part of the documented language. | A parser and planner test exercises each source clause and confirms a head-transform-to-empty case emits the warning rather than reseeding. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 8451d7eecf02 |
| EG-FEDERATED-QUERY-R023 Every query modality has a published UQL spelling Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Every query modality has a published UQL spelling.** UQL provides a syntax for every supported query modality: SPARQL/VAR, user-defined functions, FOREIGN SCAN/HTTP with any credential-bearing inline source specification refused, spatial functions including BUFFER, INTERSECTION and DIFFERENCE plus REPROJECT, tensor SLICE/REDUCE/ADD and related tensor functions, complex-event patterns such as SEQ/WITHIN/ABSENCE over SLIDING/TUMBLING windows, SENSOR ALIGN, probabilistic PROB, FUSE K, REASON ONTOLOGY, bounded WINDOW, and VALIDATE SHAPE. | A grammar-exhaustiveness test parses a program covering every listed construct and confirms each round-trips through the canonical printer, and a negative test confirms a credential-bearing FOREIGN SCAN/HTTP specification is refused. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 8451d7eecf02 crates/eg-plan/src/uql/tests/contract.rs:58 |
| EG-FEDERATED-QUERY-R024 Traversal syntax compiles to one canonical Expand encoding Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Traversal syntax compiles to one canonical Expand encoding.** UQL's directional traversal arrows, the wildcard hop syntax and edge predicate filters all compile to the budget-checked, shortest-hop Op::Expand plan node. The common case of an unfiltered, unbounded, outbound single-relationship expansion is always encoded the same way, spelled Traverse, so the planner has one canonical representation rather than multiple equivalent encodings. | A planner test compiles equivalent traversal syntaxes and confirms they produce the identical Op::Expand/Traverse plan node. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf e93f988eae07 |
| EG-FEDERATED-QUERY-R025 Typed parameter binding end-to-end through the Python client Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Typed parameter binding end-to-end through the Python client.** UQL's typed $param placeholders bind only in parser-recognized value positions and are type-checked, with unbound, mistyped or unused parameters failing as typed errors. The engine serves this through Method::Uql with text and params fields, and the generated Python client exposes a matching uql(text, params) call; values never pass through text interpolation. | A test sends injection-shaped parameter values through the Python client and confirms they bind as typed values rather than altering the executed query, plus negative tests for unbound, mistyped and unused parameters. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 4e0570f079f5 |
| EG-FEDERATED-QUERY-R026 UQL documentation is test-verified with an embedded grammar Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL documentation is test-verified with an embedded grammar.** docs/uql.md documents the current UQL language with every example in a uql code block actually parsing under a dedicated test, and embeds the generated grammar rather than a hand-maintained copy. docs/analytics_in_uql.md clearly separates which analytics run through SQL from which run through UQL stages. | A documentation test parses every uql-tagged code block in docs/uql.md and fails the build if any example does not parse. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 7b9ba5708638 c3b87d31ac11 crates/eg-plan/src/uql/tests/contract.rs:106 crates/eg-plan/src/uql/tests/contract.rs:131 |
| EG-FEDERATED-QUERY-R027 EXPLAIN, PROFILE and RETURN support multi-stage UQL programs Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**EXPLAIN, PROFILE and RETURN support multi-stage UQL programs.** A UQL program that composes named LET/JOIN subplans into a dependency graph supports EXPLAIN and PROFILE output and RETURN channels the same as a single-stage query, rather than refusing with UQL_UNSUPPORTED. | An integration test runs EXPLAIN and PROFILE over a multi-stage LET/JOIN program and confirms per-stage plan and runtime information is returned instead of a refusal. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 681de5cb1968 |
| EG-FEDERATED-QUERY-R028 KnowledgeSet is reachable from UQL Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**KnowledgeSet is reachable from UQL.** A UQL query can read a KnowledgeSet, combining epistemic status, FUSE and AS OF semantics within a single query, and produces results equivalent to issuing the corresponding operations through the structured query surface or the previously separate surfaces. | An oracle test runs equivalent epistemic, fuse and as-of queries through UQL, the structured surface and the prior separate surfaces and confirms the results agree. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 0265d3a41baf 681de5cb1968 |
| EG-FEDERATED-QUERY-R029 UQL text from graph-exploration clients matches the grammar Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL text from graph-exploration clients matches the grammar.** Any UQL text generated by a graph-exploration client, including a temporal scrubber control, uses the stage-chained syntax and a Unix-second AS OF timestamp defined by the published UQL grammar, not Cypher-shaped text or an ISO-8601 timestamp. Text that does not conform to this grammar is rejected with a typed parse error rather than silently misinterpreted. | A conformance test parses the exact text emitted by the temporal-scrubber control's query template and confirms it succeeds under the current grammar. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf cb0a4dfcf4a5 crates/eg-plan/src/uql/tests/scrubber.rs:16 crates/eg-plan/src/uql/tests/scrubber.rs:38 crates/eg-plan/src/uql/tests/scrubber.rs:53 |
| EG-FEDERATED-QUERY-R030 TSSCAN preserves per-series row identity and full precision Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**TSSCAN preserves per-series row identity and full precision.** The TSSCAN source identifies each time-series row by series@ts and carries its values as f64 channels named v0..vk, so rows from different series at the same timestamp never collide and no value is truncated to f32. This row identity is the basis for series analytics expressed in UQL. | A fixture test scans overlapping multi-series data through TSSCAN and confirms no row collisions, no truncation and correct per-series, per-timestamp identity. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 79fb60a33ee0 crates/eg-plan/src/rowset.rs:219 crates/eg-plan/src/rowset.rs:243 crates/eg-plan/src/tsdb_scan_tests.rs:693 |
| EG-FEDERATED-QUERY-R031 Contribution attribution kernels exposed through UQL ATTRIBUTE Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Contribution attribution kernels exposed through UQL ATTRIBUTE.** The engine computes contribution attribution using linear split, exact Shapley for small coalitions, seeded sampled Shapley with a confidence interval, Owen values over a hierarchy, and multi-factor OLS regression with heteroskedasticity-and-autocorrelation-consistent standard errors. UQL exposes these through an ATTRIBUTE channel VALUE agg SHAPLEY [SAMPLES n SEED s] stage, and a decision-evaluation report can attribute an assembly slate's outcome across its logged sub-slates. | Exact Shapley results are checked against a brute-force oracle, sampled Shapley against seeded-repeatability and confidence-interval-coverage tests, and the ATTRIBUTE UQL stage against an integration test. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf 7940beedc463 crates/eg-numeric/src/attribution/tests.rs:133 crates/eg-numeric/src/attribution/tests.rs:83 crates/eg-numeric/src/attribution/tests.rs:93 |
| EG-FEDERATED-QUERY-R032 Probabilistic impact propagation with cone-scoped recomputation Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Probabilistic impact propagation with cone-scoped recomputation.** The engine propagates probabilistic impact across the graph using an exact Noisy-OR model on acyclic structure with a bounded unroll on cycles, and an Independent-Cascade model using seeded Monte Carlo simulation with a confidence interval, following ontology-declared edge transmission. Results report the top-k contributing paths with per-seed attribution, are exposed in UQL as PROPAGATE model edge-pattern HOPS n, and a standing query seeded from Incident, ConformanceViolation or CVE facts recomputes only the affected cone and records ImpactAssessment facts. | A test compares the Noisy-OR result against an exact enumeration on small acyclic graphs and the Independent-Cascade result against seeded-repeatability and confidence-interval checks, plus an integration test for the PROPAGATE stage and standing-query cone recomputation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 0265d3a41baf c06e903d0def src/server/impact_watch/tests.rs:112 src/server/impact_watch/tests.rs:135 src/server/impact_watch/tests.rs:157 |
| EG-FEDERATED-QUERY-R033 Barrier-hit and time-to-exhaustion derivations, one shared CDF Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Barrier-hit and time-to-exhaustion derivations, one shared CDF.** The engine computes first-passage probability for a barrier using the arithmetic-Brownian-motion inverse-Gaussian form and the geometric-Brownian-motion log-barrier form, each checked against a terminal-distribution calculation, with maximum-likelihood drift and volatility estimation and a bootstrap confidence interval. These are exposed as DERIVE barrier_hit(...) and DERIVE tte(...), and all normal-tail calculations use one public stats::norm_cdf implementation rather than a separate private copy. | Results are checked against a Monte Carlo simulation and against the analytic limit as volatility approaches zero, which must match the deterministic linear-prediction case. | requirement | EG-FEDERATED-QUERY | VERIFIED | 0265d3a41baf a0fbd9c05adf c98e58397fcc crates/eg-compute/src/graph_algos/impact/tests.rs:101 crates/eg-compute/src/graph_algos/impact/tests.rs:117 crates/eg-compute/src/graph_algos/impact/tests.rs:87 |
| EG-FEDERATED-QUERY-R034 Motif and discord search over time series, batch and streaming Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Motif and discord search over time series, batch and streaming.** The engine finds motifs and discords in time series using an FFT-accelerated MASS distance computation and a matrix profile, computed anytime for batch data and incrementally for streaming data. UQL exposes MOTIF LIKE $shape LENGTH m TOP k and DISCORD LENGTH m TOP k under the standard query budgets, anomaly mining supports a matrix-profile discord algorithm, and a series shape predicate can emit a stream event consumed by the existing complex-event-processing matcher. | A test compares matrix-profile motif and discord results against a brute-force distance computation on a reference series and confirms the streaming and batch computations agree. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 1625e507f6fc |
| EG-FEDERATED-QUERY-R035 Filtered text search evaluates within the filtered candidate set Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Filtered text search evaluates within the filtered candidate set.** A text search combined with a filter evaluates its relevance ranking only within the set of rows that satisfy the filter, using a filtered index scan or equivalent pre-filtering, so a filtered query returns up to k relevant results drawn from the full matching set rather than filtering after an unfiltered top-k ranking has already discarded relevant rows. | A correctness oracle compares filtered BM25 search results against an unfiltered full scan intersected with the filter and confirms they agree. | requirement | EG-FEDERATED-QUERY | LANDED | 0265d3a41baf 4dfe7beb589b |
| EG-FEDERATED-QUERY-R036 Bounded, observable graph reopen after a restart Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Bounded, observable graph reopen after a restart.** After a restart, the engine serves reads from stored data immediately and rebuilds or restores its index state either from persisted index state or incrementally in the background, rather than blocking all reads on a full linear index rebuild. While materialization is incomplete, reads are refused with a typed PARTIAL_MATERIALIZATION state, and a readiness signal indicates when the graph is fully queryable. | A restart test measures reopen time and reads against graphs of increasing document counts and confirms the PARTIAL_MATERIALIZATION state and readiness signal behave correctly, with reopen time bounded well under a full rebuild. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 bcbbe09c7e76 |
| EG-FEDERATED-QUERY-R037 Rolling window statistics are both O(1) and numerically exact Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Rolling window statistics are both O(1) and numerically exact.** Streaming rolling-window statistics, such as standard deviation and z-score, update in constant time per step and report exactly zero for a window containing constant values, with no floating-point residue accumulating from incremental add/remove updates over long-running windows. | A property test compares the streaming O(1) update against an exact from-scratch recomputation across constant, alternating and large windows and confirms they agree, including an exact zero on constant windows. | requirement | EG-FEDERATED-QUERY | VERIFIED | 1ee2319ee506 62c450561948 crates/eg-numeric/src/series/streaming_tests.rs:63 crates/eg-numeric/src/series/streaming_tests.rs:76 crates/eg-numeric/src/series/streaming_tests.rs:87 |
| EG-FEDERATED-QUERY-R038 Federation optimizer: cost-aware pushdown, freshness-aware cache (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Federation optimizer: cost-aware pushdown, freshness-aware cache (rollup).** The query planner models each foreign source's capability, including SQL/OBDA, SPARQL endpoints, HTTP/REST connectors, lake formats and other registered engine kinds, and pushes down projection, filters, LIMIT/ORDER, aggregates, same-source joins and batched key lookups only when that capability proves the work sound. It applies cardinality and cost estimates under a per-query network budget, serves freshness-aware cached results gated by source watermarks, bounds remote parallelism, and EXPLAIN output shows exactly which fragments ran remotely. The child requirements below define the required behavior and acceptance. | A differential test compares optimized execution plans and results against a full-fetch oracle across each supported source capability and confirms correctness, declared pushdown, and accurate EXPLAIN reporting. | requirement | EG-FEDERATED-QUERY | LANDED | 212c65869e32 62c450561948 |
| EG-FEDERATED-QUERY-R038.1 Typed foreign-source capability + cost model proves which pushdown kinds are sound Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Typed foreign-source capability + cost model proves which pushdown kinds are sound.** A `ForeignSourceCapability`/cost-model typed struct declares, per source, a cardinality estimate, a network-budget cost, and which pushdown kinds (projection, filter, limit/order, aggregate, same-source join, batched key lookup) that source's declared capability proves sound. The optimizer consults this model before pushing any fragment down and refuses a pushdown kind the capability does not prove sound. | A unit/property test suite validates the typed model's construction and asserts a representative refusal case per pushdown kind: a source whose declared capability does not prove a kind sound is never offered that pushdown. | requirement | EG-FEDERATED-QUERY | LANDED | 212c65869e32 |
| EG-FEDERATED-QUERY-R039 Mixed traversal and vector queries return k or a typed shortfall Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Mixed traversal and vector queries return k or a typed shortfall.** A query combining multi-hop graph traversal with vector similarity search continues generating candidates until k results survive the traversal filter, or returns a typed shortfall result naming how many matches were found, rather than silently returning fewer than k results without explanation. | A correctness oracle runs mixed traversal-plus-vector queries against a reference corpus and confirms either exactly k permitted results or an explicit typed shortfall, never a silent undercount. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 5c2ab50088c4 62c450561948 |
| EG-FEDERATED-QUERY-R040 Filter-aware index scans for filtered vector and text search Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Filter-aware index scans for filtered vector and text search.** Filtered approximate-nearest-neighbor and BM25 text search plan as filter-aware index scans over pre-filtered candidate sets or bitmap filters, rather than scanning the full unfiltered index and discarding non-matching rows afterward, while preserving the filtered-search correctness guarantee. | A benchmark compares filtered vector and text search latency before and after the filter-aware scan change on a fixed corpus, alongside the correctness oracle confirming results remain correct. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 08b2c9d4b567 62c450561948 |
| EG-FEDERATED-QUERY-R041 Federation optimizer core drives pushdown decisions for every query Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Federation optimizer core drives pushdown decisions for every query.** The federation optimizer in eg-plan/src/federation_opt/ models each foreign source's capabilities, builds a RemoteRequest per source, tracks a per-query budget meter, trace and LIMIT hints, maintains learned SourceStats with provenance, and executes bind joins with an adaptive batch sizer and typed refusals; it is bound into the ForeignScan/Foreign plan arms so every served plan uses it. | Federation optimizer unit and integration tests exercise capability-gated pushdown, budget enforcement, bind-join batching and typed refusal paths against the served query path. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 d656b605ef0a |
| EG-FEDERATED-QUERY-R042 OBDA pushes per-predicate scans and semi-join reduction to SQL sources Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**OBDA pushes per-predicate scans and semi-join reduction to SQL sources.** OBDA execution groups scans per predicate, pushes constant-subject key lookups and constant-object equality checks to the external SQL source, and reduces semi-joins to an IN clause rendered as ObdaCompare::In by that source. | OBDA pushdown tests (FQR-06) confirm per-predicate scan grouping, constant lookup/equality pushdown and semi-join IN reduction produce results matching the full-fetch oracle. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 d656b605ef0a |
| EG-FEDERATED-QUERY-R043 SQL foreign-source connections share the one outbound SSRF guard Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SQL foreign-source connections share the one outbound SSRF guard.** SQL DSN connections for Sql foreign-source specs and OBDA external sources are validated at a single chokepoint against the same outbound allowlist and sensitive-address-range checks used for HTTP foreign sources. | Security negative tests confirm a disallowed SQL DSN target is refused with the same stable typed error as a disallowed HTTP target. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 d656b605ef0a |
| EG-FEDERATED-QUERY-R044 UQL EXPLAIN and PROFILE surface federation trace and budget hints Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL EXPLAIN and PROFILE surface federation trace and budget hints.** UQL's PROFILE and EXPLAIN output include a federation trace describing remote fragments, residual local work and budget usage, and callers can supply budget hints that the planner honors when routing a query through the remote UQL method. | EXPLAIN/PROFILE tests for federated UQL queries confirm the trace reports the remote/residual breakdown and that caller-supplied budget hints are respected. | requirement | EG-FEDERATED-QUERY | LANDED | 33c1fd51757d 62c450561948 c98e58397fcc |
| EG-FEDERATED-QUERY-R045 Foreign rows carry typed columns for filter and projection pushdown Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Foreign rows carry typed columns for filter and projection pushdown.** A foreign source returns ForeignRows with stable column names, types, null semantics and row provenance, and apply_filter/apply_projection classify each operation as Exact, Inexact or Unsupported; only an Exact result removes the local residual, an Inexact result may narrow transfer only to a superset of authorized matching rows, and an Unsupported result fetches the needed columns and evaluates locally without ever dropping a column required by a residual, ORDER BY, authorization or proof channel. | A recording mock verifies every pushed ForeignRows request narrows data transfer without changing answers, and a schema/version mismatch or ambiguous column identity is refused rather than silently bound. | requirement | EG-FEDERATED-QUERY | VERIFIED | 62c450561948 6ffff56cecff crates/eg-plan/src/federation_opt/columns.rs:285 crates/eg-plan/src/federation_opt/columns.rs:311 crates/eg-plan/src/federation_opt/columns.rs:334 |
| EG-FEDERATED-QUERY-R046 OBDA pushes SPARQL LIMIT, ORDER, aggregates and same-source joins Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**OBDA pushes SPARQL LIMIT, ORDER, aggregates and same-source joins.** OBDA translates SPARQL LIMIT, ORDER BY, aggregate and same-source join clauses into the rendered SQL sent to the external source and evaluates the pushed solutions directly, without materializing a transient in-memory graph. | OBDA pushdown tests confirm pushed LIMIT/ORDER/aggregate/join results match the full-fetch oracle and that no transient graph is constructed for the pushed portion. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 c98e58397fcc |
| EG-FEDERATED-QUERY-R047 Federation enforces per-source parallelism caps and rate limits Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Federation enforces per-source parallelism caps and rate limits.** Each foreign source is bounded by a global semaphore keyed to its fingerprint that caps concurrent requests and enforces a rate limit, while bind-join batches to different sources still execute in parallel within those caps. | Concurrency tests confirm request counts to a single source never exceed its configured cap while independent sources execute concurrently. | requirement | EG-FEDERATED-QUERY | LANDED | 321aa24de7c0 62c450561948 |
| EG-FEDERATED-QUERY-R048 Join ordering across foreign sources uses learned, provenanced statistics Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Join ordering across foreign sources uses learned, provenanced statistics.** The planner orders joins across multiple foreign sources using learned cardinality statistics persisted as graph facts with their provenance, seeded by registration-time probes such as PostgreSQL table-size statistics, engine-reported statistics and VoID descriptions. (Rollup: delivered incrementally by its `.1`, `.2`, ... children, one per code root — typed model, persistence, per-source-kind probes, planner join-ordering use.) | Join-ordering tests compare planner choices against known cardinalities and confirm learned statistics carry sample count and provenance per FQR-05. | requirement | EG-FEDERATED-QUERY | VERIFIED | 62c450561948 f708d6e7728f |
| EG-FEDERATED-QUERY-R048.1 Typed join-cardinality-statistic model with provenance Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Typed join-cardinality-statistic model with provenance.** `crates/eg-plan/src/federation_stats.rs` defines `JoinCardinalityStatistic` (estimated cardinality, sample count, a source generation marker) and `StatisticsProvenance` (PostgreSQL table-size stats, engine-reported stats, or a VoID description), constructed only through a fallible constructor that refuses a statistic carrying no provenance. This is the typed-model code root of R048; persistence as graph facts, per-source-kind probes and planner join-ordering use are later `.2`+ children. | A unit test constructs a statistic with each provenance kind and confirms it round-trips its sample count and provenance, and a second test confirms the constructor refuses a statistic given no provenance. | requirement | EG-FEDERATED-QUERY | VERIFIED | 6c11520aebfc f708d6e7728f crates/eg-plan/src/federation_stats.rs:166 crates/eg-plan/src/federation_stats.rs:174 crates/eg-plan/src/federation_stats.rs:185 crates/eg-plan/src/federation_stats.rs:209 |
| EG-FEDERATED-QUERY-R049 Foreign query fragment cache is freshness-aware and owner-salted Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Foreign query fragment cache is freshness-aware and owner-salted.** Cached results for a foreign query fragment are keyed by source identity, an owner-specific salt, the canonical request and the source's current freshness watermark; a missing or stale watermark disables the cache hit rather than serving stale data. | Cache tests confirm a hit requires a matching fresh watermark and that a stale or absent watermark forces a live fetch. | requirement | EG-FEDERATED-QUERY | VERIFIED | 33c1fd51757d 62c450561948 b0124203865d crates/eg-plan/src/federation_opt/cache.rs:162 crates/eg-plan/src/federation_opt/run.rs:502 |
| EG-FEDERATED-QUERY-R050 SPARQL SERVICE uses bind joins and pushes FILTER/LIMIT Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SPARQL SERVICE uses bind joins and pushes FILTER/LIMIT.** SPARQL SERVICE clauses execute as VALUES-based bind joins against the remote endpoint and push FILTER and LIMIT into the SERVICE request where sound, validated through the same single outbound SSRF guard used by other foreign sources. | SERVICE bind-join tests confirm multivalued RDF answers are preserved and that a disallowed SERVICE endpoint is refused by the shared SSRF guard. | requirement | EG-FEDERATED-QUERY | LANDED | 3d00361f3191 62c450561948 |
| EG-FEDERATED-QUERY-R051 Iceberg scans prune manifests using the final pushed predicates Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Iceberg scans prune manifests using the final pushed predicates.** The Iceberg table scan is assembled only after the query engine has supplied its filters, projection and limit, so manifest pruning reflects the actual pushed predicates instead of an earlier, less-informed scan; documentation describing pruning behavior is corrected to match this. | A partitioned Iceberg fixture test confirms manifest files are pruned according to the final pushed filters, projection and limit. | requirement | EG-FEDERATED-QUERY | VERIFIED | 56d3663f4bf8 5dd3f1b33fad 62c450561948 8676a7f3af87 crates/eg-query/tests/iceberg_federation_scan.rs:384 |
| EG-FEDERATED-QUERY-R052 RemoteEngine sources receive pushed key filters and bounded LIMIT Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**RemoteEngine sources receive pushed key filters and bounded LIMIT.** For registered RemoteEngine sources, the planner appends authorized key filters and a bounded LIMIT to the canonical read-only UQL request, preserving ORDER BY, residual filtering, pagination and outer-query limit semantics; a remote lacking the feature or exact push capability falls back to the safe bounded route with local residuals instead of fetching an unbounded result. | A recording mock proves pushed RemoteEngine requests narrow transfer without changing answers, and a capability-lacking remote is verified to fall back safely. | requirement | EG-FEDERATED-QUERY | VERIFIED | 62c450561948 70c5421663b9 8676a7f3af87 a854dd78481d crates/eg-plan/src/federation_opt/engine_peer_tests.rs:277 |
| EG-FEDERATED-QUERY-R053 Trino, Cypher and Spark sources are typed ForeignSourceSpec kinds Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Trino, Cypher and Spark sources are typed ForeignSourceSpec kinds.** Trino, Cypher-speaking stores and Spark are each registered as a distinct ForeignSourceSpec kind with its own declared capability set. Spark is restricted to batch access with no interactive pushdown capability. | Per-kind capability tests confirm each ForeignSourceSpec only advertises and exercises the pushdown operations its declared capability set allows. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 09385617b3ae 62c450561948 ec4d3c4ee5a3 |
| EG-FEDERATED-QUERY-R054 SPARQL SERVICE and peer federation share the one outbound SSRF guard Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SPARQL SERVICE and peer federation share the one outbound SSRF guard.** Outbound requests from SPARQL SERVICE handling and peer federation fan-out both validate their target through the single shared federation guard; no separate, weaker outbound validation remains in either call path. | Security tests confirm a target disallowed by the shared guard is refused identically from both the SPARQL SERVICE and peer fan-out call paths. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 70c5421663b9 |
| EG-FEDERATED-QUERY-R055 SPARQL evaluation binds every value of a multi-valued property Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SPARQL evaluation binds every value of a multi-valued property.** The SPARQL evaluator iterates and binds every value of a repeated predicate on a subject, rather than binding only the first value and silently dropping the remaining matching answers. | A regression test on a graph with two values for the same predicate confirms both values bind, including per-binding FILTER evaluation, per FQR-01's correct-read acceptance. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 d656b605ef0a |
| EG-FEDERATED-QUERY-R056 Causal-impact p-values reuse the shared numeric tail functions Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Causal-impact p-values reuse the shared numeric tail functions.** eg-compute/src/mining/causal_impact.rs computes its p-value using eg-numeric's shared normal survival and cumulative distribution functions instead of a local error-function approximation, avoiding the catastrophic cancellation that approximation produced in the tail. | A tail-probability test against literal reference values at tight relative tolerance confirms the computed p-value matches the exact reference in the tail, per FQR-09. | requirement | EG-FEDERATED-QUERY | VERIFIED | 1b55c58d05d5 62c450561948 b6e49c439128 crates/eg-compute/src/mining/causal_impact.rs:179 |
| EG-FEDERATED-QUERY-R057 SQL provider module stays within the repository's file-size limit Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SQL provider module stays within the repository's file-size limit.** crates/eg-query/src/sql/providers.rs is kept at or under the repository's 900-line file-size limit through semantic extraction that preserves existing provider behavior exactly. | A line-count check confirms the file is at or under 900 lines, and the existing SQL provider test suite passes unchanged after extraction. | requirement | EG-FEDERATED-QUERY | LANDED | 3241ec8af9d4 62c450561948 |
| EG-FEDERATED-QUERY-R058 Natural language runs only as disclosed, read-only typed UQL Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Natural language runs only as disclosed, read-only typed UQL.** A natural-language request is never query authority itself: the configured planner translates it to UQL text, the engine parses that text with the same grammar as any caller-written query and runs it through the same read-only pipeline under the caller's verified authority, row visibility and budgets. Every natural-language result carries the exact UQL that was executed, a plan-only mode returns that typed UQL candidate without executing it so a caller can review first, results are never cached on the natural-language text, and natural language cannot reach any mutating or side-effecting operation. Rollup over `EG-FEDERATED-QUERY-R058.1` (typed disclosure model, built), `.2` (wire the dispatch entry point and result contract to it), `.3` (no-cache-on-NL-text + no-mutation-reachable guards). | Tests confirm the executed UQL is returned with the result, plan-only mode returns a candidate without reading data, planner output that fails to parse or exceeds a budget is refused with a typed error, row visibility matches the equivalent direct UQL query, and no mutation is reachable. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 3da71fa8e9b7 62c450561948 |
| EG-FEDERATED-QUERY-R058.1 Typed NL→UQL disclosure model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Typed NL→UQL disclosure model.** `eg-plan` exposes an `NlQueryResult` that always carries the exact UQL text alongside any data — `Some(rows)` when executed, `None` (plan-only mode) when not — plus a typed `NlQueryError` with dedicated variants for planner output that fails to parse and output that exceeds a configured `NlQueryBudget`, refused before parsing or execution. `plan_only` produces the candidate without taking any view/`PlanCtx`, so plan-only mode cannot read data even by construction. | Unit tests confirm: an executed result carries the exact UQL that ran; `plan_only` returns a candidate with `rows: None` and reads no data; malformed planner output is refused with `NlQueryError::ParseFailed` (not executed); and over-budget planner output is refused with `NlQueryError::BudgetExceeded` before parse/execute, in both plan-only and executing modes. | requirement | EG-FEDERATED-QUERY | LANDED | 3da71fa8e9b7 |
| EG-FEDERATED-QUERY-R058.2 Dispatch handler and result contract disclose the typed NL→UQL model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Dispatch handler and result contract disclose the typed NL→UQL model.** Child slice of `EG-FEDERATED-QUERY-R058` (see tasks.md). Rollup over `EG-FEDERATED-QUERY-R058.2.1` (dispatch-path budget enforcement against the typed model, built) and `EG-FEDERATED-QUERY-R058.2.2` (serve the executed UQL in the result contract and expose a plan-only entry point to callers). | Tests confirm the executed UQL is returned with the result, plan-only mode returns a candidate without reading data, planner output that fails to parse or exceeds a budget is refused with a typed error, row visibility matches the equivalent direct UQL query, and no mutation is reachable | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R058.2.1 Dispatch handler enforces the typed NL budget before parsing Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Dispatch handler enforces the typed NL budget before parsing.** `Method::NlQuery`'s dispatch handler (`handle_nl_query_plan`) applies the SAME character-count `NlQueryBudget` the typed disclosure model (`EG-FEDERATED-QUERY-R058.1`) defines to the planner's produced UQL text BEFORE it reaches `eg_plan::uql::parse`, refusing an over-budget answer with the typed `UQL_BUDGET_EXCEEDED` code rather than running unbounded planner text into the parser. | A unit test confirms `NlQueryBudget::check` refuses over-budget text with a typed `BudgetExceeded` error and accepts in-budget text, independent of whether that text later parses. | requirement | EG-FEDERATED-QUERY | VERIFIED | 8710a3709c47 crates/eg-plan/src/nl.rs:730 |
| EG-FEDERATED-QUERY-R058.2.2 Served NL result carries the executed UQL; plan-only is reachable Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Served NL result carries the executed UQL; plan-only is reachable.** Remaining scope of `EG-FEDERATED-QUERY-R058.2`: wire `Method::NlQuery`'s result contract (`eg-types`) to carry the executed UQL text alongside rows, and expose the typed model's `plan_only` as a callable entry point. | Tests confirm the served result carries the executed UQL and a plan-only call returns the candidate without reading data. Not yet delivered. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R058.3 No-cache-on-NL-text and no-mutation-reachable guarantees Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**No-cache-on-NL-text and no-mutation-reachable guarantees.** Child slice of `EG-FEDERATED-QUERY-R058` (see tasks.md). Rollup over `EG-FEDERATED-QUERY-R058.3.1` (no-cache-on-NL-text guard, built) and `EG-FEDERATED-QUERY-R058.3.2` (no-mutation-reachable confirmation). | Tests confirm the executed UQL is returned with the result, plan-only mode returns a candidate without reading data, planner output that fails to parse or exceeds a budget is refused with a typed error, row visibility matches the equivalent direct UQL query, and no mutation is reachable | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R058.3.1 NL results are never cached on the NL text Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**NL results are never cached on the NL text.** `Method::NlQuery`'s handler answers through the uncached `result_response` path and never references the engine's `ResultCache`, so a non-deterministic planner answer can never be served stale from a prior, differently-planned request; a regression guard pins this structural guarantee. | A test confirms the handler source never references `ResultCache` or the cache-aware `served_response` helper. | requirement | EG-FEDERATED-QUERY | VERIFIED | 8710a3709c47 d2cb221aa148 src/server/handlers/query/nl.rs:171 src/server/handlers/query/nl.rs:177 src/server/handlers/query/nl.rs:200 |
| EG-FEDERATED-QUERY-R058.3.2 No mutating operation is reachable from the NL surface Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**No mutating operation is reachable from the NL surface.** Remaining scope of `EG-FEDERATED-QUERY-R058.3`: confirm no NL-planned UQL text can reach a mutating or side-effecting operation. | A negative test confirms an NL-planned mutating statement is refused. Not yet delivered. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R059 Semantic index lifecycle is fenced, durable and restart-safe Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Semantic index lifecycle is fenced, durable and restart-safe.** Semantic and vector index creation, backfill, activation and drop are fenced, durable operations, and an unavailable index generation falls back correctly rather than serving incorrect or partial results after restart. | Restart and fenced-lifecycle tests (FQR-07) confirm index generations activate, drop and recover correctly across a restart. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 8fa63622a11f |
| EG-FEDERATED-QUERY-R060 Leiden community detection supports a Constant Potts Model quality function Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Leiden community detection supports a Constant Potts Model quality function.** LeidenConfig exposes a Constant Potts Model quality function as an alternative to modularity, applying its own delta-quality term inside the existing local-moving and refinement loop, so community detection is not limited to modularity's resolution limit. | Leiden kernel tests and the corresponding query-surface objective-function parameter confirm the Constant Potts Model produces correct communities distinct from the modularity result on the same graph. | requirement | EG-FEDERATED-QUERY | LANDED | 2a0d6eae0918 62c450561948 |
| EG-FEDERATED-QUERY-R061 One grammar table drives UQL docs, prompts and error messages Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**One grammar table drives UQL docs, prompts and error messages.** The UQL grammar table is the single source for the generated EBNF documentation block, the natural-language planner's prompt, and the expected-token lists in parser error messages; the dispatch table is checked against the grammar in both directions, and a feature unsupported in the current build fails with one dedicated feature-not-available error. | A generated-docs snapshot test and a dispatch-table-versus-grammar consistency check (FQR-01) both pass, and a feature excluded from compilation is confirmed to fail with the dedicated error. | requirement | EG-FEDERATED-QUERY | VERIFIED | 62c450561948 8451d7eecf02 crates/eg-plan/src/uql/tests/contract.rs:46 crates/eg-plan/src/uql/tests/contract.rs:58 |
| EG-FEDERATED-QUERY-R062 Streaming memory test measures only its own allocations Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Streaming memory test measures only its own allocations.** The million-row streaming-scan memory test measures memory allocated by the stream under test using a scoped counting allocator, rather than process-wide memory, so the test cannot fail due to unrelated concurrent work in the same process or host. | The test passes measuring peak allocation for the streamed scan below its declared bound when run both in isolation and alongside concurrent unrelated tests. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 645f55e5f0db |
| EG-FEDERATED-QUERY-R063 Leiden provides stable community naming and a connectivity check Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Leiden provides stable community naming and a connectivity check.** Community detection runs a sweep across multiple resolution values and keeps communities that persist across them, names each stable community by its highest-centrality member rather than by an index that can shuffle between runs, and performs a connectivity post-check on every detected community. | Tests cover the resolution sweep's stability selection, confirm community names stay stable across reruns on the same input, and confirm the connectivity post-check detects any disconnected community. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 b5fe3c140c21 |
| EG-FEDERATED-QUERY-R064 UQL lexer supports its full token set and structured diagnostics Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL lexer supports its full token set and structured diagnostics.** The UQL lexer tokenizes comments, scientific notation, Unicode and quoted identifiers, UTF-8 strings, parameter placeholders and JSONPath tokens, enforces bounded nesting, and reports structured diagnostics with an error code, source span, expected-token set, fix hint and a line/column caret. | Lexer tests cover each token class and confirm diagnostic output includes the code, span, expected set and caret position for malformed input. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 8451d7eecf02 |
| EG-FEDERATED-QUERY-R065 Named UQL sub-plans compile to an ordered plan DAG Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Named UQL sub-plans compile to an ordered plan DAG.** Named sub-plans referenced by FROM or JOIN compile into a plan DAG ordered by first-reference depth-first traversal, a FUSE operation inlines named sub-plans, and the DAG printer's output can be re-parsed back to an equivalent plan. EXPLAIN and PROFILE are served for a DAG-shaped program, node by node and truthfully: the program is reported as written with one stage per node and its estimate, PROFILE records each node's rows and time, and the result states that such a program is not cost-reordered and not incrementally maintained. | Tests confirm depth-first compile ordering, FUSE inlining correctness via re-parse, and that EXPLAIN and PROFILE on a DAG program return one stage per node with the not-reordered, not-incremental note. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 8451d7eecf02 |
| EG-FEDERATED-QUERY-R066 SPARQL evaluator is split into modules within the file-size limit Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SPARQL evaluator is split into modules within the file-size limit.** crates/eg-rdf/src/sparql.rs is split into cohesive modules so that no resulting file exceeds the repository's 900-line limit, using pure code moves that preserve every existing function and behavior unchanged. | The full eg-rdf all-features test suite passes identically before and after the split, and a function-by-function comparison confirms every original function is preserved. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 fbb3b6f0ff6c |
| EG-FEDERATED-QUERY-R067 UQL RETURN exposes multiple named score channels per row Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL RETURN exposes multiple named score channels per row.** Each scoring stage, such as similarity, belief or window scoring, records its score under its own fixed channel in a side table, so a query can return several distinct named scores for the same row and served results carry every requested channel. | A test returning two or more named score channels in the same query confirms each row carries the correct value for every requested channel. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 8451d7eecf02 |
| EG-FEDERATED-QUERY-R068 UQL supports WITH PROOF for proof-carrying results Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL supports WITH PROOF for proof-carrying results.** UQL gains a WITH PROOF clause that returns proof-carrying results consistent with EG-FEDERATED-QUERY-R006's proof contract, binding each returned proof to its premises and source generation. | A test issuing a UQL query WITH PROOF confirms the returned proof matches EG-FEDERATED-QUERY-R006's premise-binding and source/generation requirements. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 857e20c63775 |
| EG-FEDERATED-QUERY-R069 SQL pushdown batches key lookups and shares rendering with OBDA Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**SQL pushdown batches key lookups and shares rendering with OBDA.** SQL foreign-source pushdown batches key lookups into a single IN-list subquery and pushes LIMIT into the statement's parsed syntax tree while respecting any existing ORDER BY or LIMIT and skipping FETCH or non-literal limits; both SQL pushdown and OBDA render literals and identifiers through the same shared rendering function. | Pushdown tests confirm batched IN-list queries and pushed LIMIT match the full-fetch oracle, and OBDA's rendered SQL uses the identical shared rendering function. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 d656b605ef0a |
| EG-FEDERATED-QUERY-R070 UQL execution budgets are enforced and reported in EXPLAIN/PROFILE Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**UQL execution budgets are enforced and reported in EXPLAIN/PROFILE.** A query's execution is bounded by a budget on maximum result rows and maximum traversal visits, failing with a dedicated budget-exceeded error when exceeded; EXPLAIN reports the canonical and optimized plan with per-stage estimated rows and an incremental-maintainability reason, and PROFILE reports per-stage observed rows and elapsed time. | Tests confirm a query exceeding its budget fails with the dedicated budget-exceeded error, and EXPLAIN/PROFILE output includes the documented per-stage fields. | requirement | EG-FEDERATED-QUERY | SPECIFIED | 62c450561948 e93f988eae07 crates/eg-plan/src/budget.rs:73 |
| EG-FEDERATED-QUERY-R071 HTTP foreign sources support templated pagination and key placeholders Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**HTTP foreign sources support templated pagination and key placeholders.** An HTTP foreign source's URL query part may declare placeholders for keys, limit, offset and page, which the planner fills with percent-encoded values and paginates up to the source's declared page/limit budget; a source requiring keys refuses a full scan that supplies none. | Tests confirm correct percent-encoded substitution for each placeholder, pagination stopping at the declared budget, and a keys-required source refusing a keyless full-scan request. | requirement | EG-FEDERATED-QUERY | LANDED | 62c450561948 d656b605ef0a |
| EG-FEDERATED-QUERY-R072 The ontology selects the sources for a cross-source question Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**The ontology selects the sources for a cross-source question.** A caller sends the ontology classes of a question. EG links those classes through object properties within a hop budget. EG entails subclass relations during that search. For each class on the path, EG names the approved virtual mapping that serves it, or the class itself as uncovered. Every selection carries its premises: label, relation and mapping facts with their source generation. The answer is read-only and plans no execution. Rollup: split into `.1` (below) per SPEC-SIZING §5; further children land the live-ontology/mapping-catalog search. | A fixture with two sources proves the path, the selected mappings, a subclass mapping serving its superclass, an uncovered class and a disconnected pair. | requirement | EG-FEDERATED-QUERY | VERIFIED | 62c450561948 f948211fb8c7 |
| EG-FEDERATED-QUERY-R072.1 Typed model for cross-source coverage, proved against a fixture Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Typed model for cross-source coverage, proved against a fixture.** `eg-rdf::source_selection` defines `CoverageResult` (`Covered`/`Uncovered`/`Disconnected`), `SourceSelectionHop`, and `Premise` (label/relation/subclass/mapping/source-generation facts), and a fixture-driven `select_sources` that links classes through object properties within a hop budget, entails asserted `subClassOf` facts, and reports read-only coverage with no execution plan attached. | Unit tests over a two-source fixture prove a direct mapping, a subclass mapping serving its superclass, an uncovered reachable class, and a disconnected class. | requirement | EG-FEDERATED-QUERY | VERIFIED | 6c11520aebfc f948211fb8c7 crates/eg-rdf/src/source_selection.rs:302 crates/eg-rdf/src/source_selection.rs:324 crates/eg-rdf/src/source_selection.rs:350 crates/eg-rdf/src/source_selection.rs:359 crates/eg-rdf/src/source_selection.rs:369 |
| EG-FEDERATED-QUERY-R073 Operation-bound virtual mappings federate API, MCP, A2A and GraphQL sources Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Operation-bound virtual mappings federate API, MCP, A2A and GraphQL sources.** These sources register as typed `ForeignSourceSpec` kinds with declared capabilities. A mapped entity reads through its discovered operation. A key filter is pushed only when the source declares that capability. EG always keeps the exact local residual filter. Every request passes the shared outbound guard and the per-query budgets of FQR-04. Rollup: split into `.1` (below) per SPEC-SIZING §5; further children bind the discovered operation and prove the recording-mock equal-rows case. | A recording mock proves pushed and unpushed key filters return equal rows. Budget, outbound-guard and ungranted-source cases refuse with typed errors. | requirement | EG-FEDERATED-QUERY | VERIFIED | 62c450561948 bfd84b2ccbcb f948211fb8c7 |
| EG-FEDERATED-QUERY-R073.1 Typed model for operation-bound foreign sources, with refusal tests Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Typed model for operation-bound foreign sources, with refusal tests.** `eg-types::wire` adds four `ForeignSourceSpec` variants — `Api`, `Mcp`, `A2a`, `GraphQl` — each carrying its operation reference plus a declared `ForeignOperationCapabilities` (including `key_filter_pushdown`). An unbound spec of any of these kinds resolves to a typed refusal (no verified registration) rather than a silent empty result or a panic. | Unit tests wire-round-trip each new variant and confirm an unbound/ungranted spec and a budget-exceeded fixture both refuse with typed errors; the recording-mock equal-rows proof is deferred to a later child. | requirement | EG-FEDERATED-QUERY | VERIFIED | 6c11520aebfc bfd84b2ccbcb crates/eg-plan/src/federation.rs:229 crates/eg-plan/src/federation.rs:249 crates/eg-plan/src/federation_opt/budget.rs:156 crates/eg-plan/src/federation_opt/budget.rs:173 |
| EG-FEDERATED-QUERY-R074 Served `select_topology` reasoning-policy op Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Served `select_topology` reasoning-policy op.** A served `SelectTopology` operation returns a typed topology choice for a task description under the reasoning policy, refusing an empty task. Unblocks AU-SEMANTIC-R008.2.2. | One test asserts the chosen topology for two task shapes and the empty-task refusal. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R075 Generated client method for `select_topology` Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Generated client method for `select_topology`.** The generated client exposes `select_topology` from the Rust schema source. Unblocks AU-SEMANTIC-R008.2.2. | A generated-client test calls it against the served op. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R076 Canonical ontology hash for a Turtle payload Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Canonical ontology hash for a Turtle payload.** A served method returns a canonical hash of a Turtle payload that is stable under prefix, statement-order and blank-node relabelling. Invalid Turtle is refused. Unblocks AU-SEMANTIC-R006.5.1. | Test asserts equal hashes for two reordered serializations and a refusal for invalid Turtle. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077 Vectorized SQL text columns (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Vectorized SQL text columns (rollup).** EG must bind a text column of a SQL table to an embedding index, so vector search covers that column. Each column must opt in to the binding. A column without a binding stores no vectors. | Tests prove a bound column answers a nearest-neighbour query, an unbound column refuses, and an update re-embeds the changed row. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.1 `ColumnVectorBinding` typed model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**`ColumnVectorBinding` typed model.** `crates/eg-query/src/sql/ann.rs` must define `ColumnVectorBinding` with table, column, embedder reference, dimension and an `bound` flag. | Unit test round-trips a binding and rejects a zero dimension. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.2 Bind and unbind surface Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Bind and unbind surface.** A served SQL operation must bind or unbind a column. Binding a non-text column must be refused with a typed error. | Test binds a text column and refuses an integer column. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.3 Row-write re-embedding hook Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Row-write re-embedding hook.** The SQL write path must queue a re-embed for each changed row of a bound column. Unbound columns must queue nothing. | Test writes one row and asserts exactly one queued embed for a bound column and none for an unbound one. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.4 Vectorization recommendation Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Vectorization recommendation.** A pure function must rank text columns by average length and distinct ratio and return recommendations. It must never create a binding itself. | Unit test ranks three columns and asserts no binding changes. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.5 End-to-end column vector search Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**End-to-end column vector search.** A SQL nearest-neighbour query over a bound column must return the expected rows, with EXPLAIN naming the binding. Agent-webui table explorer consumption is a handoff. | Fixture table with five rows returns the expected nearest row and EXPLAIN names the binding. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078 Tenant and clearance predicates are part of the query plan (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Tenant and clearance predicates are part of the query plan (rollup).** EG must apply the caller's tenant and access-policy predicates inside the plan, before any retrieval. A query must never read a node, edge or vector hit outside the caller's clearance. | Tests prove an out-of-tenant node, edge and vector hit never appear, and an unverified caller is refused. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** `crates/eg-query/src/plan_scope.rs` must define `PlanScope` with tenant, clearance labels and a `verified` flag. It must expose `predicate()` as a closed predicate set. | Unit test round-trips a `PlanScope` and rejects an empty tenant. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** `inject_scope(plan, scope)` must add the tenant predicate to every graph, edge and vector scan node. The default rule `scan_all_leaves` should be replaceable by a named rule. | Unit test plans a three-leaf query and asserts each scan carries the predicate. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** `handle_uql` at `src/server/handlers/query/uql_statement.rs:17` must call `inject_scope` after planning and before execution. Its production caller is `dispatch_query_family` at `src/server/handlers/query/dispatch.rs:66`. | Test asserts a planned statement reaches execution only with the predicate attached. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** A caller without a verified tenant must receive the typed refusal `PLAN_SCOPE_UNVERIFIED`. The handler must not post-filter results instead. | Test sends a statement with no verified tenant and asserts the refusal and zero reads. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Each executed plan must record `plan_scope_tenant` and `plan_scope_predicates` in its trace. The explain output must show them. | Test reads the trace and the explain output for one scoped query. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** The entry point is the served UQL statement operation, called through `dispatch_query_family`. It must show that a vector hit in another tenant never returns. | Integration test `tests/plan_scope_tenant.rs` seeds two tenants, queries as one, and asserts only its own rows return. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079 Iceberg v2 catalog interoperability (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Iceberg v2 catalog interoperability (rollup).** EG must publish an Iceberg REST catalog with add, drop, rename and reorder schema evolution. It must support retained snapshot time travel and read and write Iceberg v2 manifests. Manifest writing means engine-owned publication from committed graph state; external clients receive read-only projections under R080. Children `.1` through `.6` define the complete contract. | Satisfied only when every child is verified through served acceptance; source inspection alone proves no runtime delivery. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Extend `crates/eg-types/src/lake_catalog.rs::SchemaChangeKind` with `ReorderColumn` and define `ManifestPublication` with tenant, table, committed graph version, source LSN, snapshot ID and schema ID. It also carries format version 2, manifest and manifest-list locations, and artifact digests. Keep field IDs stable across rename and reorder. Classify reorder as compatible and drop as destructive. | Round-trip every field; classify every column change; refuse absent version binding or unsupported format version. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Extend `LakeTable::evolve_add_column` to add, drop, rename and reorder committed graph schema changes. Reuse `LakeTable::iceberg_manifests` and `build_iceberg_manifests` to write Iceberg v2 Avro manifests and manifest lists, with file paths, counts and sizes. Partition/schema IDs and snapshot/sequence metadata must match the published snapshot. Publish metadata only after referenced artifacts are durable; preserve retained snapshots and their schemas. Support append, compaction and copy-on-write deletion without exposing abandoned artifacts as a committed snapshot. | Decode emitted artifacts, verify referenced files and metadata, and compare old/new snapshot rows and schemas after every supported mutation. Inject publication failure and prove the previous snapshot remains readable. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The engine publication path is `LakeManager::drain_series` -> `materialize_batch` in `src/server/lake/mod.rs:537` -> `prepare_materialization` and `publish_artifacts` in `src/server/lake/catalog_ops.rs` -> `LakeTable::iceberg_manifests` -> `crates/eg-lake/src/iceberg_avro.rs::build_iceberg_manifests`. Bind committed graph version and schema evolution to this path and expose committed metadata through `src/server/lake/rest/catalog.rs::load_table` and `LakeManager::load_table_as_of`. The writer exists today; the graph-version binding and complete schema-evolution acceptance remain delivery work. REST CommitTable must pass R080 refusal before any mutation; it is not an alternate schema-write authority. | A served authoritative graph mutation reaches the production publisher and an authenticated catalog read resolves the resulting manifest list. A projection CommitTable request never invokes mutation or publication. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Unapproved destructive authoritative schema changes return `SCHEMA_CHANGE_NOT_APPROVED`; unknown columns return `SCHEMA_COLUMN_UNKNOWN`. A missing graph-version binding or unsupported manifest/schema/partition feature returns `MANIFEST_PUBLICATION_INVALID` with a reason. No new snapshot becomes visible. Projection metadata and data updates return R080's `PROJECTION_READ_ONLY`; a format-compatibility request never grants write authority. | Exercise every refusal with unchanged visible graph/catalog versions; readers must not receive a partially published or falsely compatible snapshot. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Use the lake operation evidence path. Record tenant, table, committed graph version, source LSN, schema version, change kind and compatibility. Include snapshot ID, format version, manifest/list locations and digests, publication outcome and refusal reason. A time-travel read records its resolved snapshot. Capture external reader name/version and supported feature matrix in acceptance evidence without exporting credentials or raw data logs. | Correlate graph commit, publication and catalog load records; failed publication has no successful snapshot evidence. Every advertised format feature has a reader acceptance result. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R079.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** `tests/lake_catalog_schema_evolution.rs` and `tests/lake_manifest_interoperability.rs` must drive the real served graph mutation entry point and authenticated Iceberg REST listener. A pinned independent Iceberg reader must load emitted v2 manifests and query Parquet data. Cover add/drop/rename/reorder, append, compaction and copy-on-write deletion. Also cover retained snapshot time travel, publication failure and projected write refusal. The test must name the actual graph handler and publisher call chain. Directly invoking the Avro builder or mocking catalog responses is insufficient. | The external reader sees committed rows and stable field IDs at retained and current snapshots. No separate copy job runs. Negative cases leave prior snapshots readable and cannot mutate graph or source systems. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080 The graph is the only write boundary; table outputs are read-only projections (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**The graph is the only write boundary; table outputs are read-only projections (rollup).** Iceberg and Parquet outputs must serve external engines without a copy pipeline. The engine must refuse any write that arrives through a projection. Split into `.1` to `.6`. | Satisfied only when `.1` to `.6` are verified. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** `crates/eg-types/src/lake_catalog.rs` must define `ProjectionAccess` with the closed values `ReadOnly` and `Authoritative`. Every catalog table entry (`TableEntry`, `crates/eg-lake/src/catalog.rs:27`) must carry `ReadOnly`. | Unit test round-trips the type and asserts every entry is `ReadOnly`. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** `refuse_projection_write(op, entry)` in `crates/eg-lake/src/catalog.rs` must classify create, data or metadata commit, schema update, rename and drop as writes. It must pass list and load. Unknown mutating operations must fail closed. Internal publication of committed graph snapshots under R079 does not authorize client writes. | Unit test classifies each operation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** `refuse_projection_write` must run in the route dispatch in `src/server/lake/rest/mod.rs` before `commit_table` (`src/server/lake/rest/catalog.rs:318`) and `drop_table` (line 349). The caller is the Iceberg listener. The shared SQL path `validate_federated_sql` (`crates/eg-plan/src/federation.rs:933`) already refuses writes to foreign sources. No production caller refuses a projection write today. | Route test sends every write route and asserts the refusal. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Any data or metadata write through a projection must return `PROJECTION_READ_ONLY` with HTTP 405 and name the table. The graph state must not change. | Test attempts a data commit and asserts the code, status and an unchanged graph version. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Each refusal must record `table`, `operation` and `principal` in the operation record. Each projection read must record the graph `version` it was materialized at, using `ProjectionCatalog` (`crates/eg-core/src/projection_catalog.rs:75`). | Test reads the record after one refusal and one read. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R080.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** The entry point is the Iceberg REST listener. A graph write must appear in the next projection read. A write through the projection must be refused. An external reader must see the graph write without a copy job. | Integration test `tests/lake_projection_read_only.rs` writes through the graph, reads the projection, then attempts a projected write. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081 Retrieval sufficiency verdict with repair step, fallback policy and round limit (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Retrieval sufficiency verdict with repair step, fallback policy and round limit (rollup).** EG judges whether retrieved evidence suffices to answer, and chooses the repair step and the fallback policy. The harness applies the verdict and runs the next round. Children `.1` to `.6` deliver the base verdict. Rollups `.7` through `.9` extend selection, feedback and hierarchy. Mapped extensions `.100` through `.103` add distinct joint-selection, compression, distillation and viewport-binning contracts. | See each original child and mapped extension. Preserve the base verdict, fallback and tenant/result bounds. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Add `SufficiencyVerdict{verdict, evidence_count, reason, repair, fallback, round, round_limit}` in `crates/eg-types/src/retrieval_verdict.rs`. The `verdict` set is closed: `sufficient`, `insufficient`. `repair` is `BoostK{k}`, `SwitchMode{mode}` or `Stop`. `fallback` is `Lenient` or `Strict`. No type of this shape exists today. Proving test: `crates/eg-types/src/retrieval_verdict.rs::tests::verdict_round_trips_and_rejects_unknown`. | A serde round trip keeps every field and rejects an unknown verdict value. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Add `judge_sufficiency(rows, rule, call) -> SufficiencyVerdict`. The default `rule` is `min_evidence_count`, a named replaceable value with default 3. The default repair order is `BoostK` (k doubles, capped at 64), then `SwitchMode`, then `Stop`. The call carries `round` and `round_limit`. At `round_limit` the repair must be `Stop`. Proving test: `crates/eg-plan/src/retrieval_verdict.rs::tests::repair_order_ends_at_round_limit`. | Three insufficient rounds yield BoostK, SwitchMode, Stop. A replaced rule changes the count. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** `judge_sufficiency` attaches at the end of `execute` in `crates/eg-plan/src/exec.rs:536`, after `fuse_rrf` at `crates/eg-plan/src/exec.rs:848` returns its `RowSet`. A plan that carries a `SufficiencyRule` gets the verdict beside its rows. The production caller is the served query path: `eg_plan::execute` is called from `crates/eg-graphql/src/crossmodal.rs:429`. This row creates the call site in `execute`. No production caller of a sufficiency check exists today. Proving test: `crates/eg-plan/src/exec.rs::tests::execute_returns_verdict_for_rule_plan`. | A plan with a rule returns rows and a verdict. A plan without a rule returns rows only. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** A verdict call without `round_limit` must refuse with `RETRIEVAL_ROUND_LIMIT_REQUIRED`. A `Strict` fallback with an `insufficient` verdict must return `abstain` and no extractive answer. The refusal names the missing field or the fallback. Proving test: `crates/eg-plan/src/retrieval_verdict.rs::tests::strict_insufficient_abstains`. | A missing limit returns the typed code. A strict call never carries an extractive hint. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Each verdict must be recorded as a premise on the retrieval `DecisionRecord` of `EG-DECISION-ENGINE-R100`. The premise lists `verdict`, `evidence_count`, `reason`, `repair`, `fallback` and `round`. Proving test: `crates/eg-plan/src/retrieval_verdict.rs::tests::verdict_premise_lists_all_fields`. | The decision record shows the verdict premise with all six fields. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** The entry point is the served cross-modal query operation. The test sends a query that returns two rows against a rule of three. The call passes through `execute` at `crates/eg-plan/src/exec.rs:536`. It observes an `insufficient` verdict, repair `BoostK`, and the premise on the decision record. Proving test: `tests/retrieval/test_sufficiency_served.py::test_insufficient_returns_boost_k`. | The served response carries the verdict and the premise exists. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7 Adaptive dual-score chunk selection (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Adaptive dual-score chunk selection (rollup).** Extend R081 with children `.1` through `.6`. EG owns retrieval decisions and evidence; applications consume or execute its bounded decisions. | All six children require served positive and negative acceptance. Definition publication claims no runtime delivery. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Define `ChunkScorePair`, `SelectionPolicy` and `SelectionReceipt` in `crates/eg-types/src/retrieval_verdict.rs`. Bind chunk IDs, corpus revision, embedding and cross-encoder scores, model revisions, normalization, thresholds, fusion weights and maximum count. Carry an activation benchmark digest. | Round-trip every field. Reject non-finite scores, missing model provenance, duplicate chunk IDs and invalid bounds. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Use already computed embedding and cross-encoder scores to classify four score regions. Retain dual-high candidates; reject dual-low candidates. Rescue low-embedding/high-relevance candidates, including vocabulary-mismatch results. Apply the declared fusion threshold to the remaining region. Compute query-dependent count, capped by `max_chunks`, with stable ID tie-breaking. Selection itself performs no model inference. | Golden score pairs prove rescue, dual-low rejection, variable count and deterministic ties. Empty accepted sets never backfill rejected chunks. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** Add the selection operator to `crates/eg-plan/src/exec.rs:536` after candidate cross-encoder scoring and before final truncation. Retain per-chunk score pairs through `fuse_rrf` at line 848; rank-fusion output alone is insufficient. Its production caller is `crates/eg-graphql/src/crossmodal.rs:429`. Cross-encoder binding and this selector remain missing production work. | The real served cross-modal query reaches the selector with both scores. A disconnected helper or client-side selector cannot close this row. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Return `RETRIEVAL_SCORE_PAIR_REQUIRED` for missing or stale scores and `RETRIEVAL_NORMALIZATION_INVALID` for undefined normalization. Explicitly define empty and constant-score normalization in the policy. Return `RETRIEVAL_POLICY_UNVERIFIED` when activation lacks the matching benchmark receipt. Reject dual-low chunks even when fewer than the requested count remain. | Invalid inputs and unapproved activation fail before answer assembly. Dual-low-only input returns an empty evidence set and R081 insufficiency. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Record input scores, normalization, region, fused score, selected IDs, exclusions, count and policy digest. Count embedding, reranker and selection inference calls separately. Benchmark against a declared fixed-count baseline using identical candidates, models, corpus and tenant predicates. Activation requires zero extra selection inference and declared quality/cost acceptance. | The benchmark receipt pins data, labels, configuration, acceptance thresholds and measured results. Paper results never substitute for EG measurements. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.7.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: the authenticated served cross-modal query. `tests/retrieval/test_adaptive_selection_served.py` uses a deterministic corpus and pinned production embedding/reranker artifacts. Compare adaptive and fixed-count results through the actual execution path. | Prove low-embedding rescue, dual-low refusal, varying counts and zero additional selection inference. Independently read the trace and verify tenant isolation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8 Bounded retrieval feedback and critique (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Bounded retrieval feedback and critique (rollup).** Extend R081 with children `.1` through `.6`. EG owns retrieval decisions and evidence; applications consume or execute its bounded decisions. | All six children require served positive and negative acceptance. Definition publication claims no runtime delivery. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Extend `crates/eg-types/src/retrieval_verdict.rs` with `RetrievalFeedback`, `PerspectiveQuery`, `TermFeedback` and `RetrievalCritique`. Bind original query, round, corpus/model revisions, document IDs, measured relevance, term weights and critique provenance. Feedback tiers are `Reinforce`, `Missing`, `Suppress`. Carry round, query, term, token and inference budgets. Use R082 `StopContext` and `StopVerdict` for termination; do not add a second stop authority. | Round-trip all tiers, limits and termination fields. Missing evidence IDs, unbounded requests and inconsistent revisions refuse. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Generate bounded diverse semantic-perspective expansions from the original query. Assess returned documents against that original query, then reinforce useful terms, record missing aspects and suppress misleading terms. Use the latest accepted expansion and revision-bound feedback for the next round. Critique may propose a reformulation but never replace measured relevance. | Fixtures prove useful terms persist, misleading terms lose weight and distinct perspectives remain distinct. Adversarial critique cannot promote rejected evidence. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** Add the feedback operator beside R081 sufficiency evaluation in `crates/eg-plan/src/exec.rs:536`. The caller remains `crates/eg-graphql/src/crossmodal.rs:429`. EG validates continuation evidence and budgets, then applies R082 precedence before dispatching any next query. The harness only executes an authorized bounded continuation. This row creates the missing feedback call site. | Served successive requests carry a validated EG continuation. Terminal verdicts dispatch no retrieval or inference. No independent reformulation or stopping authority appears. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Return `RETRIEVAL_FEEDBACK_INVALID` for forged documents, incompatible revisions or evidence outside tenant scope. R082 checks round and other budget limits before progress or confidence stops. Exhaustion returns `RETRIEVAL_BUDGET_EXCEEDED` with its terminal verdict and dimension. Valid completed-round evidence can stop with `no_new_evidence` or `quality_saturated` even without calibration. Preserve `ROUND_NOT_CALIBRATED` and never promote such termination to calibrated sufficiency. Reject critiques that alter scope, scores, limits or activation policy. | Invalid feedback and terminal continuations perform no further retrieval or inference. An uncalibrated exhausted or saturated continuation returns the typed terminal reason plus the calibration refusal. A progressing uncalibrated continuation remains bounded. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Record expansion text, semantic perspective, term reinforcement/suppression, document tiers, critique text and applied or rejected proposal. Bind each item to measured relevance, original query, round, policy and corpus revision. Record R082 reason, calibration refusal, exhausted dimension, progress evidence and inference/token costs. Treat critique text as untrusted data. | Independent trace readback connects each next query to its feedback. Terminal trace records retain missing calibration without inventing a margin or claiming enough evidence. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: the authenticated served cross-modal query with successive EG continuations. `tests/retrieval/test_feedback_served.py` reads a deterministic corpus through production operators and pinned inference artifacts. Its uncalibrated continuation matrix exercises R082 precedence and observes production dispatch counters. | Assert feedback tiers and term changes. Cover missing calibration with new evidence, no new evidence, saturation and every exhausted budget. Read the trace independently and assert no dispatch after terminal outcomes. Reject stale feedback and hostile critique. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9 Bounded typed hierarchy retrieval (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Bounded typed hierarchy retrieval (rollup).** Children `.1` through `.6` retain community-to-entity retrieval. Child `.7` adds distinct document-section retrieval. EG owns retrieval decisions and evidence; applications consume or execute its bounded decisions. | Both hierarchy kinds require served positive and negative acceptance. Definition publication claims no runtime delivery. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Add `HierarchyRetrievalPolicy` and `HierarchyStageReceipt` to `crates/eg-types/src/retrieval_verdict.rs`. Carry hierarchy revision, community/summary/entity IDs, parent links, stage, score provenance, beam width and depth. Bound visited communities, entity candidates, reranker calls, tokens and total cost. | Reject absent hierarchy revisions, invalid parent links and zero or missing required limits. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Read community summaries, refine selected communities, then descend to entity evidence. Rerank at each declared stage and prune with the declared beam and stable ID tie-breaks. Deduplicate entities and retain their community paths. Apply tenant predicates before every stage and candidate truncation. | A small hierarchy has exact expected stage order, selected paths and final entity IDs. A wider beam consumes an explicitly measured additional budget. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** Attach the hierarchy operator before terminal fusion in `crates/eg-plan/src/exec.rs:536`. Bind graph community summaries and entity reads through `PlanCtx`; the served caller is `crates/eg-graphql/src/crossmodal.rs:429`. Reuse `fuse_rrf` only for its existing rank-combination role. Revision-aware descent and stage reranking remain missing production calls. | A served query must invoke all three stages before returning entities. Flat entity retrieval alone cannot claim hierarchical acceptance. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Return `RETRIEVAL_HIERARCHY_INVALID` for cycles, stale summaries or dangling parents/entities. Exhausted breadth, depth, scoring or cost bounds return `RETRIEVAL_BUDGET_EXCEEDED` with completed-stage evidence. Never silently replace failed descent with unbounded global retrieval. | Negative fixtures prove typed refusals and no reads beyond scope or budget. Partial evidence is explicitly marked incomplete. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Record each visited community, pruning decision, entity path, stage score, reranker invocation and cumulative cost. Bind summary generation and graph/corpus revisions to the receipt. Compare quality and measured work against a declared flat-retrieval baseline. | Trace readback accounts for every stage and rejected candidate. Fixture expectations do not stand in for measured production costs. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: the authenticated served cross-modal query. `tests/retrieval/test_hierarchy_served.py` loads two tenant hierarchies with deterministic summaries and entity evidence. It uses production graph reads and scoring. | Prove summary-to-community-to-entity descent and exact cost counters. Refuse stale hierarchy, dangling entity and exhausted beam/cost budgets; another tenant remains unread. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082 Iterative retrieval stop rule with calibrated confidence and bounded termination (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Iterative retrieval stop rule with calibrated confidence and bounded termination (rollup).** EG applies one precedence rule for invalid feedback, exhausted limits, measured retrieval progress and calibrated confidence. Only the confidence branch can claim `answer_repeated_margin_met`. No component is learned. Children `.1` to `.6` deliver it. [arXiv:2606.13814] | See each child. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Add `CalibrationTable`, `RoundCalibration`, `StopContext` and `StopVerdict` in `crates/eg-types/src/retrieval_stop.rs`. Calibration rows hold round, baseline confidence and margin threshold. Context carries validated limits, completed-round progress and policy revision. Verdict carries stop, reason, round, optional margin/threshold, optional calibration refusal and exhausted dimension. Closed reasons: `round_limit`, `budget_exhausted`, `no_new_evidence`, `quality_saturated`, `answer_repeated_margin_met`, `continue_uncalibrated`, `continue_answer_changed`, `continue_margin_low`. Missing calibration retains `ROUND_NOT_CALIBRATED` and absent margin/threshold. | `crates/eg-types/src/retrieval_stop.rs::tests::table_and_verdict_round_trip` preserves all reasons and the simultaneous terminal reason/calibration refusal. Unknown reasons refuse. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Add `decide_stop(table, history, context) -> StopVerdict`. After feedback validation, precedence is round limit, other exhausted budget, no new evidence, declared quality saturation, then calibrated confidence. A confidence stop requires repeated answers and `confidence - baseline_confidence > margin_threshold`. Missing calibration selects `continue_uncalibrated` only if no earlier terminal condition applies. Other continuations use answer-changed or low-margin reasons. Stop alone does not assert R081 sufficiency. | `crates/eg-plan/src/retrieval_stop.rs::tests::repeat_and_margin_stops` covers each branch and simultaneous conditions. Equality at the margin threshold continues. Terminal progress requires completed-round evidence, not caller or critique assertions. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** `decide_stop` attaches beside `judge_sufficiency` at `crates/eg-plan/src/exec.rs:536`, reached through `crates/eg-graphql/src/crossmodal.rs:429`. Apply continuation validation and limit checks before dispatch; evaluate completed-round progress before issuing another continuation. EG derives context from validated evidence and counters. This row creates the call site. The harness cannot bypass a terminal verdict. | `crates/eg-plan/src/exec.rs::tests::execute_returns_stop_verdict_with_history` covers both hooks. A feedback continuation checks limits even without prior answer history. An ordinary query outside that path without history has no confidence verdict. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** A missing calibration row prohibits a confidence-based early stop and records `ROUND_NOT_CALIBRATED` with the round. It never overrides an exhausted limit, no new evidence or declared saturation. Such terminal outcomes retain the calibration refusal; only a valid progressing round with remaining budgets may continue. Exhausted limits return `RETRIEVAL_BUDGET_EXCEEDED` with the terminal verdict. Invalid feedback refuses before continuation. | `crates/eg-plan/src/retrieval_stop.rs::tests::uncalibrated_round_refuses` asserts the missing calibration marker for both terminal and continuing cases. No fallback calibration, synthetic margin or budget reset is allowed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Record each `StopVerdict` as a retrieval `DecisionRecord` premise. Include round, reason, optional margin/threshold, calibration refusal, policy revision, completed-round progress and exhausted dimension. Return the same typed outcome to the caller. Retain R081 insufficiency where present. | `crates/eg-plan/src/retrieval_stop.rs::tests::stop_premise_lists_margin_and_reason` proves missing calibration remains visible on a terminal verdict and never becomes a successful confidence claim. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R082.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: the served cross-modal query through `execute` at `crates/eg-plan/src/exec.rs:536`. `tests/retrieval/test_stop_rule_served.py::test_repeat_with_margin_stops` proves the calibrated branch. `tests/retrieval/test_feedback_served.py::test_uncalibrated_continuation_precedence` sends real successive continuations through production retrieval and inference operators with pinned artifacts. | A deterministic corpus proves progressing, saturated and exhausted uncalibrated outcomes. Assert exact reasons, calibration refusals, optional margins and independently read trace/counters. Terminal responses cause zero subsequent retrieval or inference calls; forged saturation cannot bypass validation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083 Arbitration between model prior and evidence (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Arbitration between model prior and evidence (rollup).** EG arbitrates between the answer a model gives without retrieval and the answer from retrieved evidence. Below the confidence margin EG abstains and returns both candidates. Children `.1` to `.6` deliver it. [arXiv:2606.08397] | See each child. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Add `Candidate{answer, confidence, evidence_class}` and `ArbitrationVerdict{choice, margin, prior, retrieved}` in `crates/eg-types/src/retrieval_arbitration.rs`. `evidence_class` is closed: `parametric`, `retrieved`. `choice` is `Prior`, `Retrieved` or `Abstain`. Both candidates ride on every verdict. Search found no such type. Proving test: `crates/eg-types/src/retrieval_arbitration.rs::tests::verdict_carries_both_candidates` [arXiv:2606.08397]. | A verdict round trip keeps both candidates and their classes. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** Add `arbitrate(prior, retrieved, margin) -> ArbitrationVerdict` and preserve the named replaceable default confidence margin 0.10. Before comparing confidence, classify support using citations bound to the same query digest and graph snapshot. `Supported` requires a valid source span for every material claim. Missing or invalid support is `unsupported` or `unknown`, never supported. A supported candidate beats an unsupported/unknown candidate in either case of confidence delta. If both candidates are supported, choose one only when its confidence exceeds the other's by more than `margin`. Otherwise abstain. If neither is supported, abstain. Both candidates, support states, citation ids, confidence values and margin remain in every verdict. The policy is deterministic and has no learned part. Proving test: `crates/eg-plan/src/retrieval_arbitration.rs::tests::support_precedence_precedes_confidence_margin`. | A supported 0.70 candidate beats an unsupported 0.95 candidate. Both-supported candidates still use the 0.10 margin. Both unsupported/unknown abstain. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** `arbitrate` attaches at the end of `execute` in `crates/eg-plan/src/exec.rs:536`. The harness runs the prior probe, the answer without retrieval, and sends it as a `Candidate` in the query call. EG scores the evidence side from the same call. The production caller of `execute` is `crates/eg-graphql/src/crossmodal.rs:429`. This row creates the call site. No production caller of an arbitration exists today. Proving test: `crates/eg-plan/src/exec.rs::tests::execute_returns_arbitration_for_prior_candidate`. | A call with a prior candidate returns a verdict. A call without one returns none. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** A verdict that abstains must return the typed code `ARBITRATION_ABSTAIN` with both candidates and no chosen answer. A call whose prior candidate lacks `evidence_class` must refuse with `CANDIDATE_CLASS_REQUIRED`. The typed abstention follows the pattern at `crates/eg-compute/src/assemble/conclude.rs:69`. Proving test: `crates/eg-plan/src/retrieval_arbitration.rs::tests::abstain_returns_both_candidates`. | The abstain response holds two candidates and no answer. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** Each verdict must be recorded as a premise on the retrieval `DecisionRecord`. The premise lists both candidates, their `evidence_class`, the margin and the choice. Proving test: `crates/eg-plan/src/retrieval_arbitration.rs::tests::arbitration_premise_lists_both_classes`. | The decision record shows parametric and retrieved classes. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** The entry point is the served cross-modal query operation. The test sends a prior candidate and an evidence set whose confidence gap is below the margin. The call passes through `execute` at `crates/eg-plan/src/exec.rs:536`. It observes `ARBITRATION_ABSTAIN` with both candidates. Proving test: `tests/retrieval/test_arbitration_served.py::test_small_gap_abstains_with_both`. | The served response is the abstain code with two candidates. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1 Shared multimodal space and missing-embedding shortfall (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Shared multimodal space and missing-embedding shortfall (rollup).** [arXiv:2605.08384] The engine must satisfy the following typed, served retrieval children. | The child acceptance criteria apply. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** The engine must extend EmbeddingSpaceRef in `crates/eg-types/src/embedding.rs:47` with a modality contract. It must declare text, image, audio and video bindings within one pinned coordinate space. | Planned: `tests/retrieval/test_multimodal_served.py`. Round-trip all four modality bindings and reject absent space identity. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The planner must rank each query modality against every target modality using the same compatible space. The named compatible_space_only policy must preserve R039 candidate replenishment and R040 exclusions. | Planned: `tests/retrieval/test_multimodal_served.py`. Compare all sixteen modality pairs against an independent permitted-candidate oracle. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The server must extend run_unified_bind_embedder at `src/server/handlers/query/planning.rs:611`, called by run_unified_with at `src/server/handlers/query/planning.rs:424`. It must bind approved multimodal encoders before rank_top at `crates/eg-plan/src/exec/vector_rank.rs:65`. No production caller today supplies this complete multimodal contract. | Planned: `tests/retrieval/test_multimodal_served.py`. The served UnifiedQuery must reach actual model bindings and the maintained index. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** The planner must return missing_embedding shortfall when eligible target items lack embeddings. It must report requested, returned and authorized missing counts without padding. Incompatible spaces and unavailable query encoders must refuse before ranking. | Planned: `tests/retrieval/test_multimodal_served.py`. Distinguish missing embeddings, too few eligible items and exhausted budgets without leaking hidden counts. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** The retrieval receipt must record modality direction, space identity, model revisions, index generation and authorized shortfall counts. It must identify every actual encoding call. | Planned: `tests/retrieval/test_multimodal_served.py`. Independent receipt readback must match model calls and permitted results. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.1.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated UnifiedQuery. `tests/retrieval/test_multimodal_served.py` must use production encoders and persistent indexes for all sixteen pairs. | Planned: `tests/retrieval/test_multimodal_served.py`. Prove expected cross-modal matches; reject incompatible spaces and missing query bindings; expose target shortfall and preserve tenant isolation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1 Hard entity and relationship constraints (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hard entity and relationship constraints (rollup).** The engine must satisfy the following typed, served retrieval children. | The child acceptance criteria apply. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** The engine must add RetrievalConstraints beside Pred at `crates/eg-types/src/wire_query_core.rs:27`. It must bind typed entity predicates, directed relationship predicates, quantifiers and graph revision. | Planned: `tests/retrieval/test_constraints_served.py`. Round-trip required and forbidden relationships, typed values and conjunctions; reject unknown operators. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The constraint compiler must apply every declared constraint before ranking or truncation. The named require_all policy must intersect authorized entity and relationship matches. Contradictory constraints must yield an empty eligible set. | Planned: `tests/retrieval/test_constraints_served.py`. An independent graph oracle must exclude the highest-scoring candidate when one declared constraint fails. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The planner must attach constraint compilation at `crates/eg-plan/src/exec.rs:536` before rank_limit at `crates/eg-plan/src/exec/vector_rank.rs:56`. Its caller is execute_rows at `src/server/handlers/query/planning.rs:411`. Generic filters exist; no production caller today compiles this declared constraint contract. | Planned: `tests/retrieval/test_constraints_served.py`. Optimized and unoptimized served plans must feed identical constrained sets into vector and text ranking. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** The planner must refuse invalid predicates, stale graph revisions and unevaluable required constraints. It must never replace hard exclusion with a score penalty. An unsatisfiable valid conjunction must return R039 typed shortfall. | Planned: `tests/retrieval/test_constraints_served.py`. Malformed and unsupported predicates must perform no ranking; contradictory valid predicates must return zero eligible results. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** The trace must record constraint digest, graph revision, authorized exclusion counts and per-predicate outcomes. It must retain the same constraint binding across replenishment and fusion. | Planned: `tests/retrieval/test_constraints_served.py`. Receipt readback must prove excluded candidates never reappear in any ranking branch. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.1.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated UnifiedQuery. `tests/retrieval/test_constraints_served.py` must traverse real entity relationships before production vector and text ranking. | Planned: `tests/retrieval/test_constraints_served.py`. Prove required and forbidden edge predicates, contradictory constraints, exact top-k replenishment, stale revisions and cross-tenant negatives. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7 Vector-free document-section traversal (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Vector-free document-section traversal (rollup).** The engine must satisfy the following typed, served retrieval children. | The child acceptance criteria apply. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** The engine must extend HierarchyRetrievalPolicy in `crates/eg-types/src/retrieval_verdict.rs` with distinct community and document_section kinds. Section nodes must carry document revision, parent, ordered children, granularity, summary and source span. | Planned: `tests/retrieval/test_section_tree_served.py`. Validate one root, acyclic single-parent links and nested source spans; preserve all community fields. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The planner must traverse document sections through bounded reasoning over authorized summaries and section contents. The named section_beam policy must declare breadth, depth, visits, tokens, inference calls and cost limits. It must require no vector storage. | Planned: `tests/retrieval/test_section_tree_served.py`. Compare selected leaf spans and every visited path with a deterministic section-tree oracle. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The planner must add section traversal before fusion at `crates/eg-plan/src/exec.rs:536` through PlanCtx. run_unified_with at `src/server/handlers/query/planning.rs:424` must bind section reads and approved reasoning. No production caller today supplies this vector-free path. | Planned: `tests/retrieval/test_section_tree_served.py`. The served query must reach document reads and reasoning with no vector index or embedding calls. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** The planner must reject cycles, dangling parents, stale summaries, invalid spans and unavailable reasoning. It must stop before exceeding any traversal limit. Partial paths must carry incomplete evidence. | Planned: `tests/retrieval/test_section_tree_served.py`. Refuse malformed trees and exhausted limits without unbounded search or conversion into community retrieval. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** HierarchyStageReceipt must retain ordered visits, full root-to-section paths, selected spans, pruned branches and bounded decision premises. It must bind document, summary, model and policy revisions with measured work. | Planned: `tests/retrieval/test_section_tree_served.py`. An independent reader must reconstruct all visited paths, including rejected branches, without hidden section contents. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated UnifiedQuery. `tests/retrieval/test_section_tree_served.py` must read real section records and invoke production reasoning without vector storage. | Planned: `tests/retrieval/test_section_tree_served.py`. Prove multilevel descent and full paths; reject cycles, stale spans and exhausted budgets; retain community acceptance and tenant isolation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2 Independent document-chunk encoding and aggregation [arXiv:2606.18781] (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Independent document-chunk encoding and aggregation [arXiv:2606.18781] (rollup).** The engine must satisfy the following typed, served retrieval children. | The child acceptance criteria apply. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** The engine must define DocumentEncodingPolicy in `crates/eg-types/src/embedding.rs` beside EmbeddingSpaceRef. It must pin tokenizer, chunk size, overlap, position mode, aggregation and model revision. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Round-trip local_reset and absolute_offset modes; reject zero size, overlap at least size and unsupported policy revisions. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The encoder must split token IDs into ordered windows without losing token identities. Each window must reset positions locally or preserve absolute document offsets according to policy. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Golden boundaries must cover empty, short, exact-size, overlapping and partial-final windows. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.3 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The encoder must process every chunk independently with the pinned model and no state from another chunk. It must leave query encoding unchanged. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Production invocation records must show exactly one independent encode per declared chunk. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.4 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The named mean_chunks policy must average chunk vectors in ordinal order before one final declared normalization. Aggregation must be query-independent and produce exactly one document vector. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. An independent numerical oracle must reproduce the aggregate within declared floating-point tolerance. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.5 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The engine must validate chunk receipts at `src/server/handlers/semantic_index/worker.rs:175`, called by `src/server/handlers/semantic_index/dispatch.rs:14`. The governed ingestion worker must execute the approved encoding recipe before completing that generation. No production caller today validates this complete composition contract. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Served ingestion and query must share the same approved encoding policy and vector generation. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.6 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** The encoder must refuse unsupported position modes, incompatible vector dimensions, non-finite outputs and exhausted encoding budgets. Failed chunks must prevent aggregate publication. Empty input and zero-norm aggregates must return typed no_embedding outcomes. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Negative fixtures must leave the prior complete index generation intact and expose the specific refusal. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.7 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** The encoding receipt must retain document digest, token ranges, position mode, per-chunk model revision and aggregate digest. It must bind policy, index generation and measured encoding cost. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Independent receipt readback must account for every chunk and the single stored vector. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.2.8 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated UnifiedQuery after governed ingestion. `tests/retrieval/test_chunk_encoding_served.py` must use actual model bindings and maintained indexes. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Compare local-reset and absolute-offset encodes, exact aggregation and one-vector retrieval; refuse invalid overlap, failed chunks and incompatible revisions. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6 Workload-aware column vectorization advice (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Workload-aware column vectorization advice (rollup).** The engine must satisfy the following typed, served retrieval children. | The child acceptance criteria apply. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** The engine must add ColumnVectorAdvice beside EmbeddingBinding at `crates/eg-query/src/tables/embedding_binding.rs:398`. It must include table, column, schema revision, observed workload window, sample count, embedding eligibility and reason. | Planned: `tests/retrieval/test_column_advice_served.py`. Round-trip ranked advice and unsupported_type refusal without creating a binding. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The named workload_first policy must rank eligible text columns using observed text-search demand, average length and distinct ratio. It must use type admission before scoring and stable column identifiers for ties. Missing workload must produce insufficient_observations. | Planned: `tests/retrieval/test_column_advice_served.py`. Actual column-specific text-search traffic must change advice while unchanged data statistics remain equal. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The SQL handler must record resolved column usage at `src/server/handlers/query/sql_read.rs:379`, called by handle_sql_read at `src/server/handlers/query/sql_read.rs:100`. It must expose a bounded read-only advice relation through the existing authorized catalog. No production caller today supplies this advice contract. | Planned: `tests/retrieval/test_column_advice_served.py`. Served SQL advice must consume production query observations and authorized schema records. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** The advisor must refuse recommending any unembeddable type before scoring. It must reject stale schemas and unavailable model capability. Advice must never create a binding or queue embeddings. | Planned: `tests/retrieval/test_column_advice_served.py`. Integer, boolean, timestamp and unsupported binary columns must return unsupported_type with zero embedding side effects. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** The advice receipt must record per-column workload counts, observation window, schema revision, policy revision and ranking contributions. It must omit raw query text and hidden columns. | Planned: `tests/retrieval/test_column_advice_served.py`. Independent readback must match authorized production observations and confirm unchanged binding state. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R077.6.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated Sql. `tests/retrieval/test_column_advice_served.py` must issue real table queries followed by the planned advice relation. | Planned: `tests/retrieval/test_column_advice_served.py`. Prove workload-dependent ordering, unembeddable-type refusal, absent observations, stale schema, tenant isolation and zero automatic bindings. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2 Topic and dense ranking fusion (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Topic and dense ranking fusion (rollup).** The engine must satisfy the following typed, served retrieval children. | The child acceptance criteria apply. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** The engine must add TopicBackend and TopicRankingPolicy beside PlanCtx in `crates/eg-plan/src/exec.rs:84`. Backend results must carry topic weights, centroid vectors, corpus revision and the retriever EmbeddingSpaceRef. | Planned: `tests/retrieval/test_topic_fusion_served.py`. Two interchangeable backend implementations must satisfy one typed result contract. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.2 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The named weighted_topic_dense policy must combine normalized dense similarity and responsibility-weighted centroid similarity. It must use a bounded explicit weight and stable candidate identifiers for ties. Hard constraints must precede topic scoring. | Planned: `tests/retrieval/test_topic_fusion_served.py`. An independent score oracle must reproduce ordering for both backends and weights zero, one and an intermediate value. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The planner must attach topic scoring before final truncation at `crates/eg-plan/src/exec.rs:536`. run_unified_with at `src/server/handlers/query/planning.rs:424` must bind the selected backend. Existing fuse_rrf at `crates/eg-plan/src/exec.rs:848` combines ranks; no production caller today supplies topic fusion. | Planned: `tests/retrieval/test_topic_fusion_served.py`. The served query must exercise both dense ranking and the selected production topic backend. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.4 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** The planner must reject centroid dimensions, model revisions or coordinate spaces differing from the retriever. It must refuse non-finite weights, stale corpus revisions and unavailable backends. Equal dimensions alone must never establish compatibility. | Planned: `tests/retrieval/test_topic_fusion_served.py`. Negative fixtures must refuse before fusion without silently dropping the requested topic contribution. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.5 Evidence Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence.** The receipt must record backend identity, centroid generation, space tuple, topic responsibilities, component scores and fusion policy. Empirical centroids must record their authorized source-vector generation. | Planned: `tests/retrieval/test_topic_fusion_served.py`. Independent readback must reproduce the final score and prove constraints remain effective. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.6 Hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated UnifiedQuery. `tests/retrieval/test_topic_fusion_served.py` must swap two actual topic backends over the same authorized corpus. | Planned: `tests/retrieval/test_topic_fusion_served.py`. Prove backend interchange and score effects; reject incompatible centroids, stale generations, missing backends and cross-tenant topics. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.3 Behavior Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior.** The planner must replenish only candidates satisfying R040.1 constraints. Constraint exhaustion must produce typed shortfall without relaxing any entity or relationship predicate. | Planned: `tests/retrieval/test_constraints_served.py`. Positive and negative served generation checks. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.3 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** The filtered index must consume only complete R039.2 aggregates through rank_top at `crates/eg-plan/src/exec/vector_rank.rs:65`. Its caller is execute at `crates/eg-plan/src/exec.rs:536`. It must reject stale encoding-policy generations before ranking. | Planned: `tests/retrieval/test_chunk_encoding_served.py`. Positive and negative served generation checks. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R039.4 Residual behavior: mixed multi-hop traversal and vector top-k Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Residual behavior: mixed multi-hop traversal and vector top-k.** A query must combine multi-hop graph traversal and vector similarity. It must replenish candidates until k results survive the traversal filter. Otherwise, it must return a typed shortfall naming the number of permitted matches. It must never return a silent undercount. | A correctness oracle must run mixed traversal-plus-vector queries against a reference corpus. It must confirm exactly k permitted results or an explicit typed shortfall, never a silent undercount. Retain S-01 with two-hop traversal, parallel edges and stable edge identity. Include ten permitted matches below unfiltered top-k. Planned: `tests/retrieval/test_mixed_traversal_topk_served.py`. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.4 Residual behavior: filter-aware ANN and BM25 scans Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Residual behavior: filter-aware ANN and BM25 scans.** Filtered approximate-nearest-neighbor and BM25 text search must plan filter-aware index scans. These scans must consume pre-filtered candidate sets or bitmap filters. They must not scan the full unfiltered index and discard non-matching rows afterward. They must preserve the filtered-search correctness guarantee. | A benchmark must compare filtered vector and text search latency before and after the filter-aware scan change. Use a fixed corpus. A physical filtered-scan correctness oracle must confirm that results remain correct. Planned: `tests/retrieval/test_filtered_scan_benchmark_served.py`. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084 Served ShEx validation (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Served ShEx validation (rollup).** Define the existing ShexValidate surface and bounded eg-shex behavior. Preserve all existing reasoning and query obligations. Every child requires its planned evidence; parser availability and unit reports do not establish served conformance. | Planned: tests/shex_served.rs::served_shex_contract_journey. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Reuse Method::ShexValidate and ShexValidationReport. The request carries ShExJ schema text, optional Turtle data and ordered node-IRI/shape-label pairs. Preserve result order, node lexical form, shape, conforms and optional reason. An empty map produces zero results and a true aggregate, not a whole-graph validation claim. | Planned: tests/shex_served.rs::wire_report_preserves_shape_map. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.2 Behavior: data selection Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: data selection.** The handler parses ShExJ. Nonblank data_graph supplies an inline Turtle graph. Empty or whitespace-only data_graph exports the authority-projected request graph. The operation reads these inputs without importing the inline graph or persisting a schema. Do not infer a broader durable snapshot from this exported core view. | Planned: tests/shex_served.rs::inline_and_live_data_selection. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.3 Behavior: supported constraints Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: supported constraints.** Record existing node-kind, datatype, value-set, string-facet and numeric-facet checks. Triple constraints count matching outgoing arcs against min/max bounds. EachOf consumes matches sequentially. Closed shapes and extra predicates use the current matcher. Focused fixtures must show both conformance and a specific nonconforming result. | Planned: tests/shex_served.rs::bounded_constraints_report_results. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.4 Behavior: semantic limits Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: semantic limits.** Record actual matcher limits without expanding them. OneOf chooses the first matching branch on a trial consumed set. Shared-predicate matching is greedy. The matcher ignores the parsed inverse flag and assumes success beyond depth 40. Neither limit establishes full ShEx conformance or satisfies existing reasoner-budget obligations. | Planned: tests/shex_served.rs::semantic_limits_remain_visible. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.5 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** Trace authenticated ShexValidate through src/server/handlers/rdf/dispatch.rs:13, :281 and :357 to src/server/handlers/rdf/validation.rs:176. The handler calls Schema::from_shexj, ShapeMap::from_iri_pairs, validate and shex_report_wire. The shex feature supplies the handler; the method remains classified Internal. No new parser, planner path or wire method is introduced. | Planned: tests/shex_served.rs::real_dispatch_reaches_shex_validator. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.6 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Preserve the existing bad-schema, bad-data and live-export error paths. An unknown shape label produces a nonconforming result with a reason, not a transport parse error. Missing handler support must not fabricate a validation report. Do not claim that every unsupported schema field is rejected. | Planned: tests/shex_served.rs::parse_and_dispatch_failures_are_distinct. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.7 Scoped reads Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Scoped reads.** Retain universal served-read authority and GraphReadAuthority::project_core before live graph export. Hidden rows and another graph must not influence the caller-visible live report. Inline Turtle is caller-supplied data, not a read of hidden stored rows. Validation must leave graph rows and stored schema unchanged. | Planned: tests/shex_served.rs::live_validation_obeys_read_authority. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R084.8 Evidence and hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence and hot-path proof.** Enter through a real authenticated ShexValidate request. Observe the production handler, eg-shex validator and typed report projection. Prove inline and live cases, ordered mixed outcomes, parse failures, unknown labels and denied scope. Retain source, binary, feature and request identities. Record semantic discrepancies instead of claiming complete language support. | Planned: tests/shex_served.rs::served_shex_contract_journey. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085 EG approves immutable source queries for bounded connector execution (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**EG approves immutable source queries for bounded connector execution (rollup).** EG owns the read-only query meaning and authorization. SDK-SOURCE-INGEST-R004.1–.6 executes the approved query through its registered adapter. Children `.1`–`.8` define the producer and its served evidence. Existing R015, R043 and R069 remain unchanged. | Each child must pass; these definitions do not establish runtime delivery. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.1 Model Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Model.** Add `SourceQueryRequest`, `ApprovedSourceQuery`, `SourceQueryApprovalCheck`, `SourceQueryApprovalValidity` and `SourceQueryLimits` in planned `crates/eg-types/src/source_query.rs`. The exact fields and methods are specified in the plan. Bind typed parameters, dialect, source/schema/snapshot identities, read-only operations, authority, expiry and finite limits. Reject unknown fields and unrepresentable parameter values. Proving test: `crates/eg-types/src/source_query.rs::tests::approval_records_round_trip` (planned). | Round trips preserve every binding. Invalid references, parameter types, nonfinite values, absent snapshot identity and zero/unbounded limits refuse. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.2 Behavior: issue approval Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: issue approval.** `ApproveSourceQuery` validates the registered source and query under the verified carrier before issuing `ApprovedSourceQuery`. Reuse the immutable control-lease grant and native authoritative commit path in `src/redb_store/work_item/control_lease.rs:58`. Reserve kind `source.query.approval` against generic `IssueControlLease`, following `crates/eg-types/src/control_lease.rs:244`. Only the validated producer may issue this kind. Grant digests bind every approved field; the server controls issue time and clamps expiry to existing lease limits. Proving test: `src/server/handlers/federation/source_query_tests.rs::approval_requires_authority_and_native_commit` (planned). | A successful response follows durable issuance. Generic lease writes cannot forge approval. Issuance uses existing storage and credentials; no external SQL executes during approval. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.3 Behavior: verify approval Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: verify approval.** Add `VerifySourceQueryApproval`, taking the complete approved descriptor and observed source/schema/snapshot identities. Recompute its digest and read the authoritative control lease. Require active status, current server time before both expiries, matching caller/delegation and current source permissions. Recheck bound policy, identity and source revisions. Reuse `read_control_lease` at `src/redb_store/work_item/control_lease.rs:130`; a supplied lease view is not proof. Proving test: `src/server/handlers/federation/source_query_tests.rs::changed_or_revoked_approval_refuses` (planned). | Changing any binding, authority, source or revision refuses. Revoked, expired, consumed, unavailable or missing leases refuse. Verification grants no SQL effect and creates no bearer credential. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.4 Behavior: read-only SQL Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: read-only SQL.** Reuse R015 classification, R043 destination checks and R069 SQL rendering within existing query machinery. `crates/eg-plan/src/federation.rs:933` validates one read statement; `federation_opt/columns.rs:215` and `sql_text.rs:48` own rendering helpers. Keep typed parameter binding separate from SQL text. Reject DDL, DML, COPY, external-table creation, multiple statements, locking reads and unknown effects. Require database-enforced read-only execution; read syntax alone cannot authorize side-effecting functions. Proving test: `crates/eg-plan/src/federation_tests.rs::approved_source_query_has_no_write_effects` (planned). | Native parameter binding preserves values and query meaning. Supported projections, predicates, ordering and limits match the query oracle. Unknown dialects, functions or effects refuse without issuing approval. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.5 Wiring Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Wiring.** Register both planned methods in `crates/eg-capabilities/src/domains/query.rs` with generated request/result contracts and explicit authorization and durability metadata. Attach through `src/server/dispatch/graph_pipeline/pipeline.rs:333` to `handlers/federation.rs:21`, beside `QueryForeignColumns`. Extend the existing native control-lease commit route for issuance; verification remains an authoritative read. SDK receives the generated `ApprovedSourceQuery` type under SDK-SOURCE-INGEST-R004.1–.3. Proving test: `tests/source_query_approval_served.rs::real_dispatch_issues_and_verifies_approval` (planned). | Real authenticated dispatch reaches source validation, native issuance and fresh verification. No parallel planner, store or client-side approval authority appears. Current source has neither method. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.6 Behavior: bounded execution contract Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Behavior: bounded execution contract.** The approved limits constrain total rows/bytes, chunk rows/bytes, queue depth/bytes, deadline and resident-memory budget. All are positive and finite. SDK-SOURCE-INGEST-R004.2 applies backpressure and retains no complete result. It verifies approval before opening the driver, before publishing each chunk and before terminal success. Each chunk binds query digest, source/schema/snapshot, sequence and cumulative totals. Proving test: `tests/source_query_approval_served.rs::bounded_stream_preserves_approval` (planned). | Oversized rows, exceeded budgets or failed revalidation stop execution and close the driver. Exactly one explicit completion or typed failure stops an execution. Missing terminal completion never means success. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.7 Refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Refusal.** Planned `source_query.rs` defines closed errors: `unsupported_dialect`, `invalid_query`, `unauthorized`, `approval_expired`, `approval_revoked`, `stale_source`, `query_failed`, `limit_exceeded`, `cancelled`, `verification_unavailable`. Errors carry query identity, stage and last completed chunk, without SQL literals, parameter values or credentials. SDK-SOURCE-INGEST-R004.4 retains these semantics after partial output. Proving test: `tests/source_query_approval_served.rs::failure_after_three_chunks_is_terminal` (planned). | Failure after three chunks stays failure with an incomplete execution identity. No successful terminal event or failed-chunk checkpoint follows. Earlier accepted pages retain their actual durable receipts. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R085.8 Evidence and hot-path proof Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Evidence and hot-path proof.** `tests/source_query_approval_served.rs::approval_to_connector_query_journey` enters both real EG methods and links SDK-SOURCE-INGEST-R004.6's actual connector/driver receipt. Prove correct rows, typed binding, immutable provenance, authorization refusal and zero unauthorized database effects. Measure EG and connector peak resident memory in fresh processes across increasing result cardinalities. Proving test: `tests/source_query_approval_served.rs::approval_to_connector_query_journey` (planned). | Keep row widths, driver settings and all limits fixed while increasing cardinality by two orders of magnitude. Declare the baseline, memory envelope and tolerance before runs. Every peak must fit that fixed envelope; whole-result buffering fails. Record exact revisions, features, commands, rows/bytes, queue high-water marks, terminal outcomes and checkpoint agreement. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R070.1 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Definition hold — governed raw-corpus producer is not defined.** R070.1 requires exact lexical search, file reads, context verification, per-query cost and abstention before budget overrun. While R070 only bounds indexed UQL rows/visits and GraphOS retrieval returns a top-K boundary. Do not route this requirement through the indexed retriever or claim that its budget is a raw-source cost. The missing owner contract must identify the authorized raw-source provider and immutable source/snapshot identity. Exact search/read/verification operations and byte/line coordinate system. Finite scan/read/verification cost units and ceilings. The typed over-budget refusal. And the producer-to-EG request/response fields consumed by GovernedRetriever/AU. Until those decisions exist, this row defines no callable producer and remains held. Source objective: An agent may search a raw corpus directly with exact lexical, file-read and context-verification operations without an index. Each query reports its cost, and over-budget scans abstain. Source record `AU:71` SHA-256 `0f1b775fd66c41586bdcdf0047a9ccbc52e38aa1bc21a4e8234e9c641e45c68e`. Preserve existing obligations: `EG-FEDERATED-QUERY-R070; GRAPHOS-OPS-R053.2, GRAPHOS-OPS-R053.3, GRAPHOS-OPS-R053.5`. | Definition acceptance is blocked until the owner publishes the producer fields above. Serve an authorized query over an unindexed corpus. Return exact lexical hits, bounded file spans, verification result, source revision and measured cost. An over-ceiling query must return typed abstention before reading beyond the ceiling. Repeat against an indexed-only fixture and prove it is not accepted as this contract. Do not claim a served test or implementation now. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R006.1 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Definition hold — temporal derivation producer and semantics are absent.** R006 continues to require proof-carrying results for rule-derived queries. The source asks for temporal forward chaining from extracted facts. It requires provenance from every derived fact to its originating sentence or axiom. But the owner review found only answer-level proofs and no persistent fact-production API/origin chain. Before specifying a producer, the owner must decide rule language/version, temporal interval vocabulary, join/overlap semantics and conflict handling. The owner must also define derived-fact identity/update/retraction behavior and the persistent origin-record schema. The owner must also name the authoritative admission/readback operation. Do not treat query proof premises as a durable fact producer. No derivation or write is authorized by this row. Source objective: The engine derives facts from extracted facts using temporal forward-chaining rules. It records each derived fact's provenance to its originating sentence or axiom. Source record `EG:11` SHA-256 `2c2ffcf18d947730bc60a935fed942e1f82e9e8547f4509fe2941a34672fb8f3`. Preserve existing obligations: `EG-FEDERATED-QUERY-R001, EG-FEDERATED-QUERY-R011, EG-DECISION-ENGINE-R003, EG-FEDERATED-QUERY-R006`. | After owner decisions are recorded, acceptance uses two source facts with sentence and axiom origins. It exercises matching and nonmatching temporal intervals. Read back the derived fact with rule digest, graph generation and complete origin refs. Missing/stale origins, unsupported rule versions, conflicting validity windows and unauthorized writes must refuse without changing graph revision. Until then no producer test is specified as executable. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.5 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Definition hold — no parameter-free memory admission/encoding owner exists.** Existing lifecycle and filter-aware query operators do not specify persistent memory admission. They also do not define knowledge retention or cross-document relations. The source leaves the memory owner, admitted record/source identity, relation vocabulary, update/retention policy, and selectivity-versus-corpus benchmark target undecided. Those fields and an authorized producer/consumer operation are prerequisites. R040.4 filtered scans remain separate coverage; they cannot stand in for memory admission. Do not claim model weights change or that a no-forgetting property follows from ordinary graph writes. Source objective: The platform absorbs new knowledge into a retrievable memory module without changing model parameters or discarding earlier knowledge. Retrieval cost scales with query selectivity rather than corpus size, and cross-document relations are encoded. Source record `EG:20` SHA-256 `07df52b453f0f1b7be7aec7bf790f087c3fc5e13500915011382a9fcd8d9d41a`. Preserve existing obligations: `EG-FEDERATED-QUERY-R007, EG-FEDERATED-QUERY-R040, EG-FEDERATED-QUERY-R040.4, EG-FEDERATED-QUERY-R008`. | Blocked until the owner binds admission, relation, retention and benchmark semantics. The benchmark compares fixed query-selectivity workloads at multiple corpus sizes. It reports rows/bytes/visits and demonstrates the declared cost bound. Read back new knowledge; prove prior records and model revision remain unchanged. Missing admission authority, relation target or bound refuses. No runnable acceptance is asserted before the missing policy is supplied. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.6 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Definition hold — episode/layer producer and consumer policy are absent.** Existing SourceIngest validates/projects transcript records and UnifiedQuery supports filtered search. Neither defines semantic/procedural/episodic layer identity or builds graph episodes across sessions. The owner must define session and episode identity/boundaries, participant ordering and turn ordering. The owner must define utterance assignment to semantic, procedural or episodic memory. The owner must define cross-session merge/duplicate rules and temporal validation/conflict behavior. Name the AU operation that consumes/retrieves episodes. Keep the existing transcript and search contracts intact. Do not infer episode construction from transcript projection or introduce an unapproved AU consumer. Source objective: Agents keep semantic, procedural and episodic memory layers. These layers use graph-structured episodes built from multi-session dialogue. Retrieval spans sessions using hybrid vector and keyword search with temporal validation. Source record `EG:21` SHA-256 `c321db3aa79c29d891456f2bee98f545611b8d1be7c93d299b939c3d73a40279`. Preserve existing obligations: `EG-INGEST-WORKER-R003.13, EG-INGEST-WORKER-R003.14, EG-INGEST-WORKER-R003.17, EG-FEDERATED-QUERY-R040, EG-INGEST-WORKER-R003.18, EG-INGEST-WORKER-R003.16, EG-FEDERATED-QUERY-R016`. | After the owner fixes those decisions, acceptance ingests two ordered sessions. It builds and independently reads back an episode with transcript/revision/span provenance. It searches for the episode using hybrid vector+keyword search. Validate event time against storage time. Refuse or report partial for duplicate/conflicting chronology, stale transcript revision or unauthorized cross-session reference. Apply the owner-approved rule. No executable test exists until taxonomy and consumer are fixed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R083.7 Support-aware arbitration prevents unsupported confidence wins Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Support-aware arbitration prevents unsupported confidence wins.** Extend the existing `Candidate`/`ArbitrationVerdict` in R083.1 with `query_digest`, `graph_snapshot_revision`, `support_state` (`supported`, `unsupported`, `unknown`) and ordered `supporting_span_ids`. Preserve both candidates, the confidence margin, typed abstention and R083.2's existing >0.10 confidence rule for candidates with equal support state. Support is valid only when every material claim resolves to a source span. The span must share the query digest and graph snapshot. The decision order is fixed: exactly one supported candidate wins before confidence comparison. Both supported use the R083.2 margin. Both unsupported/unknown abstain with `ARBITRATION_ABSTAIN`. Missing citation, mismatched snapshot/query or unverifiable claim cannot raise support state and is treated as unknown. Wire validation and arbitration at existing `crates/eg-plan/src/exec.rs::execute` and `crates/eg-graphql/src/crossmodal.rs`. No separate arbitration endpoint. Proving tests: `crates/eg-types/src/retrieval_arbitration.rs::tests::support_state_round_trips_with_query_binding`, `crates/eg-plan/src/retrieval_arbitration.rs::tests::unsupported_high_confidence_loses_to_supported_candidate`, and `tests/retrieval/test_arbitration_served.py::test_supported_lower_confidence_beats_unsupported_prior`. AU prior probe dependency remains `AU-RETRIEVAL-R006`; R083.3/.6 define the EG execution path but do not prove that producer. Preserve existing coverage `EG-FEDERATED-QUERY-R083.1`, `EG-FEDERATED-QUERY-R083.2`, `EG-FEDERATED-QUERY-R083.3`, `EG-FEDERATED-QUERY-R083.4`, `EG-FEDERATED-QUERY-R083.6`. Source record EG:22 SHA-256 `544b7b0054e8c7cd9a76aedd0d665589d555a0bcf20d1f00679442574936af36`. This remains SPECIFIED pending producer/consumer implementation and served receipts. | Serve two candidates with a common query/snapshot: supported 0.70 versus unsupported 0.95 must select supported. Verify supported 0.95 versus supported 0.70 follows the 0.10 margin. Both unsupported abstain. Missing, stale or cross-snapshot citation evidence must not select a candidate. Read back both candidates and all support refs. Retain the existing R083.2 margin test. AU producer and runtime receipts remain unclaimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.10 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Definition hold — clock precedence and fallback trigger are unspecified.** R081.8.1-.6 already own follow-up query expansion and remain credited. This child covers confusion among storage time, event time and narrative time. It also covers a bounded second pass when first-pass context is insufficient. Existing transcript ingestion supplies event/storage fields but no narrative-time interpretation. The owner must define three typed clock fields and their source/provenance. The owner must set precedence when values disagree. Define the sufficiency threshold that triggers fallback. Specify fallback query construction and maximum fanout. Report the selected clock basis. Until policy values are approved, do not choose narrative, event or storage time by heuristic. Do not duplicate R081.8 follow-up behavior. Source objective: Retrieval detects confusion among storage date, event date and narrative time using explicit rules. If first-pass context is insufficient, it runs a second pass with fallback queries. Source record `EG:25` SHA-256 `fb8d54d8554b8158da64f7c9e8bf02ea846e5b411768a0381c2682b2e6302dac`. Preserve existing obligations: `EG-FEDERATED-QUERY-R081.1, EG-FEDERATED-QUERY-R081.2, EG-FEDERATED-QUERY-R081.3, EG-FEDERATED-QUERY-R081.4, EG-FEDERATED-QUERY-R081.8.1, EG-FEDERATED-QUERY-R081.8.2, EG-FEDERATED-QUERY-R081.8.3, EG-FEDERATED-QUERY-R081.8.4, EG-FEDERATED-QUERY-R081.8.5, EG-FEDERATED-QUERY-R081.8.6`. | Once defined, serve a fixture where all three clocks disagree and another where one clock is absent. Assert the selected basis and its provenance, and trigger exactly the configured bounded fallback only below the declared sufficiency threshold. enough first-pass context must issue no second pass. Stale or conflicting clock provenance and exhausted query budget must return a typed partial/refusal with no unbounded retry. No executable acceptance is currently authorized. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R028.1 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Typed KnowledgeSet row contract.** Reuse the existing `KnowledgeSet`/`KnowledgeRow` producer in `crates/eg-plan/src/knowledge.rs`, the `UqlKnowledge` wire carrier in `crates/eg-types/src/wire_query_core.rs`. And the existing `WITH KNOWLEDGE` attachment in `crates/eg-plan/src/uql/serve/annotate.rs`. Do not substitute `ForeignRows`. Each row carries its own provenance-frame state and policy-frame state alongside the existing row id, `source_refs`, `evidence_refs` and `policy_labels`. `Resolved` means row provenance and policy were resolved from one pinned graph snapshot. Missing or unresolved frames do not count as empty success. The KnowledgeSet remains a superset of a plain row set: id/score and requested projection preserve existing values. Structured and UQL surfaces must serialize the same carrier. If either per-row frame is absent, malformed, or from a different snapshot, return typed `KNOWLEDGE_FRAME_MISSING`/`KNOWLEDGE_FRAME_STALE` and no partially annotated result. This is a contract clarification only. The source explicitly withholds UQL implementation authorization. Source objective: Typed KnowledgeSet rows carry provenance and policy frame per row. The query surface returns them as a superset of plain row sets and refuses rows lacking either. Source record `EG:29` SHA-256 `2eb8aadb1b6ccc2d5de77a4d1964fc04a4e944bccf9bcc1793e262f146af7583`. Preserve existing obligations: `EG-FEDERATED-QUERY-R028, EG-FEDERATED-QUERY-R045`. | Create one plain row and one row with resolved evidence/policy frames. Compare both with the same structured KnowledgeSet producer. Verify row id/score/projection are unchanged and both frame states are row-local. Independently omit provenance, policy and snapshot binding. Each case must return the typed refusal without a partial row. Keep R045 foreign-row pushdown behavior unchanged. Tests are acceptance targets only. No UQL implementation or served receipt is claimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R005.1 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Typed consistency-violation matrix on the existing validation result.** Extend the existing R005 VALIDATE SHAPE / reasoning-validation result with a closed `ViolationKindV1`: `temporal_conflict`, `cardinality`, `self_loop`, `asymmetry`, `ontology_defect`. Each `ViolationV1` binds `kind`, focus entity, relation/property ids, graph/ontology revisions, expected/observed values and source axiom/evidence refs. Kind-specific fields are required: conflicting validity intervals for temporal conflict. Declared min/max and observed count for cardinality. One entity and its forbidden self-edge for self-loop. A declared asymmetric relation with an observed reverse pair. Include the property/axiom id, the subject and object, both forward and reverse edge ids, their evidence refs. And the pinned graph/ontology revisions. An absent reverse edge is not a violation. Violated axiom id and affected terms for ontology defect. The validator is read-only: it reports each independent violation and never chooses a winner or retracts facts. Any later retraction requires a distinct explicit authorized mutation. Do not add a UQL implementation under this row. Source objective: The platform detects temporal conflicts, cardinality, self-loop and asymmetry violations, plus ontology defects. Conflict rules report each with a typed reason, never silently choosing. Source record `EG:31` SHA-256 `973de1c3b38646a438d057299d8070070f0ef7a2056bb30acff6d1a3814df513`. Preserve existing obligations: `EG-DECISION-ENGINE-R034, EG-FEDERATED-QUERY-R001, EG-FEDERATED-QUERY-R005, EG-FEDERATED-QUERY-R011, EG-FEDERATED-QUERY-R012`. | Serve a violating fixture and repaired control for each of the five kinds. Assert exactly the typed diagnostic with pinned graph/ontology revision and evidence refs. For asymmetry, the control contains only `(a,p,b)` and has no asymmetry diagnostic. Adding `(b,p,a)` as the sole change creates the violation, which cites both observed edge ids and the declared asymmetric axiom. A missing reverse edge is not a violation. Combine two independent defects and require both diagnostics. Missing kind-specific fields, unknown kinds and stale ontology revision refuse validation. Querying graph state afterward proves no mutation. Retraction remains denied absent explicit authorization. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R078.7 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Governed company-context logical view.** The authenticated query uses the existing `PlanScope` and `inject_scope` path (R078.1-.6) over one pinned graph snapshot. It composes stored organization/role vocabulary (`crates/eg-core/ontology/core-foundation-v1.ttl` and `company-v1.ttl`), registered data-source mappings and native time-series facts. It returns references/projections from those sources as one logical view. It does not copy or merge source records. Every result is scoped by verified tenant and clearance before retrieval, and every source row retains its source identity/revision. **Definition hold:** Owner review found no exact canonical ontology/mapping ids for organizations, roles, data assets, permissions or time-series facts. The time-series source/revision join key is also unknown. Before complete acceptance, map each category to its existing class/property or registered mapping. Name the time-series key. Do not invent or duplicate terms. Source objective: Company context combines organizations, roles, data assets, permissions and time-series facts in one graph. Agents query it under caller tenant and clearance. Source record `EG:59` SHA-256 `fd5990a7c9f30e1e1aa0eed9aa08efef4e2ebc8f5f34387598f1c9e577c458dc`. Preserve existing obligations: `EG-DURABLE-KERNEL-R043, EG-FEDERATED-QUERY-R078, EG-UNIFIED-DATA-PLANE-R001, EG-UNIFIED-DATA-PLANE-R003, EG-FEDERATED-QUERY-R078.1, EG-FEDERATED-QUERY-R078.2, EG-FEDERATED-QUERY-R078.3, EG-FEDERATED-QUERY-R078.4, EG-FEDERATED-QUERY-R078.5, EG-FEDERATED-QUERY-R078.6`. | With category mappings supplied, serve identical company-context queries as two tenants with differing clearances. Verify the authorized tenant receives each mapped category as source-bound references. Exclude denied rows before any source read and copy no source record. Join native time-series values only by the declared series/time key and snapshot. Missing/ambiguous mapping, unverified tenant, stale source revision or cross-tenant join refuses. Current scope-planning acceptance remains covered by R078.1-.6. This new composed view stays held until mappings are exact. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.7 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Vector-free hierarchy mode with zero external model calls.** Add a read-only mode to the existing `HierarchyRetrievalPolicy`/authenticated `UnifiedQuery` section traversal. It accepts requested granularity (`document`, `section`, or `source_span`) and uses only the stored authorized section summaries and source spans already bound by R081.9.7.1-.6. It returns the selected stored summary or exact source span plus the ordered root-to-leaf path. It does not generate or rewrite summaries. In this mode external inference-call budget is exactly zero, vector index and embedding calls are forbidden. And the traversal limits from the existing section-beam policy remain enforced. Wire only at the existing `PlanCtx` section traversal before fusion in `crates/eg-plan/src/exec.rs`, reached through `run_unified_with`. Do not create a second retriever. Refuse requests for generated answer text, missing/stale summaries or spans, invalid trees, or external inference dispatch. Source objective: Retrieval builds hierarchical document trees. It answers at multiple granularities by traversing them without external model calls. Source record `GRAPHOS:24` SHA-256 `b2e5de8386b3ca72b59a81ca5fa3193eaf7736af86aca472a720b9e4511961c0`. Preserve existing obligations: `EG-FEDERATED-QUERY-R081.9.7.1, EG-FEDERATED-QUERY-R081.9.7.2, EG-FEDERATED-QUERY-R081.9.7.3, EG-FEDERATED-QUERY-R081.9.7.4, EG-FEDERATED-QUERY-R081.9.7.5, EG-FEDERATED-QUERY-R081.9.7.6`. | Serve all three granularities over a nested authorized section tree. Compare selected path/span ids with an independent tree oracle. Instrument external model, embedding and vector calls and require zero calls on every positive query. Malformed or stale section records and exhausted depth/visit/token limits refuse before extra dispatch. Tenant isolation and existing community traversal outputs remain unchanged. No runtime proof is claimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.9.7.8 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Definition hold — offline TOC producer and finite span-read policy are unbound.** Preserve existing space/section mappings. Do not recreate interaction spaces. The requested producer builds an offline line-numbered TOC from an immutable document revision. Each entry binds section id, title/path, inclusive start/end lines and source digest. EG needs a bounded line-span read from the pinned document. It returns exact lines, source digest and line range; it never returns the whole document. The current SDK source-ingest -> EG document/section -> GraphOS retrieval.space -> AU path leaves the TOC producer unresolved. It does not define who builds or refreshes the TOC. Source byte/line encoding and finite line-span/response-byte limits are also undefined. Those owner decisions and their producer/consumer schema are required before this can be executable. Existing directory mappings do not fill the gap. Source objective: Documents in a retrieved space are preprocessed offline into line-numbered TOCs. Agents use them to navigate sub-document spans without reading whole files. Source record `GRAPHOS:25` SHA-256 `6797cff839c16c3b9c3877d6bbf48bf8953eae8696087abc99f2b57147daed93`. Preserve existing obligations: `GRAPHOS-OPS-R053.1, GRAPHOS-OPS-R053.2, GRAPHOS-OPS-R053.3, GRAPHOS-OPS-R053.6, EG-FEDERATED-QUERY-R081.9.7.1, EG-FEDERATED-QUERY-R081.9.7.5`. | Once the owner supplies TOC generation and versioned positive finite `max_lines` and `max_bytes`, index a multisection fixture offline. Read a bounded middle span and verify exact line numbers and source digest. Refuse stale document/TOC revision, invalid or too-wide range, a response above the bound, and whole-file requests. Verify current GRAPHOS space/section links still resolve. Until producer and caps are named, no served acceptance is claimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R040.2.7 Source-backed definition disposition Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Source-backed definition disposition.** **Revision-bound per-document topic responsibilities.** Extend the existing `TopicBackend` result and `weighted_topic_dense` score in `run_unified_with` before final truncation. For each eligible candidate, the backend supplies a `DocumentTopicAssignment`. It binds document id/content revision, corpus generation, backend identity/revision and the retriever's `EmbeddingSpaceRef`. Each assignment identifies topic id and that document’s responsibility. Compute each candidate's topic component from its revision-matched responsibilities and the existing centroid similarity formula. Feed it into existing weighted dense/topic fusion. Preserve hard constraints, fusion weight, deterministic ties, tenant scope and all R040.2 refusals. Missing, duplicate, stale or cross-space assignments refuse the requested topic contribution. The planner must not silently fall back to dense-only ranking. GraphOS projects reads and does not rank; GRAPHOS-FLEET-R014 is unrelated. Source objective: Retrieval uses document topic metadata as semantic guidance to improve ranking and relevance. Source record `GRAPHOS:28` SHA-256 `f7654cd07d4d95f32f09fec742c4172b35c689749b3228aef9424830b1f7cc1b`. Preserve existing obligations: `EG-FEDERATED-QUERY-R040.2.1, EG-FEDERATED-QUERY-R040.2.2, EG-FEDERATED-QUERY-R040.2.3, EG-FEDERATED-QUERY-R040.2.6`. | Serve the same corpus/backend with two candidates whose assignments differ. Independently recompute both topic components and final scores. Change only one candidate’s responsibility vector and prove only the expected candidate contribution/order changes. Refuse missing/duplicate document assignment, stale document or corpus revision, backend mismatch and embedding-space mismatch before truncation. Verify hard exclusions still hold and `run_unified_with` records the assignment/backend revision in the existing topic receipt. No implementation or served receipt is claimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.8.100 Retriever-bound query strategy and transfer revalidation Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Retriever-bound query strategy and transfer revalidation.** Extend existing retrieval feedback with retriever id/version, strategy id/digest, corpus/model revisions, evaluation-set digest and transfer-validation receipt. A strategy is reusable without new validation only for the same target retriever id/version. Corpus, model and policy revisions must be byte-identical. A target or bound-revision change requires a target-bound validation receipt. It contains target retriever id/version, strategy id/digest, evaluation-set digest and metric id. It also binds measured value, acceptance threshold, pass/fail outcome and corpus/model/policy revisions. Activate only when measured value meets or exceeds the declared threshold. A valid receipt below threshold refuses activation and retains the prior strategy. A different retriever never receives a copied strategy by default. Reuse R081.8 feedback and R082 budgets. Producer/consumer boundary: Authenticated crossmodal -> `eg-plan::exec` R081.8 feedback -> selected retriever. Preserve existing R081.8.1-.6 tiering, feedback and refusal behavior. Preserve existing parent obligations: `EG-FEDERATED-QUERY-R081.8.1-.6; R082`. Source record `AU:77` SHA-256 `213700ec5b9e8648657ec47d0c587483a978db10f4661475b467be451d3bb2e1`. Parent `R081.8` remains unchanged. | Planned served acceptance: Same-retriever feedback reuse succeeds. A retriever-version change requires validation. Failed, stale or missing transfer receipts refuse retrieval. Verify the receipt binds the strategy digest and target retriever. Keep feedback budgets unchanged. Rejected critiques must not change the active strategy. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R053.100 Generated Cypher property keys use grammar-valid backtick quoting and build refusal Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Generated Cypher property keys use grammar-valid backtick quoting and build refusal.** Extend the existing Cypher federation renderer so every generated property key is emitted as a backtick-quoted identifier. Embedded backticks use the Cypher grammar escape representation, and values remain parameters rather than interpolated identifiers. The renderer is shared by every Cypher generation path. The build gate validates generated query fixtures and fails on any property key that is unquoted or malformed. It must not add a second renderer or rely on SQL identifier quoting. Producer/consumer boundary: `ForeignSourceSpec::Cypher` federation renderer -> generated Cypher -> configured build gate. Preserve R053 typed source registration. Cypher Manual naming rules define backtick quoting and doubled backtick representation. Preserve existing parent obligations: `EG-FEDERATED-QUERY-R053; EG-DURABLE-KERNEL-R024.1/.3; EG-FEDERATED-QUERY-R069`. Source record `EG:37` SHA-256 `803f4e4ffbcd939af750e23451469835555beaa37e14ce555ffd0a59c0a3ac48`. Parent `R053` remains unchanged. | Planned served acceptance: Gate fixtures cover plain, reserved, spaced, Unicode and embedded-backtick identifiers. They also include an intentionally unescaped generated key. Parse/execute safe cases against the Cypher grammar and assert build refusal for unescaped/malformed output. The existing ForeignSourceSpec capability matrix and Spark batch-only constraint remain unchanged. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R032.100 Layer- and history-weighted impact traverses both dependency directions Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Layer- and history-weighted impact traverses both dependency directions.** Extend the existing authenticated R032 `PROPAGATE` result with a separate historical-risk dimension. Bind target node/revision, direction and bounded HOPS. Also bind ordered layer taxonomy/weights, authorized failure-dataset id/revision/window/digest, observation counts, policy revision and request digest. For each node with observations compute `failure_rate = failures / observations` and `layer_contribution = layer_weight * failure_rate`, with weights and rates in [0,1]. For a path, compute `path_risk = 1 - product(1 - layer_contribution)` over its unique nodes. Aggregate duplicate paths to a node by maximum path risk. list upstream and downstream path sets separately. Suppress repeated-node cycles within a path and order ties by hop count, node id and path-edge ids. Return per-node path, layer contribution, counts, coverage state and risk. Missing per-node history yields `unknown` and a partial result with `aggregate_risk = null`. An unavailable or unauthorized dataset refuses. The new score is an additional dimension and cannot replace or alter R032 Noisy-OR or Independent-Cascade results. Producer/consumer boundary: EG owns graph impact query/risk decision; AU requests and consumes the result. Existing numeric risk helpers are not this two-direction historical impact contract. Preserve existing parent obligations: `EG-FEDERATED-QUERY-R032 existing Noisy-OR and Independent-Cascade obligations`. Source record `AU:43` SHA-256 `327ced0e0605f34366c662017d82ac892a481c5ca5f40bba2f3693ba6a5f7649`. Parent `R032` remains unchanged. | Planned served acceptance: Graph fixtures cover ancestors and descendants across three layers. Include differing historical failure counts, a cycle boundary and missing-history data. Verify both directions and deterministic layer/history contribution. Refuse stale or malformed history, and compare existing R032 propagation outputs unchanged. Owner-source review only. No runtime/test receipt is inferred. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R086 Inductive n-ary hypothesis-only link prediction (rollup) Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Inductive n-ary hypothesis-only link prediction (rollup).** Defines ordered n-ary inference that returns unasserted hypotheses. It does not mutate graph facts or replace observed-edge query/write contracts. All listed children are required before this rollup can be LANDED. | Generated status requires every child to be LANDED and VERIFIED. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R086.100 Ordered n-ary inductive link prediction emits hypotheses only Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Ordered n-ary inductive link prediction emits hypotheses only.** **Definition hold — current graph learner is binary and has a write path.** The source requires ordered n-ary hyperedge prediction and generalization to unseen-at-fit entities. Hypotheses carry an evidence class and are never asserted facts. Current `Method::GraphLearnPredict`/`src/server/handlers/graphlearn.rs` scores binary `(src,dst)` pairs over a resident graph and optionally writes `PredictedEdge`. It cannot satisfy ordered n-ary tuples, unseen-entity induction, or hypothesis-only guarantees. Preserve it unchanged. Before defining a public producer, the owner must choose the n-ary model/training artifact. The owner must also define ordered-tuple inference semantics for unseen entities. Define the evidence-class vocabulary and source binding. Choose the read-only capability/auth action. And name the AU proposal consumer receipt. Only then can a separate method be attached in the existing graphlearn method family and routed through `src/server/handlers/graph_ops/gateway_mining_ml.rs`/`src/server/handlers/graphlearn.rs`. Do not route this through the binary `GraphLearnPredict` write-capable method. No model, endpoint, or authority is invented here. Source record `EG:14` SHA-256 `7223250e7f899a187aad0b152e597c6174b772c49779ca2bdd12d3ba68f4f5ef`. Preserve existing obligations: EG-FEDERATED-QUERY-R086, binary GraphLearnPredict behavior, and its graph-write authority. | Acceptance is blocked until model, evidence-class, authorization and AU receipt decisions are published. A served ordered three-source fixture includes an unseen-at-fit entity. Return candidates with tuple order, graph/model/policy revisions and evidence class. Leave graph revision unchanged. Changing source order must change request digest. Refuse unary tuples, unresolved/unauthorized sources, stale revisions and malformed relation constraints. Confirm `GraphLearnPredict` binary results and write authority are unchanged. No producer test is currently defined as runnable. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.101 Reusable compressed document state with decoding-free reranking Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Reusable compressed document state with decoding-free reranking.** Build a document-only state keyed by document id/content digest, encoder revision and compression-policy revision. Store ordered segment boundaries, compressed token representations and the key/value projections required by the scorer. The state must not depend on candidate order or query context. At query time, score queries against stored projections without decoding/generation. Return document digest, state revision, segment policy, score and scorer revision. Measure interaction cost against the declared full-token baseline using the same document/query set and report denominator and result digest. Preserve existing parent obligations: `EG-FEDERATED-QUERY-R081`. Source record `AU:126` SHA-256 `deca151180a749cb3784d9946da0de17205eca89c92e5eb4f275859e1d4be165`. | Build state once, then rerank under two query contexts and reversed candidate order. Assert the state digest stays identical and per-document scores remain aligned. Assert no decoder/model-generation call. Compare measured interaction cost with the same full-token baseline. Refuse stale document/encoder revisions, malformed segment coverage or any query-time state rewrite. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.102 Index-time teacher distillation with measured quality and zero query model calls Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Index-time teacher distillation with measured quality and zero query model calls.** Persist an index-time distilled scorer with corpus/index revision, teacher model revision and teacher-judgment dataset digest. Bind scorer artifact digest and quality metric/threshold policy. The scorer is eligible for query use only when its measured quality reaches the declared held-out target-set threshold. Query-time retrieval applies the stored scorer without any model-service call. It never distills or repairs the scorer on demand. A below-threshold, stale or unbound artifact refuses activation and leaves the prior scorer active. Preserve existing parent obligations: `EG-FEDERATED-QUERY-R081`. Source record `GRAPHOS:27` SHA-256 `baac22c9fb42470957b5b91499c6e42e1bb2410d24446d15f6f364638c88138e`. | Distill and read back an artifact meeting held-out quality threshold. Serve queries and assert zero model-service calls plus scorer-digest binding. Below-threshold, missing held-out evidence, stale corpus/index or teacher revision all refuse activation. Verify the prior scorer remains active. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.100 Joint sparse nonnegative reconstruction selects a diverse document set Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Joint sparse nonnegative reconstruction selects a diverse document set.** Given query vector q and candidate matrix V, select a joint coefficient vector x by minimizing `||q - Vᵀx||₂² + λ||x||₁`. V rows are revision-pinned embeddings in the same declared embedding space. Require xᵢ >= 0 and existing result-count/tenant bounds. λ, solver version, convergence tolerance, embedding-space revision and input digest are bound to the request. Return selected document ids, nonnegative coefficients, reconstruction residual, solver status and policy revision in deterministic coefficient-descending then document-id order. Do not substitute independent dense/lexical dual-score ranking. Preserve the distinct R081.7 mechanism. Refuse mismatched embedding revisions, invalid λ, solver non-convergence or a result set that exceeds existing bounds. Producer/consumer boundary: EG retrieval selection owns the joint objective and set result. The existing served UnifiedQuery/retrieval path consumes it. Preserve R081.1-.9 selection and tenant bounds. No new caller-controlled score authority. Preserve existing parent obligations: `EG-FEDERATED-QUERY-R081`. Source record `EG:41` SHA-256 `bceeed106b5db2933cf5161d58b4203fc7afe9d714503a31d68323992906c23b`. Parent `R081` remains unchanged. | Planned served acceptance: Compare served retrieval on a tiny fixture with an independent exhaustive nonnegative-sparse oracle. Include two highly correlated documents and an alternative diverse pair. Assert exact selection, coefficients, residual and deterministic order. Refuse embedding-space mismatch, invalid policy and non-convergence. Verify existing tenant and result-count filters still apply. No implementation or receipt is claimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FEDERATED-QUERY-R081.103 Viewport-bounded scatter and line queries over billion-point indexed sources Definition — EG-FEDERATED-QUERY / EG-FEDERATED-QUERY — Federated query, search, and reasoningCanonical requirement and verification source**Viewport-bounded scatter and line queries over billion-point indexed sources.** Add a closed `ViewportQueryV1` plan variant to existing authenticated `Method::UnifiedQuery`/`run_unified_with` and public `Method::ResolveViewportSelection` (`ResolveViewportSelectionV1`) operation. Request binds tenant authority, indexed source id/revision/cardinality, `scatter or line` variant and typed axes/units. It also binds filter digest, viewport domain, `pixel_width` and `pixel_height` (each 1..4096), binning-policy revision and required byte ceiling (1..16777216). For v1, the effective encoded response ceiling is `min(requested_byte_ceiling, formula_cap)`. Invalid or too-small ceilings that cannot contain the mandatory response envelope refuse with `BYTE_CEILING_TOO_SMALL` before scanning. Results are never silently truncated. Scatter cap is `min(pixel_width * pixel_height, 262144)` bins. Line cap is `min(4 * pixel_width, 65536)` bins. Both are positive integer formulas independent of source cardinality. Encoded response cap is `min(16777216, 65536 + 96 * max_bin_count)` bytes, measured after wire serialization. Scatter bins return stable id, count and axis extrema. Line bins return first/last/min/max/count and an explicit continuity/gap flag. Results bind source revision, viewport, policy revision, full-source cardinality and query digest. No path may transfer the full source. Selection tokens form a closed union. `ExactPoint` binds one authorized point id/revision. `AggregateBin` binds one bin id plus source/index/viewport revisions. It cannot expand into unbounded raw points. Refuse absent/outdated spatial index, stale source revision, invalid viewport, unauthorized source/selection and exceeded caps. Never silently drop bins. Consumer: GraphOS typed query adapter and `WEBUI-APPS-R001.2` chart renderer. Source objective WEBUI:7: The interface renders interactive scatter/line charts with pan, zoom and selection for billion-point datasets. Screen-bounded binning keeps payloads bounded. Source record SHA-256 `483b80b268ba6924ced162740792071fb43f482b1cddf16d9fbd424727d4ed89`. | On a real indexed source with at least 1,000,000,000 points, serve scatter and line queries at three viewport sizes. Verify versioned formulas, encoded byte cap, exact source revision, continuity and no full-source transfer. Pan/zoom changes the query digest and bins. Exact and aggregate selection tokens resolve only within their pinned revisions. Stale index, denied selection, invalid/exceeded caps and absent source refuse. No runtime or owner receipt is claimed. | requirement | EG-FEDERATED-QUERY | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidence | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R001 Cross-host BacktestRun digest and Pine parity for finance-core Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Cross-host BacktestRun digest and Pine parity for finance-core.** The BacktestRun content digest is canonical across supported host architectures by normalizing serialization, floating-point and timestamp inputs before hashing. A Pine companion script for the SuperTrend and ATR kernels produces the same signal transitions as the Rust implementation from a shared checked-in bar fixture and parameter version, and finance-specific classes are folded into one finance-v1 ontology with duplicate class definitions removed. | Independent builds on two architectures are compared for equal digests, and a parity fixture test asserts the Pine and Rust implementations produce identical signal transitions. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 0374378eb9db ae7b0d664749 crates/eg-compute/src/finance/market/record_tests.rs:405 src/server/graph_schema/finance_tests.rs:139 |
| EG-FINANCE-PRIMITIVES-R002 Rehome generic finance evaluation kernels into eg-numeric Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Rehome generic finance evaluation kernels into eg-numeric.** Rolling z-score, EWMA, information coefficient and ratio, effective sample size, Diebold-Mariano, deflated Sharpe, purged combinatorial cross-validation, probability of backtest overfitting, Brier, Kalman, Ornstein-Uhlenbeck, ADF and regime HMM calculations are owned by eg-numeric evaluation and calibration modules and are callable as UQL time-series functions. Finance-specific method wrappers are removed or remain only as thin documented aliases over the shared kernels, with callers migrated to the generic surface and generated method counts reconciled in one change. A regime derivation that requires an unbounded prefix refit declares a bound or refuses with a typed state-budget error rather than reporting an unverified result. Children R002.1 through R002.10 retain this entire contract and add causal, adaptive state-space filtering. | Unit tests cover each relocated kernel, and a method-count reconciliation check confirms the generated inventory matches client bindings with no duplicate implementation remaining. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | 0374378eb9db 31cbdeb6d98b crates/eg-numeric/src/evaluation/backtest.rs:189 crates/eg-numeric/src/evaluation/backtest.rs:200 crates/eg-numeric/src/evaluation/skill.rs:237 |
| EG-FINANCE-PRIMITIVES-R002.1 Complete the original shared-kernel inventory Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Complete the original shared-kernel inventory.** Rollup: every child below is required; the original acceptance remains mandatory. Model: the original kernel inventory remains mandatory. Behavior: eg-numeric owns rolling z-score, EWMA, information coefficient, information ratio and effective sample size. It also owns Diebold-Mariano, deflated Sharpe, purged combinatorial cross-validation, probability of backtest overfitting, Brier, Kalman, Ornstein-Uhlenbeck, ADF and regime HMM. Wiring: reuse `crates/eg-numeric/src/series/` and `crates/eg-numeric/src/evaluation/`; migrate remaining finance implementations. Refusal: invalid inputs produce typed outcomes; duplicate implementations fail qualification. Evidence: independent vectors cover every listed kernel. | Proposed test: `tests/test_finance_shared_kernel_inventory.py::test_complete_kernel_inventory`. Compare each relocated kernel with independent vectors, including malformed and short inputs. Preserve every original R002 unit-test obligation. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.1 Rolling z-score shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Rolling z-score shared kernel.** Model: The Rolling z-score inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/series/kernel.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/series/kernel.rs::tests::rolling_z_score_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.2 EWMA shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**EWMA shared kernel.** Model: The EWMA inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/series/kernel.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/series/kernel.rs::tests::ewma_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.3 Information coefficient shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information coefficient shared kernel.** Model: The Information coefficient inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/skill.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/skill.rs::tests::information_coefficient_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.4 Information ratio shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information ratio shared kernel.** Model: The Information ratio inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/skill.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/skill.rs::tests::information_ratio_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.5 Effective sample size shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Effective sample size shared kernel.** Model: The Effective sample size inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/skill.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/skill.rs::tests::effective_sample_size_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.6 Diebold-Mariano shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Diebold-Mariano shared kernel.** Model: The Diebold-Mariano inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/skill.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/skill.rs::tests::diebold_mariano_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.7 Deflated Sharpe shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Deflated Sharpe shared kernel.** Model: The Deflated Sharpe inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/backtest.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/backtest.rs::tests::deflated_sharpe_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.8 Purged combinatorial cross-validation shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Purged combinatorial cross-validation shared kernel.** Model: The Purged combinatorial cross-validation inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/backtest.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/backtest.rs::tests::purged_cv_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.9 Probability of backtest overfitting shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Probability of backtest overfitting shared kernel.** Model: The Probability of backtest overfitting inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/backtest.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/backtest.rs::tests::pbo_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.10 Brier shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Brier shared kernel.** Model: The Brier inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/skill.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/skill.rs::tests::brier_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.11 Kalman shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Kalman shared kernel.** Model: The Kalman inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/series/kalman.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::kalman_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.12 Ornstein-Uhlenbeck shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Ornstein-Uhlenbeck shared kernel.** Model: The Ornstein-Uhlenbeck inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/mod.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/mod.rs::tests::ou_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.13 ADF shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**ADF shared kernel.** Model: The ADF inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/mod.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/mod.rs::tests::adf_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.1.14 Regime HMM shared kernel Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Regime HMM shared kernel.** Model: The Regime HMM inputs and numeric policy retain their original meaning. Behavior: The shared authority computes only this kernel. Reuse an existing implementation when present. Wiring: Extend `crates/eg-numeric/src/evaluation/mod.rs`; caller migration belongs to R002.2. Refusal: Malformed, nonfinite and insufficient inputs produce typed outcomes. Evidence: Independent fixed vectors match this kernel and its declared precision. | Proposed test: `crates/eg-numeric/src/evaluation/mod.rs::tests::regime_hmm_independent_vectors`. Independent fixed vectors match this kernel and its declared precision. Malformed and short vectors refuse; a duplicate authority fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2 Migrate callers and preserve generic time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Migrate callers and preserve generic time-series exposure.** Rollup: every child below is required; the original acceptance remains mandatory. Model: one generic operation owns each original kernel. Behavior: finance wrappers are removed or documented thin aliases. All callers migrate to the generic surface. Wiring: `src/server/handlers/finance/route_families.rs:576` and the existing series execution path call shared kernels. Every original kernel remains callable as a UQL time-series function. Refusal: unknown aliases and incompatible precision refuse. Evidence: real generic, retained-alias and UQL requests agree. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_generic_alias_and_uql_equivalence`. Test every R002 kernel through its served route. Detect duplicate implementations and precision drift. Missing textual exposure remains an explicit prerequisite under the query hold. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1 Generic caller migration rollup Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Generic caller migration rollup.** Model: Fourteen kernel-specific children retain every original kernel. Behavior: Each caller uses the shared numerical authority. Wiring: Reuse `crates/eg-compute/src/finance/`. Each child names its proving entry. Refusal: Any missing kernel or uncovered caller prevents completion. Evidence: Every kernel-specific child passes its served positive and negative cases. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_generic_inventory`. Every kernel-specific child passes its served positive and negative cases. One passing kernel cannot satisfy this rollup. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.1 Rolling z-score generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Rolling z-score generic caller migration.** Model: One Rolling z-score caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/signals.rs` and the R002.1.1 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_rolling_z_score_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.2 EWMA generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**EWMA generic caller migration.** Model: One EWMA caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/signals.rs` and the R002.1.2 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_ewma_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.3 Information coefficient generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information coefficient generic caller migration.** Model: One Information coefficient caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.3 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_information_coefficient_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.4 Information ratio generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information ratio generic caller migration.** Model: One Information ratio caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.4 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_information_ratio_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.5 Effective sample size generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Effective sample size generic caller migration.** Model: One Effective sample size caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.5 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_effective_sample_size_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.6 Diebold-Mariano generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Diebold-Mariano generic caller migration.** Model: One Diebold-Mariano caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.6 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_diebold_mariano_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.7 Deflated Sharpe generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Deflated Sharpe generic caller migration.** Model: One Deflated Sharpe caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.7 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_deflated_sharpe_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.8 Purged combinatorial cross-validation generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Purged combinatorial cross-validation generic caller migration.** Model: One Purged combinatorial cross-validation caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.8 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_purged_cv_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.9 Probability of backtest overfitting generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Probability of backtest overfitting generic caller migration.** Model: One Probability of backtest overfitting caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.9 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_pbo_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.10 Brier generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Brier generic caller migration.** Model: One Brier caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/quant/validation.rs` and the R002.1.10 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_brier_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.11 Kalman generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Kalman generic caller migration.** Model: One Kalman caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/statespace.rs` and the R002.1.11 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_kalman_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.12 Ornstein-Uhlenbeck generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Ornstein-Uhlenbeck generic caller migration.** Model: One Ornstein-Uhlenbeck caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/statespace.rs` and the R002.1.12 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_ou_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.13 ADF generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**ADF generic caller migration.** Model: One ADF caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/statespace.rs` and the R002.1.13 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_adf_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.1.14 Regime HMM generic caller migration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Regime HMM generic caller migration.** Model: One Regime HMM caller boundary consumes its shared contract. Behavior: Repoint this kernel's compute caller to the shared authority. Preserve numeric policy and typed outcomes. Wiring: Use `crates/eg-compute/src/finance/regime.rs` and the R002.1.14 authority. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real generic request reaches this caller and matches its independent vectors. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_regime_hmm_generic_caller`. A real generic request reaches this caller and matches its independent vectors. Short inputs and incompatible precision refuse without producing a fabricated result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2 Finance alias compatibility rollup Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance alias compatibility rollup.** Model: Fourteen kernel-specific children retain every original kernel. Behavior: Each retained method is a documented thin alias; removed methods follow the declared compatibility contract. Wiring: Reuse `src/server/handlers/finance/route_families.rs`. Each child names its proving entry. Refusal: Any missing kernel or uncovered caller prevents completion. Evidence: Every kernel-specific child passes its served positive and negative cases. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_alias_inventory`. Every kernel-specific child passes its served positive and negative cases. One passing kernel cannot satisfy this rollup. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.1 Rolling z-score finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Rolling z-score finance alias compatibility.** Model: One Rolling z-score caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_rolling_z_score_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.2 EWMA finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**EWMA finance alias compatibility.** Model: One EWMA caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_ewma_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.3 Information coefficient finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information coefficient finance alias compatibility.** Model: One Information coefficient caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_information_coefficient_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.4 Information ratio finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information ratio finance alias compatibility.** Model: One Information ratio caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_information_ratio_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.5 Effective sample size finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Effective sample size finance alias compatibility.** Model: One Effective sample size caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_effective_sample_size_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.6 Diebold-Mariano finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Diebold-Mariano finance alias compatibility.** Model: One Diebold-Mariano caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_diebold_mariano_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.7 Deflated Sharpe finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Deflated Sharpe finance alias compatibility.** Model: One Deflated Sharpe caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_deflated_sharpe_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.8 Purged combinatorial cross-validation finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Purged combinatorial cross-validation finance alias compatibility.** Model: One Purged combinatorial cross-validation caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_purged_cv_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.9 Probability of backtest overfitting finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Probability of backtest overfitting finance alias compatibility.** Model: One Probability of backtest overfitting caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_pbo_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.10 Brier finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Brier finance alias compatibility.** Model: One Brier caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_brier_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.11 Kalman finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Kalman finance alias compatibility.** Model: One Kalman caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_kalman_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.12 Ornstein-Uhlenbeck finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Ornstein-Uhlenbeck finance alias compatibility.** Model: One Ornstein-Uhlenbeck caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_ou_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.13 ADF finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**ADF finance alias compatibility.** Model: One ADF caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_adf_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.2.14 Regime HMM finance alias compatibility Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Regime HMM finance alias compatibility.** Model: One Regime HMM caller boundary consumes its shared contract. Behavior: Remove this wrapper or keep only a documented call to its generic owner. Preserve admitted compatibility. Wiring: Use `src/server/handlers/finance/route_families.rs:576` through its existing finance dispatch. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: Real generic and retained-alias requests agree in values, precision and typed outcomes. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_regime_hmm_alias`. Real generic and retained-alias requests agree in values, precision and typed outcomes. An unknown alias refuses; a second implementation fails qualification. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3 UQL time-series exposure rollup Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**UQL time-series exposure rollup.** Model: Fourteen kernel-specific children retain every original kernel. Behavior: Each kernel remains callable through the served UQL time-series path. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs`. Each child names its proving entry. Refusal: Any missing kernel or uncovered caller prevents completion. Evidence: Every kernel-specific child passes its served positive and negative cases. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_uql_inventory`. Every kernel-specific child passes its served positive and negative cases. One passing kernel cannot satisfy this rollup. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.1 Rolling z-score uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Rolling z-score uql time-series exposure.** Model: One Rolling z-score caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_rolling_z_score_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.2 EWMA uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**EWMA uql time-series exposure.** Model: One EWMA caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_ewma_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.3 Information coefficient uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information coefficient uql time-series exposure.** Model: One Information coefficient caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_information_coefficient_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.4 Information ratio uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Information ratio uql time-series exposure.** Model: One Information ratio caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_information_ratio_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.5 Effective sample size uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Effective sample size uql time-series exposure.** Model: One Effective sample size caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_effective_sample_size_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.6 Diebold-Mariano uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Diebold-Mariano uql time-series exposure.** Model: One Diebold-Mariano caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_diebold_mariano_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.7 Deflated Sharpe uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Deflated Sharpe uql time-series exposure.** Model: One Deflated Sharpe caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_deflated_sharpe_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.8 Purged combinatorial cross-validation uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Purged combinatorial cross-validation uql time-series exposure.** Model: One Purged combinatorial cross-validation caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_purged_cv_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.9 Probability of backtest overfitting uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Probability of backtest overfitting uql time-series exposure.** Model: One Probability of backtest overfitting caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_pbo_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.10 Brier uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Brier uql time-series exposure.** Model: One Brier caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_brier_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.11 Kalman uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Kalman uql time-series exposure.** Model: One Kalman caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_kalman_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.12 Ornstein-Uhlenbeck uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Ornstein-Uhlenbeck uql time-series exposure.** Model: One Ornstein-Uhlenbeck caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_ou_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.13 ADF uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**ADF uql time-series exposure.** Model: One ADF caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_adf_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.3.14 Regime HMM uql time-series exposure Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Regime HMM uql time-series exposure.** Model: One Regime HMM caller boundary consumes its shared contract. Behavior: The series operation invokes its shared kernel. Textual admission is a prerequisite owned by the held query lane. Wiring: Reuse `crates/eg-tsdb/src/derive/mod.rs` and `crates/eg-plan/src/exec/derive.rs:21`. Refusal: No silent fallback or duplicate numerical authority is permitted. Evidence: A real UQL request reaches the shared kernel and matches independent vectors through readback. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_regime_hmm_uql`. A real UQL request reaches the shared kernel and matches independent vectors through readback. Invalid arguments and incompatible precision refuse; absent textual admission leaves this obligation unfulfilled. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.2.4 Complete caller coverage check Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Complete caller coverage check.** Model: A versioned census maps every original kernel caller and alias to its migration child. Behavior: Compare the full reference census with the child coverage. Add explicit children for any remaining independent caller before completion. Wiring: The proposed `tests/test_finance_shared_kernel_routes.py` check inspects production references and corresponding served receipts. Refusal: An unmapped, unmigrated or duplicate caller fails qualification. Evidence: Every discovered caller has a named child and observed use of the generic authority. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_complete_caller_coverage`. Every discovered caller has a named child and observed use of the generic authority. Removing a census entry or leaving an old implementation must fail. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.3 Reconcile generated methods and client bindings Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Reconcile generated methods and client bindings.** Model: Rust descriptors remain the method authority. Behavior: reconcile counts, schemas and all generated client bindings in the caller-migration change. Wiring: `crates/eg-capabilities/src/bin/gen_contract.rs` generates the projections. Refusal: stale, missing or duplicated bindings fail qualification. Evidence: compare method identities as well as counts. | Proposed test: `tests/test_finance_shared_kernel_routes.py::test_generated_method_identity_reconciliation`. Regenerate and compare the full identity set. A same-count substitution and a stale client must fail. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.4 Bound original regime derivations and streaming work Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Bound original regime derivations and streaming work.** Model: explicit limits cover dimensions, retained observations, checkpoint bytes, update work and replay work. Behavior: bound every prefix refit before allocation. Wiring: extend `crates/eg-tsdb/src/derive/maintain.rs` and shared numerical admission. Refusal: exhausted limits return typed state-budget or work-budget outcomes. No uncomputed result appears as complete. Evidence: exact-limit and limit-plus-one tests include original regime HMM and new filters. | Proposed test: `crates/eg-tsdb/src/derive/maintain_tests.rs::state_space_resource_bounds`. Compare reported consumption with observed allocations and updates. A rejected update preserves the previous checkpoint. Existing bounded partial progress must expose its cursor and lag. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.5 Define versioned state-space inputs and checkpoints Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Define versioned state-space inputs and checkpoints.** Model: observations carry sequence, event time, known-at time, source revision and typed finite vectors. State includes mean, covariance, cursor, model revision and kernel revision. Behavior: validate dimensions, units, ordering, noise assumptions and all budgets before updating. Wiring: `crates/eg-types/src/series_expr.rs` owns public carriers consumed by eg-numeric. Refusal: conflicting retries, unsupported revisions and invalid covariance refuse without state changes. Evidence: model and checkpoint round trips preserve all fields. | Proposed test: `crates/eg-types/src/series_expr.rs::tests::state_space_model_and_refusals`. Exercise all four models, exact retries, conflicting retries, nonfinite values, dimension errors and invalid covariance. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.6 Apply causal predict-update filtering to four state models Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Apply causal predict-update filtering to four state models.** Rollup: every child below is required; the original acceptance remains mandatory. Model: explicit profiles cover volatility regime, mean-reversion strength, hedge ratio and time-varying factor sensitivity. Behavior: perform the recurrence and initialization defined in plan.md once per ordered observation. State the conditions for optimal linear gain. Wiring: extend `crates/eg-numeric/src/series/kalman.rs`; all profiles share its recurrence. Refusal: invalid transforms and singular innovation covariance refuse. Evidence: independent numerical oracles cover each profile and causal prefix replay. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::four_models_match_independent_oracles`. Compare prior, innovation, gain, posterior and covariance at every step. Future observations must never change an earlier prefix result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.6.1 Shared causal linear recurrence Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Shared causal linear recurrence.** Model: Versioned prior, observation and mutually uncorrelated process/measurement noises define one update. Behavior: Apply the plan recurrence and Joseph covariance once per observation. Preserve causal prefix replay. Wiring: Extend `crates/eg-numeric/src/series/kalman.rs`; R002.5 carriers are a prerequisite. Refusal: Singular innovation covariance and unsupported correlated-noise declarations refuse before state changes. Evidence: The existing scalar rational vectors match every intermediate and checkpoint. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::causal_linear_recurrence_and_noise_refusal`. The existing scalar rational vectors match every intermediate and checkpoint. The Q=1, R=4, cross-covariance=1 declaration refuses; it must not return the independent-noise gain. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.6.2 Volatility regime profile Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Volatility regime profile.** Model: Log variance uses random-walk dynamics and the declared log-return transform. Behavior: Emit latent variance and configured bands after the declared prior or causal warmup. Wiring: Extend `crates/eg-numeric/src/series/kalman.rs` after R002.5 and R002.6.1. Refusal: Invalid profile inputs preserve the prior checkpoint. Evidence: Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Zero returns without an admitted floor and invalid transform revisions refuse. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::volatility_profile_oracle`. Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Zero returns without an admitted floor and invalid transform revisions refuse. Zero returns without an admitted floor and invalid transform revisions refuse. Future observations cannot alter earlier prefix results. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.6.3 Mean-reversion strength profile Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Mean-reversion strength profile.** Model: The varying phi profile binds dt and centering revision. Behavior: Apply the shared recurrence and emit theta only for 0 < phi < 1. Wiring: Extend `crates/eg-numeric/src/series/kalman.rs` after R002.5 and R002.6.1. Refusal: Invalid profile inputs preserve the prior checkpoint. Evidence: Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Other phi values produce the typed non-reverting outcome; invalid dt refuses. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::mean_reversion_profile_oracle`. Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Other phi values produce the typed non-reverting outcome; invalid dt refuses. Other phi values produce the typed non-reverting outcome; invalid dt refuses. Future observations cannot alter earlier prefix results. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.6.4 Hedge ratio profile Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Hedge ratio profile.** Model: The state contains intercept and hedge coefficient with H = [1, hedge_input]. Behavior: Apply the shared recurrence to one aligned pair and preserve units and hedge direction. Wiring: Extend `crates/eg-numeric/src/series/kalman.rs` after R002.5 and R002.6.1. Refusal: Invalid profile inputs preserve the prior checkpoint. Evidence: Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Misaligned pairs and incompatible units refuse. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::hedge_profile_oracle`. Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Misaligned pairs and incompatible units refuse. Misaligned pairs and incompatible units refuse. Future observations cannot alter earlier prefix results. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.6.5 Time-varying factor sensitivity profile Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Time-varying factor sensitivity profile.** Model: Ordered coefficients bind factor identities and source timestamps. Behavior: Apply the shared recurrence to contemporaneously available factor returns. Wiring: Extend `crates/eg-numeric/src/series/kalman.rs` after R002.5 and R002.6.1. Refusal: Invalid profile inputs preserve the prior checkpoint. Evidence: Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Unequal factor arrays, changed ordering and future factor observations refuse. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::factor_profile_oracle`. Independent seeded vectors match every prior, innovation, gain, posterior and covariance. Unequal factor arrays, changed ordering and future factor observations refuse. Unequal factor arrays, changed ordering and future factor observations refuse. Future observations cannot alter earlier prefix results. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.7 Detect innovation shifts and retune within fixed bounds Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Detect innovation shifts and retune within fixed bounds.** Model: versioned windows, thresholds, confirmation count, cooldown and retuning clamps follow plan.md. Behavior: detect persistent innovation-variance shifts and publish the parameter revision effective on the next observation. Wiring: extend the shared eg-numeric filter state. Refusal: invalid windows, unavailable warmup and retuning-budget exhaustion produce typed outcomes. Evidence: stable, shifted and isolated-outlier sequences identify exact trigger indices. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::bounded_innovation_retuning`. Compare window statistics, clamp results, cooldown and revision timing with an independent seeded oracle. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.8 Bound nonlinear approximation and robust tail influence Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Bound nonlinear approximation and robust tail influence.** Model: registered differentiable transition and observation profiles declare Jacobians, domains and approximation revisions. Behavior: linearize once, then apply the bounded robust gain from plan.md. Wiring: extend the existing eg-numeric numerical authority. Refusal: unsupported models, invalid derivatives and nonfinite results refuse. Evidence: linear reduction, nonlinear goldens and extreme innovations cover covariance and bounded influence. No universal optimality claim applies. | Proposed test: `crates/eg-numeric/src/series/kalman.rs::tests::nonlinear_robust_gain`. Use the specified nonlinear profile, both residual signs and seeded heavy-tail vectors. Compare Joseph covariance and bounded corrections with an independent oracle. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.9 Wire versioned filtering through served series operations Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Wire versioned filtering through served series operations.** Model: results expose revisions, cursor, state, covariance, innovation, gain, tail weight, retuning and consumed budgets. Behavior: reuse the existing authorized series and structured-query routes. Wiring: `src/server/handlers/timeseries.rs:367` reaches `derived::maintain_after_append`; `src/server/handlers/query/sql_read.rs:305` handles structured queries. Both reach eg-tsdb and shared eg-numeric kernels. Refusal: unavailable schema support, scope denial and stale checkpoints return typed outcomes. Evidence: authenticated requests reach these production call sites. | Proposed test: `tests/test_finance_state_space_served.py::test_served_filter_wiring`. A real server receives append and structured-query requests. Readback exposes every required diagnostic and revision. Invalid requests must preserve prior derived state. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.10 Prove filtering on the production hot paths Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Prove filtering on the production hot paths.** Model: fixtures pin source, model, schema, kernel and seed identities. Behavior: qualify streaming, chunked and restart replay through the real server. Wiring: `src/server/handlers/timeseries/derived.rs:222` commits derived points and checkpoints; served range queries read them back. Refusal: invalid-input, scope, revision and budget cases must remain observable. Evidence: execute the complete numerical and served matrix in test-spec.md. Helper-only tests cannot satisfy this row. | Proposed test: `tests/test_finance_state_space_served.py::test_stream_restart_refusals_and_hot_path_receipts`. Record exact head, feature set, entry methods, exercised production call sites, request IDs and readback digests. Require all original residual children too. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R003 Compute PBO from a BacktestRun's own CSCV splits Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Compute PBO from a BacktestRun's own CSCV splits.** Probability of backtest overfitting is computed from a BacktestRun's own combinatorial symmetric cross-validation splits rather than a separate caller-supplied summary of performance rows. For each split the implementation selects the top in-sample candidate by a deterministic tie rule, ranks its out-of-sample performance against all candidates, and counts it as overfit only when strictly below the exact median, treating equality to the median as not overfit. | A skilled-strategy fixture and an overfit-strategy fixture each assert the expected PBO value computed directly from the record's own split matrix. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 458eb5bb9475 69979c407216 72c7dfa478ba crates/eg-compute/src/finance/market/record_tests.rs:446 |
| EG-FINANCE-PRIMITIVES-R004 finance-v1 asset, account, and strategy record types Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**finance-v1 asset, account, and strategy record types.** finance-v1 defines validated asset classes for equity, ETF, fund, index, FX pair, commodity spot and future with contract spec, crypto, real-estate holding, and cash, along with Account, Activity, Lot, Position, PortfolioGroup with Basic and Holdings views, StrategySpec, StrategyRun, and LeverageTerms record types. Delivered as child requirements, one per code root, producer first: `EG-FINANCE-PRIMITIVES-R004.1` (ontology/SHACL asset-class vocabulary), `.2` (the Rust record types), `.3` (server wiring and contract regeneration). Every child must satisfy its acceptance before this parent is complete. | Ontology and SHACL schema validation tests confirm each record type enforces its required fields, links, and controlled vocabulary. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | 0ae2193fae8d |
| EG-FINANCE-PRIMITIVES-R004.1 finance-v1 asset-class controlled vocabulary Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**finance-v1 asset-class controlled vocabulary.** The `:assetClass` SHACL shape accepts the canonical `equity`, `etf`, `fund`, `index`, `fx_pair`, `commodity_spot`, `commodity_future`, `crypto`, `real_estate` and `cash` values, plus the deprecated migration aliases `stock`, `forex` and `commodity` preserved from the prior vocabulary. Code root: `crates/eg-core/ontology/finance-v1.ttl` and `finance-v1.shapes.ttl`. | SHACL validation tests assert every canonical and legacy alias value conforms and an unlisted value (for example `bond`) is refused. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 0ae2193fae8d src/server/graph_schema/finance_tests.rs:299 |
| EG-FINANCE-PRIMITIVES-R004.2 finance-v1 Account/Activity/Lot/Position/PortfolioGroup/StrategySpec/StrategyRun/LeverageTerms Rust record types Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**finance-v1 Account/Activity/Lot/Position/PortfolioGroup/StrategySpec/StrategyRun/LeverageTerms Rust record types.** Delivered as child requirements, one per record-type group, producer first: `EG-FINANCE-PRIMITIVES-R004.2.1` (the `Account` and `Position` OWL classes and SHACL shapes), `.2.2` (`Activity` and `Lot`), `.2.3` (`PortfolioGroup`), `.2.4` (`StrategySpec`), `.2.5` (`StrategyRun`) and `.2.6` (`LeverageTerms`). Every child must satisfy its acceptance before this parent is complete. | Ontology and SHACL schema validation tests confirm each record type enforces its required fields, links, and controlled vocabulary. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | a189dbe4067f fd0aa73cb7b5 |
| EG-FINANCE-PRIMITIVES-R004.2.1 Account and Position OWL classes and SHACL shapes Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Account and Position OWL classes and SHACL shapes.** finance-v1 defines `:Account` (a portfolio owner's brokerage/custodial account: `accountId`, `baseCurrency`, closed-vocabulary `accountKind`) and `:Position` (an account's signed holding of one instrument under one cost-basis method: `positionAccount`, `positionInstrument`, `positionQuantity`, closed-vocabulary `costBasisMethod`), distinct from the pre-existing exchange-execution `:PortfolioPosition`. Code root: `crates/eg-core/ontology/finance-v1.ttl` and `finance-v1.shapes.ttl`. | SHACL validation tests assert required fields/links are enforced and each closed vocabulary (`accountKind`, `costBasisMethod`) refuses an unlisted value. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | 1d12fc4e1fff 994ffe8ffa60 a189dbe4067f fd0aa73cb7b5 src/server/graph_schema/finance_tests.rs:230 src/server/graph_schema/finance_tests.rs:260 src/server/graph_schema/finance_tests.rs:45 |
| EG-FINANCE-PRIMITIVES-R004.2.2 Activity and Lot OWL classes and SHACL shapes Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Activity and Lot OWL classes and SHACL shapes.** finance-v1 defines `:Activity` (a point-in-time ledger event against a position: buy, sell, dividend, transfer, split, fee) and `:Lot` (one FIFO/LIFO/specific-lot cost-basis parcel opened by an acquiring activity). Code root: `crates/eg-core/ontology/finance-v1.ttl` and `finance-v1.shapes.ttl`. | SHACL validation tests assert required fields/links are enforced and each closed vocabulary value is checked. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | 1d12fc4e1fff 994ffe8ffa60 a189dbe4067f fd0aa73cb7b5 src/server/graph_schema/finance_tests.rs:230 src/server/graph_schema/finance_tests.rs:260 src/server/graph_schema/finance_tests.rs:45 |
| EG-FINANCE-PRIMITIVES-R004.2.1.1 Account/Position complete shape acceptance Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Account/Position complete shape acceptance.** Run the full required-field and vocabulary matrix against the existing finance SHACL module. Source: `crates/eg-core/ontology/finance-v1.shapes.ttl; src/server/graph_schema/finance_tests.rs`. | Omit each required field independently: accountId, baseCurrency, positionAccount, positionInstrument and positionQuantity. Every omission must refuse. Each IRI link must refuse literal values. Wrong datatypes and duplicate singleton fields refuse. Accept every declared value of accountKind and costBasisMethod; refuse unknown values. Intended test: `src/server/graph_schema/finance_tests.rs::shapes::account_position_complete_schema_matrix (intended test)`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.2.2.1 Activity/Lot complete shape acceptance Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Activity/Lot complete shape acceptance.** Run the full required-field and vocabulary matrix against the existing finance SHACL module. Source: `crates/eg-core/ontology/finance-v1.shapes.ttl; src/server/graph_schema/finance_tests.rs`. | Omit each required field independently: activityPosition, activityKind, activityQuantity, activityTradeDate, lotPosition, lotOpenedBy, lotQuantity and lotUnitCostBasis. Every omission must refuse. Each IRI link must refuse literal values. Wrong datatypes and duplicate singleton fields refuse. Accept every declared value of activityKind; refuse unknown values. Intended test: `src/server/graph_schema/finance_tests.rs::shapes::activity_lot_complete_schema_matrix (intended test)`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.2.3 PortfolioGroup ontology and shapes Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**PortfolioGroup ontology and shapes.** Declare `PortfolioGroup` in the existing finance module. Define its SHACL fields and links from the existing versioned record contract. Reuse shared vocabulary. Source: `crates/eg-core/ontology/finance-v1.ttl; crates/eg-core/ontology/finance-v1.shapes.ttl`. | Native SHACL tests accept a valid record. Missing required fields, invalid links, and unknown closed-vocabulary values refuse. Intended test: `src/server/graph_schema/finance_tests.rs::shapes::portfolio_group_schema_acceptance (intended test)`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.2.4 StrategySpec ontology and shapes Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**StrategySpec ontology and shapes.** Declare `StrategySpec` in the existing finance module. Define its SHACL fields and links from the existing versioned record contract. Reuse shared vocabulary. Source: `crates/eg-core/ontology/finance-v1.ttl; crates/eg-core/ontology/finance-v1.shapes.ttl`. | Native SHACL tests accept a valid record. Missing required fields, invalid links, and unknown closed-vocabulary values refuse. Intended test: `src/server/graph_schema/finance_tests.rs::shapes::strategy_spec_schema_acceptance (intended test)`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.2.5 StrategyRun ontology and shapes Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**StrategyRun ontology and shapes.** Declare `StrategyRun` in the existing finance module. Define its SHACL fields and links from the existing versioned record contract. Reuse shared vocabulary. Source: `crates/eg-core/ontology/finance-v1.ttl; crates/eg-core/ontology/finance-v1.shapes.ttl`. | Native SHACL tests accept a valid record. Missing required fields, invalid links, and unknown closed-vocabulary values refuse. Intended test: `src/server/graph_schema/finance_tests.rs::shapes::strategy_run_schema_acceptance (intended test)`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.2.6 LeverageTerms ontology and shapes Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**LeverageTerms ontology and shapes.** Declare `LeverageTerms` in the existing finance module. Define its SHACL fields and links from the existing versioned record contract. Reuse shared vocabulary. Source: `crates/eg-core/ontology/finance-v1.ttl; crates/eg-core/ontology/finance-v1.shapes.ttl`. | Native SHACL tests accept a valid record. Missing required fields, invalid links, and unknown closed-vocabulary values refuse. Intended test: `src/server/graph_schema/finance_tests.rs::shapes::leverage_terms_schema_acceptance (intended test)`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3 finance-v1 record-type server wiring and contract regeneration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**finance-v1 record-type server wiring and contract regeneration.** The R004.2 record types are wired into server handlers and the generated contract/client surfaces are regenerated to carry them. Split per the dependency-first sizing rule: `EG-FINANCE-PRIMITIVES-R004.3.1` (the wire-boundary schema-version gate) and further children for the served method registration and generated-client contract regeneration. Code root: `src/server/`, `contract/`, generated clients. | A handler test reads/writes each record type through its entry point, and the contract-freshness check passes with the regenerated artifacts committed. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | fcca865a0505 fd0aa73cb7b5 |
| EG-FINANCE-PRIMITIVES-R004.3.1 The wire boundary refuses an unknown finance-v1 schema version Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**The wire boundary refuses an unknown finance-v1 schema version.** `admit_finance_record_version` accepts only the current `finance-v1` declared schema version at the wire boundary, refusing an unknown or empty one rather than silently accepting it or guessing a migration. Code root: `crates/eg-types/src/wire_finance.rs`. | Unit tests assert the current schema version is admitted and an unknown or empty declared version is refused. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 69979c407216 fcca865a0505 crates/eg-types/src/wire_finance.rs:80 crates/eg-types/src/wire_finance.rs:86 crates/eg-types/src/wire_finance.rs:93 |
| EG-FINANCE-PRIMITIVES-R004.3.2 Served record registration and round trips Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Served record registration and round trips.** Rollup of record-specific handler acceptance below. The server must preserve the R004.3 read/write and schema-version acceptance. Intended source: `src/server/handlers/finance.rs`. | Each record-specific child passes through a served entry point. A typed schema gate alone does not satisfy handler acceptance. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.1 Account served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Account served entry point.** The server must register the `Account` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::account_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `Account` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.2 Activity served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Activity served entry point.** The server must register the `Activity` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::activity_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `Activity` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.3 Lot served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Lot served entry point.** The server must register the `Lot` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::lot_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `Lot` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.4 Position served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Position served entry point.** The server must register the `Position` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::position_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `Position` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.5 PortfolioGroup served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**PortfolioGroup served entry point.** The server must register the `PortfolioGroup` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::portfolio_group_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `PortfolioGroup` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.6 StrategySpec served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**StrategySpec served entry point.** The server must register the `StrategySpec` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::strategy_spec_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `StrategySpec` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.7 StrategyRun served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**StrategyRun served entry point.** The server must register the `StrategyRun` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::strategy_run_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `StrategyRun` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.2.8 LeverageTerms served entry point Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**LeverageTerms served entry point.** The server must register the `LeverageTerms` entry point and read/write permitted records through it. It must enforce the declared schema version and existing record policy. Intended source: `src/server/handlers/finance.rs; src/server/handlers/finance/records.rs (intended handler module)`. | Intended test: `src/server/handlers/finance/records/tests.rs::leverage_terms_served_round_trip_and_refusals (intended test)`. A served request round-trips a valid `LeverageTerms` record. Unknown versions and cross-tenant access refuse. Derived-record writes refuse where the record policy prohibits them. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.3 Record contract and generated-client acceptance Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Record contract and generated-client acceptance.** Rollup of schema export and generated-client acceptance below. Both children depend on the served record registration. Intended source: `crates/eg-capabilities/src/bin/gen_contract.rs`. | Both generated-surface children pass. A schema-version constant alone does not establish generated-client support. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.3.1 Finance record contract regeneration Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance record contract regeneration.** The contract generator must export the served record schemas and entry points from their authoritative Rust definitions. Intended source: `crates/eg-capabilities/src/bin/gen_contract.rs; contract/methods.json; contract/schemas/`. | Intended test: `tests/test_contract_wave_surface.py::test_finance_record_contract_surface (intended test)`. The generated contract represents each R004.2 record and served entry point. The contract freshness check rejects stale generated artifacts. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R004.3.3.2 Finance generated-client round trips Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance generated-client round trips.** The generator must produce clients from the record contract. Client tests must round-trip every served record. Intended source: `crates/eg-capabilities/src/bin/gen_contract.rs; epistemic_graph/generated/`. | Intended test: `tests/test_generated_client_contract.py::test_finance_record_client_round_trips (intended test)`. Generated clients preserve all required record fields through served requests. Unknown versions refuse; omitted required fields fail. The generator check rejects stale clients. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R005 Deterministic fixed-point portfolio accounting Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Deterministic fixed-point portfolio accounting.** Portfolio accounting uses fixed-point arithmetic for lot and cost-basis tracking under FIFO, LIFO, specific-lot, and average-cost elections, and derives realized and unrealized profit and loss, time-weighted return, money-weighted return and XIRR, dividend handling, multi-currency conversion at trade and valuation dates, and benchmark comparison. Delivered as child requirements, producer first: `EG-FINANCE-PRIMITIVES-R005.1` (the FIFO/LIFO fixed-point lot-matching engine), `.2` (specific-lot/average-cost elections and transfer/split invariants), further children for P&L/TWR/XIRR/FX/benchmark. Every child must satisfy its acceptance before this parent is complete. | Deterministic unit and golden fixture tests reproduce byte-identical results across replays of the same ordered inputs. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R005.1 FIFO/LIFO fixed-point lot-matching engine Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**FIFO/LIFO fixed-point lot-matching engine.** A pure function over an ordered slice of signed fixed-point buy/sell activities matches sells to open lots under FIFO or LIFO, refusing non-positive quantity/price, out-of-order sequence, and oversold quantity. Code root: `crates/eg-compute/src/finance/lot_accounting.rs`. | Unit tests assert FIFO/LIFO matching order, each refusal, and that replaying the same ordered activities is byte-identical. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 72c7dfa478ba eee78d6b3d1d crates/eg-compute/src/finance/lot_accounting.rs:258 crates/eg-compute/src/finance/lot_accounting.rs:279 crates/eg-compute/src/finance/lot_accounting.rs:298 |
| EG-FINANCE-PRIMITIVES-R005.1.1 FIFO/LIFO lot-matching tests are confirmed to run and pass against mixed buy/sell activity Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**FIFO/LIFO lot-matching tests are confirmed to run and pass against mixed buy/sell activity.** `fifo_closes_the_oldest_lot_first` and its two siblings assert closing behavior using buy-only activity fixtures; confirm these tests actually execute and pass, and extend them to a representative mixed buy/sell activity sequence rather than buy-only fixtures. Code root: `crates/eg-compute/src/finance/lot_accounting.rs`. | Test: `crates/eg-compute/src/finance/lot_accounting.rs::tests::fifo_and_lifo_lot_matching_tests_run_and_pass_against_a_mixed_buy_sell_sequence`. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | ac32740601a8 crates/eg-compute/src/finance/lot_accounting.rs:259 crates/eg-compute/src/finance/lot_accounting.rs:280 |
| EG-FINANCE-PRIMITIVES-R005.2 Specific-lot/average-cost elections and transfer/split invariants Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Specific-lot/average-cost elections and transfer/split invariants.** Oversized; delivered as grandchildren, producer first: `EG-FINANCE-PRIMITIVES-R005.2.1` (the specific-lot election), further grandchildren for average-cost election and transfer/split invariants. Every grandchild must satisfy its acceptance before this parent is complete. | Deterministic unit and golden fixture tests reproduce byte-identical results across replays of the same ordered inputs | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R005.2.1 Specific-lot election Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Specific-lot election.** `LotMethod::Specific(opened_by)` closes exactly the open lot named by its opening sequence instead of a FIFO/LIFO choice, refusing a named lot that is not open and a named lot without enough remaining quantity even when other lots have it. Code root: `crates/eg-compute/src/finance/lot_accounting.rs`. | Unit tests assert the named lot closes instead of the FIFO/LIFO choice, and that an absent or insufficient named lot is refused. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | eadb412ffa03 crates/eg-compute/src/finance/lot_accounting.rs:357 crates/eg-compute/src/finance/lot_accounting.rs:385 crates/eg-compute/src/finance/lot_accounting.rs:406 |
| EG-FINANCE-PRIMITIVES-R005.2.2 Average-cost election Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Average-cost election.** The lot engine must apply an explicit average-cost election using checked fixed-point arithmetic and declared rounding. Intended source: `crates/eg-compute/src/finance/lot_accounting.rs`. | Intended test: `crates/eg-compute/src/finance/lot_accounting.rs::tests::average_cost_election_preserves_basis (intended test)`. Mixed-price buys and partial sells reproduce expected basis and realized gains. Identical ordered inputs replay identically. Oversell and arithmetic overflow refuse. Rounding follows the declared scale without floating-point money. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R005.2.3 Transfer conservation Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Transfer conservation.** The lot engine must conserve aggregate quantity, cash and basis across an ordered paired transfer, accounting for explicit fees. Intended source: `crates/eg-compute/src/finance/lot_accounting.rs`. | Intended test: `crates/eg-compute/src/finance/lot_accounting.rs::tests::paired_transfer_conserves_quantity_cash_and_basis (intended test)`. A transfer preserves source-lot identity and basis across included accounts. Identical ordered inputs replay identically. Unbalanced transfers and insufficient source quantity refuse without a partial ledger update. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R005.2.4 Split basis preservation Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Split basis preservation.** The lot engine must adjust quantity for a declared split ratio while preserving aggregate basis with explicit rounding. Intended source: `crates/eg-compute/src/finance/lot_accounting.rs`. | Intended test: `crates/eg-compute/src/finance/lot_accounting.rs::tests::split_preserves_aggregate_basis (intended test)`. Forward and reverse splits preserve aggregate basis. Identical ordered inputs replay identically. Invalid ratios and arithmetic overflow refuse. Fractional quantities follow the declared rounding policy. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R006 Point-in-time corporate actions and exchange session calendars Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Point-in-time corporate actions and exchange session calendars.** Corporate actions, including splits, dividends, symbol changes, and delistings, are recorded as point-in-time facts, and exchange calendars model regular, pre-market, and post-market sessions. Every price result carries the session in which it was observed. | Golden fixtures covering corporate-action and session-boundary cases assert correct point-in-time resolution and session tagging. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 0374378eb9db 86432b21655e b9870e23567b crates/eg-compute/src/finance/market/resolve.rs:167 |
| EG-FINANCE-PRIMITIVES-R007 Versioned StrategySpec evaluator with DCA, trend, rebalancing Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Versioned StrategySpec evaluator with DCA, trend, rebalancing.** A versioned, typed StrategySpec is evaluated deterministically and ships default strategies for dollar-cost averaging by fixed amount, by shares, or by value-averaging target, trend following using moving-average and trend-flip signals, and calendar- or threshold-based rebalancing. Evaluation emits proposed actions only and never places or authorizes an order. | Deterministic unit tests exercise each default strategy's proposed-action output against fixed input fixtures. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 6602649a6bff |
| EG-FINANCE-PRIMITIVES-R007.1 DCA-by-fixed-amount default strategy evaluator Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**DCA-by-fixed-amount default strategy evaluator.** A versioned `StrategySpec` with a dollar-cost-averaging-by-fixed-amount kind is evaluated deterministically into a proposed buy action, and a non-positive configured amount is refused rather than proposed. Evaluation never places or authorizes an order. | Deterministic unit tests assert the proposed-action output for a fixed-amount input fixture, the refusal on a non-positive amount, and repeat-call determinism. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 6602649a6bff 82cf765518b6 crates/eg-compute/src/finance/strategy.rs:70 crates/eg-compute/src/finance/strategy.rs:85 crates/eg-compute/src/finance/strategy.rs:97 |
| EG-FINANCE-PRIMITIVES-R008 Strategy backtests sealed through BacktestRun Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Strategy backtests sealed through BacktestRun.** Strategy backtests are sealed as BacktestRun records that mandate purged combinatorial cross-validation, deflated Sharpe, probability of backtest overfitting, and transaction costs, and support standard comparisons of dollar-cost averaging, lump-sum, and trend strategies over the same point-in-time universe. | Integration tests seal a BacktestRun for each compared strategy and assert the mandatory validation fields are present and mutually consistent. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | b96ef8ebd9df |
| EG-FINANCE-PRIMITIVES-R008.1 Dollar-cost-averaging backtest seals through BacktestRun Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Dollar-cost-averaging backtest seals through BacktestRun.** A dollar-cost-averaging-by-fixed-amount strategy's simulated contributions seal as a BacktestRun through the existing mandatory-validation seal path, refusing a non-positive contribution amount and any fill outside the point-in-time universe. | An integration test seals a BacktestRun for the fixed-amount DCA strategy and asserts the mandatory CV/Sharpe/PBO fields are present, plus refusal fixtures for a non-positive amount and an out-of-universe fill. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 82cf765518b6 b96ef8ebd9df crates/eg-compute/src/finance/market/strategy_backtest.rs:105 crates/eg-compute/src/finance/market/strategy_backtest.rs:120 crates/eg-compute/src/finance/market/strategy_backtest.rs:129 |
| EG-FINANCE-PRIMITIVES-R009 Calibrated abstaining recommendations with scorecards Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Calibrated abstaining recommendations with scorecards.** Each holding or watchlist item receives a calibrated recommendation of accumulate, hold, de-risk, or abstain, citing the strategy version and supporting evidence, and per-strategy scorecards compare prior recommendations against later outcomes. Recommendations are sealed as informational-only AnalysisSnapshot records that authorize no order. | Unit tests assert that insufficient-evidence conditions produce an abstain result and that a non-abstaining recommendation cites its strategy version and evidence. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | e93220a15cd2 |
| EG-FINANCE-PRIMITIVES-R009.1 Calibrated recommendation decision over flip confidence Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Calibrated recommendation decision over flip confidence.** A calibrated flip-confidence outcome maps to one of accumulate, hold, de-risk, or abstain, citing the strategy version and the calibrated evidence. An abstained confidence outcome always recommends abstain. | Unit tests assert an abstained confidence outcome recommends abstain and a non-abstaining recommendation's result carries its strategy version and the cited evidence. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 82cf765518b6 e93220a15cd2 crates/eg-compute/src/finance/market/recommendation.rs:81 crates/eg-compute/src/finance/market/recommendation.rs:94 |
| EG-FINANCE-PRIMITIVES-R010 Leverage risk module with margin, sizing, live-order boundary Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Leverage risk module with margin, sizing, live-order boundary.** The leverage module models Reg T margin, futures contract specs, leveraged-ETF daily-reset decay, and US FX limits, and simulates margin calls, liquidation, position sizing, and risk of ruin. Analysis defaults to paper mode; a live leveraged order requires a per-instrument policy and designated approvers, and CFDs are flagged unavailable for US retail accounts. | Scenario-based unit tests assert margin-call and liquidation simulation results and confirm live-order eligibility is refused without a matching policy and approver. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 76107c24568d |
| EG-FINANCE-PRIMITIVES-R010.1 Live-order eligibility boundary Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Live-order eligibility boundary.** A live leveraged order is eligible only with a per-instrument policy naming the acting approver; a paper-mode order is never eligible, and a CFD is refused for a US retail account regardless of policy. | Unit tests confirm live-order eligibility is refused for paper mode, a missing policy, an undesignated approver, and a US-retail CFD, and confirm eligibility with a matching policy and approver. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 76107c24568d 82cf765518b6 crates/eg-compute/src/finance/leverage.rs:113 crates/eg-compute/src/finance/leverage.rs:131 crates/eg-compute/src/finance/leverage.rs:151 crates/eg-compute/src/finance/leverage.rs:171 crates/eg-compute/src/finance/leverage.rs:98 |
| EG-FINANCE-PRIMITIVES-R011 Finance alerts published through the finance outbox Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance alerts published through the finance outbox.** Price, trend-flip, DCA-due, and margin-threshold alerts are published as finance events through the outbox topic family for delivery by existing channels. | Integration tests assert each alert condition produces the correct typed event on the outbox and that delivery is idempotent on replay. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | 3eeb3126f421 |
| EG-FINANCE-PRIMITIVES-R011.1 Typed finance alert envelope (producer-first split of R011) Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Typed finance alert envelope (producer-first split of R011).** `FinanceAlertEnvelope` validates its identity, listing, timestamp and message. `FinanceAlertKind` assigns distinct schema names to price, trend-flip, DCA-due and margin-threshold alerts. Source: `crates/eg-types/src/finance_event_envelope.rs`. | Module tests admit a valid envelope and refuse empty identity, listing or message fields and non-positive timestamps. `each_alert_kind_has_a_distinct_outbox_schema` checks four distinct schema names. Transactional append and replay acceptance remain under R011.2 and R011.3. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 3eeb3126f421 crates/eg-types/src/finance_event_envelope.rs:102 |
| EG-FINANCE-PRIMITIVES-R011.2 Finance transactional append Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance transactional append.** Rollup of envelope conversion and atomic append acceptance below. The existing transaction owner remains the outbox authority. Intended source: `src/server/mutation_batch/compile/finish_helpers.rs`. | Both append children preserve the existing flip identity. Envelope validation alone does not establish committed delivery. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R011.2.1 Finance envelope to outbox intent Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance envelope to outbox intent.** The mutation compiler must convert each validated finance alert into the matching typed outbox intent. Intended source: `src/server/mutation_batch/compile/finish_helpers.rs`. | Intended test: `src/server/mutation_batch/compile.rs::tests::finance_alert_intents_preserve_schema_and_identity (intended test)`. Price, trend-flip, DCA-due and margin-threshold alerts preserve their schema, payload and event identity. Invalid envelopes refuse. Existing `finance.flip` identifiers remain unchanged. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R011.2.2 Finance event atomic commit Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance event atomic commit.** The server must append each finance event and its outbox fact within the existing owner transaction. Intended source: `src/server/mutation_batch.rs; src/server/mutation_batch/compile.rs`. | Intended test: `src/server/mutation_batch/tests.rs::finance_alert_and_outbox_commit_atomically (intended test)`. Each alert condition commits its typed event and outbox fact together. Failed transactions publish neither record. Unauthorized tenants and conflicting source revisions refuse. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R011.3 Finance delivery replay Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Finance delivery replay.** The server must preserve one event identity and one outbox fact when it replays a committed finance alert. Intended source: `src/server/mutation_batch.rs; crates/eg-transaction/src/outbox/mod.rs`. | Intended test: `src/server/mutation_batch/tests.rs::finance_alert_replay_preserves_one_outbox_fact (intended test)`. All four alert kinds retain their event identity across replay and restart. Existing `finance.flip` delivery remains compatible. Duplicate replay creates no extra event or delivery fact. Alert delivery never authorizes an order. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R012 Optional one-way Ghostfolio activity import Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Optional one-way Ghostfolio activity import.** An optional Ghostfolio instance on the shared Postgres database attaches through the typed source registry, and a one-way mapper converts its activities into finance-v1 records without EG writing back into Ghostfolio's own schema. Net-new, sliced per the sizing rule: `EG-FINANCE-PRIMITIVES-R012.1` (the typed flow-direction gate and activity mapping) and `.2` (the typed source-registry attachment and disposable-fixture integration tests). | Integration tests against a disposable Ghostfolio fixture assert idempotent, one-way import of activities into finance-v1. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R012.1 A typed gate admits only a one-way Ghostfolio import, never a write-back Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**A typed gate admits only a one-way Ghostfolio import, never a write-back.** `GhostfolioFlowDirection` distinguishes importing FROM Ghostfolio (admitted) from writing BACK to it (refused unconditionally); `map_ghostfolio_activity` maps one activity into a fixed-point `MappedGhostfolioActivity`, refusing a missing source id or a non-positive price. Code root: `crates/eg-compute/src/finance/ghostfolio_import.rs`. | Unit tests assert the import direction is admitted, the write-back direction is always refused, a valid activity maps, and a missing source id or non-positive price is refused. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 82cf765518b6 fcca865a0505 crates/eg-compute/src/finance/ghostfolio_import.rs:152 crates/eg-compute/src/finance/ghostfolio_import.rs:158 crates/eg-compute/src/finance/ghostfolio_import.rs:166 crates/eg-compute/src/finance/ghostfolio_import.rs:174 crates/eg-compute/src/finance/ghostfolio_import.rs:184 |
| EG-FINANCE-PRIMITIVES-R012.2 Ghostfolio attaches through the typed source registry with disposable-fixture coverage Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Ghostfolio attaches through the typed source registry with disposable-fixture coverage.** Depends on `EG-FINANCE-PRIMITIVES-R012.1`. `register_ghostfolio_source` attaches an optional Ghostfolio instance under a source name, admitted only via the `ImportFromGhostfolio` direction. `import_ghostfolio_fixture` maps a disposable fixture of raw activity rows, deduplicating by `ghostfolio_activity_id` so a repeated row or a re-run import is idempotent. Code root: `crates/eg-compute/src/finance/ghostfolio_import.rs`. | Integration tests against a disposable Ghostfolio fixture assert idempotent, one-way import of activities into finance-v1. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | eadb412ffa03 crates/eg-compute/src/finance/ghostfolio_import.rs:191 crates/eg-compute/src/finance/ghostfolio_import.rs:198 crates/eg-compute/src/finance/ghostfolio_import.rs:221 |
| EG-FINANCE-PRIMITIVES-R013 Golden accounting and risk fixtures with full provenance Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Golden accounting and risk fixtures with full provenance.** Finance golden fixtures cover broker statements, corporate actions, daylight-saving and session boundaries, leveraged-ETF decay against published returns, and futures rolls, using fixed-point arithmetic with no floating-point money. Every displayed figure carries its source, as-of time, and session. Net-new, sliced per the sizing rule: `EG-FINANCE-PRIMITIVES-R013.1` (the figure shape and provenance-refusal gate) and `.2` (the fixtures themselves, compared against published reference values). | Golden fixture tests compare computed results against published reference values and assert the source, as-of, and session provenance fields are present on every output. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R013.1 A golden-fixture figure is refused when its provenance is incomplete Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**A golden-fixture figure is refused when its provenance is incomplete.** `GoldenFixtureFigure` carries a fixed-point `value_ticks`, `source`, `as_of`, and `session`; `check_figure_provenance` refuses a figure missing any provenance field. Code root: `crates/eg-compute/src/finance/golden_fixture.rs`. | Unit tests assert a fully-provenanced figure is admitted and a figure missing its source, as-of time, or session is refused. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 168b52ef6307 fcca865a0505 crates/eg-compute/src/finance/golden_fixture.rs:117 crates/eg-compute/src/finance/golden_fixture.rs:123 crates/eg-compute/src/finance/golden_fixture.rs:132 crates/eg-compute/src/finance/golden_fixture.rs:140 |
| EG-FINANCE-PRIMITIVES-R013.2 Golden fixtures compare computed figures against published reference values Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Golden fixtures compare computed figures against published reference values.** Depends on `EG-FINANCE-PRIMITIVES-R013.1`. Oversized; delivered as grandchildren, producer first: `EG-FINANCE-PRIMITIVES-R013.2.1` (the broker-statement comparator), `.2.2` (corporate-action fixtures), `.2.3` (DST/session-boundary fixtures), `.2.4` (leveraged-ETF-decay fixtures), and `.2.5` (futures-roll fixtures). Comparator unit tests alone do not establish independent broker-statement dataset acceptance. Every grandchild must satisfy its acceptance before this parent is complete. | Golden fixture tests compare computed results against published reference values and assert the source, as-of, and session provenance fields are present on every output. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R013.2.1 Broker-statement golden fixture comparison Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Broker-statement golden fixture comparison.** `compare_broker_statement_figure` refuses a computed `GoldenFixtureFigure` with incomplete provenance (via `check_figure_provenance`) before comparing it, then refuses a `value_ticks` that diverges from its published reference tick value. Code root: `crates/eg-compute/src/finance/golden_fixture.rs`. | Golden fixture tests compare a computed figure against its published reference value and assert provenance is checked first. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | eadb412ffa03 crates/eg-compute/src/finance/golden_fixture.rs:148 crates/eg-compute/src/finance/golden_fixture.rs:156 crates/eg-compute/src/finance/golden_fixture.rs:168 |
| EG-FINANCE-PRIMITIVES-R013.2.2 Corporate-action golden fixtures against published notices Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Corporate-action golden fixtures against published notices.** Reuse the existing corporate-action and fixed-point accounting authorities to replay checked-in split and dividend vectors from independently published issuer or exchange notices. Record the notice URL, publication/version and content digest, effective/as-of time, session and currency; every computed figure passes R013.1. Planned code root: `crates/eg-compute/src/finance/`. | Exact reference share, basis and cash ticks match before and after the action; a changed reference value or missing source/as-of/session fails. Expected values must be independently transcribed from the cited source, never computed by the implementation under test. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R013.2.3 DST and session-boundary golden fixtures against published exchange calendars Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**DST and session-boundary golden fixtures against published exchange calendars.** Replay checked-in opening/closing and daylight-saving transition vectors using versioned exchange calendar and offset source records. Record the source URL, publication/version and content digest, as-of time and expected session on each result. Every displayed figure passes R013.1. Planned code root: `crates/eg-compute/src/finance/`. | Published boundary and offset vectors reproduce the expected session and timestamp across both DST transitions. Incorrect offsets/session labels and missing source/as-of/session fail. Replaying under different host time zones cannot change the reference result. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R013.2.4 Leveraged-ETF daily-reset decay golden fixtures against published returns Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Leveraged-ETF daily-reset decay golden fixtures against published returns.** Run the existing daily-reset calculation over a checked-in multi-session path and compare with independently published fund return/NAV references under explicit fee and rounding assumptions. Record the provider URL, publication/version and content digest, as-of time, session and currency; use fixed-point money and the R013.1 gate. Planned code root: `crates/eg-compute/src/finance/`. | The reference path matches exact ticks under the documented scale/rounding policy and exhibits the published daily-reset result; a changed return/reference, an omitted reset, or missing source/as-of/session fails. Expected values cannot be derived by the implementation under test. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R013.2.5 Futures-roll golden fixtures against published contract and settlement records Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Futures-roll golden fixtures against published contract and settlement records.** Replay a checked-in expiring-to-successor contract roll through existing finance authorities using independently published exchange settlements, expiry dates, tick sizes and multipliers. Record source URLs, publication/versions and content digests, as-of time, session and currency; use fixed-point money and the R013.1 gate. Planned code root: `crates/eg-compute/src/finance/`. | Roll cash and position values match independent reference ticks for the declared contracts and roll policy; wrong contract terms/reference ticks and missing source/as-of/session fail. Replaying the same sourced vector is byte-identical. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R014 finance-v1 thin instrument and signal module Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**finance-v1 thin instrument and signal module.** finance-v1 defines a thin module of Instrument, Listing, Venue, BarSeries, IndicatorSpec, SignalState, TrendFlip, and MacroEvent types aligned to the FIBO ontology. | Schema validation tests confirm each type's required fields and its alignment to the FIBO ontology. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 46c93a87f9ed 532418b7e55b src/server/graph_schema/finance_tests.rs:230 src/server/graph_schema/finance_tests.rs:83 |
| EG-FINANCE-PRIMITIVES-R015 AnalysisSnapshot records with share.read control leases Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**AnalysisSnapshot records with share.read control leases.** AnalysisSnapshot records capture informational analysis output together with a share.read control-lease link for access control, and each snapshot carries a notice marking the output as informational-only. | Unit tests assert a sealed AnalysisSnapshot includes its control-lease link and informational-only notice. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | 3899594fed44 |
| EG-FINANCE-PRIMITIVES-R016 Incremental deterministic indicator kernels with Pine parity Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Incremental deterministic indicator kernels with Pine parity.** Indicator kernels for ATR, SuperTrend, SMA and EMA, 200-week SMA, the 20/21 band, and Heikin-Ashi are computed incrementally and deterministically, with Pine parity fixtures proving the reference implementation matches. | Parity fixture tests compare each kernel's output against the Pine reference implementation on shared bar data. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 532418b7e55b 8bb121fedd18 crates/eg-compute/src/finance/market/pine_parity_tests.rs:102 crates/eg-compute/src/finance/market/pine_parity_tests.rs:112 crates/eg-compute/src/finance/market/pine_parity_tests.rs:122 crates/eg-compute/src/finance/market/pine_parity_tests.rs:134 crates/eg-compute/src/finance/market/pine_parity_tests.rs:165 |
| EG-FINANCE-PRIMITIVES-R017 BacktestRun provenance record with mandatory fields Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**BacktestRun provenance record with mandatory fields.** A BacktestRun record captures full provenance for a backtest, including mandatory purged combinatorial cross-validation, deflated Sharpe, probability of backtest overfitting, transaction costs, the fill rule, the point-in-time universe, and a no-look-ahead check. | Unit tests assert sealing a BacktestRun without any mandatory field is refused and that a valid record passes the no-look-ahead check. | requirement | EG-FINANCE-PRIMITIVES | VERIFIED | 46c93a87f9ed 532418b7e55b crates/eg-compute/src/finance/market/record_tests.rs:379 crates/eg-compute/src/finance/market/record_tests.rs:420 |
| EG-FINANCE-PRIMITIVES-R018 Factor research records each factor as a typed node (rollup) Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Factor research records each factor as a typed node (rollup).** The finance domain must compute information coefficient and information ratio per factor and rank the factors. It must record each factor as a typed graph node with provenance to its inputs. | Tests prove ranking, node recording and typed abstention on thin input. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R018.1 Model Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Model.** `crates/eg-compute/src/finance/factor.rs` must define `FactorRecord` with factor id, information coefficient, information ratio, rank and input provenance keys. | Unit test round-trips a record and rejects an empty provenance list. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R018.2 Behavior Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Behavior.** `rank_factors` must call `information_coefficient` and `information_ratio` at `crates/eg-numeric/src/evaluation/skill.rs:16` and `:31`. The rank rule should default to absolute information ratio. | Unit test ranks three factors in the expected order. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R018.3 Wiring Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Wiring.** The route for `FinanceInformationCoefficient` at `src/server/handlers/finance/route_families.rs:211` must dispatch to `rank_factors` for a factor set. Its production caller is the served finance wire method. | Test asserts a factor-set request reaches `rank_factors`. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R018.4 Refusal Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Refusal.** Empty or single-row input must return the typed abstention `FACTOR_INSUFFICIENT_DATA` and record no node. | Test sends zero and one row and asserts the abstention and no node. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R018.5 Evidence Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Evidence.** Each recorded node must carry `derivedFrom` edges to its inputs and the kernel versions used. | Test reads one node and asserts the edges and versions. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R018.6 Hot-path proof Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Hot-path proof.** The entry point is the served finance wire method. It must rank three factors and write three nodes. | Integration test `tests/finance_factor_ranking.rs` asserts the ranking, the nodes and the edges. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R015.1 Immutable order-proposal snapshot and atomic admission boundary Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Immutable order-proposal snapshot and atomic admission boundary.** EG owns `OrderProposalSnapshotV1` with `{tenant_id, proposal_id, revision, predecessor_digest, decision_id, decision_revision, decision_digest, payload_schema_id, payload_schema_revision, canonical_payload_bytes, payload_sha256, policy_id, policy_revision, policy_digest, evidence_refs: [{owner_requirement_id, record_id, revision, digest}]}`. EG defines typed `FinanceOrderProposal.StageV1` and `FinanceOrderProposal.PromoteV1` methods. `StageV1` accepts the snapshot plus expected head revision/digest. It creates a sealed, create-only, content-addressed snapshot. It returns `{proposal_id, revision, predecessor_digest, snapshot_digest, state=staged}`. Revision 1 has no predecessor. Each later revision names the exact prior digest and uses expected-head compare-and-set. An exact same-revision/digest retry is idempotent. Conflicting bytes at that revision refuse. `PromoteV1` accepts `{tenant_id, proposal_id, candidate_revision, snapshot_digest, expected_promoted_revision, required_gate_manifest_digest, gate_receipts}`. Each gate receipt binds `{gate_id, gate_revision, candidate_digest, pass_fail, evidence_digest}`. Recompute SHA-256 over schema-versioned canonical payload bytes and the staged digest. Validate R019 decision verification/approval and applicable R010 risk/sizing policy. Include per-instrument policy and designated approvers when applicable. Atomically write the promoted pointer, append-only `derivedFrom` history, and `OrderAdmissionReceiptV1`. The receipt binds `{proposal_id, revision, snapshot_digest, decision_digest, policy_id, policy_revision, policy_digest, gate_manifest_digest, gate_receipt_digests, transaction_revision}`. A stale head, payload/hash mismatch, missing or mismatched evidence, failed or unavailable gate, incomplete receipts, or hook veto refuses. Refusal writes no pointer, history, or admission receipt. Output means host-review admission only. It is not an order or provider effect. Preserve `EG-DECISION-ENGINE-R019`, `EG-DURABLE-KERNEL-R057`, and `EG-FINANCE-PRIMITIVES-R015`. **Exact cross-owner hold:** the reviewed evidence lacks the SDK writeback payload schema/version. It lacks the admission-gate manifest owner, complete gate-id set, and required hook contracts. It also lacks GraphOS confirmation operation and receipt fields. Until those owners define them, EG may stage and validate the opaque versioned snapshot. EG must refuse promotion for host review. SDK writeback must not cause an effect. Source record SHA-256 `e3ad9b1e3121eb3278c3e2b52ce948817e317db3de48d5886a624ffe2ba9be47`. This remains SPECIFIED; no implementation or consumer receipt is claimed. | Planned tests: `StageV1` creates and independently reads back revision 1. Stage revision 2 with the correct predecessor. Prove exact retries are idempotent. Refuse same-revision byte changes, hash mismatches, stale heads, missing/mismatched DecisionCommit or R010 evidence, incomplete receipts, and each failed/unavailable gate. Each refusal leaves pointer, history, and receipt absent and unchanged. Promotion must refuse with no writes until the SDK schema, gate registry, and GraphOS confirmation contract are served. Then prove atomic admission with host-review-only output. No order is sent. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-FINANCE-PRIMITIVES-R002.11 Multi-horizon Markov regime forecast and policy-bound sizing input Definition — EG-FINANCE-PRIMITIVES / EG-FINANCE-PRIMITIVES — Finance primitives: accounts, strategies, risk and evidenceCanonical requirement and verification source**Multi-horizon Markov regime forecast and policy-bound sizing input.** Extend the existing `eg-numeric` regime-HMM kernel and typed model route from R002.1.14/R002.9. `RegimeForecastV1` accepts `{model_id, model_revision, source_series_id, source_revision, as_of, increasing_positive_horizons, horizon_unit, calibration_policy_id, calibration_policy_revision, calibration_policy_digest, heldout_dataset_digest}`. Resolve ordered state IDs, posterior `p0`, and transition matrix `T` only from the pinned HMM model/source revision. Refuse caller-supplied state probabilities or `T`. For each horizon `h`, compute `p_h=p0*T^h` and preserve state order. Return `{forecast_digest, model/source revisions, as_of, ordered_state_ids, posterior_p0, transition_matrix_digest, per_horizon_probability_vectors, per_horizon_top_state_probability, calibration_evidence_by_horizon}`. Require finite nonnegative probabilities. Require the posterior, held-out prediction, output vectors, and transition rows to sum to one within pinned model precision. Each held-out sample binds `{sample_id, model_revision, source_series_id, origin_as_of, horizon, ordered_state_ids, predicted_probability_vector, realized_state_id, target_observation_at, scoring_revision}`. Require origin before target observation. Require unique sample IDs and matching state order/model revision. Require one row per source/origin/horizon. Compute categorical Brier separately for each horizon: `Brier_h = (1/N_h) Σ_n Σ_s (p_{n,h,s} - 1[y_n=s])²`. Bind dataset, model, state-order, and scoring revisions. Require positive `N_h` meeting `minimum_heldout_examples_by_horizon`. A versioned policy supplies per-horizon `max_brier_by_horizon` in [0,2]. It supplies `min_top_state_probability_by_horizon` in [0,1]. It supplies positive integer `minimum_heldout_examples_by_horizon`. Each policy map covers every requested horizon exactly once. All thresholds must pass before sizing eligibility. Return `{horizon, dataset_digest, model_revision, state_ids_digest, scoring_revision, calibration_policy_digest, sample_count, brier, applied_thresholds, passed}`. R010 sizing consumes the forecast digest and `RegimeSizingPolicyV1` `{policy_id, revision, instrument_id, target_weight_by_state, unit, fixed_point_scale, risk_cap}`. All state weights and the risk cap use the same R010 policy unit/scale. Compute `expected_target_weight_h=Σ_s p_{h,s}×target_weight_s`, then apply its risk cap. Missing weights, exceeded cap, stale revision, or failed calibration returns typed abstention and no sizing value. Never create an order. Invalid dimensions, duplicate state IDs, negative/nonfinite probabilities, and non-stochastic rows refuse. Empty/unsorted horizons and stale model/source revisions also refuse. Duplicate, missing, or future-leaking calibration rows refuse. Zero denominator, sample counts below the policy floor, invalid policy, or unknown thresholds refuse. A refused forecast is never sizing-eligible. Preserve `EG-DECISION-ENGINE-R103`, `EG-FINANCE-PRIMITIVES-R002`, R010, R002.1.14, R002.6.2, and R009.1. R009.1 remains flip calibration, not state calibration. **Exact policy hold:** source evidence supplies no Brier thresholds, confidence floors, sample floors, state weights, or risk cap. A complete versioned policy must supply each value. No defaults exist. Missing or invalid values refuse sizing. Source record SHA-256 `037f3edf5fe38f55ac24d6e0cc7bd85f1efc60cadf7c97b66b44978613a7acb6`. This remains SPECIFIED; no implementation or served receipt is claimed. | Planned tests: Seed a three-state transition matrix and compare independent `p0*T^h` vectors at every horizon. Confirm each vector sum is one. Compare held-out Brier with the formula using a positive denominator. Bind dataset, model, state order, and scoring revision. Confirm deterministic sizing with a complete policy. Refuse malformed matrices/vectors, nonfinite/negative values, duplicate/reordered states, stale revisions, and invalid horizons. Also refuse missing/duplicate samples and future-leaking origins. Refuse zero denominator, low sample counts, threshold failures, missing weights, and risk-cap excess. Vary one state probability and prove sizing changes only through bound R010 policy. No live-order effect occurs. Missing policy values refuse; they are not runtime test claims. | requirement | EG-FINANCE-PRIMITIVES | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER EG-INGEST-WORKER — Durable ingest worker | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001 Ingest worker capability is served by the engine queue and run by the SDK runner (rollup) Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Ingest worker capability is served by the engine queue and run by the SDK runner (rollup).** Replaces agent-utilities `kg-ingest-worker` (ingest_worker.py, deleted by commit b02e39950). Split into `EG-INGEST-WORKER-R001.1`-`EG-INGEST-WORKER-R001.17`; satisfied only when every child is satisfied. | See each child. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.1 Typed ingest job envelope with refusal tests Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Typed ingest job envelope with refusal tests.** `eg-types` (file to be created: crates/eg-types/src/ingest_job.rs) defines `IngestJobEnvelope{job_id, tenant, corpus_key, kind, target, attempt}`. A blank job_id, blank target, unknown kind or attempt above the retry ceiling is refused with a typed error. | Unit tests in the same file cover each refusal and a serde round trip. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.2 Typed job kinds and lane derivation Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Typed job kinds and lane derivation.** One `IngestJobKind` enum (document, codebase, skill_workflows, capability_hydration) and one pure function `lane_for(kind)` returning hydration for skill_workflows and capability_hydration, general otherwise, in the same file as R001.1. | Unit test asserts the lane for every kind. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.3 Partition key function Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Partition key function.** One pure function `partition_key(envelope)` in the same file returns the tenant, then corpus, then kind hierarchy so the queue can keep per-tenant and per-corpus ordering without global serialization. | Unit test asserts equal keys for jobs of one corpus and different keys across tenants. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.4 Enqueue maps onto the served task queue with deterministic ids Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Enqueue maps onto the served task queue with deterministic ids.** One function `enqueue_ingest_job` in crates/eg-capabilities/src (file to be created: ingest_queue.rs) wraps `TaskQueueEnqueue` from EG-DURABLE-KERNEL-R072 on queues `ingest` and `ingest-hydration`, deriving the task id from job_id so a duplicate enqueue is a no-op. | Integration test enqueues the same job twice and asserts one claimable task. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.5 Prerequisite: durable task queue (this repository, EG-DURABLE-KERNEL-R071, R072, R073) Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Prerequisite: durable task queue (this repository, EG-DURABLE-KERNEL-R071, R072, R073).** Typed enqueue/claim/ack model, served RPC pair and generated Python client methods must land before R001.4 and R001.11. Not re-specified here. | Linked rows verified by their own tests. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.6 Prerequisite: worker registry, reserved admission and scheduler floors (this repository, EG-DURABLE-KERNEL-R074, R075, R076) Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Prerequisite: worker registry, reserved admission and scheduler floors (this repository, EG-DURABLE-KERNEL-R074, R075, R076).** The reserved hydration floor in R001.10 is computed from the served `SchedulerConfig` lane floors, not a worker-side environment knob. | Linked rows verified by their own tests. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.7 Typed retry policy with validation Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Typed retry policy with validation.** One `IngestRetryPolicy{max_attempts, base_delay, max_delay, jitter}` model in the same file as R001.1; zero attempts, base above max, or negative jitter is refused. | Unit tests for each refusal. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.8 Retry delay function with jitter Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Retry delay function with jitter.** One function `next_delay(policy, attempt, seed)` returns a bounded exponential delay with jitter so idle or failed workers do not retry in lockstep. | Unit test asserts the bound, monotonic growth and that two seeds differ. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.9 Failure routing: retry then dead letter Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Failure routing: retry then dead letter.** The ack path of R001.4 maps a failed outcome to redelivery with `next_delay` while attempts remain, and to a dead-letter record carrying the last error once exhausted. Reuse the SourceIngest dead_letter capability named in EG-REPO-INGEST-R002 rather than a second dead-letter writer. | Integration test fails a job past max_attempts and asserts one dead-letter record and no further delivery. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.10 Hydration-reserved lane served as a distinct queue Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Hydration-reserved lane served as a distinct queue.** Claim on `ingest-hydration` is admitted first for reserved workers using `AdmitWorkerTask` (EG-DURABLE-KERNEL-R075); a lone worker is never fully reserved. | Integration test with a one-worker pool asserts it still claims general work; with two, one claims hydration first. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.11 Backpressure read and producer refusal Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Backpressure read and producer refusal.** One read op `IngestQueueDepth` returns depth and oldest-age per queue. `enqueue_ingest_job` refuses above a configured depth with stable code INGEST_QUEUE_FULL and bounded detail so producers can slow down. | Integration test fills the queue to the limit and asserts the refusal code and that depth is unchanged. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.12 Lease renewal for long jobs Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Lease renewal for long jobs.** The runner renews the claim through the existing `RenewWorkItemLease` method at a third of the lease. A missed renewal lets the job redeliver. Already provided by the work-item coordination domain. Verify with a test. | Integration test pauses renewal and asserts redelivery after expiry. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.13 Ingest queue metrics Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Ingest queue metrics.** Engine exports gauges `eg_ingest_queue_depth`, `eg_ingest_oldest_age_seconds` and counters `eg_ingest_jobs_total{outcome}`, `eg_ingest_dead_letter_total`, from the R001.11 read. | Metrics test scrapes after one success, one retry and one dead letter and asserts the values. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.14 Cross-repo (connector SDK repository): ingest worker runner Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Cross-repo (connector SDK repository): ingest worker runner.** Add a runner module with one function `run_ingest_worker` that claims through the generated client, executes the job body, acks success or failure, and commits only after the ack (at-least-once). The job body reuses the SDK's existing source-effect runners; EG holds no source credentials. | SDK unit test with a fake client asserts ack after execution and no ack when the body is killed. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.15 Cross-repo (connector SDK repository): CLI entry point and autosize Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Cross-repo (connector SDK repository): CLI entry point and autosize.** Add one console command `ingest-worker` with `--workers` (default CPU and memory autosized, 0.36 of cores, 3 GiB per worker) and `--engine-endpoint`; it fails loud with a non-zero exit if the engine is unreachable or lacks the task-queue methods before claiming anything, and drains on SIGTERM. | CLI test asserts exit code 2 against an unreachable engine and clean drain on SIGTERM. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.16 Cross-repo (graph-os): host and supervise the worker Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Cross-repo (graph-os): host and supervise the worker.** graph-os declares the worker as a supervised deployment unit and surfaces its health and the R001.13 metrics through its existing health route. It does not contain job logic. | Graph-os health test asserts a stopped worker shows as unhealthy. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R001.17 Parity test against the deleted module Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Parity test against the deleted module.** One test enumerates the parity table in plan.md and asserts every row marked exists or to-build has a passing proving test, and rows marked dropped carry a reason. | The test runs in the spec checks. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002 Ontology induction from text stays a draft until it passes checks (rollup) Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Ontology induction from text stays a draft until it passes checks (rollup).** The ingest worker must propose classes and properties from unstructured text, then populate instances against that proposal. A proposal must be admitted only after property-coverage and redundancy checks pass. Otherwise it must stay a draft [arXiv:2511.11017]. | Tests prove a passing proposal is admitted and a failing one stays a draft. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002.1 Model Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Model.** `crates/eg-types/src/ontology_proposal.rs` must define `OntologyProposal` with classes, properties, a `state` of `Draft` or `Admitted`, and provenance. New proposals must start as `Draft`. | Unit test round-trips a proposal and asserts the initial state. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002.2 Behavior Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Behavior.** `score_proposal` must compute property coverage and class redundancy. The defaults should be coverage of at least 0.8 and redundancy of at most 0.1, replaced by measurement. | Unit test checks three proposals against both thresholds. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002.3 Wiring Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Wiring.** The `ingest_document` job body must call `score_proposal` after induction. This row creates the call site in `crates/eg-capabilities/src/ingest_queue.rs`, reached from the runner of R001.14. | Test runs one document job and asserts the check ran. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002.4 Refusal Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Refusal.** A proposal that fails a check must stay `Draft` and return `PROPOSAL_NOT_ADMITTED` with the failing check. Instances must not populate against it. | Test fails coverage and asserts the draft state and zero instances. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002.5 Evidence Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Evidence.** Each job must record `coverage`, `redundancy` and `decision` in its trace. | Test reads the trace after one admitted and one draft job. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R002.6 Hot-path proof Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Hot-path proof.** The entry point is the served ingest queue claim. A worker claims a document job and the passing proposal must reach `Admitted`. | Integration test `tests/ingest_ontology_induction.rs` runs one passing and one failing document and asserts both states. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003 Documents become typed knowledge atoms with mandatory provenance (rollup) Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Documents become typed knowledge atoms with mandatory provenance (rollup).** The ingest worker must decompose documents and interactions into typed atoms, each with a provenance key. A query must select only relevant atoms to build context. Children `.1` to `.18` cover atoms, normalized documents and transcript records. [arXiv:2606.12400] [arXiv:2606.19847] | Satisfied only when `.1` to `.18` are verified. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.1 Model Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Model.** `crates/eg-types/src/knowledge_atom.rs` (new; search terms in `plan.md`) must define `KnowledgeAtom` with `atom_id`, `kind`, `text`, `provenance_key` and `tenant`. The `kind` set is closed: fact, event, preference, procedure. | Unit test round-trips an atom and rejects an unknown kind. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.2 Behavior Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Behavior.** `decompose(document, policy)` must emit atoms from the parsed chunks of `crates/eg-document/src/contract.rs:141`. `select_atoms(query, atoms, budget)` must rank atoms by relevance and stop at the token budget. Both defaults should be replaced by measurement. | Unit test decomposes one document and selects under a budget. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.3 Wiring Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Wiring.** The `ingest_document` job body must call `decompose` and store atoms. This row creates the call site in `crates/eg-capabilities/src/ingest_queue.rs`, reached from the runner of R001.14. The context query path must call `select_atoms`. No production caller exists for either function today. | Test runs one document job and asserts atoms exist. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.4 Refusal Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Refusal.** An atom without a provenance key must return `ATOM_PROVENANCE_MISSING` and must not be stored. A query over zero relevant atoms must return an empty context, not a guess. | Test submits an atom without provenance and asserts the refusal and zero stored atoms. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.5 Evidence Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Evidence.** Each job must record `atoms_emitted`, `atoms_refused` and the context query must record `atoms_selected` and `tokens_used` in its trace. | Test reads the trace after one job and one query. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.6 Hot-path proof Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Hot-path proof.** The entry point is the served ingest queue claim. A worker claims a document job. A later query assembles context from atoms alone and cites each provenance key. | Integration test `tests/ingest_knowledge_atoms.rs` ingests one document, queries it and asserts selected atoms and provenance. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.7 Model Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Model.** The engine must add `NormalizedDocument`, `NormalizationReceipt` and `QuarantineReceipt` in new `crates/eg-types/src/source_document.rs`. They must reuse `SourceIngestionRequest` at `crates/eg-types/src/source_ingestion.rs:265`. Fields must include source digest, mapping revision, document ID, atom IDs and concept IDs. `SourceIngestionOutcome` must distinguish `Accepted(SourceIngestionReceipt)` from `Quarantined(QuarantineReceipt)`. The quarantine receipt must carry a typed reason, restricted evidence reference, replay disposition and optional prior accepted checkpoint. The engine must derive tenant and policy identities from verified server authority. | Planned proving test: `crates/eg-types/src/source_document.rs::tests::document_receipt_round_trips`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.8 Behavior Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Behavior.** The engine must validate normalized documents against resolved mappings in `src/server/handlers/source_ingestion.rs`. The named default `complete_document` must require valid structure and provenance for every atom. The default `content_identity` must bind tenant, connector, stream, source record ID and digest. Successful retries must reuse the committed receipt. Validators must consume one resolved mapping snapshot before source admission or graph projection. | Planned proving test: `src/server/handlers/source_ingestion.rs::tests::complete_document_is_idempotent`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.9 Wiring Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Wiring.** The engine must extend `prepare` at `src/server/handlers/source_ingestion.rs:155`. Authorization and the authorized committed-replay shortcut at lines 159–170 must remain first. New batches must resolve trusted mappings once at line 174, then validate before reconciliation and admission. The existing caller is `route_source_ingestion_request` at `src/server/dispatch/graph_pipeline/native_routes.rs:408`. It must commit one accepted or quarantine envelope at line 428, then call `finish` at line 429. This row creates the document validator call; no production caller reaches that validator today. | Planned proving test: `src/server/handlers/source_ingestion.rs::tests::prepare_validates_document_after_resolution`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.10 Refusal Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Refusal.** The engine must add typed `DocumentIngestError` in `crates/eg-types/src/source_document.rs`. Codes must include `NormalizationFailed`, `MissingProvenance` and `MappingRevisionMismatch`. Normalization failure must produce a prepared quarantine outcome, not an error that bypasses commit. Its envelope must store restricted evidence without accepted projections, source-marker changes or checkpoint advancement. The prior accepted checkpoint must remain unchanged, including `None`. Authorization or commit failure must return refusal without claiming durable quarantine. | Planned proving test: `src/server/handlers/source_ingestion.rs::tests::invalid_document_quarantines_without_partial_graph`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.11 Evidence Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Evidence.** The engine must extend `finish` and `prepared_replay` at `src/server/handlers/source_ingestion.rs:1683` and `src/server/handlers/source_ingestion.rs:1791`. They must return the stored typed outcome only after commit or authorized committed replay. Accepted outcomes must retain `SourceIngestionReceipt`; quarantine must not fabricate its mandatory accepted checkpoint. Quarantine evidence must include source digest, mapping revision, rule ID, optional prior checkpoint and committed graph version. Replay must preserve that receipt and must not reset the current source checkpoint. Quarantine detail must omit source text. | Planned proving test: `src/server/handlers/source_ingestion.rs::tests::quarantine_finish_and_replay_preserve_outcome`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.12 Hot-path proof Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Hot-path proof.** The entry point must be the served `SourceIngest` wire method. `tests/ingest/test_document_normalization_served.py::test_document_batch_is_atomic` must prove accepted replay and zero partial projections for a mixed invalid batch. `test_first_batch_quarantine_and_replay` must prove durable quarantine with prior checkpoint `None`, then replay without another quarantine record. `test_quarantine_preserves_prior_checkpoint` must cover prior acceptance and later successful ingestion before quarantine replay. `test_failed_quarantine_commit_is_not_reported_durable` must reject false durable receipts. `test_quarantine_reads_require_policy` must deny same-tenant unauthorized receipt, provenance and raw-reference reads. | Planned proving test: `tests/ingest/test_document_normalization_served.py::test_document_batch_is_atomic`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.13 Model Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Model.** The engine must add `TranscriptThread` and `TranscriptMessage` in new `crates/eg-types/src/source_transcript.rs`. Fields must include connector, stream, session ID, message ID, role, event time, storage time, concept references and provenance. Roles must be `System`, `User`, `Assistant` or `Tool`. A thread must hold ordered message references. The engine must derive tenant and policy identities from verified server authority. Connector and stream must match the validated source request. | Planned proving test: `crates/eg-types/src/source_transcript.rs::tests::transcript_round_trips`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.14 Behavior Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Behavior.** The engine must add `validate_transcript` in new `src/server/handlers/source_ingestion/transcript.rs`. The named default `source_sequence` must preserve source order and distinguish event time from storage time. The default `source_identity` must namespace threads by tenant, connector, stream and session ID. Message identity must also include message ID. IDs must reuse the scoped convention at `src/server/handlers/source_ingestion.rs:2187` with unambiguous record-key encoding. Concept links must reference concepts visible under verified tenant and policy authority. | Planned proving test: `src/server/handlers/source_ingestion/transcript.rs::tests::source_sequence_and_identity_are_preserved`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.15 Wiring Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Wiring.** The engine must call `validate_transcript` from `prepare` at `src/server/handlers/source_ingestion.rs:155` after mapping resolution at line 174. It must pass the same resolved mapping snapshot and verified authority into validation and admission. The validator must not resolve mappings again. The existing caller at `src/server/dispatch/graph_pipeline/native_routes.rs:408` must retain its single-envelope commit and authorized committed-replay shortcut. No production caller reaches this new validator today. | Planned proving test: `src/server/handlers/source_ingestion/transcript.rs::tests::prepare_routes_declared_transcript_format`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.16 Refusal Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Refusal.** The engine must add typed `TranscriptIngestError` in `crates/eg-types/src/source_transcript.rs`. Codes must include `UnknownFormat`, `MissingEventTime`, `DuplicateMessageConflict` and `ForeignConcept`. The engine must refuse unsupported revisions and conflicting duplicate IDs before graph mutation. It must publish zero thread, message or concept links on refusal. Read authorization must deny transcript text and provenance to unauthorized callers, including callers within the same tenant. Source payloads must not override tenant or policy authority. | Planned proving test: `src/server/handlers/source_ingestion/transcript.rs::tests::unknown_format_and_foreign_concept_are_refused`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.17 Evidence Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Evidence.** The engine must extend the receipt projection in `src/server/handlers/source_ingestion/transcript.rs`. It must record connector, stream, source session, source digest, format revision, message count, concept-link count and accepted checkpoint. Each message must retain its source-record reference. Context, provenance and receipt reads must enforce verified tenant and policy authority. Quarantine evidence and raw-content retrieval must enforce their stored policy independently of tenant membership. | Planned proving test: `src/server/handlers/source_ingestion/transcript.rs::tests::receipt_preserves_message_provenance`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-INGEST-WORKER-R003.18 Hot-path proof Definition — EG-INGEST-WORKER / EG-INGEST-WORKER — Durable ingest workerCanonical requirement and verification source**Hot-path proof.** The entry point must be the served `SourceIngest` wire method. `tests/ingest/test_transcript_served.py::test_thread_messages_are_shared_within_scope` must use identical session/message IDs across different connectors and streams. Records must remain distinct; same-source replay must remain idempotent. A second authorized agent must read timestamped messages and concept links. Same-tenant unauthorized callers and other tenants must read neither transcript text nor provenance. Payload authority spoofing and unknown formats must leave graph and checkpoint unchanged. | Planned proving test: `tests/ingest/test_transcript_served.py::test_thread_messages_are_shared_within_scope`. | requirement | EG-INGEST-WORKER | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB EG-MEDIA-VOCAB — Media and personal-content vocabulary | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001 Shared media ontology Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Shared media ontology.** `crates/eg-core/ontology/media-v1.ttl` defines media classes and properties. It reuses core terms. The vocabulary covers `{work, series, season, episode, album, track, audiobook, podcast, game, ROM, library, library item, media file, playback session, download request, transfer, indexer, broadcast, viewer sample, transcript segment}`. Children R001.1-.6 remain mandatory. Children R001.100-.102 add authorized tags, transcript/summary provenance, and bookmark search/relationships. | Preserve every landed child. Close extensions only with producer/consumer acceptance. Infer no provider or export receipt. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.1 Add `mv:MediaWork` (⊑ `:CreativeWork`) with `mv:Film`, `mv:TelevisionSeries`, `mv:TelevisionSeason`, `mv:TelevisionEpisode`, `mv:MusicAlbum`, `mv:MusicTrack`, `mv:Audiobook`, `mv:PodcastShow`, `mv:PodcastEpisode`, `mv:Game` to media-v1.ttl Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `mv:MediaWork` (⊑ `:CreativeWork`) with `mv:Film`, `mv:TelevisionSeries`, `mv:TelevisionSeason`, `mv:TelevisionEpisode`, `mv:MusicAlbum`, `mv:MusicTrack`, `mv:Audiobook`, `mv:PodcastShow`, `mv:PodcastEpisode`, `mv:Game` to media-v1.ttl. | Test: ontology load test asserts each class and its subClassOf path to `:CreativeWork`. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.2 Add `mv:MediaLibrary`, `mv:LibraryItem` (links a work to a library, `mv:itemOf`, `mv:inLibrary`), `mv:MediaFile`, `mv:RomFile`, `mv:GamePlatform`, `mv:MusicArtist` (⊑ `:Organization`) to media-v1.ttl Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `mv:MediaLibrary`, `mv:LibraryItem` (links a work to a library, `mv:itemOf`, `mv:inLibrary`), `mv:MediaFile`, `mv:RomFile`, `mv:GamePlatform`, `mv:MusicArtist` (⊑ `:Organization`) to media-v1.ttl. | Test: ontology load test. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.3 Add `mv:PlaybackSession` (⊑ `:Session`) with `mv:playedBy`, `mv:lastPlayedAt`, `mv:playCount`, `mv:playbackPositionSeconds`, and `mv:BroadcastStream` (⊑ `:Event`) with `mv:ViewerSample`, `mv:viewerCount`, `mv:sampledAt`, `mv:lastConnectAt` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `mv:PlaybackSession` (⊑ `:Session`) with `mv:playedBy`, `mv:lastPlayedAt`, `mv:playCount`, `mv:playbackPositionSeconds`, and `mv:BroadcastStream` (⊑ `:Event`) with `mv:ViewerSample`, `mv:viewerCount`, `mv:sampledAt`, `mv:lastConnectAt`. | Test: ontology load test; domain and range check. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.4 Add `mv:DownloadRequest` (states requested, wanted, grabbed, importing, imported, failed), `mv:DownloadTransfer`, `mv:GrabEvent`, `mv:MediaIndexer` and properties `mv:requestsWork`, `mv:transferOf`, `mv:grabbedFromIndexer`, `mv:transferState`, `mv:shareRatio`, `mv:lastActivityAt`, `mv:addedAt` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `mv:DownloadRequest` (states requested, wanted, grabbed, importing, imported, failed), `mv:DownloadTransfer`, `mv:GrabEvent`, `mv:MediaIndexer` and properties `mv:requestsWork`, `mv:transferOf`, `mv:grabbedFromIndexer`, `mv:transferState`, `mv:shareRatio`, `mv:lastActivityAt`, `mv:addedAt`. | Test: ontology load test. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.5 Add `mv:TranscriptSegment` (part of the existing `:Transcript` in personal-v1.ttl: reuse, do not redefine) with `mv:segmentStart`, `mv:segmentEnd`, `mv:noSpeechProb`, `mv:transcriptOf` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `mv:TranscriptSegment` (part of the existing `:Transcript` in personal-v1.ttl: reuse, do not redefine) with `mv:segmentStart`, `mv:segmentEnd`, `mv:noSpeechProb`, `mv:transcriptOf`. | Test: ontology load test asserts `:Transcript` is not redefined in media-v1.ttl. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.6 Resolve the two name collisions: connector packages declare `:Episode` (TV) and `:Author` in the shared `:` namespace, while core-foundation-v1.ttl already defines `:Episode` (interaction unit) and software-v1.ttl `:Author` (git author). media-v1.ttl uses `mv:TelevisionEpisode`; cross-repo rows EG-MEDIA-VOCAB-R032 and EG-MEDIA-VOCAB-R033 move the connectors onto it Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceResolve the two name collisions: connector packages declare `:Episode` (TV) and `:Author` in the shared `:` namespace, while core-foundation-v1.ttl already defines `:Episode` (interaction unit) and software-v1.ttl `:Author` (git author). media-v1.ttl uses `mv:TelevisionEpisode`; cross-repo rows EG-MEDIA-VOCAB-R032 and EG-MEDIA-VOCAB-R033 move the connectors onto it. | Test: collision test lists every duplicate class IRI across ontology/*.ttl and the baseline names exactly the two connector aliases. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R002 Content-channel vocabulary: content-v1.ttl Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Content-channel vocabulary: content-v1.ttl.** crates/eg-core/ontology/content-v1.ttl defines feed, article, research paper, search query and result, social post and channel, email campaign, mailing list, subscriber, message channel and chat message. Children R002.1 to R002.4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R002.1 Add `cv:Feed`, `cv:FeedSubscription`, `cv:Article` (⊑ `:Document`), `cv:ResearchPaper` (⊑ `:Document`, seeAlso `bibo:AcademicArticle`), `cv:SearchQuery`, `cv:SearchResult`, `cv:SearchEngine` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `cv:Feed`, `cv:FeedSubscription`, `cv:Article` (⊑ `:Document`), `cv:ResearchPaper` (⊑ `:Document`, seeAlso `bibo:AcademicArticle`), `cv:SearchQuery`, `cv:SearchResult`, `cv:SearchEngine`. | Test: ontology load test. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R002.2 Add `cv:SocialPost`, `cv:PublishingChannel`, `cv:EngagementMetric`, `cv:EmailCampaign`, `cv:MailingList`, `cv:Subscriber` (opaque identity), with `cv:sentCount`, `cv:viewCount`, `cv:clickCount`, `cv:postState`, `cv:subscriptionStatus` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `cv:SocialPost`, `cv:PublishingChannel`, `cv:EngagementMetric`, `cv:EmailCampaign`, `cv:MailingList`, `cv:Subscriber` (opaque identity), with `cv:sentCount`, `cv:viewCount`, `cv:clickCount`, `cv:postState`, `cv:subscriptionStatus`. | Test: ontology load test. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R002.3 Add `cv:MessageChannel` and `cv:ChatMessage`; reuse existing `kg:Team` from core-foundation-v1.ttl without redeclaration, with `cv:memberCount`, `cv:lastPostAt`, `cv:postedAt`, `cv:postedBy` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd `cv:MessageChannel` and `cv:ChatMessage`; reuse existing `kg:Team` from core-foundation-v1.ttl without redeclaration, with `cv:memberCount`, `cv:lastPostAt`, `cv:postedAt`, `cv:postedBy`. | Test: ontology load test. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R002.4 Add content properties `cv:publishedAt`, `cv:isRead`, `cv:feedUrl`, `cv:resultUrl`, `cv:rank`, `cv:servedByEngine`, `cv:doi`, `cv:arxivId`, `cv:citationCount` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd content properties `cv:publishedAt`, `cv:isRead`, `cv:feedUrl`, `cv:resultUrl`, `cv:rank`, `cv:servedByEngine`, `cv:doi`, `cv:arxivId`, `cv:citationCount`. | Test: ontology load test. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R003 Cross-source identity keys Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-source identity keys.** Shared join keys so independent connectors meet on one IRI: `mv:tmdbId`, `mv:tvdbId`, `mv:imdbId`, `mv:musicBrainzId`, `mv:isbn`, `mv:infoHash`, `cv:canonicalUrl`, `mv:contentSha256`. Children R003.1 to R003.3. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R003.1 Declare the eight key properties as datatype correlation properties in media-v1.ttl and content-v1.ttl, without global inverse-functionality. Work identity keys include the class and provider namespace (Film and TelevisionSeries IDs cannot collide). Article identity uses its class-scoped normalized canonical URL. SearchResult uses source, query and native result key; SocialPost and EmailCampaign retain source-native IDs. Shared target URLs support joins without identifying the result, post, campaign and document as one entity. Repeated reads of the same source-native key upsert the same entity Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceDeclare the eight key properties as datatype correlation properties in media-v1.ttl and content-v1.ttl, without global inverse-functionality. Work identity keys include the class and provider namespace (Film and TelevisionSeries IDs cannot collide). Article identity uses its class-scoped normalized canonical URL. SearchResult uses source, query and native result key; SocialPost and EmailCampaign retain source-native IDs. Shared target URLs support joins without identifying the result, post, campaign and document as one entity. Repeated reads of the same source-native key upsert the same entity. | Test: equal URLs across Article, two queries' SearchResults and two SocialPosts preserve distinct records and their provenance; repeated same-key reads are idempotent; Film and TelevisionSeries with the same numeric provider ID remain distinct. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R003.2 Specify normalisation (infoHash lower-case hex; canonicalUrl via scheme/host lower-case, tracking parameters and fragment stripped) as an `rdfs:comment` and a fixture table Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceSpecify normalisation (infoHash lower-case hex; canonicalUrl via scheme/host lower-case, tracking parameters and fragment stripped) as an `rdfs:comment` and a fixture table. | Test: normalisation fixture table passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R003.3 Add the keyed-hash identity rule for email-derived joins (`cv:subscriberKey`), never storing the raw address Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the keyed-hash identity rule for email-derived joins (`cv:subscriberKey`), never storing the raw address. | Test: SHACL rejects a `cv:Subscriber` carrying a raw address property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R004 SHACL shapes Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**SHACL shapes.** Shapes in media-v1.shapes.ttl and content-v1.shapes.ttl. Children R004.1 to R004.4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R004.1 Shape: `mv:Film`/`mv:TelevisionSeries` carry at least one of `mv:tmdbId`, `mv:tvdbId`, `mv:imdbId` when sourced from a connector Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceShape: `mv:Film`/`mv:TelevisionSeries` carry at least one of `mv:tmdbId`, `mv:tvdbId`, `mv:imdbId` when sourced from a connector. | Test: SHACL pass and fail fixture. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R004.2 Shape: `mv:DownloadTransfer` has exactly one `mv:infoHash` matching `^[0-9a-f]{40}$` or `^[0-9a-f]{64}$` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceShape: `mv:DownloadTransfer` has exactly one `mv:infoHash` matching `^[0-9a-f]{40}$` or `^[0-9a-f]{64}$`. | Test: SHACL pass and fail fixture. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R004.3 Shape: `mv:DownloadRequest` `mv:downloadRequestState` in the closed set (requested, wanted, grabbed, importing, imported, failed) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceShape: `mv:DownloadRequest` `mv:downloadRequestState` in the closed set (requested, wanted, grabbed, importing, imported, failed). | Test: SHACL pass and fail fixture. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R004.4 Shape: `cv:Article`, `cv:SearchResult` carry exactly one normalised `cv:canonicalUrl`; shapes are aggregate-free per the virtual-graph shapes convention Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceShape: `cv:Article`, `cv:SearchResult` carry exactly one normalised `cv:canonicalUrl`; shapes are aggregate-free per the virtual-graph shapes convention. | Test: SHACL pass and fail fixture. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R005 arr virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**arr virtual-graph mapping.** Mapping table for the `arr` connector (arr-mcp): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R005`. Children R005.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R005.1 Add the `arr` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `arr` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R005.2 Add the `arr` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R005.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `arr` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R005.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R005.3 Add the test that answers the `arr` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `arr` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R005.4 Update `EG-CQ-CONN-R005` vocabulary column from MISSING to media-v1 / content-v1 once R005.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R005` vocabulary column from MISSING to media-v1 / content-v1 once R005.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R006 jellyfin virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**jellyfin virtual-graph mapping.** Mapping table for the `jellyfin` connector (jellyfin-mcp): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R027`. Children R006.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R006.1 Add the `jellyfin` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `jellyfin` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R006.2 Add the `jellyfin` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R027.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `jellyfin` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R027.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R006.3 Add the test that answers the `jellyfin` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `jellyfin` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R006.4 Update `EG-CQ-CONN-R027` vocabulary column from MISSING to media-v1 / content-v1 once R006.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R027` vocabulary column from MISSING to media-v1 / content-v1 once R006.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R007 audiobookshelf virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**audiobookshelf virtual-graph mapping.** Mapping table for the `audiobookshelf` connector (audiobookshelf-mcp): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R007`. Children R007.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R007.1 Add the `audiobookshelf` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `audiobookshelf` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R007.2 Add the `audiobookshelf` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R007.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `audiobookshelf` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R007.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R007.3 Add the test that answers the `audiobookshelf` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `audiobookshelf` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R007.4 Update `EG-CQ-CONN-R007` vocabulary column from MISSING to media-v1 / content-v1 once R007.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R007` vocabulary column from MISSING to media-v1 / content-v1 once R007.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R008 qbittorrent virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**qbittorrent virtual-graph mapping.** Mapping table for the `qbittorrent` connector (qbittorrent-agent): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R051`. Children R008.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R008.1 Add the `qbittorrent` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `qbittorrent` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R008.2 Add the `qbittorrent` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R051.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `qbittorrent` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R051.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R008.3 Add the test that answers the `qbittorrent` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `qbittorrent` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R008.4 Update `EG-CQ-CONN-R051` vocabulary column from MISSING to media-v1 / content-v1 once R008.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R051` vocabulary column from MISSING to media-v1 / content-v1 once R008.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R009 rom-manager virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**rom-manager virtual-graph mapping.** Mapping table for the `rom-manager` connector (rom-manager): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R053`. Children R009.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R009.1 Add the `rom-manager` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `rom-manager` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R009.2 Add the `rom-manager` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R053.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `rom-manager` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R053.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R009.3 Add the test that answers the `rom-manager` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `rom-manager` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R009.4 Update `EG-CQ-CONN-R053` vocabulary column from MISSING to media-v1 / content-v1 once R009.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R053` vocabulary column from MISSING to media-v1 / content-v1 once R009.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R010 owncast virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**owncast virtual-graph mapping.** Mapping table for the `owncast` connector (owncast-agent): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R045`. Children R010.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R010.1 Add the `owncast` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `owncast` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R010.2 Add the `owncast` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R045.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `owncast` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R045.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R010.3 Add the test that answers the `owncast` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `owncast` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R010.4 Update `EG-CQ-CONN-R045` vocabulary column from MISSING to media-v1 / content-v1 once R010.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R045` vocabulary column from MISSING to media-v1 / content-v1 once R010.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R011 media-downloader virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**media-downloader virtual-graph mapping.** Mapping table for the `media-downloader` connector (media-downloader): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R038`. Children R011.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R011.1 Add the `media-downloader` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `media-downloader` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R011.2 Add the `media-downloader` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R038.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `media-downloader` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R038.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R011.3 Add the test that answers the `media-downloader` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `media-downloader` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R011.4 Update `EG-CQ-CONN-R038` vocabulary column from MISSING to media-v1 / content-v1 once R011.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R038` vocabulary column from MISSING to media-v1 / content-v1 once R011.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R012 audio-transcriber virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**audio-transcriber virtual-graph mapping.** Mapping table for the `audio-transcriber` connector (audio-transcriber): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R008`. Children R012.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R012.1 Add the `audio-transcriber` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `audio-transcriber` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R012.2 Add the `audio-transcriber` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R008.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `audio-transcriber` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R008.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R012.3 Add the test that answers the `audio-transcriber` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `audio-transcriber` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R012.4 Update `EG-CQ-CONN-R008` vocabulary column from MISSING to media-v1 / content-v1 once R012.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R008` vocabulary column from MISSING to media-v1 / content-v1 once R012.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R013 freshrss virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**freshrss virtual-graph mapping.** Mapping table for the `freshrss` connector (freshrss-agent): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R022`. Children R013.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R013.1 Add the `freshrss` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `freshrss` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R013.2 Add the `freshrss` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R022.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `freshrss` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R022.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R013.3 Add the test that answers the `freshrss` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `freshrss` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R013.4 Update `EG-CQ-CONN-R022` vocabulary column from MISSING to media-v1 / content-v1 once R013.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R022` vocabulary column from MISSING to media-v1 / content-v1 once R013.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R014 scholarx virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**scholarx virtual-graph mapping.** Mapping table for the `scholarx` connector (scholarx): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R055`. Children R014.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R014.1 Add the `scholarx` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `scholarx` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R014.2 Add the `scholarx` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R055.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `scholarx` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R055.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R014.3 Add the test that answers the `scholarx` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `scholarx` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R014.4 Update `EG-CQ-CONN-R055` vocabulary column from MISSING to media-v1 / content-v1 once R014.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R055` vocabulary column from MISSING to media-v1 / content-v1 once R014.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R015 searxng virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**searxng virtual-graph mapping.** Mapping table for the `searxng` connector (searxng-mcp): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R056`. Children R015.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R015.1 Add the `searxng` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `searxng` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R015.2 Add the `searxng` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R056.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `searxng` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R056.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R015.3 Add the test that answers the `searxng` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `searxng` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R015.4 Update `EG-CQ-CONN-R056` vocabulary column from MISSING to media-v1 / content-v1 once R015.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R056` vocabulary column from MISSING to media-v1 / content-v1 once R015.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R016 pulselink virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**pulselink virtual-graph mapping.** Mapping table for the `pulselink` connector (pulselink-mcp): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R050`. Children R016.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R016.1 Add the `pulselink` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `pulselink` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R016.2 Add the `pulselink` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R050.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `pulselink` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R050.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R016.3 Add the test that answers the `pulselink` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `pulselink` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R016.4 Update `EG-CQ-CONN-R050` vocabulary column from MISSING to media-v1 / content-v1 once R016.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R050` vocabulary column from MISSING to media-v1 / content-v1 once R016.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R017 postiz virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**postiz virtual-graph mapping.** Mapping table for the `postiz` connector (postiz-agent): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R049`. Children R017.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R017.1 Add the `postiz` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `postiz` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R017.2 Add the `postiz` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R049.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `postiz` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R049.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R017.3 Add the test that answers the `postiz` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `postiz` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R017.4 Update `EG-CQ-CONN-R049` vocabulary column from MISSING to media-v1 / content-v1 once R017.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R049` vocabulary column from MISSING to media-v1 / content-v1 once R017.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R018 listmonk virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**listmonk virtual-graph mapping.** Mapping table for the `listmonk` connector (listmonk-api): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R035`. Children R018.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R018.1 Add the `listmonk` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `listmonk` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R018.2 Add the `listmonk` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R035.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `listmonk` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R035.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R018.3 Add the test that answers the `listmonk` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `listmonk` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R018.4 Update `EG-CQ-CONN-R035` vocabulary column from MISSING to media-v1 / content-v1 once R018.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R035` vocabulary column from MISSING to media-v1 / content-v1 once R018.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R019 mattermost virtual-graph mapping Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**mattermost virtual-graph mapping.** Mapping table for the `mattermost` connector (mattermost-mcp): operation -> class/property -> contract kind, as `vg:VirtualMapping` rows with `vg:sourceKind` mcp, plus question outcomes for `EG-CQ-CONN-R036`. Children R019.1 to .4. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R019.1 Add the `mattermost` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `mattermost` `vg:VirtualMapping` source file (operation to class/property rows listed in plan.md section Connector mapping tables) as a mapping fixture under crates/eg-core/tests. | Test: mapping loads and every row names an existing class or property. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R019.2 Add the `mattermost` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R036.1` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the `mattermost` fixture (recorded tool response) for its single-source question for `EG-CQ-CONN-R036.1`. | Test: fixture round-trips through the mapping. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R019.3 Add the test that answers the `mattermost` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceAdd the test that answers the `mattermost` single-source question from the fixture, or returns the typed abstention naming the missing operation for the BLOCKED part. | Test: `connector-specific media_vocab_<connector>_single` passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R019.4 Update `EG-CQ-CONN-R036` vocabulary column from MISSING to media-v1 / content-v1 once R019.1 is LANDED (wire one call site: specs/connector-competency/design.md) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceUpdate `EG-CQ-CONN-R036` vocabulary column from MISSING to media-v1 / content-v1 once R019.1 is LANDED (wire one call site: specs/connector-competency/design.md). | Test: connector-competency docs-truth check passes. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R020 Cross-source worked examples Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-source worked examples.** Two federated examples run by the existing federated query planner (specs/federated-query-and-reasoning), not new routing. Children .1 and .2. | Children LANDED. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R020.1 Fixture and test: 'Which requested films are downloaded but not yet in the library?' across arr, qbittorrent, jellyfin. Returns the film set difference with provenance per leg Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceFixture and test: 'Which requested films are downloaded but not yet in the library?' across arr, qbittorrent, jellyfin. Returns the film set difference with provenance per leg. | Test: `media_vocab_films_downloaded_not_in_library`. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R020.2 Fixture and test: 'Which feed articles are not archived and have no matching search result?' across freshrss, searxng, archivebox on `cv:canonicalUrl` Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification sourceFixture and test: 'Which feed articles are not archived and have no matching search result?' across freshrss, searxng, archivebox on `cv:canonicalUrl`. | Test: `media_vocab_articles_unarchived`. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R021 Cross-repo, owner arr-mcp: per-title 'last searched indexer' (Radarr/Sonarr keep no per-title search log; Prowlarr history is query-keyed, not title-keyed): add a prowlarr_action history-by-title projection Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner arr-mcp: per-title 'last searched indexer' (Radarr/Sonarr keep no per-title search log; Prowlarr history is query-keyed, not title-keyed): add a prowlarr_action history-by-title projection.** Blocks the arr competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: arr-mcp (agent-packages). One 5-minute unit: add the operation and its test in arr-mcp. | Test in arr-mcp: operation returns the documented fields; EG-side test `media_vocab_arr_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R022 Cross-repo, owner audiobookshelf-mcp: user listening progress: add a library_operations or users action for media progress per user and item Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner audiobookshelf-mcp: user listening progress: add a library_operations or users action for media progress per user and item.** Blocks the audiobookshelf competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: audiobookshelf-mcp (agent-packages). One 5-minute unit: add the operation and its test in audiobookshelf-mcp. | Test in audiobookshelf-mcp: operation returns the documented fields; EG-side test `media_vocab_audiobookshelf_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R023 Cross-repo, owner media-downloader: see media-downloader B1 Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner media-downloader: see media-downloader B1.** Blocks the audiobookshelf competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: media-downloader (agent-packages). One 5-minute unit: add the operation and its test in media-downloader. | Test in media-downloader: operation returns the documented fields; EG-side test `media_vocab_audiobookshelf_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R024 Cross-repo, owner rom-manager: reference-set verification: add a romm_roms verify action returning per-ROM checksum verdict Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner rom-manager: reference-set verification: add a romm_roms verify action returning per-ROM checksum verdict.** Blocks the rom-manager competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: rom-manager (agent-packages). One 5-minute unit: add the operation and its test in rom-manager. | Test in rom-manager: operation returns the documented fields; EG-side test `media_vocab_rom_manager_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R025 Cross-repo, owner media-downloader: see media-downloader B1 Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner media-downloader: see media-downloader B1.** Blocks the rom-manager competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: media-downloader (agent-packages). One 5-minute unit: add the operation and its test in media-downloader. | Test in media-downloader: operation returns the documented fields; EG-side test `media_vocab_rom_manager_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R026 Cross-repo, owner owncast-agent: past broadcast list with start/end and peak viewers: add an owncast_internal stream-history action or persist sessions Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner owncast-agent: past broadcast list with start/end and peak viewers: add an owncast_internal stream-history action or persist sessions.** Blocks the owncast competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: owncast-agent (agent-packages). One 5-minute unit: add the operation and its test in owncast-agent. | Test in owncast-agent: operation returns the documented fields; EG-side test `media_vocab_owncast_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R027 Cross-repo, owner media-downloader: download history: add a list_downloads operation returning job id, source URL, status, error, completedAt, output path Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner media-downloader: download history: add a list_downloads operation returning job id, source URL, status, error, completedAt, output path.** Blocks the media-downloader competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: media-downloader (agent-packages). One 5-minute unit: add the operation and its test in media-downloader. | Test in media-downloader: operation returns the documented fields; EG-side test `media_vocab_media_downloader_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R028 Cross-repo, owner audio-transcriber: transcript list/get operation by recording id and date Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner audio-transcriber: transcript list/get operation by recording id and date.** Blocks the audio-transcriber competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: audio-transcriber (agent-packages). One 5-minute unit: add the operation and its test in audio-transcriber. | Test in audio-transcriber: operation returns the documented fields; EG-side test `media_vocab_audio_transcriber_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R029 Cross-repo, owner audio-transcriber: expose avg_logprob (confidence) per segment Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner audio-transcriber: expose avg_logprob (confidence) per segment.** Blocks the audio-transcriber competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: audio-transcriber (agent-packages). One 5-minute unit: add the operation and its test in audio-transcriber. | Test in audio-transcriber: operation returns the documented fields; EG-side test `media_vocab_audio_transcriber_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R030 Cross-repo, owner scholarx: citing-papers operation: add sx_search action 'citations' returning papers that cite a given id Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner scholarx: citing-papers operation: add sx_search action 'citations' returning papers that cite a given id.** Blocks the scholarx competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: scholarx (agent-packages). One 5-minute unit: add the operation and its test in scholarx. | Test in scholarx: operation returns the documented fields; EG-side test `media_vocab_scholarx_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R031 Cross-repo, owner searxng-mcp: pass through per-engine result counts and unresponsive_engines from the SearXNG response Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner searxng-mcp: pass through per-engine result counts and unresponsive_engines from the SearXNG response.** Blocks the searxng competency question; EG answers with a typed abstention naming this operation until it lands. Owning repository: searxng-mcp (agent-packages). One 5-minute unit: add the operation and its test in searxng-mcp. | Test in searxng-mcp: operation returns the documented fields; EG-side test `media_vocab_searxng_blocked_abstains` then flips to a positive answer. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R032 Cross-repo, owner arr-mcp: rename connector :Episode to mv:TelevisionEpisode subclass (collision with core :Episode) Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner arr-mcp: rename connector :Episode to mv:TelevisionEpisode subclass (collision with core :Episode).** Resolves the R001.6 collision. One 5-minute unit in the owning package ontology plus its test. | Test in the owning package: ontology load test shows no duplicate IRI with core. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R033 Cross-repo, owner jellyfin-mcp and audiobookshelf-mcp: stop declaring :Author in the shared namespace; use mv:contributor to :Person Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Cross-repo, owner jellyfin-mcp and audiobookshelf-mcp: stop declaring :Author in the shared namespace; use mv:contributor to :Person.** Resolves the R001.6 collision. One 5-minute unit in the owning package ontology plus its test. | Test in the owning package: ontology load test shows no duplicate IRI with core. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R002.5 Receipt-bound paper facts; citation-edge hold Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Receipt-bound paper facts; citation-edge hold.** Reuse SDK `PaperSearchResult`, `PaperRecord`, and `DocumentReceipt` with EG `Method::SourceIngest`. Accept records only from a tenant-scoped `PaperQuery`. Require provider identity, stable canonical identity, revision, and SDK `exact_identity`. Require a matching tenant receipt for the same paper/revision. The receipt binds `{source_url, media_type, byte_count, sha256, authorized_local_artifact}`. Require source-field provenance for every asserted fact. Map accepted records to `cv:ResearchPaper` and existing DOI/arXiv/publication-date/citation-count facts. Attach receipt and document digest as provenance. Exact identity/revision/digest replay is idempotent. Refuse only the offending paper before graph writes for invalid identity, receipt mismatch, unavailable/incomplete artifact, or provenance mismatch. Keep healthy siblings from partial provider results. **Hold:** SDK records/receipts omit cited-paper IDs. Paper-serving registration is unestablished. Citation counts cannot create edges. Emit no citation edges until SDK serves reference IDs, identity normalization, and paper-serving registration. Select no provider here. Preserve `EG-MEDIA-VOCAB-R002.1`, `.4`, `SDK-SOURCE-INGEST-R005.1`, `.2`, `.4`, and `EG-REPO-INGEST-R002`. Source SHA-256 `b6d12a184f1c5812c8f4fd56a0a299e48381e85ad9b18af4eb0ed19faf3d7e0b`. Remains SPECIFIED; no producer/readback receipt is claimed. | Planned served acceptance: Ingest a valid tenant-scoped `PaperRecord` and matching `PaperQuery`/`DocumentReceipt`. Independently read back paper facts, receipt digest, and field provenance. Replay the same identity/revision/digest idempotently. In a mixed result, refuse an unidentified paper while persisting its identified sibling. Refuse mismatched revision/digest, incomplete artifact, or field-provenance mismatch before graph writes. Confirm count-only records create no citation edges. Hold citation-edge acceptance until SDK reference IDs and serving registration are reviewed and merged. Do not count held cases as passing. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.100 Provenanced object/context tags and authorized media search Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Provenanced object/context tags and authorized media search.** Define each tag as `{media_item, media_revision, taxonomy_id, taxonomy_version, object_or_context, confidence, evidence_span_or_ref, opaque_producer_id, producer_revision, provenance_digest}`. Store source-backed assertions on the media item. Do not store unqualified labels. Search returns only caller-authorized tags. Bind matched tag IDs, media revisions, and authorization revision. Missing provenance or stale media revision refuses. Unauthorized queries reveal no protected tags. Vision producer identity and served extraction remain unresolved. Do not invent the producer. Preserve parent `EG-MEDIA-VOCAB-R001`. Source `EG:69` SHA-256 `38f71f6a205cf8df27631a4aa86ec3312a91f7902dfd8bfe843db2a142d1d30f`. | Read back tag provenance and media revision from an authorized tagged item. Query as allowed and denied principals. Assert only authorized results appear. Refuse missing producer/evidence provenance and stale media revisions. Keep producer testing pending until its identity and contract are resolved. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.101 Meeting transcript revisions and provider-bound summary context Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Meeting transcript revisions and provider-bound summary context.** Add public `Method::MeetingTranscriptRevision` with `{Append, Correct, DeleteSegment, Finalize, GetFinal}`. Commit immutable revisions through SourceIngest/ChangeEnvelope and `TranscriptSegment`. Each revision binds `{meeting_id, base_revision, new_revision, monotonic_event_sequence, idempotency_key, ordered_segment_ids, start_ms, end_ms, optional_speaker_ref, text_digest, provenance_ref, finalization_digest}`. A base mismatch or reordered/repeated event with a different digest returns typed conflict. Exact replay is idempotent. Finalization seals ordered segments and transcript digest. Later corrections create a new revision. They stale old-digest summaries without rewriting them. `MeetingSummaryContextV1` accepts a current finalized transcript digest, provider-admission ref `{provider, model, policy_revision, admission_id, admission_digest}`, and pinned `MeetingSummaryLimitPolicyV1`. Require positive finite `max_spans` ≤128, `max_segment_bytes` ≤16384, and `max_tokens` ≤8192. Return ordered spans, citations, context digest, and applied policy revision. Make no model call. Missing/invalid limits or exceeded caps refuse before summary effects. `CommitMeetingSummaryV1` accepts AU receipt `{owner_requirement_id, receipt_id, receipt_digest, provider, model, policy_revision, input_context_digest, output_digest}` plus per-claim citations. EG validates the receipt. EG never mints it or uses model weights. Refuse unfinalized/stale transcript, missing admission, unknown/mismatched AU receipt, citation outside sealed text, or cross-tenant request before writes. **AU hold:** AU owns provider admission, retry/attempt accounting, and disabled-provider refusal. `AU-SEMANTIC-R030` remains pending. Wrapper retries do not count as one invocation without its receipt contract. Consumer `WEBUI-APPS-R001.5` uses this contract. WebUI owns provider choice/rendering. AU owns admission, invocation, and receipt. Source WEBUI:10 SHA-256 `c82a815c87428a5baf4379ef7790bafb24a5d3367d16ebd85a6c39ff9b52521d`. | Serve ordered append/correction/finalization. Independently read back the sealed digest. Late corrections must stale old summaries. Read bounded context from a current transcript with validated provider admission. Accept only summaries with matching AU provider/model/policy/context/output receipt and valid citations. Refuse stale, unfinalized, unauthorized, or mismatched cases before mutation. AU R030 admission/retry/disable/receipt tests and WebUI journey remain required. EG does not claim them. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-MEDIA-VOCAB-R001.102 Bookmark semantic search and authorized relation projection Definition — EG-MEDIA-VOCAB / EG-MEDIA-VOCAB — Media and personal-content vocabularyCanonical requirement and verification source**Bookmark semantic search and authorized relation projection.** Add no parallel ingestion path. SDK `SDK-SOURCE-INGEST-R005.7-.12` envelopes enter existing `Method::SourceIngest` and ChangeEnvelope commit. Reuse `src/server/dispatch/graph_pipeline/native_routes.rs` and `src/server/handlers/source_ingestion.rs`. Add read methods `Method::BookmarkSemanticSearch` (`BookmarkSemanticSearchV1`) and `Method::BookmarkRelations` (`BookmarkRelationsV1`). Use existing `Method::SemanticSearch` and UQL paths. Bind `{source/bookmark_ids, ingestion_receipt_id/digest, source_revision, index_revision, query_digest, graph_snapshot_revision, authorization_revision, limit_policy_digest}`. `BookmarkQueryLimitPolicyV1` requires positive finite `max_hits` ≤100, `max_relationships` ≤500, and `max_response_bytes` ≤1048576. Search returns score, provenance, explicit unknown metadata, and a tenant/query/index/snapshot-bound cursor. Relations return authorized node/edge IDs and mindmap provenance only. Filter before counting. Never leak denied edges/counts. Missing metadata remains unknown. Missing/invalid policy or exceeded cap refuses before truncated success. Identical source receipt is idempotent. Stale/unavailable indexes or mismatched revisions return typed refusal, never empty success. EG owns bookmark meaning/index/query/relationship data. GraphOS owns served query/export adapter. `WEBUI-APPS-R001.6` owns mindmap and CSV/JSON rendering. Source WEBUI:11 specifies `{searchable bookmark knowledge base, meaning-based semantic filtering, interactive mindmap, CSV or JSON export}`. Source SHA-256 `b1708c96d6b9cadcb1c9f35cc5cb7dde4e60ed2cb1250598e55b9ce4cc66907e`. | Ingest through named SDK envelopes and SourceIngest. Read back the committed bookmark and receipt. Search/read relations on the same pinned index/snapshot. Confirm paging and unknown metadata. Refuse stale indexes, mismatched revisions, and denied edges/counts without leakage. GraphOS/WebUI separately prove served export and mindmap. Add no duplicate EG ingest path. No runtime/owner receipt is claimed. | requirement | EG-MEDIA-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH EG-CQ-ORCH — Orchestration competency questions | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R001 Q1: "What steps do I need to follow to complete task XYZ?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q1: "What steps do I need to follow to complete task XYZ?" (rollup).** Answered by one query over the ontology reading L0 (task, process and standard ontologies), L3 (stored agent graphs and workflows), L5 (past runs and outcomes). Mechanism: EG-DECISION-ENGINE-R036 (graph.assemble composes tasks), R003 (is_a derivation records), EG-FEDERATED-QUERY-R006 (proof-carrying results). Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R001.1 Q1 Ontology gap: ordered step Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q1 Ontology gap: ordered step.** Add `eg:TaskStep`, `eg:hasStep` and `eg:precedes` to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R001.2 Q1 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q1 SHACL shape.** Add one SHACL shape for the Q1 answer inputs (step order is acyclic) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R001.3 Q1 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q1 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q1 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R001.4 Q1 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q1 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q1` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R001.5 Q1 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q1 Acceptance test.** Add one acceptance test running Q1 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R002 Q2: "How many agents and what type of agents are needed to complete the task?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q2: "How many agents and what type of agents are needed to complete the task?" (rollup).** Answered by one query over the ontology reading L3 (topology slots), L2 (agent kinds), L5 (observed width/outcomes). Mechanism: EG-DECISION-ENGINE-R046 and R111 (topology decision), R014 (composition as bounded 0-1 optimization), R036. Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R002.1 Q2 Ontology gap: agent kind Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q2 Ontology gap: agent kind.** Add `eg:AgentKind` and `eg:fillsAgentKind` to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R002.2 Q2 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q2 SHACL shape.** Add one SHACL shape for the Q2 answer inputs (slot role and width bounds) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R002.3 Q2 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q2 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q2 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R002.4 Q2 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q2 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q2` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R002.5 Q2 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q2 Acceptance test.** Add one acceptance test running Q2 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R003 Q3: "Can we use an agent template we already have, or an external A2A agent we have added to our Agent Library, based on their capabilities?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q3: "Can we use an agent template we already have, or an external A2A agent we have added to our Agent Library, based on their capabilities?" (rollup).** Answered by one query over the ontology reading L2 (agents, templates, A2A cards in the Agent Library), L1 (capabilities of components). Mechanism: EG-DECISION-ENGINE-R126 and children (capability coverage over Agent Library candidates and A2A cards), R044 (A2A routing), EG-TYPED-PACKS-R013 (capability IRI validation), R006 (pack projection). Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R003.1 Q3 Ontology gap: agent template Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q3 Ontology gap: agent template.** Add `eg:AgentTemplate` to `crates/eg-core/ontology/catalog-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R003.2 Q3 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q3 SHACL shape.** Add one SHACL shape for the Q3 answer inputs (candidate has a provided capability) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R003.3 Q3 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q3 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q3 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R003.4 Q3 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q3 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q3` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R003.5 Q3 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q3 Acceptance test.** Add one acceptance test running Q3 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R004 Q4: "What standards, best practices, or guardrails should I follow?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q4: "What standards, best practices, or guardrails should I follow?" (rollup).** Answered by one query over the ontology reading L0 (standards, shapes, policies), L1 (component-level constraints). Mechanism: EG-DECISION-ENGINE-R127 and children (guardrail entailment with entailment path and source generation), EG-FEDERATED-QUERY-R005 (VALIDATE SHAPE), R006. Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R004.1 Q4 Ontology gap: best practice and rule scope Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q4 Ontology gap: best practice and rule scope.** Add `eg:BestPractice` and `eg:appliesToTaskClass` to `crates/eg-core/ontology/capability-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R004.2 Q4 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q4 SHACL shape.** Add one SHACL shape for the Q4 answer inputs (rule names its task class and source) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R004.3 Q4 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q4 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q4 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R004.4 Q4 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q4 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q4` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R004.5 Q4 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q4 Acceptance test.** Add one acceptance test running Q4 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R005 Q5: "What skills, tools, prompts, and LLM models does each agent need to complete each subtask?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q5: "What skills, tools, prompts, and LLM models does each agent need to complete each subtask?" (rollup).** Answered by one query over the ontology reading L1 (skills, tools, prompts, model profiles), L2 (which agent holds them). Mechanism: EG-DECISION-ENGINE-R036 (assembly binds components), R126 (coverage), R014 (knapsack/cardinality constraints), R002 (evidence class). Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R005.1 Q5 Ontology gap: model profile Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q5 Ontology gap: model profile.** Add `eg:ModelProfile` and `eg:needsSkill` to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R005.2 Q5 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q5 SHACL shape.** Add one SHACL shape for the Q5 answer inputs (binding names agent, model and prompt) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R005.3 Q5 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q5 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q5 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R005.4 Q5 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q5 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q5` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R005.5 Q5 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q5 Acceptance test.** Add one acceptance test running Q5 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R006 Q6: "What workflow do the agents need to follow?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q6: "What workflow do the agents need to follow?" (rollup).** Answered by one query over the ontology reading L3 (workflows and agent graphs), L4 (harness hooks and extension points), L5 (past runs). Mechanism: EG-DECISION-ENGINE-R036 (assembled graph carries workflow), R044 (routing to an existing graph), plus the durable-run kernel already in orchestration-v1. Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R006.1 Q6 Ontology gap: handoff Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q6 Ontology gap: handoff.** Add `eg:handsOffTo` to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R006.2 Q6 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q6 SHACL shape.** Add one SHACL shape for the Q6 answer inputs (handoff names source and target step) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R006.3 Q6 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q6 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q6 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R006.4 Q6 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q6 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q6` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R006.5 Q6 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q6 Acceptance test.** Add one acceptance test running Q6 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R007 Q7: "What does the agent graph shape (DAG) look like?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q7: "What does the agent graph shape (DAG) look like?" (rollup).** Answered by one query over the ontology reading L3 (agent graphs and topology templates). Mechanism: EG-DECISION-ENGINE-R046, R111 and R111.1 (topology as typed Decide question), R036. Split into `.1` ontology gap, `.2` shape, `.3` source-authority mapping, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R007.1 Q7 Ontology gap: slot edge Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q7 Ontology gap: slot edge.** Add `eg:feeds` between `swarm:Slot` nodes to `crates/eg-core/ontology/swarm_topology-v1.ttl`. Owner: epistemic-graph. | Ontology load test asserts the term resolves and the reasoner stays consistent. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R007.2 Q7 SHACL shape Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q7 SHACL shape.** Add one SHACL shape for the Q7 answer inputs (graph is acyclic with one root) next to its ontology file. Owner: epistemic-graph. | Shape validation test accepts a conforming fixture and rejects a planted-invalid one. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R007.3 Q7 Source-authority mapping Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q7 Source-authority mapping.** Add one source-authority mapping declaring which connected source is the authority for the Q7 concept (`vg:mapsOntologyClass` plus the MISSING authority statement). Owner: epistemic-graph. | Mapping test asserts the declared source is selected and an unconnected source yields the typed abstention. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R007.4 Q7 Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q7 Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/q7` holding a worked task XYZ and the expected answer rows. Owner: epistemic-graph. | Fixture-load test asserts the expected rows are returned by the query sketch in design.md. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R007.5 Q7 Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Q7 Acceptance test.** Add one acceptance test running Q7 end to end through the engine mechanism and asserting a non-empty, provenance-carrying answer. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::q{n}_answers_with_provenance`; a second case asserts the typed abstention when the source is not connected. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R008 Composed answer to "How can I execute task XYZ?" (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Composed answer to "How can I execute task XYZ?" (rollup).** One response carries all seven parts, each with provenance, produced through the engine's assembly (`graph.assemble()` / AgentAssemble, `EG-DECISION-ENGINE-R036`), not a second planner. Split into `.1` envelope type, `.2` assemble wiring, `.3` abstention per part, `.4` fixture, `.5` acceptance test. | Rollup closes when children .1-.5 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R008.1 Composed Envelope type Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Composed Envelope type.** Add the typed `ExecutionAnswer` DTO (`crates/eg-types/src/decision/`) with seven part slots, each `answer|abstain` plus provenance and evidence class. Owner: epistemic-graph. | Serde round-trip test and golden-digest test for the envelope. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R008.2 Composed Assemble wiring Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Composed Assemble wiring.** Populate the envelope from the existing assemble handler output and the R126 and R127 queries; add no new solver or planner. Owner: epistemic-graph. | Test asserts the envelope's `assembled_by` is the assemble path and the certificate digest matches R004 verification. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R008.3 Composed Typed abstention per part Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Composed Typed abstention per part.** Each part that lacks data returns a typed `AbstainReason`, never an omitted field. Owner: epistemic-graph. | Negative test removes one source and asserts that part abstains while the others answer. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R008.4 Composed Query fixture Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Composed Query fixture.** Add one fixture graph under `crates/eg-core/tests/fixtures/orchestration_competency/composed` for task XYZ spanning all seven parts. Owner: epistemic-graph. | Fixture-load test asserts every part has expected rows. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R008.5 Composed Acceptance test Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Composed Acceptance test.** Add the end-to-end test asserting all seven parts non-empty with provenance. Owner: epistemic-graph. | Test: `crates/eg-core/tests/orchestration_competency.rs::composed_answer_has_seven_parts_with_provenance`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009 Probe questions through the intent surface (rollup, owned by graph-os, cross-repo) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe questions through the intent surface (rollup, owned by graph-os, cross-repo).** Each probe is an acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Split into one child per probe (`.1` to `.6`). | Rollup closes when children .1-.6 pass in graph-os. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009.1 Probe: "How many nodes does the graph hold, by label?" Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe: "How many nodes does the graph hold, by label?"** (owner: graph-os, cross-repo prerequisite). Acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Previously observed: correct SQL, empty answer. | graph-os acceptance test over the intent surface; EG records the receipt link in status evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009.2 Probe: "How can I deploy a container with container-manager?" Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe: "How can I deploy a container with container-manager?"** (owner: graph-os, cross-repo prerequisite). Acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Previously observed: 1-step plan. | graph-os acceptance test over the intent surface; EG records the receipt link in status evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009.3 Probe: "Which agents are in the Agent Library?" Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe: "Which agents are in the Agent Library?"** (owner: graph-os, cross-repo prerequisite). Acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Previously observed: routed. | graph-os acceptance test over the intent surface; EG records the receipt link in status evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009.4 Probe: "Why does graph-os use the intent surface?" Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe: "Why does graph-os use the intent surface?"** (owner: graph-os, cross-repo prerequisite). Acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Previously observed: pending. | graph-os acceptance test over the intent surface; EG records the receipt link in status evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009.5 Probe: "Find a tool that lists Docker containers." Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe: "Find a tool that lists Docker containers."** (owner: graph-os, cross-repo prerequisite). Acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Previously observed: pending. | graph-os acceptance test over the intent surface; EG records the receipt link in status evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R009.6 Probe: "Delegate: list running containers." Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Probe: "Delegate: list running containers."** (owner: graph-os, cross-repo prerequisite). Acceptance test through the graph-os intent tools asserting a non-empty, correct, provenance-carrying answer. Previously observed: pending. | graph-os acceptance test over the intent surface; EG records the receipt link in status evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010 The graph serves architecture views (rollup) Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**The graph serves architecture views (rollup).** The engine derives container-level architecture views from ingested code and ingested diagrams, and serves them as a read-only view. Children .1-.6. | Rollup closes when children .1-.6 are verified. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.1 Model Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Model.** Add `ArchitectureView`, `ViewContainer` and `ViewEdge` in new file `crates/eg-types/src/architecture_view.rs`. A container carries a name, a technology label and the source paths that support it. An edge carries a kind and a count of supporting calls. Owner: epistemic-graph. | `crates/eg-core/tests/architecture_view.rs::view_types_round_trip`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.2 Behavior Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Behavior.** Add `derive_architecture_view(graph, scope) -> ArchitectureView` in `crates/eg-core/src/architecture_view.rs`. Each rule is a named, replaceable default. One container per deployable package. Edges come from cross-package calls. Ingested diagram elements merge by name. Owner: epistemic-graph. | `crates/eg-core/tests/architecture_view.rs::derivation_merges_code_and_diagram_elements`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.3 Wiring Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Wiring.** Call `derive_architecture_view` from the read handler at `src/server/handlers/mining/impact.rs:264`. The `handle_impact` function already runs for the served impact operation in production. The view branch of that handler creates the call site. Owner: epistemic-graph. | `crates/eg-core/tests/architecture_view.rs::served_operation_returns_view`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.4 Refusal Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Refusal.** `derive_architecture_view` must return the typed abstention `ViewAbstained::NoSupportingSource` for a scope with no ingested code and no diagram. It must never invent a container. Owner: epistemic-graph. | `crates/eg-core/tests/architecture_view.rs::empty_scope_abstains`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.5 Evidence Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Evidence.** Every container and edge in the served view must list its supporting node ids. A reader traces each box to the ingested files that justify it. Owner: epistemic-graph. | `crates/eg-core/tests/architecture_view.rs::every_container_cites_support`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.6 Hot-path proof Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Hot-path proof.** Entry point: the served impact operation with an architecture-view request over a fixture repository and one ingested diagram. The test passes through `impact.rs:264` and observes the view with containers, edges and support ids. Owner: epistemic-graph. | `crates/eg-core/tests/architecture_view.rs::served_view_over_fixture_repository`. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-CQ-ORCH-R010.7 Preplanning architecture-gap admission and unwired-feature refusal Definition — EG-CQ-ORCH / EG-CQ-ORCH — Orchestration competency questionsCanonical requirement and verification source**Preplanning architecture-gap admission and unwired-feature refusal.** Reuse the served architecture view from `EG-CQ-ORCH-R010.1-.6` and existing capability query. Do not re-derive architecture. Before `Method::Decide` accepts a plan-producing `TaskPlan`, require `PlanAdmissionV1` with `{repository_id, repository_revision, architecture_view_ref, architecture_snapshot_revision, study_gap_ref, study_gap_revision, plan_request_digest, features}`. Each feature binds a stable id and description digest. It binds a hot-path attach point `{file, symbol, operation}`. It binds input/output schema digests and at least one typed wiring edge. The edge targets an existing EG producer/consumer or scoped external owner. Compare every feature with pinned architecture and AU study-gap evidence. Return ordered `DesignDifference` records with feature id, existing container/edge refs, missing edge/attach point, and source ids. Refuse stale/mismatched revisions, omitted features, missing attach points, empty edge sets, and unreachable producer-consumer paths. Use `ARCHITECTURE_EVIDENCE_MISSING`, `STUDY_GAP_EVIDENCE_MISSING`, `FEATURE_ATTACH_POINT_REQUIRED`, or `FEATURE_UNWIRED`. Refusal emits no plan. Architecture producer: `EG-CQ-ORCH-R010.1-.6`. AU study-gap producer/consumer: `AU-HARNESS-R019.5-.7`. AU rows bind the same repository/revision and return stable proposal id/revision. If absent, keep this dependency open and refuse admission. Wire admission before TaskPlan returns at `src/server/handlers/decide/stat_decide.rs`. Use served architecture view from `src/server/handlers/mining/impact.rs`. Add no architecture derivation path. Proving tests: `src/server/handlers/decide/stat_tests/architecture_admission_tests.rs::unwired_feature_refuses_before_task_plan`, `src/server/handlers/decide/stat_tests/architecture_admission_tests.rs::stale_architecture_or_study_gap_refuses`, and `tests/decide/test_architecture_admission_served.py::test_plan_requires_pinned_architecture_and_attach_points`. Preserve `EG-CQ-ORCH-R010.1`, `EG-CQ-ORCH-R010.2`, `EG-CQ-ORCH-R010.3`, `EG-CQ-ORCH-R010.4`, `EG-CQ-ORCH-R010.5`, `EG-CQ-ORCH-R010.6`, `AU-HARNESS-R019.5`, `AU-HARNESS-R019.6`, and `AU-HARNESS-R019.7`. Source GRAPHOS:20 SHA-256 `bbc3f62e74bc899e49191e1d9bf324afe5e6dc2553df9e8d8651aae1311a8418`. Remains SPECIFIED pending AU field confirmation, implementation, and served receipts. | Planned acceptance: Matching pinned architecture/study-gap evidence and feature attach points return differences and a TaskPlan. Missing edges/attach points, stale revisions, omitted features, or absent owner receipts return named refusals and no plan. Use served impact and Decide handlers. Independently read back revisions and source refs. Keep AU proposal producer separate. Do not duplicate architecture derivation. These are future cases, not evidence. | requirement | EG-CQ-ORCH | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB EG-ORCH-VOCAB — Orchestration vocabulary | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R001 Task steps (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Task steps (rollup).** Adds the ordered-step vocabulary so "what steps" is one graph query. Step order reuses the existing core `:precedes`; no new order property. Children .1-.4. | Rollup closes when children .1-.4 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R001.1 Add class `:TaskStep` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:TaskStep`.** Add `:TaskStep` (subclass of `bfo:0000001` so the existing `:precedes` domain and range accept it) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-rdf/tests/orchestration_vocabulary.rs::task_step_resolves_and_precedes_accepts_it`: term loads, reasoner consistent. | requirement | EG-ORCH-VOCAB | VERIFIED | 232da0d60c91 481fa6ea2c55 fcf70c5bf0a8 crates/eg-rdf/tests/orchestration_vocabulary.rs:31 |
| EG-ORCH-VOCAB-R001.2 Add property `:hasStep` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:hasStep`.** Add `:hasStep` (object property, range `:TaskStep`, no domain because a task is any class-typed IRI) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::has_step_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R001.3 Add step-order acyclicity shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add step-order acyclicity shape.** Create `crates/eg-core/ontology/orchestration-v1.shapes.ttl` with `:TaskStepShape` (target `:TaskStep`): no `$this :precedes+ $this`; a step has exactly one `:hasStep` owner. Aggregate-free `sh:sparql`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::step_shape_rejects_a_precedes_cycle` accepts the fixture and rejects a planted cycle. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R001.4 Add Q1 fixture and query test Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add Q1 fixture and query test.** Add `crates/eg-core/tests/fixtures/orchestration_vocabulary/deploy_container.ttl` (worked example in design.md) and a test running the Q1 query. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::q1_returns_four_ordered_steps`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R002 Agent kinds and staffing (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Agent kinds and staffing (rollup).** Adds the agent-kind taxonomy and the slot-to-kind link so "how many and which agents" is answerable from a topology template. Children .1-.5. | Rollup closes when children .1-.5 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R002.1 Add class `:AgentKind` and seed members Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:AgentKind` and seed members.** Add `:AgentKind` and seven named individuals (`:agentKindSupervisor`, `:agentKindWorker`, `:agentKindVerifier`, `:agentKindAggregator`, `:agentKindPlanner`, `:agentKindResearcher`, `:agentKindExecutor`) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::agent_kind_members_resolve`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R002.2 Add property `:hasAgentKind` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:hasAgentKind`.** Add `:hasAgentKind` (domain `:Agent`, range `:AgentKind`) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::has_agent_kind_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R002.3 Add property `swarm:requiresAgentKind` and the import Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `swarm:requiresAgentKind` and the import.** Add `swarm:requiresAgentKind` (domain `swarm:Slot`, range `:AgentKind`) to `crates/eg-core/ontology/swarm_topology-v1.ttl` and add `owl:imports <http://knuckles.team/kg/orchestration>` to the swarm ontology header. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::slot_requires_agent_kind_resolves`; the import-closure test passes with no cycle. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R002.4 Add slot-kind shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add slot-kind shape.** Extend `swarm:SlotShape` in `crates/eg-core/ontology/swarm_topology-v1.shapes.ttl` with `sh:path swarm:requiresAgentKind; sh:maxCount 1; sh:class :AgentKind`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::slot_shape_rejects_a_non_kind`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R002.5 Add Q2 query test Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add Q2 query test.** Test the Q2 query over the fixture: slot, role, kind, width bounds. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::q2_returns_slots_roles_kinds_and_width`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003 Agent Library, templates and A2A members (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Agent Library, templates and A2A members (rollup).** Adds `:AgentTemplate`, `:AgentLibrary` and library membership, and makes a registered `:A2AAgentCard` a library member the assembler can use. Children .1-.7. | Rollup closes when children .1-.7 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.1 Add class `:AgentTemplate` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:AgentTemplate`.** Add `:AgentTemplate` (subclass of `:Agent`) to `crates/eg-core/ontology/orchestration-v1.ttl`, mirroring `crates/eg-types/src/agent_template.rs`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::agent_template_is_an_agent`: `:hasSkill` and `:usesModel` accept it. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.2 Add class `:AgentLibrary` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:AgentLibrary`.** Add `:AgentLibrary` to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::agent_library_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.3 Add property `:memberOfLibrary` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:memberOfLibrary`.** Add `:memberOfLibrary` (range `:AgentLibrary`; no domain, because members are `:Agent`, `:AgentTemplate` and `:A2AAgentCard`) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::member_of_library_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.4 Add property `:instanceOfTemplate` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:instanceOfTemplate`.** Add `:instanceOfTemplate` (domain `:Agent`, range `:AgentTemplate`) to `crates/eg-core/ontology/orchestration-v1.ttl`, mirroring `TemplateInstanceRef`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::instance_of_template_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.5 Add library-member shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add library-member shape.** Add `:LibraryMemberShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl`: every `:memberOfLibrary` subject has at least one `:providesCapability` (a member with none is useless to coverage). Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::member_shape_rejects_a_member_without_capability`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.6 Wire the Agent Library projection to emit membership Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Wire the Agent Library projection to emit membership.** In the Agent Library outbox projection (`src/server/connector_pack_projection.rs` and `src/server/persistence/agent_library/`), emit `:hasAgentKind` from typed component annotations, `:memberOfLibrary`, `:instanceOfTemplate` and, for kind `a2a_agent_card` components, `a :A2AAgentCard` plus `:providesCapability` from `declared_capabilities`. Capability triples from a card carry claim strength (EG-DECISION-ENGINE-R126.1). Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::a2a_card_component_projects_as_library_member_with_claim_capabilities`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.7 Add Q3 query test Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add Q3 query test.** Test the Q3 query returns the template and the A2A card as separate candidate kinds for one required capability. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::q3_lists_template_and_a2a_candidates`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R004 Best practices and guardrail scope (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Best practices and guardrail scope (rollup).** Adds `:BestPractice` and the rule-to-task-class link; rule storage is the existing `GuardrailRule` component (EG-DECISION-ENGINE-R127.2.1). Children .1-.5. | Rollup closes when children .1-.5 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R004.1 Add class `:BestPractice` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:BestPractice`.** Add `:BestPractice` (subclass of `:DevelopmentStandard`) to `crates/eg-core/ontology/capability-v1.ttl`. Owner: epistemic-graph. | `crates/eg-rdf/tests/orchestration_vocabulary.rs::best_practice_is_a_development_standard`. | requirement | EG-ORCH-VOCAB | VERIFIED | 232da0d60c91 481fa6ea2c55 fcf70c5bf0a8 crates/eg-rdf/tests/orchestration_vocabulary.rs:64 |
| EG-ORCH-VOCAB-R004.2 Add property `:appliesToTaskClass` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:appliesToTaskClass`.** Add `:appliesToTaskClass` (domain `:DevelopmentStandard`, range `owl:Class`) to `crates/eg-core/ontology/capability-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::applies_to_task_class_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R004.3 Add rule-scope shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add rule-scope shape.** Add `:RuleScopeShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl`: target every projected `:BestPractice`, including nodes missing the scope property, and require exactly one IRI-valued `:appliesToTaskClass`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::rule_scope_shape_rejects_a_rule_without_a_class`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R004.4 Project `GuardrailRule` components Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Project `GuardrailRule` components.** In the Agent Library projection, emit `a :BestPractice` and `:appliesToTaskClass` from the `applies_to_class` attribute and the source generation as provenance for each `guardrail_rule` component. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::guardrail_rule_component_projects_applies_to_task_class`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R004.5 Add Q4 query test Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add Q4 query test.** Test that a rule on a superclass of the task class is returned with its entailment path (reuses R127.1 `entailed_guardrails`) and an unrelated rule is not. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::q4_returns_entailed_rules_only`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005 Per-subtask bindings (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Per-subtask bindings (rollup).** Adds `:ModelProfile`, `:needsSkill` and a typed step-to-agent assignment so "skills, tools, prompts, models per subtask" is one query. Children .1-.6. | Rollup closes when children .1-.6 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.1 Add class `:ModelProfile` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:ModelProfile`.** Add `:ModelProfile` (subclass of `:Model`, so `:usesModel` and `:contextWindow` apply) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::model_profile_is_a_model`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.2 Add property `:needsSkill` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:needsSkill`.** Add `:needsSkill` (domain `:TaskStep`, range `:Skill`) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::needs_skill_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.3 Add property `:stepAssignedAgent` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:stepAssignedAgent`.** Add `:stepAssignedAgent` (domain `:TaskStep`, no range) to `crates/eg-core/ontology/orchestration-v1.ttl`; the existing `:assignedAgent` is range-restricted to `:A2AAgentCard` and is left alone. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::step_assigned_agent_resolves`; reasoner does not infer an agent to be an A2A card. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.4 Add binding shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add binding shape.** Add `:StepBindingShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl`: an assigned step has an agent that is `sh:or (:Agent :A2AAgentCard)`, and an `:Agent` assignee has exactly one `:usesModel` and one `:hasPrompt`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::binding_shape_rejects_agent_without_model`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.5 Project `model_profile` components Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Project `model_profile` components.** In the Agent Library projection, emit `a :ModelProfile` with `:contextWindow` for each `model_profile` component. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::model_profile_component_projects_with_context_window`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.6 Add Q5 query test Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add Q5 query test.** Test the Q5 query returns skills, tools, prompt and model per step. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::q5_returns_bindings_per_step`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006 Hand-off and agent-graph DAG (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Hand-off and agent-graph DAG (rollup).** Adds the hand-off property and the slot-to-slot edge with an acyclicity shape. Children .1-.6. | Rollup closes when children .1-.6 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006.1 Add property `:handsOffTo` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:handsOffTo`.** Add `:handsOffTo` (domain and range `:TaskStep`, sub-property of `:precedes`) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::hands_off_to_implies_precedes`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006.2 Add property `swarm:feeds` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `swarm:feeds`.** Add `swarm:feeds` (domain and range `swarm:Slot`) to `crates/eg-core/ontology/swarm_topology-v1.ttl`: the forward data-flow edge. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::feeds_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006.3 Add property `swarm:loopsBackTo` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `swarm:loopsBackTo`.** Add `swarm:loopsBackTo` (domain and range `swarm:Slot`) to `crates/eg-core/ontology/swarm_topology-v1.ttl`: the only legal back-edge, used by `CritiqueLoop`, `Debate` and `Council`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::loops_back_to_resolves`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006.4 Add DAG acyclicity shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add DAG acyclicity shape.** Add `swarm:FeedsAcyclicShape` to `crates/eg-core/ontology/swarm_topology-v1.shapes.ttl` (target `swarm:TopologyTemplate`): no slot reaches itself through `swarm:feeds+`, and both ends of every `swarm:feeds` belong to the template's own `swarm:hasSlot`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::feeds_shape_rejects_a_forward_cycle_and_accepts_a_loop_back_edge`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006.5 Project template topology facts to `swarm:feeds` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Project template topology facts to `swarm:feeds`.** Where the AgentGraph template projection (EG-DECISION-ENGINE-R106) writes `swarm:hasSlot`, also write `swarm:requiresAgentKind` from slot facts and `swarm:feeds` from `AgentGraphEdge` (`from`, `to`, unconditional) and `swarm:loopsBackTo` from an edge flagged as a loop back. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::template_projection_emits_feeds_edges`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R006.6 Add Q6 and Q7 query tests Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add Q6 and Q7 query tests.** Test the workflow query (steps, hand-offs) and the DAG query (nodes, edges, acyclic) over the fixture. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::q6_returns_handoffs` and `crates/eg-core/tests/orchestration_vocabulary.rs::q7_returns_dag_adjacency`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R007 Assembly consumption (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Assembly consumption (rollup).** `graph.assemble()` (EG-DECISION-ENGINE-R036) reads the vocabulary for its task list and writes it back for its result; no planner is added. Children .1-.4. | Rollup closes when children .1-.4 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R007.1 Expand a task's steps into assembly tasks Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Expand a task's steps into assembly tasks.** In `src/server/handlers/decide/assemble.rs`, a task IRI with `:hasStep` steps produces one typed assembly task per step. Each task carries its step's `:requiresCapability` and `:needsSkill` capabilities. A task without steps stays one task. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::assemble_expands_has_step_into_tasks`: capability sets per step reach the solver. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R007.2 Project the assembled graph back Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Project the assembled graph back.** After `DecisionCommit` publishes the `AgentGraphDraft`, the projection emits `:stepAssignedAgent` per step and `swarm:feeds` per edge so the Q1-Q7 queries see the assembled graph. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::committed_assembly_is_queryable_through_q5_and_q7`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R007.3 Add the composed read Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add the composed read.** A test runs Q1-Q7 against one committed assembly and asserts every part is non-empty with provenance. This feeds `EG-CQ-ORCH-R008`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::all_seven_parts_present_after_assembly`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R007.4 Enforce slot agent-kind constraints before assembly selection Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Enforce slot agent-kind constraints before assembly selection.** Resolve `swarm:requiresAgentKind` and candidate `:hasAgentKind` from the visible projections in `src/server/handlers/decide/assemble.rs`; a constrained slot accepts only candidates carrying that kind. Unconstrained slots retain current behavior; no matching visible candidate yields a typed abstention. Kinds remain data, with no solver term list. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::assemble_enforces_slot_agent_kind` excludes an executor-only candidate from a verifier slot, accepts a verifier, and abstains when no visible verifier exists. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R008 Catalog registration and ontology gates (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Catalog registration and ontology gates (rollup).** Registers the new shapes file and keeps generated artifacts in step. Children .1-.2. | Rollup closes when children .1-.2 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R008.1 Register `orchestration-v1.shapes.ttl` with the shape loader Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Register `orchestration-v1.shapes.ttl` with the shape loader.** Add the new shapes file to the same loader list as `finance-v1.shapes.ttl` and `governance-core-v1.shapes.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::orchestration_shapes_are_loaded`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R008.2 Regenerate ontology artifacts Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Regenerate ontology artifacts.** Regenerate the ontology digests and the catalog import list, then run the byte-for-byte generated-artifact test. The file `catalog-v1.ttl` is import-only and gains no term. Owner: epistemic-graph. | Existing generated-artifact test passes on the regenerated files. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009 Harness run-trace vocabulary (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Harness run-trace vocabulary (rollup).** Adds the harness run-trace properties to `:RunTrace`, their shapes, and the ingestion proof. Existing children .1-.17 remain mandatory; reviewed extensions .18, .100 and .101 define the additional run-boundary, trace-export and indexed-session contracts without replacing those fields. | Preserve every original shape/ingestion acceptance; the extended rollup closes only when .1-.17 and each accepted extension are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.1 Add property `:terminationReason` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:terminationReason`.** Add owl:DatatypeProperty `:terminationReason` (`:RunTrace` -> xsd:string) to `crates/eg-core/ontology/orchestration-v1.ttl`. `sh:in` (final_answer|context_overflow|stuck|step_budget|error), in the shapes file. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::terminationReason_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.2 Add property `:peakContextTokens` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:peakContextTokens`.** Add owl:DatatypeProperty `:peakContextTokens` (`:RunTrace` -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::peakContextTokens_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.3 Add property `:contextBudgetTokens` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:contextBudgetTokens`.** Add owl:DatatypeProperty `:contextBudgetTokens` (`:RunTrace` -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::contextBudgetTokens_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.4 Add property `:elisionCount` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:elisionCount`.** Add owl:DatatypeProperty `:elisionCount` (`:RunTrace` -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::elisionCount_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.5 Add property `:summarizationCount` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:summarizationCount`.** Add owl:DatatypeProperty `:summarizationCount` (`:RunTrace` -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::summarizationCount_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.6 Add property `:turnCount` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:turnCount`.** Add owl:DatatypeProperty `:turnCount` (`:RunTrace` -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::turnCount_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.7 Add property `:toolCallCount` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:toolCallCount`.** Add owl:DatatypeProperty `:toolCallCount` (`:RunTrace` -> xsd:integer) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::toolCallCount_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.8 Add property `:costUsd` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:costUsd`.** Add owl:DatatypeProperty `:costUsd` (`:RunTrace` -> xsd:decimal) to `crates/eg-core/ontology/orchestration-v1.ttl`. Cost in US dollars; `:tokenCost` (`EG-CQ-CONN-R079.3`) stays as the raw token cost. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::costUsd_declared` asserts the term by ASK over rdf:type and rdfs:domain. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.9 Add property `:appliedHarnessConfig` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:appliedHarnessConfig`.** Add owl:ObjectProperty `:appliedHarnessConfig` (`:RunTrace` -> `:Decision`) to `crates/eg-core/ontology/orchestration-v1.ttl`. The range is the committed `HarnessConfig` decision node that the `EG-DECISION-ENGINE` row for `HarnessConfig` writes. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::applied_harness_config_links_trace_to_decision`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.10 Add property `:runModel` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:runModel`.** Add owl:ObjectProperty `:runModel` (`:RunTrace` -> `:ModelProfile`) to `crates/eg-core/ontology/orchestration-v1.ttl`. The existing `:usesModel` has an `:Agent` domain, so the per-model queries need this property. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::run_model_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.11 Add property `:runTaskClass` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:runTaskClass`.** Add owl:ObjectProperty `:runTaskClass` (`:RunTrace` -> `:TaskClass`) to `crates/eg-core/ontology/orchestration-v1.ttl`. The `EG-TYPED-PACKS` rows for the task class own `:TaskClass` and `shellCentric`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::run_task_class_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.12 Add counter shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add counter shape.** Add `:RunTraceCounterShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl`. Each of the six counters and `:costUsd` must be a non-negative number; a negative or non-integer counter fails. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::counter_shape_rejects_negative_and_fractional_counts`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.13 Add context-budget shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add context-budget shape.** Add `:RunTraceBudgetShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl` as an `sh:sparql` constraint. `:peakContextTokens` must not exceed `:contextBudgetTokens` unless `:terminationReason` is `context_overflow`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::budget_shape_allows_overshoot_only_for_overflow`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.14 Add completed-trace shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add completed-trace shape.** Add `:RunTraceCompletedShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl`. A trace with a terminal status must carry `:terminationReason`, all counters, `:runModel`, `:runTaskClass` and `:appliedHarnessConfig`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::completed_trace_shape_rejects_missing_termination_reason`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.15 Refuse a shape-invalid RunTrace write Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Refuse a shape-invalid RunTrace write.** In `src/server/handlers/graph_ops/gateway_graph.rs` (the `Method::AddNode` arm at line 62), validate a node whose `node_type` is `RunTrace` against the three shapes. A violation returns a typed refusal that names the shape and writes nothing. Owner: epistemic-graph. | `crates/eg-core/tests/run_trace_ingest.rs::invalid_trace_is_refused_and_not_stored`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.16 Fixture trace for each termination reason Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Fixture trace for each termination reason.** Add `crates/eg-core/tests/fixtures/run_traces.json` with five valid traces, one per termination reason, and one overflow trace whose peak exceeds its budget. Owner: epistemic-graph. | `crates/eg-core/tests/run_trace_ingest.rs::fixtures_pass_all_run_trace_shapes`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.17 Prove the ingestion hot path Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Prove the ingestion hot path.** Send each fixture through the generated client method (`EG-CONTRACT-R051.1`) and `Method::AddNode`, then read it back with Cypher `MATCH (t:RunTrace {id: $tid})`. The read must return every harness property and the `:appliedHarnessConfig` edge. Owner: epistemic-graph. | `crates/eg-core/tests/run_trace_ingest.rs::client_ingest_round_trips_harness_properties`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010 Run-trace metric queries (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Run-trace metric queries (rollup).** Defines the per-model, per-task-class queries that the measured-fact loop reads. A solved task is a trace with `final_answer` and `:evaluationScore` of 1.0. Existing children .1-.6 remain mandatory; .100 and .101 add proposal/progress joins and project/agent usage accounting. | Preserve the original solved-task and metric semantics; the extended rollup closes only when .1-.6 and .100-.101 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.1 Query success rate Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Query success rate.** Query `harness_success_rate` returns solved traces divided by all traces, grouped by `:runModel` and `:runTaskClass`. Fixtures live in `crates/eg-core/tests/fixtures/run_traces.json`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::success_rate_per_model_and_task_class`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.2 Query cost per solved task Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Query cost per solved task.** Query `harness_cost_per_solved_task` returns the summed `:costUsd` of all traces divided by the solved-trace count. It groups by model, task class and `:appliedHarnessConfig`. It abstains when no trace is solved. Fixtures live in `crates/eg-core/tests/fixtures/run_traces.json`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::cost_per_solved_task_abstains_without_solved_trace`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.3 Query overflow rate Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Query overflow rate.** Query `harness_overflow_rate` returns the share of traces with `:terminationReason` equal to `context_overflow`, grouped by model and task class. Fixtures live in `crates/eg-core/tests/fixtures/run_traces.json`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::overflow_rate_counts_only_context_overflow`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.4 Query peak-to-budget ratio Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Query peak-to-budget ratio.** Query `harness_mean_peak_ratio` returns the mean of `:peakContextTokens` divided by `:contextBudgetTokens`, grouped by model and task class. Fixtures live in `crates/eg-core/tests/fixtures/run_traces.json`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::mean_peak_ratio_per_model_and_task_class`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.5 Query mechanism counts Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Query mechanism counts.** Query `harness_mechanism_counts` returns mean `:elisionCount`, `:summarizationCount`, `:turnCount` and `:toolCallCount`, grouped by model and `:appliedHarnessConfig`. Fixtures live in `crates/eg-core/tests/fixtures/run_traces.json`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::mechanism_counts_per_config`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.6 Query competency question Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Query competency question.** Query `harness_best_config` answers one question. For model M and task class C, it names the cheapest configuration per solved task, with evidence. It returns the configuration, its cost, and the trace ids. It abstains below a named default of 20 traces per configuration. A measured value may replace that default. Fixtures live in `crates/eg-core/tests/fixtures/run_traces.json`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::best_config_names_evidence_and_abstains_on_small_samples`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011 Measured model facts from evaluation (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Measured model facts from evaluation (rollup).** Turns an evaluation result into a governed, replaceable model fact that cites its evidence. Storage of the model facts belongs to the `EG-TYPED-PACKS` rows for the measured model facts. Children .1-.11. | Rollup closes when children .1-.11 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.1 Add class `:EvaluationRun` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:EvaluationRun`.** Add `:EvaluationRun`` (subclass of `:RunTrace`) to `crates/eg-core/ontology/orchestration-v1.ttl`. One node represents one matched ablation run; its traces link through `:HAS_EVENT` or `:produced`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::evaluation_run_is_a_run_trace`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.2 Add class `:MeasuredModelFact` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add class `:MeasuredModelFact`.** Add `:MeasuredModelFact` to `crates/eg-core/ontology/orchestration-v1.ttl`. One node records one measured value of one property of one model profile. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::measured_model_fact_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.3 Add properties `:factOfModel` and `:measuredProperty` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add properties `:factOfModel` and `:measuredProperty`.** Add `:factOfModel` (-> `:ModelProfile`) and `:measuredProperty` (xsd:string) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::fact_of_model_and_measured_property_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.4 Add property `:evidencedByRun` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:evidencedByRun`.** Add owl:ObjectProperty `:evidencedByRun` (`:MeasuredModelFact` -> `:EvaluationRun`) to `crates/eg-core/ontology/orchestration-v1.ttl`. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::evidenced_by_run_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.5 Add property `:measuredSupersedes` Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add property `:measuredSupersedes`.** Add owl:ObjectProperty `:measuredSupersedes` (`:MeasuredModelFact` -> `:MeasuredModelFact`) to `crates/eg-core/ontology/orchestration-v1.ttl`. A newer measurement replaces an older one by this edge, never by deletion. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::measured_supersedes_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.6 Add measured-fact shape Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Add measured-fact shape.** Add `:MeasuredModelFactShape` to `crates/eg-core/ontology/orchestration-v1.shapes.ttl`. A fact has exactly one `:evidencedByRun`; `:measuredProperty` is `sh:in` (shellProficiency|stoppingBehaviour|contextWindowTokens); the value matches that property's value set. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::measured_fact_shape_rejects_missing_evidence`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.7 Build the measured-fact envelope Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Build the measured-fact envelope.** Add `measured_fact_envelope(model_ref, property, value, evaluation_run_id, digest) -> ChangeEnvelope` in new file `crates/eg-types/src/change_envelope/measured_fact.rs`. It emits one `EvidenceRecord` (`change_envelope.rs:158`) whose `object_id` is the evaluation run id. Owner: epistemic-graph. | `crates/eg-types/src/change_envelope/measured_fact.rs::tests::envelope_carries_run_evidence`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.8 Refuse a measured fact without evidence Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Refuse a measured fact without evidence.** `ChangeEnvelope::validate` (`crates/eg-types/src/change_envelope.rs:248`) must refuse an envelope that writes a `:MeasuredModelFact` without an `EvidenceRecord` naming an `:EvaluationRun`. The refusal is typed `MeasuredFactWithoutEvidence`. Owner: epistemic-graph. | `crates/eg-types/src/change_envelope/measured_fact.rs::tests::missing_evidence_is_refused`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.9 Replace a fact by a newer measurement Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Replace a fact by a newer measurement.** The envelope builder must add `:measuredSupersedes` to the current fact of the same model and property. The query `current_measured_fact` returns the newest fact that nothing supersedes. Owner: epistemic-graph. | `crates/eg-core/tests/orchestration_vocabulary.rs::newer_measurement_replaces_older_and_old_stays_readable`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.10 Apply the envelope through the governed path Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Apply the envelope through the governed path.** `dispatch_change_envelopes` (`src/server/dispatch/change_envelope.rs:36`) applies the envelope; the existing `ApplyChangeEnvelopes` wire method needs no new variant. A client calls it once per evaluation result. Owner: epistemic-graph. | `crates/eg-core/tests/run_trace_ingest.rs::evaluation_result_writes_fact_through_apply_change_envelopes`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R011.11 Prove the loop closes Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Prove the loop closes.** Ingest an evaluation, write `contextWindowTokens`, then call `Decide` for `HarnessConfig` (`EG-DECISION-ENGINE` row for `HarnessConfig`). The answer must cite the fact. Without the fact, the answer must abstain, per the `EG-TYPED-PACKS` rows. Owner: epistemic-graph. | `crates/eg-core/tests/run_trace_ingest.rs::harness_config_decision_reads_measured_fact_and_abstains_without`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012 Spec-folder contents map to typed graph nodes (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Spec-folder contents map to typed graph nodes (rollup).** Workspace ingestion maps each file of a specification folder to one typed node: task, goal, document, memory or policy. Children .1-.6. | Rollup closes when children .1-.6 are verified. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.1 Model Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Model.** Add `SpecNodeKind` (closed set: `task`, `goal`, `document`, `memory`, `policy`) in new file `crates/eg-core/src/spec_folder.rs`. Add the matching classes `:SpecTask`, `:SpecGoal`, `:SpecMemory` and `:SpecPolicy` to `crates/eg-core/ontology/sdd-v1.ttl`; documents reuse `:Specification`. Owner: epistemic-graph. | `crates/eg-core/tests/spec_folder_mapping.rs::node_kinds_are_closed_and_declared`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.2 Behavior Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Behavior.** Add `classify_spec_file(relative_path, front_matter) -> Result<SpecNodeKind, SpecFolderRefusal>` in `crates/eg-core/src/spec_folder.rs`. Each rule is a named, replaceable default. `tasks.md` maps to task. `spec.md` and `plan.md` map to document. A constitution file maps to policy. A memory folder maps to memory. A goal line maps to goal. Owner: epistemic-graph. | `crates/eg-core/tests/spec_folder_mapping.rs::default_rules_classify_each_file_kind`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.3 Wiring Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Wiring.** Call `classify_spec_file` from the non-code branch of the `IndexRepository` handler at `src/server/dispatch/router/source_ingest.rs:24`. The dispatch router calls that handler for every `IndexRepository` request in production. The call site for the non-code branch is new. Owner: epistemic-graph. | `crates/eg-core/tests/spec_folder_mapping.rs::index_repository_writes_typed_nodes`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.4 Refusal Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Refusal.** `classify_spec_file` must return the typed refusal `SpecFolderRefusal::UnknownKind` for a file that matches no rule. The indexer must store a plain `:Document` for it and must not guess a kind. Owner: epistemic-graph. | `crates/eg-core/tests/spec_folder_mapping.rs::unknown_file_is_refused_not_guessed`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.5 Evidence Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Evidence.** Each node written by the classifier must carry `:classifiedByRule` (xsd:string, the rule name) and the source path. A query must list every node with the rule that produced it. Owner: epistemic-graph. | `crates/eg-core/tests/spec_folder_mapping.rs::node_records_deciding_rule`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.6 Hot-path proof Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Hot-path proof.** Entry point: the `IndexRepository` wire method with a fixture spec folder. The test passes through `source_ingest.rs:24` and then queries the graph. It must observe one task, one goal, one document, one memory and one policy node. Owner: epistemic-graph. | `crates/eg-core/tests/spec_folder_mapping.rs::index_repository_on_spec_folder_yields_five_kinds`. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013 Run trace step record with request, argument and result digests (rollup) Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Run trace step record with request, argument and result digests (rollup).** EG stores a model-request digest, tool-argument digest, and result digest for each run step. Replays compare step digests with stored values. Children `.1` to `.6` deliver this contract. | See each child. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.1 Model Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Model.** Add `StepRecord{step_index, kind, model_request_digest, tool_args_digest, result_digest}` in `crates/eg-types/src/outcome_bundle.rs` beside `ReceiptNodeKind` at line 130. Add the kind `ModelRequest` to `ReceiptNodeKind`. `kind` is closed: `model_request`, `tool_call`. Raw prompt and argument bytes stay in a referenced artifact. Proving test: `crates/eg-types/src/outcome_bundle.rs::tests::step_record_round_trips`. | A serde round trip keeps the three digests and rejects an unknown kind. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.2 Behavior Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Behavior.** Add `step_digest(kind, canonical_bytes) -> Digest256` in `crates/eg-types/src/outcome_bundle.rs`. The default is SHA-256 over canonical JSON, a named replaceable recipe. The harness and the engine must use this one recipe. The harness compares digests span by span and names the first index that differs. Proving test: `crates/eg-types/src/outcome_bundle.rs::tests::step_digest_is_canonical`. | Key order and whitespace do not change the digest. A changed value does. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.3 Wiring Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Wiring.** `StepRecord` validation attaches where a terminal commit binds its receipt nodes, in `crates/eg-types/src/outcome_bundle.rs:668` (`RunEvent`). The production caller is the `AddNode` arm at `src/server/handlers/graph_ops/gateway_graph.rs:62`, which `EG-ORCH-VOCAB` already uses for run traces. This row creates the call site that validates the digests of each ordered step. No production replay compare reads the stored digests today. Proving test: `src/server/handlers/graph_ops/gateway_graph.rs::tests::add_run_trace_checks_step_digests`. | A run trace with a malformed digest is refused. A valid one is stored in step order. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.4 Refusal Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Refusal.** A step with a digest that is not 64 hex characters must be refused with `STEP_DIGEST_INVALID`. A step index that skips or repeats must be refused with `STEP_ORDER_INVALID`. Proving test: `crates/eg-types/src/outcome_bundle.rs::tests::bad_digest_and_gap_refused`. | Each fault returns its own code and stores nothing. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.5 Evidence Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Evidence.** Each stored step must carry `:stepIndex` and `:recordedBy`, the actor that wrote it. The run trace must expose the ordered step digests to a read. Proving test: `crates/eg-types/src/outcome_bundle.rs::tests::stored_steps_read_in_order`. | A read returns the steps in index order with the writing actor. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.6 Hot-path proof Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Hot-path proof.** The entry point is the generated client run-trace write, which reaches the `AddNode` wire method. The test writes three steps, reads them back, and compares them with a replayed copy that differs at step two. The call passes through `src/server/handlers/graph_ops/gateway_graph.rs:62`. It observes that the first differing index is two. Proving test: `tests/orchestration/test_run_trace_steps_served.py::test_first_divergence_is_step_two`. | The read-back digests let the compare report index two. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.18 Use one run observation window for model and width adjustments Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Use one run observation window for model and width adjustments.** EG SHALL accept one revisioned observation window per run. The window SHALL bind run ID, window ID, start time, and end time. It SHALL record latency samples and units, error count, and eligible-attempt denominator. It SHALL record token usage and measured cost. Cost SHALL include currency and rate revision. The window SHALL bind current model/profile and parallel width. It SHALL record consumed/remaining budgets and host-capacity receipt. Missing samples or rates SHALL remain unknown. Zero denominator, stale window, or run-revision mismatch SHALL remain unknown. Unknowns SHALL NOT become zero-cost or zero-error evidence. A versioned policy SHALL state latency/error thresholds and model-adequacy/profile inputs. It SHALL state cost-prediction basis and deterministic tie breaks. EG SHALL evaluate model and width jointly against observations and remaining budget. It SHALL return a committed feasible pair or typed abstention/stop. It SHALL trace before/after model, width, budget, window, policy, evidence, and reason. Mid-run continuation SHALL obey AU-CONTROL-R019. AU permits narrowing width to release capacity and prohibits mid-run widening. A later-run allocation requires separate admission and capacity grant. Production wiring: Feed proposed AU RunAdjustmentObservation from existing routing/continuation paths to Method::Decide. Reuse R136 model adequacy/stage allocation and R009.17 RunTrace ingestion/readback. Persist adjustments and abstentions before application. GraphOS remains capacity authority. Owner link: `AU-CONTROL-R006` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/agent-control-plane/requirements.md:10`. Owner link: `AU-CONTROL-R019` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/agent-control-plane/requirements.md:24`. Owner link: `EG-DECISION-ENGINE-R136.3` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/decision-engine/requirements.md:298`. Owner link: `EG-ORCH-VOCAB-R009.17` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/orchestration-vocabulary/requirements.md:69`. Owner link: `GRAPHOS-CAPACITY-R001.1` at `graph-os@069eebc785afb9fb26bbbcc907cf5a2a4bcab5c5:specs/adaptive-capacity/requirements.md:6`. Draft dependency `AU-CONTROL-R006.30` remains `draft_unmerged` at `50c313ab01871ff7e10aee2a9d0254fa55d71f07`. It is not a merged producer or implementation receipt. Its path is `specs/agent-control-plane/requirements.md`. Explicit hold: AU-CONTROL-R006.30 remains unmerged. The owner must version joint-policy thresholds, predictive cost inputs, and tie-break semantics. Do not infer tuning defaults or implementation claims from source text. Owner-review proposal: The joint carrier makes missing decisions explicit. A self-referential adjustment command does not replace the published policy. Original source record `AU:26`, SHA-256 `8d2f83f788c5fdd36c4dc47f85c9f7673393b6b9075dc46a5ac1c32afd2386e2`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run run_observations_change_model_and_width_with_trace through real AU routing/continuation and served EG Decide. Use identical budgets and controlled latency/cost/error windows. Demonstrate policy-directed model/width changes and budget-forced refusal/stop. Read back exact before/after trace facts. Reject stale windows and invalid rates/denominators. Keep unknown values unknown. Show width narrowing releases capacity. Reject mid-run widening. Host-only AIMD or model-only allocator tests do not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R013.7 Source-pinned walkthrough artifact and graph-bound execution notes Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Source-pinned walkthrough artifact and graph-bound execution notes.** Reuse `Method::UnifiedQuery` for source reads and `Method::AddNode` for the existing RunTrace. Preserve R013.1-.6 StepRecord ordering and the content-addressed artifact read path. Add no graph writer or model executor. Define `CodeWalkthroughV1` as `{run_id, repository_id, repository_revision, graph_snapshot_revision, query_digest, ordered_sections, interaction_edges, artifact_ref, artifact_digest, execution_notes}`. Each section has a contiguous ordinal, source refs, and a content ref/digest. Each source ref is `{entity_id, source_revision, source_digest, path, start_line, end_line}`. Edges bind source/target section ordinals and a relation IRI. The manifest is versioned and self-contained. Content is embedded or referenced by immutable digest, never a mutable URL. It binds the exact query and graph snapshot. Each note binds run id, trace step index, span id, closed `StepRecord.kind`, result digest, and source refs. Notes follow contiguous R013.4-.6 order. The AddNode validator refuses a missing or stale repository revision. It also refuses refs outside the pinned snapshot, uncited sections, and unresolved artifact refs/digests. It refuses cross-tenant refs, duplicate/gapped note indices, or spans outside the run. Refusal stores nothing. UQL readback returns the same ordered refs/digests. Artifact read verifies its digest. EG validates/stores the manifest; AU owns explanation generation and execution spans; WebUI owns interaction/rendering. `EG-REPO-INGEST-R009` and `AU-HARNESS-R024` do not define the AU artifact producer or run binding. No WebUI artifact-consumer ID was found. AU must publish producer inputs, outputs, and invocation receipt. WebUI must publish artifact-consumption and interaction binding. Keep closure open until both exact owner IDs and served receipts are linked. Wire validation at `crates/eg-types/src/outcome_bundle.rs` and `src/server/handlers/graph_ops/gateway_graph.rs`; read back through `Method::Uql`. Proving tests: `crates/eg-types/src/outcome_bundle.rs::tests::code_walkthrough_manifest_round_trips`; `src/server/handlers/graph_ops/gateway_graph.rs::tests::add_run_trace_rejects_stale_walkthrough_source_or_artifact`; `tests/orchestration/test_code_walkthrough_served.py::test_walkthrough_trace_and_artifact_read_back`. Preserve `EG-REPO-INGEST-R009`, `AU-HARNESS-R024`, and `EG-ORCH-VOCAB-R013.1/.3`. Ordered-step validation retains `EG-ORCH-VOCAB-R013.3`. Source AU:115 SHA-256 `445704f78ae07d1c4b62f42dd23797823d91bc470f04a9dc779e3f6777fffbf0`. Status remains SPECIFIED; no producer, consumer, implementation, or receipt is claimed. | Planned served acceptance accepts a valid manifest through AddNode. UQL and artifact readback must independently return identical ordering and digests. Refuse stale revisions and uncited sections before storage. Also refuse foreign-tenant refs, unresolved/tampered artifacts, invalid span/run links, duplicate indices, and step gaps. Confirm EG invokes no generator. AU and WebUI journeys remain held until owner rows and receipts are linked. Existing producer tests do not prove these contracts. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R003.8 Successful-team promotion, safe similarity reuse, and typed handlers Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Successful-team promotion, safe similarity reuse, and typed handlers.** Extend R135 `CompiledProgram`/`lookup_program`, AgentLibraryStore, and R003.6 projection. Do not create a second program model or library. Promote only after a successful terminal run links its RunTrace and compiled program durably. The canonical signature binds task-class IRI, sorted capability IRIs, input/output schema digests, and topology digest. Lookup requires exact task-class/schema digests and topology accepted by R036. Score remaining candidates with caller-pinned `SimilarityPolicyV1`. The policy binds revision, weights summing to one, feature definitions, and minimum score. Capability overlap uses Jaccard on sorted sets. Every other feature names a deterministic score function and source revision. Missing/stale features are unknown and exclude candidates; they are not zero. Select the highest score meeting the minimum. Stable program IRI breaks ties. Projected bindings carry `{capability_id, handler_id, handler_version, input_schema_digest, output_schema_digest, declared_effects}`. IDs are IRIs and schema digests are SHA-256. Effects are a non-empty closed set: `read`, `write`, `external`, or `irreversible`. `graph.assemble()` consumes them as compatibility/effect constraints. It still runs the full R036 solver and policy guards. EG never invokes handlers. Refuse promotion without successful-run evidence, valid metadata, and source links. Abstain `no_compatible_program` when no candidate meets threshold/constraints. Wire through `crates/eg-types/src/decision/program_store.rs`, `src/server/handlers/decide/stat_decide.rs`, `src/server/handlers/decide/candidates.rs`, `src/server/handlers/decide/assemble.rs`, `src/server/persistence/agent_library.rs`, and R003.6 projection files. Tests: `crates/eg-types/src/decision/program_store.rs::tests::similarity_policy_and_signature_round_trip`; `src/server/handlers/decide/stat_tests/program_store_tests.rs::team_reuse_rejects_stale_or_incompatible_handler`; `tests/decide/test_program_store_served.py::test_successful_team_promotes_and_similar_task_reuses_constrained_plan`. Preserve `EG-DECISION-ENGINE-R135.2/.4/R036` and `EG-ORCH-VOCAB-R003.5/.6`. Existing coverage includes `EG-DECISION-ENGINE-R135.4`. The existing solver dependency is `EG-DECISION-ENGINE-R036`; the projection dependency is `EG-ORCH-VOCAB-R003.6`. Source EG:12 SHA-256 `517823a931bb93e173b301a9a31fbe6bd75c14687233c72278a59ced1940673a`. Status remains SPECIFIED pending reviewed implementation and served receipts. | Planned tests promote only a successful trace/program pair and independently read source IDs/signature. A pinned policy selects an exact-compatible candidate above threshold. It selects the highest score and breaks ties by stable ID. It excludes incompatible task/schema/topology or missing/stale features. Refuse malformed handler ID/version/schema/effect set. Confirm EG does not invoke handlers. Served assembly names program, policy/revision, score, bindings, and R036 certificate. No candidate yields `no_compatible_program`. These are future tests, not evidence. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.7 Synthesize reviewed repository policy with invariant-guarded activation Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Synthesize reviewed repository policy with invariant-guarded activation.** IndexRepository SHALL bind each classified policy source to repository, path, commit, blob digest, and source spans. It SHALL synthesize typed GuardrailRule candidates linked to those spans. A versioned synthesis profile SHALL declare its supported rule grammar. Unparsed or ambiguous clauses SHALL remain inactive with explicit reasons. Synthesis SHALL NOT give source prose authority to trigger operations or activate itself. Before activation, EG SHALL compare every rule against the pinned invariant generation through R129.3. EG SHALL validate the R012.8 review binding and compare expected active-policy revision. A contradiction SHALL name the invariant IRI, candidate rule, and source clause. Stale generation/review or unsupported clauses SHALL refuse activation and preserve the prior set. Successful activation SHALL atomically publish candidate-set digest and policy revision. Later reasoning SHALL load active graph policy and record its revision in decision evidence. Production wiring: Extend existing source_ingest/SourceIngest after classify_spec_file. Reuse GuardrailRule storage and `check_rule_against_invariants`. Connect activation to decision policy under EG-IDENTITY-R008.4. R129.5 human-override guarding alone does not establish repository-policy guarding. Owner link: `EG-ORCH-VOCAB-R012.2` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/orchestration-vocabulary/requirements.md:91`. Owner link: `EG-IDENTITY-R008.4` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/engine-identity-and-scope/requirements.md:16`. Owner link: `EG-DECISION-ENGINE-R129.3` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/decision-engine/requirements.md:247`. Owner link: `EG-DECISION-ENGINE-R129.5` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/decision-engine/requirements.md:249`. No draft consumer dependency is assigned. Explicit hold: The owner must publish and bind supported declarative grammar/synthesis profile. The owner must publish and bind a concrete review-receipt producer. Text synthesis may produce candidates. It cannot fill either authority gap. Owner-review proposal: Atomic publication covers the active graph-policy set only. It does not imply atomic cross-repository filesystem effects. Original source record `EG:46`, SHA-256 `9de4d3274232cb97a9a85ad17ea20b368fff1bd729bdb4e7b2799991da106c58`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. The generated status has no receipt arrays. No implementation or served receipt is claimed. | Exercise repository_policy_is_synthesized_guarded_and_used with real IndexRepository input. Inspect typed candidates/spans. Review the exact digest. Activate through owner path. The served decision SHALL prove active-rule use. A conflicting rule names the invariant and preserves prior active revision. Test unparsed prose, missing review, changed source digest, and invariant-generation race. Classification and direct helper-only tests do not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R004.6 Persist and query capability gaps and enhancements by task class Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Persist and query capability gaps and enhancements by task class.** EG SHALL persist distinct typed CapabilityGap and DesiredEnhancement nodes. Each node SHALL bind tenant, node ID/revision, capability reference, task-class reference, and domain-taxonomy reference. Each node SHALL also bind source evidence/digest, owner, and disposition. Edges SHALL connect each node to its capability, task class, and domain. A request-local `AbstainReason` SHALL NOT itself be the durable registry `CapabilityGap` record. A gap SHALL be a separately admitted node and may cite the abstention as source evidence. An enhancement records a requested improvement without asserting capability absence. The governed mutation path SHALL validate references, ownership, and expected revisions. It SHALL deduplicate repeated source events. Unknown taxonomy/task-class references SHALL refuse instead of creating arbitrary terms. UnifiedQuery SHALL return these types filtered by task class. It SHALL support exact or taxonomy-descendant matching at pinned taxonomy revision. Authorization SHALL run before rows, counts, and pagination. A gap/enhancement node SHALL NOT mark capability implemented, admitted, or successfully tested. Production wiring: Extend existing orchestration ontology/shapes and governed AddNode/ChangeEnvelope path. Reuse current task-class/domain taxonomy and Method::UnifiedQuery. Do not add a second capability registry. Keep the separate EG:7 owner-export manifest question out of these domain nodes. Owner link: `EG-ORCH-VOCAB-R004` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/orchestration-vocabulary/requirements.md:24`. Owner link: `EG-DECISION-ENGINE-R010` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/decision-engine/requirements.md:16`. No draft consumer dependency is assigned. Producer binding: The proposed typed authority/admission contract in plan.md is normative for this row. Configuration must be admitted before use; no deployed authority is claimed. Do not invent an owner role-export ID for the separate EG:7 hold. Owner-review proposal: Distinct gap/enhancement types and query match mode are proposed schema additions. Original source record `EG:51`, SHA-256 `ed01ad35731abc6a739b3e1a39ee198549103acf0d30ec51c77316ca7cf75c49`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run capability_gap_and_enhancement_are_queryable through served mutation and generated UnifiedQuery. Record gap from served abstention and enhancement from separate reviewed request. Query two task classes. Restart and repeat. Independently read typed fields, edges, and provenance. Test event deduplication, revision conflict, invalid taxonomy, exact/descendant matching, and denied-tenant pagination. Confirm capability implementation state did not change. In-memory fixtures alone do not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R012.8 Bind active policy to reviewed normative files without graph writes Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Bind active policy to reviewed normative files without graph writes.** EG SHALL retain epistemic state and active runtime policy in the graph. It SHALL bind normative sources to reviewed, versioned repository files. Each active binding SHALL record repository/path/commit/blob and candidate-set digest. It SHALL record review actor/receipt digest, invariant generation, and expected active-policy revision. Review SHALL cover exact source and synthesized-rule digests. Missing, stale, rejected, or mismatched review SHALL refuse before active-policy mutation. EG graph mutations and reasoning SHALL NOT overwrite normative files. A source change SHALL use governed SDK writeback and GraphOS approval. EG SHALL reread committed revision and review it before graph-policy activation. A graph-policy edit SHALL NOT rewrite files or make unreviewed files runtime authority. R012.7 invariant guards and generation comparison apply at activation. Production wiring: Link R012.2 policy classification and EG-IDENTITY-R008.4 active policy to R012.7 activation. Bind review/approval to GRAPHOS-OPS-R050.2/.4 and the concrete SDK source effect. EG has no normative filesystem writer. Owner link: `EG-ORCH-VOCAB-R012.2` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/orchestration-vocabulary/requirements.md:91`. Owner link: `EG-IDENTITY-R008.4` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/engine-identity-and-scope/requirements.md:16`. Owner link: `GRAPHOS-OPS-R050.2` at `graph-os@069eebc785afb9fb26bbbcc907cf5a2a4bcab5c5:specs/hosted-api-operations/requirements.md:147`. Owner link: `GRAPHOS-OPS-R050.4` at `graph-os@069eebc785afb9fb26bbbcc907cf5a2a4bcab5c5:specs/hosted-api-operations/requirements.md:149`. No draft consumer dependency is assigned. Explicit hold: The owner must confirm a review-receipt producer and normative-source-effect binding. R050 establishes review/ops boundaries, not the proposed full carrier. Owner-review proposal: Reviewed files remain normative source. EG owns active policy. This does not adopt file-only runtime authority. Original source record `EG:61`, SHA-256 `c5f1dfe7867267169ebc8c75abba87a1d9ed47568a65cbfe1bf6d183b8026e59`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run reviewed_normative_source_activates_without_graph_overwrite through served ingestion/review/activation. Dispatch a decision that records active policy revision. Compare source bytes/Git revision before and after graph mutation/reasoning. A graph-originated normative write has no source effect. Missing/rejected review, modified blob, changed rules, or raced revisions preserve prior policy. Permitted source changes require governed writeback, reread, renewed review, then activation. Direct fixture activation does not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R005.100 Nested inputs use declared projection and shielding Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Nested inputs use declared projection and shielding.** Extend the existing step contract with nested input schema and source-slot/path mapping per field. Before AU dispatch, project declared paths only. Withhold undeclared sibling/nested fields even when the coordinator can read the full ParallelWorkspace. Define the shielded-field policy. Bind projected-payload digest to step ID, schema revision, and source-slot digests. Reuse typed result/schema validation. EG declares projection/shield policy; AU `_dispatch_parallel_batch`/processor applies it before tool dispatch. DTO extra-field rejection alone is not data projection. Preserve `AU-HARNESS-R020.1/.2/.4/.6`. Source AU:33 SHA-256 `1a32741b0a97f0c31cd1a3df4ea31d6eee0069c62c3487c0d8057b1ced4b6cf4`; parent R005 is unchanged. | Planned served workflow includes secret undeclared nested field and declared sibling. The worker receives only its declared projection. Coordinator may synthesize typed outputs. Unknown paths, stale schema, or unauthorized source fields refuse before dispatch. Preserve R020 typed-result and schema-refusal behavior. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.100 Correlate trace records and export reads Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Correlate trace records and export reads.** Read data binds trace, parent/run, span, child-agent, tool-call, time range, source revision, and redaction profile. Child spans correlate to parent run. Consumers fetch complete export snapshots with pagination/completeness metadata and stable digest. This defines EG correlation/read only. AU owns span export; GraphOS owns MCP transport. AU `default_runtime_capabilities/run_agent` exports spans. GraphOS carries the export. EG supports correlated readback. Preserve R008/R024 ownership and `EG-ORCH-VOCAB-R009` trace fields plus `AU-HARNESS-R008/R024.1-.7`. Source AU:60 SHA-256 `5d53cbdda932456b27c6649360c3051d4ab09f2db42018550b4ee81c785748b4`; parent R009 is unchanged. | Planned served read exports a parent with multiple agents/tool calls. Fetch all correlated records across pages. Confirm stable digest, redaction, and completeness. Detect/refuse missing child, duplicate span, unauthorized read, and truncated pagination. EG read tests do not prove MCP delivery. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R009.101 Index, browse, and search harness sessions by tenant and full manifest Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Index, browse, and search harness sessions by tenant and full manifest.** Add `Method::IndexHarnessSessionBatch` and `Method::SearchHarnessSessions` over committed RunTrace nodes and existing graph/UQL index. This is an index projection, not SDK sync or a second trace store. Request binds tenant, manifest ID/revision/digest, SDK sync receipt ID/digest, and source cursor. Each record binds `{harness_id, adapter_revision, source_session_id, run_trace_id, run_trace_revision, trace_digest, source_sequence}`. Search every harness in the supported manifest. Accept bounded text/time/harness filters, page size, and snapshot cursor. Results include indexed revision, declared/received/indexed/unavailable coverage, per-entry status/reason, watermark, and cursor. A missing source stays in the denominator. Optional cost binds R010.101 accounting revision and currency/minor-unit exponent. Return totals with measured/unknown state and coverage. Missing attribution/price is never zero. Identical manifest/receipt/content replay is idempotent across restart. Changed content, unsupported manifest, stale cursor, or cross-tenant ref refuses without leakage. Attach to durable RunTrace/AddNode readback and existing UQL. GraphOS serves the adapter; its exact requirement ID remains a coordinator hold. Consumer: `WEBUI-APPS-R006.4`. Source WEBUI:3 SHA-256 `38936b5f2136263c40c29fe639c984243fed8be6dbb9a6d836f40d7b7672116e`. | Serve an SDK receipt for two declared harnesses and independently read referenced traces. Browse/search the full manifest across restart and repeated sync. Cover every manifest entry, including a third unavailable source. Return its reason, cursor paging, and cost currency/unit/unknown fields. Identical replay is idempotent. Refuse altered receipt/content, unsupported adapter, expired cursor, or cross-tenant access. SDK sync and GraphOS adapter tests remain separate dependencies. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.100 Join evolution proposals to measured source traces Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Join evolution proposals to measured source traces.** Add read-only `Method::EvolutionTraceMetrics` keyed by `{tenant_id, proposal_id, proposal_revision, prompt_version_id, prompt_revision, prompt_digest, metric_window_id, metric_window_revision, metric_window_digest}`. Join AU progress and ordered source run IDs to EG RunTrace IDs/revisions/digests and stored outcome/evaluation metrics. Each metric binds `{metric_id, metric_revision, metric_digest, name, value|null, unit, numerator|null, denominator|null, observed_at_ms, state: measured|unknown}`. Progress binds source ID/revision/digest, state, and observation time. Return ordered trace refs, missing IDs, query/window digest, coverage, and complete/partial state. Missing known trace is partial/unknown, never zero. Unknown proposal/prompt revision, stale window, digest mismatch, or tenant mismatch refuses without disclosure. Existing AddNode/ChangeEnvelope writes traces. UQL performs independent readback. GraphOS `runs.get/runs.metrics` serves it; its exact requirement ID awaits coordinator linkage. EG reads but never authors/advances AU state. Consumer: `WEBUI-APPS-R004.7`. Source AU:103 SHA-256 `68bae14976bd3581bc33ee65b153b5ad60f807fb894af09577b9debd19be7557`. AU has not supplied the exact producer schema binding progress to ordered runs. Do not invent that owner contract. | Serve proposal/prompt revision with two pinned traces and metrics. Independently read every trace, metric, and AU progress revision. Confirm joined window/coverage digest. Missing trace is partial/unknown, never zero. Refuse stale revisions, changed digests, and cross-tenant refs. Do not report calibration, coverage, or trace counts as optimization progress. AU producer and GraphOS adapter receipts remain required dependencies. No runtime/owner receipt is claimed. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-ORCH-VOCAB-R010.101 Index project/agent token and cost totals with finite latency Definition — EG-ORCH-VOCAB / EG-ORCH-VOCAB — Orchestration vocabularyCanonical requirement and verification source**Index project/agent token and cost totals with finite latency.** Extend immutable RunTrace with project/agent IDs and accounting-profile revision. Add four disjoint integer counters: uncached input, cached input, nonreasoning output, and reasoning output. Derive input/output totals by adding categories once. `RunTraceUsageQueryV1` accepts tenant, bounded window, model/project/agent grouping, currency, page size, and snapshot cursor. Return category totals, source coverage, index watermark, and accounting revision. Costs use pinned PriceTableV1 and currency-minor-unit revisions. Each rate is an integer minor-unit numerator per one million tokens, keyed by model/category. Sum exact rational numerators per group/category. Round once per final group/category using pinned currency exponent and half-even. Do not round per trace or intermediate group. Unknown price/attribution returns unknown with reason, never zero. Keep cross-currency groups separate unless pinned FX revision exists. Convert the exact aggregate and round once at final output. Profile binds both table revisions, currency, minor-unit exponent, and algorithm. Measure p95 ≤500 ms from authenticated handler entry to serialized response. Use 1,000,000 indexed traces, 32 readers, and 1,000 fixed-window grouped queries. Record data/index/cache-policy revisions. Preserve `harness_cost_per_solved_task`. Consumer: `WEBUI-APPS-R004.8`; GraphOS `handle_runs_metrics` and WebUI ObservabilityView serve it. Source WEBUI:4 SHA-256 `dd790b40c92758d720375c78ccd4278845b8d348022b4d69b978cba049461237`. | Serve all four categories under a pinned profile. Reconcile grouped totals with an independent reference ledger. Verify split-trace invariance, half-even boundaries, all price/currency revisions, unknown attribution/price, mixed-currency separation, and final FX rounding. Refuse stale profile/watermark, currency mismatch, or cross-tenant query. Measure the stated p95 boundary and dataset through GraphOS `handle_runs_metrics`. A helper benchmark does not count. No runtime/owner receipt is claimed. | requirement | EG-ORCH-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT EG-PLACEMENT — Placement, worker policy and analytics bound | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001 Deployment-placement question and assembled step graph go through the engine decision functionality (rollup) Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Deployment-placement question and assembled step graph go through the engine decision functionality (rollup).** Typed Decide question over in_process/compose/helm/swarm plus a `graph.assemble()` step graph; closes the prerequisite named by `GRAPHOS-DEPLOY-R017`. Split into `R001.1`-`R001.14`; satisfied only when every child is. Design: plan.md section A. | See each child. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.1 Prerequisite (decision-engine): standalone topology Decide question Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Prerequisite (decision-engine): standalone topology Decide question.** Owned by `EG-DECISION-ENGINE-R111.1`; supplies the standalone typed-question dispatch pattern placement follows. Not re-specified here; blocked until it lands. | Linked row verified by its own test `a_standalone_topology_decide_question_returns_a_typed_decision_record`. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.2 Add the `Placement` question kind Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Add the `Placement` question kind.** Add variant `Placement` to `QuestionKind` in crates/eg-types/src/decision/statistical.rs (snake_case wire name `placement`), documented evaluate-only like its siblings. | Unit test in the same file: serde round trip of `Placement` and that the schema lists it. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.3 Target registry Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Target registry.** New file crates/eg-types/src/decision/statistical/placement.rs: `PlacementTarget{InProcess,Compose,Helm,Swarm}` with `ALL`, `option_id()` (`placement:<name>`) and `from_option_id()`, mirroring ingestion_lane.rs. Systemd has no member. | Unit test: every target round trips through its option id; `placement:systemd` returns None. | requirement | EG-PLACEMENT | VERIFIED | 92a78d0a890b crates/eg-types/src/decision/statistical/placement.rs:107 crates/eg-types/src/decision/statistical/placement.rs:123 crates/eg-types/src/decision/statistical/placement.rs:139 |
| EG-PLACEMENT-R001.4 Typed request body with refusals Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Typed request body with refusals.** Same file: `PlacementRequestBody{subject: PlacementSubject{workload_iri,cpu_millis,memory_bytes,replicas,needs_persistent_volume}, constraints: PlacementConstraints{requires_ha,forbidden_targets,max_relative_cost,capacity_cells,priority}, candidate_targets}` with `check()` refusing empty or duplicate candidates, unknown option ids (`UNSUPPORTED_PLACEMENT_TARGET`), zero replicas and zero demand. | Unit tests, one per refusal, plus one accepted body. | requirement | EG-PLACEMENT | VERIFIED | 1c906420efa9 crates/eg-types/src/decision/statistical/placement.rs:180 crates/eg-types/src/decision/statistical/placement.rs:191 crates/eg-types/src/decision/statistical/placement.rs:202 crates/eg-types/src/decision/statistical/placement.rs:214 crates/eg-types/src/decision/statistical/placement.rs:227 |
| EG-PLACEMENT-R001.5 Add the placement vocabulary and shape Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Add the placement vocabulary and shape.** New crates/eg-core/ontology/placement-v1.ttl declares `placement:Target` and datatype properties `placement:supportsHa`, `placement:supportsVolumes`, `placement:maxReplicas` (xsd:nonNegativeInteger), `placement:relativeCost` (xsd:nonNegativeInteger). Placement-v1.shapes.ttl requires all four on every `placement:Target` (sh:minCount 1, sh:maxCount 1). Registered beside swarm_topology in crates/eg-core/src/graph/schema_sources.rs (line ~765). | SHACL test in crates/eg-core: a target missing `placement:relativeCost` fails validation. A complete one passes. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.6 Pure feasibility function Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Pure feasibility function.** In placement.rs: `place(body, facts, headroom) -> PlacementVerdict{feasible: Vec<(PlacementTarget, cost)>, eliminated: Vec<(PlacementTarget, PlacementReason)>}`; hard constraints are HA, volumes, max replicas, forbidden targets, cost cap, capacity headroom. A request can only tighten policy caps (`POLICY_LOOSENING` otherwise). | Table-driven unit tests: each constraint eliminates exactly its targets with the named reason; a loosening request is refused. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.7 Wire the kind into Decide Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Wire the kind into Decide.** New src/server/handlers/decide/stat_placement.rs with `placement_outcome(request) -> Option<Result<StatisticalOutcome,String>>`, modelled on stat_tool_subset.rs and called from the same site in stat_decide.rs. Cheapest feasible target is the top `Advisory` score; ties break by option id. | Server test in src/server/handlers/decide/stat_tests/: a Placement request returns a sealed record naming the cheapest feasible target. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.8 Capacity premise reuse, no lease Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Capacity premise reuse, no lease.** `stat_placement.rs` reads headroom through `capacity_premise::headroom` (src/server/handlers/decide/capacity_premise.rs) at the request priority and records it as Observation premises. Nothing is acquired. | Test: after the decision the capacity ledger is unchanged (no lease), and a priority-lower request sees less headroom. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.9 Why-not for every non-chosen target Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Why-not for every non-chosen target.** Each eliminated or lower-ranked target appears in the record's `why_not`/`eliminated` with a stable reason string (`placement:supportsHa=false`, `costlier than <id> (a > b)`). | Test asserts one why-not entry per non-chosen target with the expected reason. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.10 Typed abstention Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Typed abstention.** When no target is feasible, or capacity facts are unavailable (`CAPACITY_UNAVAILABLE`), the outcome is `StatisticalOutcome::Abstained` with a typed `AbstainReason` naming the binding constraint. No target is guessed. | Tests: infeasible demand abstains naming `lease:<cell>:<class>`. Missing ledger abstains with CAPACITY_UNAVAILABLE. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.11 Served contract test through the real dispatch Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Served contract test through the real dispatch.** One test drives the Placement question through the served `Decide` method (not the pure function) with the example from plan.md and asserts the typed record, resolution kind and evidence class. | src/server/handlers/decide/stat_tests/placement_tests.rs (new). | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.12 Assembled step graph fixture Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Assembled step graph fixture.** Publish a test deployment graph template (slots render-artifact, apply, verify) and three tool components in a test Agent Library. `AgentAssemble` with the chosen target's template returns `Solved` with the nodes in order and a certificate. Production components are published by graph-os (BLOCKED on them; the handler itself is not a stub, `assemble.rs:28-55`). | src/server/handlers/decide/ test `deployment_template_assembles_ordered_steps`. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.13 Assemble abstains rather than invents Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Assemble abstains rather than invents.** With a template whose tool component is not in the tenant library, `AgentAssemble` returns an Abstained record naming the uncovered capability and no graph. | Test in the same file as R001.12. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.14 Cross-repo (graph-os): correct R017 wording Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Cross-repo (graph-os): correct R017 wording.** Proposed edit to `GRAPHOS-DEPLOY-R017.5` and `R017`: replace "today both are refusal stubs" with "the engine handler is served when the engine is built with the decide feature; it refuses by name otherwise (assemble.rs:134-140); confirm remains the stub", and name the placement kind as `QuestionKind::Placement` (`EG-PLACEMENT-R001.2`). Owner: graph-os. | graph-os tests/deployment/test_deploy_refusal.py asserts distinct refusals for feature-absent engine and unavailable confirm. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002 Ingest-worker policy has one authority: the engine decides, the worker asks and obeys (rollup) Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Ingest-worker policy has one authority: the engine decides, the worker asks and obeys (rollup).** Removes the autosize, floor, routing and depth-limit policy that `EG-INGEST-WORKER-R001.x` placed in the worker and gives it to `EG-DURABLE-KERNEL-R074`-`R077`. Split into `R002.1`-`R002.15`; satisfied only when every child is. Design: plan.md section B. | See each child. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.1 Register carries capacity Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Register carries capacity.** Proposed edit to `EG-DURABLE-KERNEL-R074`: `WorkerRecord` includes `cores`, `memory_bytes` and `lanes_supported`, supplied at register. Add the fields in the eg-types file that defines `WorkerRecord` (created by R074). | R074's heartbeat/expiry test also asserts the fields round trip. | requirement | EG-PLACEMENT | VERIFIED | e7b0f9f670c9 crates/eg-types/src/worker_registry.rs:192 |
| EG-PLACEMENT-R002.2 Autosize and depth limit live in `SchedulerConfig` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Autosize and depth limit live in `SchedulerConfig`.** Producer contract owned by `EG-DURABLE-KERNEL-R076.1` (served integration remains R076.2): fields `cores_per_mille` (default 360), `memory_per_worker_bytes` (default 3 GiB) and `max_queue_depth`, beside the lane floors. The over-subscription refusal is unchanged. | R076.1 native serde round-trip tests include defaults 360 and 3 GiB. This row does not claim a served setting. | requirement | EG-PLACEMENT | VERIFIED | 57050996421e crates/eg-types/src/scheduler_config.rs:111 crates/eg-types/src/scheduler_config.rs:126 |
| EG-PLACEMENT-R002.3 Pure grant function Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Pure grant function.** `worker_registry::granted_slots(record, config, WorkerSizingInput, shard_writer_width) -> WorkerSlotGrant` exposes `slots()` and a typed refusal. The explicit input carries an optional caller request ceiling, current available memory and engine-selected write-lane classification (not scheduler policy). Sizing: min(cores x cores_per_mille / 1000, memory / memory_per_worker), never above a request ceiling or the available-memory limit, and write-lane workers never above the R077 width. The floor of 1 applies only when every hard limit permits a worker; otherwise return a zero-slot grant with a typed capacity refusal. | Unit tests: memory-bound, core-bound, ceiling-bound, width-bound, a permitted floor of 1, and zero memory/ceiling/write-width refusing allocation. | requirement | EG-PLACEMENT | VERIFIED | d94bc10404ce crates/eg-types/src/worker_registry/grants.rs:116 crates/eg-types/src/worker_registry/grants.rs:135 crates/eg-types/src/worker_registry/grants.rs:188 |
| EG-PLACEMENT-R002.4 Admission returns a grant Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Admission returns a grant.** Proposed edit to `EG-DURABLE-KERNEL-R075`: `AdmitWorkerTask` answers `WorkerGrant{slots, reserved_lane}` or a typed refusal. The reserved lane for a worker is decided by the engine from `SchedulerConfig` floors. | R075 test also asserts a one-worker pool is granted the general lane. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.5 Routing is engine-side Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Routing is engine-side.** `lane_for` and `partition_key` (ingest-worker R001.2/R001.3) are called by the engine claim path only; the claim request carries no lane or partition field a worker could set. | Test: a claim request with a forged lane field is refused by schema (deny_unknown_fields). | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.6 Reword `EG-INGEST-WORKER-R001.2` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.2`.** Replace "returning hydration for skill_workflows and capability_hydration, general otherwise" with "returning a lane id from the lane set served in `SchedulerConfig` (R076); the engine, not the worker, calls it. Lane names are not redefined here." | Row text matches after the follow-up edit; ingest-worker spec check passes. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.7 Reword `EG-INGEST-WORKER-R001.3` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.3`.** Append "The engine claim path derives claim order from this key; workers never compute or send it." | As R002.6. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.8 Reword `EG-INGEST-WORKER-R001.6` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.6`.** Replace with "Prerequisite: worker registry, grants, reserved admission, lane floors, autosize defaults and queue-depth limit (EG-DURABLE-KERNEL-R074-R077 as extended by EG-PLACEMENT-R002.1-R002.4). Every worker-count, floor and limit in this spec is read from those served settings." | As R002.6. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.9 Reword `EG-INGEST-WORKER-R001.10` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.10`.** Replace "a lone worker is never fully reserved" with "which lane a worker serves is the `reserved_lane` of its engine `WorkerGrant`. This row only verifies the behaviour through the engine (R075 owns the rule)." | As R002.6. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.10 Reword `EG-INGEST-WORKER-R001.11` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.11`.** Replace "above a configured depth" with "above `SchedulerConfig.max_queue_depth` (R076)". | As R002.6. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.11 Reword `EG-INGEST-WORKER-R001.14` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.14`.** Append "The runner claims only after registering, uses the granted slot count and lane, and treats an admission refusal as a signal to back off, never to retry another lane." | As R002.6. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.12 Reword `EG-INGEST-WORKER-R001.15` Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Reword `EG-INGEST-WORKER-R001.15`.** Replace the autosize clause with "`--workers` is an optional request ceiling. The default is to register cores and memory and run the `slots` the engine grants. The worker holds no CPU/memory ratio constants." | As R002.6. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.13 Cross-repo (connector SDK repository): no policy constants in the worker Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Cross-repo (connector SDK repository): no policy constants in the worker.** The SDK worker reads no CPU ratio, memory-per-worker, floor or depth value; it sends `cores`, `memory_bytes`, `lanes_supported` and obeys the grant. Owner: connector SDK repository. | SDK test: fake engine grants 3 slots on a 16-core host; the worker runs 3. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.14 Fold the analytics pool knob into the same config Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Fold the analytics pool knob into the same config.** `EG_ANALYTICS_WORKERS` (executor_loop.rs:22-25) becomes a `SchedulerConfig` field read once, so colocated and remote workers share one sizing authority (aligns `EG-DURABLE-KERNEL-R082.9`). | Config test: unset env yields the SchedulerConfig default of 1; value 40 is refused or clamped to 32 exactly as today. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R002.15 Parity check that no duplicate policy remains Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Parity check that no duplicate policy remains.** A spec check greps `specs/ingest-worker` for the strings `0.36`, `3 GiB` and "reserved floor" outside rows that cite R074-R077 by ID. | Check passes after the rewordings land. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R003 Analytics payload bound is decided and defended (rollup) Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Analytics payload bound is decided and defended (rollup).** Closes the open question of `EG-DURABLE-KERNEL-R082.3`. Split into `R003.1`-`R003.6`; satisfied only when every child is. Design: plan.md section C and decisions D6-D8. | See each child. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R003.1 Name the constant Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Name the constant.** In src/server/handlers/jobs/submit.rs replace the literal `31` (line 289) with `const MAX_ASSOCIATION_DISTINCT_ITEMS: usize = (u32::BITS - 1) as usize;` documented as the rule-enumeration mask width. | Unit test asserts the constant equals 31. | requirement | EG-PLACEMENT | VERIFIED | 871e31f80156 src/server/handlers/jobs/submit.rs:444 |
| EG-PLACEMENT-R003.2 Separate refusal for cardinality Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Separate refusal for cardinality.** Split the merged check at submit.rs:285-295 so distinct-item overflow returns its own stable message `association job exceeds the distinct-item limit`, apart from the threshold message. | Table test: over-cap and bad-threshold payloads produce different typed refusals. | requirement | EG-PLACEMENT | VERIFIED | 23b021f818a8 src/server/handlers/jobs/submit.rs:455 |
| EG-PLACEMENT-R003.3 Accept at the cap, refuse above Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Accept at the cap, refuse above.** 31 distinct items accepted, 32 refused. | Test in src/server/handlers/jobs/graph_tests.rs. | requirement | EG-PLACEMENT | VERIFIED | 05b1cbdf1641 src/server/handlers/jobs/graph_tests.rs:204 |
| EG-PLACEMENT-R003.4 Defence in depth in the kernel Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Defence in depth in the kernel.** In `rules_for_itemset` (crates/eg-compute/src/mining/association.rs:402) return no rules when `k > 31` instead of overflowing `1u32 << k`. | Unit test calls `generate_rules` with a 32-item itemset and gets an empty rule list without panic. | requirement | EG-PLACEMENT | VERIFIED | 972d1c80e4bd crates/eg-compute/src/mining/association.rs:772 crates/eg-compute/src/mining/association.rs:785 |
| EG-PLACEMENT-R003.5 Plain labels are accepted and stored opaque Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Plain labels are accepted and stored opaque.** Proposed edit to `EG-DURABLE-KERNEL-R082.3`: drop "required every item to start with `eg:`" as a refusal. The engine maps labels to opaque refs at submit (submit.rs:266-278). Keep the cap, now `MAX_ASSOCIATION_DISTINCT_ITEMS`, with the 31/32 test above. | Test: a payload of plain labels is accepted and the stored job input contains only `eg:` refs. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R003.6 Cap is counted after hashing; verify deterministic behavior on bounded fixtures Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Cap is counted after hashing; verify deterministic behavior on bounded fixtures.** A repeated label yields the same opaque ref; the chosen distinct-label fixtures remain distinct. This is a regression check, not a proof that hashing is injective. | Test: 31 raw fixture labels yield 31 refs; a repeated label counts once. | requirement | EG-PLACEMENT | VERIFIED | bc01fdc30bb0 src/server/handlers/jobs/association_hash_tests.rs:33 src/server/handlers/jobs/association_hash_tests.rs:52 |
| EG-PLACEMENT-R004 Heavy compute routes to the host that declares the capability (rollup) Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Heavy compute routes to the host that declares the capability (rollup).** The engine routes a heavy compute job to a worker with a matching declared capability. It chooses from topology facts in the graph. Children `.1` to `.6` deliver it. | See each child. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R004.1 Model Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Model.** Add `HostCapability{host_iri, capability, headroom}` and `RoutingFact{job_class, required_capability}` in `crates/eg-types/src/decision/statistical/placement.rs`. The capability set is closed and declared by the host. Proving test: `crates/eg-types/src/decision/statistical/placement.rs::tests::capability_types_round_trip`. | A serde round trip keeps every field and rejects an undeclared capability. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R004.2 Behavior Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Behavior.** Add `route_heavy_job(job_class, hosts)` returning hosts that declare the required capability, ordered by headroom. Ordering is a named replaceable default `most_headroom_first`. Proving test: `crates/eg-types/src/decision/statistical/placement.rs::tests::route_orders_by_headroom`. | Two capable hosts return in headroom order; an incapable host is absent. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R004.3 Wiring Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Wiring.** The behavior attaches at `crates/eg-jobs/src/store.rs:773` inside `claim_next` (`store.rs:736`), where worker capabilities already filter the ready queue. The production caller `crates/eg-quantum-jobs/src/job.rs:275` passes an empty capability list, so this row passes the declared capabilities from the topology facts. Proving test: `tests/jobs/test_capability_claim_served.py::test_claim_uses_declared_capability`. | A worker with the declared capability claims the job; a worker without it does not. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R004.4 Refusal Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Refusal.** When no host declares the capability, the engine must refuse with `no_capable_host` naming the capability. It must not fall back to any host. Proving test: `crates/eg-jobs/src/store.rs::tests::no_capable_host_refuses`. | The job stays queued and the refusal names the missing capability. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R004.5 Evidence Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Evidence.** Each routing decision must record `required_capability` and the candidate host list. It must also record the topology fact generation. Proving test: `crates/eg-jobs/src/store.rs::tests::routing_premises_name_generation`. | The decision record lists the candidates and the fact generation. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R004.6 Hot-path proof Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Hot-path proof.** The entry point is the served job submit and worker claim wire methods. The test `tests/jobs/test_capability_claim_served.py::test_backtest_job_lands_on_declared_host` submits a heavy job. It passes through the wired `claim_next` and observes the claim on the host that declares the capability. | The served claim returns the job only to the capable host. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-PLACEMENT-R001.15 Capacity adjustment feasibility and applied-state reconciliation boundary Definition — EG-PLACEMENT / EG-PLACEMENT — Placement, worker policy and analytics boundCanonical requirement and verification source**Capacity adjustment feasibility and applied-state reconciliation boundary.** Define `CapacityAdjustmentProposalV1` with `proposal_id`, `tenant_id`, `resource_class_iri`, and `unit`. Include unsigned `current_capacity:u64`, `proposed_capacity:u64`, `min_capacity:u64`, and `max_capacity:u64`. Also include `measured_load:u64`, `available_headroom:u64`, `window_start_ms:u64`, and `window_end_ms:u64`. Pin `premise_revision` and `policy_revision`. Bind `proposal_digest:sha256`. Define `CapacityAdjustmentVerdictV1` with `proposal_id`, `proposal_digest`, `premise_revision`, and `policy_revision`. Include `verdict`, `reason_code: Option<CapacityRefusalCode>`, `effective_min_capacity`, `effective_max_capacity`, `observed_current_capacity`, and `observed_headroom`. `verdict` is `allow` or `refuse`. `allow` has no reason code. Every refusal has exactly one. `CapacityRefusalCode` is closed to `CAPACITY_PROPOSAL_DIGEST_INVALID`, `CAPACITY_MEASUREMENT_INVALID`, `CAPACITY_PREMISE_STALE`, `CAPACITY_TENANT_MISMATCH`, `CAPACITY_UNIT_MISMATCH`, `CAPACITY_WINDOW_INVALID`, `CAPACITY_LIMIT_INVALID`, `CAPACITY_LIMIT_EXCEEDED`, and `CAPACITY_HEADROOM_EXCEEDED`. The pure operation is `evaluate_capacity_adjustment(proposal, capacity_premise) -> CapacityAdjustmentVerdictV1`. It is read-only and reuses R001.6's placement/headroom premise. Allow only a fresh, tenant-bound premise and a valid SHA-256 proposal digest. Require non-negative measurements. Require `0 <= window_start_ms < window_end_ms`. Require consistent units. Require proposal current capacity and headroom to match graph premises. Require `min_capacity <= current_capacity <= max_capacity`. Require `min_capacity <= proposed_capacity <= max_capacity`. Require proposed increases to stay within observed headroom. Otherwise return the applicable refusal code. Do not mutate graph or host state. GraphOS owns mode, AIMD proposal generation, host actuation, and limits. EG does not add a second controller. Preserve `GRAPHOS-CAPACITY-R001.1`, `EG-DECISION-ENGINE-R112`, `GRAPHOS-CAPACITY-R001/R002`, and `EG-PLACEMENT-R001.6`. Owner source hash: `cb17ea03a7344584fed7a9f22a78c1e97c58919616433e7026481606fd0bdccb`. **Hold:** Owner evidence names no Decision method or QuestionKind for this proposal. It names no GraphOS request, actuation, or readback operation. It names no `CapacityAppliedReceiptV1` producer or fields. The typed EG input and verdict remain candidates, not a wired closed loop. Resolve these owner API and receipt bindings before claiming reconciliation. This row remains SPECIFIED. | **Planned acceptance:** A valid proposal within limits and headroom returns `allow` bound to proposal, premise, and policy revisions. Stale or cross-tenant premises, invalid digests or measurements, inconsistent units or windows, and graph-premise mismatches refuse without mutation. Out-of-bounds capacity and increases beyond observed headroom also refuse. GraphOS applies a valid proposal and exposes an independent readback receipt. Bind it to proposal digest, requested/applied capacity, host/resource, policy, and resulting state revision. Hold GraphOS acceptance until its operation and receipt contract are defined. No served end-to-end closure is claimed. | requirement | EG-PLACEMENT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT EG-CONTRACT — Public engine contract and reproducible clients | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R001 Strict typed Pydantic models for every method and nested type Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Strict typed Pydantic models for every method and nested type.** The Python client exposes generated, strict Pydantic models (extra=forbid) for every method's request and result type, including every nested type, so an unexpected field is rejected rather than silently accepted; downstream consumers migrate to these generated models instead of hand-written equivalents. | Verified by a typed round trip over every callable method's request and result fixtures, including a case that injects an unknown nested field and confirms it is rejected. | requirement | EG-CONTRACT | SPECIFIED | 6cd6c7ea0c87 72c7dfa478ba a1bb9fb9503e tests/test_generated_models.py:105 tests/test_generated_models.py:122 tests/test_generated_models.py:69 |
| EG-CONTRACT-R002 Served Agent Library tests cover pack import and Decide Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Served Agent Library tests cover pack import and Decide.** The installed Python client SHALL run a served Agent Library journey against a real engine and authorization boundary. The journey publishes, reads, and imports a pack. It then issues Decide. Child R002.1 covers typed Decide request and tenant refusal. Child R002.2 covers authorized Decide and served pack import in the same harness. Child R002.3 covers installed-wheel imports without the source tree. The parent lands when every child lands. | A hosted test starts a disposable engine. It runs authorized and denied Decide through the installed wheel. It confirms no client imports from the source tree. | requirement | EG-CONTRACT | VERIFIED | 4f364b55e0dc 52f2f3e347a3 c047e6602b42 |
| EG-CONTRACT-R002.1 Served Decide tenant auth-boundary refusal Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Served Decide tenant auth-boundary refusal.** A served Python test, against the disposable engine the suite's session fixture starts, proves `Decide` refuses a request whose `tenant_id` does not match the verified session's own tenant (`ACCESS_DENIED: Decide tenant must match the verified request tenant`, `src/server/handlers/decide/stat_decide.rs::serve`), through the generated sender (`epistemic_graph.decision_client.DecisionClient`), not an in-process check. | `tests/test_decide_auth_boundary.py::test_decide_refuses_a_request_tenant_that_does_not_match_the_verified_session` passes against the live engine. | requirement | EG-CONTRACT | VERIFIED | 37a29ee3fe0e 4f364b55e0dc 52f2f3e347a3 c047e6602b42 tests/test_decide_auth_boundary.py:81 |
| EG-CONTRACT-R002.2 Served Decide authorized-tenant path and pack-import journey Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Served Decide authorized-tenant path and pack-import journey.** A served Python test proves a tenant-matched `Decide` request passes the same tenant check R002.1 refuses on (it then fails later, on an unpublished feature-schema pin, never on `ACCESS_DENIED`), and a second test runs the served Agent Library pack journey -- bind an importer, publish a pack through the Blob CAS, import it, then read its status back -- against the same live engine, reusing `tests/test_connector_pack_planted.py`'s served helpers rather than duplicating them. | `tests/test_decide_auth_boundary.py::test_decide_passes_the_tenant_check_for_a_matching_request_tenant` and `::test_served_pack_publish_import_and_status_journey` pass against the live engine. | requirement | EG-CONTRACT | VERIFIED | 37a29ee3fe0e 4f364b55e0dc 52f2f3e347a3 tests/test_decide_auth_boundary.py:100 tests/test_decide_auth_boundary.py:145 |
| EG-CONTRACT-R002.3 Installed-wheel / no-source-tree-import check for the Decide and pack-import client surface Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Installed-wheel / no-source-tree-import check for the Decide and pack-import client surface.** The release workflow's folded-wheel gate installs `epistemic-graph` into a clean throwaway venv (`.gates-wheel-venv`, the same job EG-CONTRACT-R015's wheel-contract check and the NE-249/BUG-PE-002 numeric/engine kernel boundary checks already run in) and proves `epistemic_graph.decision_client`, `epistemic_graph.connector_pack` and `epistemic_graph.client` -- the modules EG-CONTRACT-R002.1/.2's served tests import -- resolve from that installed wheel, not this checkout's source tree, following the same mktemp-cwd shadowing-avoidance discipline as those existing steps. | `tests/test_installed_wheel_decision_client_boundary.py` passes as a release-workflow gates-job step run against the installed wheel from a scratch directory. | requirement | EG-CONTRACT | VERIFIED | 37a29ee3fe0e 52f2f3e347a3 tests/test_installed_wheel_decision_client_boundary.py:60 |
| EG-CONTRACT-R003 Privacy scan covers relocated graph-backends documentation Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Privacy scan covers relocated graph-backends documentation.** The documentation privacy suite SHALL scan docs/architecture/graph-backends.md. It SHALL apply the private-network-address, DNS, home-path, and host-alias checks used for other public docs. This preserves privacy coverage after relocation. | tests/test_documentation_privacy.py SHALL include the file in PUBLIC_SURFACES. Planted private-network and path fixtures SHALL fail. | requirement | EG-CONTRACT | VERIFIED | 82e1e970c83a 86532dc7e65a f2398cefb06c tests/test_documentation_privacy.py:67 |
| EG-CONTRACT-R004 Go and JS clients sign bodies through the shared codec Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Go and JS clients sign bodies through the shared codec.** The Go and JavaScript clients canonicalize and sign the wire request body using the embedded engine codec rather than an independent reimplementation, so the two languages cannot diverge from the Rust signing semantics the way the Python sender's mis-signing defect class did. | Verified by replaying every fixture in contract/fixtures/method_body_vectors.json in each client's test suite and confirming identical signed-body bytes across languages. | requirement | EG-CONTRACT | VERIFIED | 6cd6c7ea0c87 a1bb9fb9503e clients/go/vectors_test.go:123 clients/js/vectors.test.mjs:36 |
| EG-CONTRACT-R005 One generated model per wire shape, with typed SPARQL decode Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**One generated model per wire shape, with typed SPARQL decode.** Hand-written DTO modules such as agent_component and connector_pack re-export types from epistemic_graph/generated/models.py instead of defining competing classes, so each wire shape has exactly one model, and GraphComputeEngine.sparql exposes a typed decode_* result as the first consumer path exercising this convergence. | Verified by a typed round trip confirming one generated class per wire shape, including the SPARQL decode path. | requirement | EG-CONTRACT | VERIFIED | 37a29ee3fe0e 6cd6c7ea0c87 72c7dfa478ba e2b2f1cfa8ee crates/eg-capabilities/src/contract/python/surfaces/tests.rs:116 tests/test_generated_models.py:123 tests/test_generated_union_variants.py:25 tests/test_generated_union_variants.py:27 |
| EG-CONTRACT-R006 Deterministic, size-budgeted WASM codec artifact Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Deterministic, size-budgeted WASM codec artifact.** The embedded method-codec WASM artifact is produced from source using a pinned binaryen wasm-opt version so the optimized bytes are identical across build environments, and its measured size is tracked against a declared budget through continued reduction of unused decode paths in eg-types. | Verified by scripts/build_method_codec_wasm.py --check comparing normalized bytes from two independent builds and asserting the measured artifact size against the declared budget. | requirement | EG-CONTRACT | LANDED | 2b681e1a159c 6cd6c7ea0c87 |
| EG-CONTRACT-R007 Dispatch decomposition test is current and runs in CI Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Dispatch decomposition test is current and runs in CI.** The dispatch decomposition test passes against the current dispatch structure, with its function-count pin updated and justified, and it executes as part of the hosted release workflow rather than only a manually invoked hook. | Verified by a mutation test that introduces a stale dispatch target and confirms the gate rejects it when run as part of the hosted release workflow. | requirement | EG-CONTRACT | VERIFIED | 43137cbf0f6b 6cd6c7ea0c87 tests/test_dispatch_decomposition.py:37 tests/test_dispatch_decomposition.py:53 |
| EG-CONTRACT-R008 Repo-parity check validates the resolved checkout Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Repo-parity check validates the resolved checkout.** scripts/check_five_repo_parity.py takes the repository root as an explicit argument and fails if the directory it resolves does not match the one requested, so it cannot silently compare against an unintended checkout. | Verified by a negative test that points the script at a mismatched directory and confirms it fails closed instead of silently continuing. | requirement | EG-CONTRACT | VERIFIED | 1e48414f9e58 |
| EG-CONTRACT-R008.1 Typed resolved-checkout parity contract (producer-first split of R008) Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Typed resolved-checkout parity contract (producer-first split of R008).** A pure, typed function resolves a requested repository root and an actual checkout path and raises a dedicated error the moment they diverge, as the type-level contract ahead of the real scripts/check_five_repo_parity.py CLI (`R008.2`). | A negative test points the function at two distinct resolved directories and asserts it raises, plus positive cases for an identical path and a symlinked checkout of the same repo. | requirement | EG-CONTRACT | VERIFIED | 1e48414f9e58 72c7dfa478ba 8baee8a94894 fb6841592a83 scripts/tests/test_repo_root_parity.py:10 scripts/tests/test_repo_root_parity.py:21 scripts/tests/test_repo_root_parity.py:31 |
| EG-CONTRACT-R008.2 check_five_repo_parity.py CLI wires in the typed parity contract Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**check_five_repo_parity.py CLI wires in the typed parity contract.** scripts/check_five_repo_parity.py takes the repository root as an explicit CLI argument and calls the R008.1 contract to fail closed when the resolved checkout does not match the one requested. | Verified by a negative test that points the script at a mismatched directory and confirms it fails closed instead of silently continuing. | requirement | EG-CONTRACT | VERIFIED | 72c7dfa478ba 8baee8a94894 fb6841592a83 scripts/tests/test_check_five_repo_parity.py:10 |
| EG-CONTRACT-R009 Release workflow runs the full root Python test suite Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Release workflow runs the full root Python test suite.** The release workflow compiles the numeric kernel and engine binary and then runs the complete root Python test suite under tests/ with parallel execution and a per-test timeout, in addition to the crate and duplication census tests it already runs, so client, contract and connector-pack regressions cannot reach the default branch unexecuted; the pre-merge gate replica runs the identical suite. | Verified by confirming the release workflow's logged pytest run covers the full root suite against the compiled artifacts and that the pre-merge gate replica executes the same suite. | requirement | EG-CONTRACT | VERIFIED | 26a77bc6a6c4 29021f36eeee 2f4f3a17a5b5 5c5b8c630a52 8baee8a94894 tests/test_release_python_suite_contract.py:102 tests/test_release_python_suite_contract.py:119 tests/test_release_python_suite_contract.py:130 tests/test_release_python_suite_contract.py:306 tests/test_release_python_suite_contract.py:349 |
| EG-CONTRACT-R010 Complexity gate scores exhaustive matches by arm body, not count Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Complexity gate scores exhaustive matches by arm body, not count.** The complexity gate scores an exhaustive match over an enum by the complexity of each arm's body rather than the number of arms, so adding an arm with trivial logic does not fail the gate while an arm with nested branching still does. | Verified by two gate fixtures: adding a trivial-body arm to an exhaustive match passes, and adding a nested-branching arm still fails. | requirement | EG-CONTRACT | VERIFIED | 72c7dfa478ba 8baee8a94894 d37f675e56da tests/test_check_complexity_staged.py:416 tests/test_check_complexity_staged.py:430 |
| EG-CONTRACT-R011 Parallel fan-out for the land gate across build hosts Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Parallel fan-out for the land gate across build hosts.** The land gate's default execution fans work out in parallel across independent host groups with a persistent warm target per group, produces one merged summary, and reserves headroom on each gate host, reducing total wall-clock time compared to running the full gate serially on a single host. | Verified by the fan-out adapter test suite passing in full and its merged summary matching the per-group results it combines. | requirement | EG-CONTRACT | VERIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R011.1 Fan-out host-group manifest is structurally valid before any gate work is dispatched Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Fan-out host-group manifest is structurally valid before any gate work is dispatched.** The land gate's host-group manifest (one warm target per group, a declared headroom-reservation fraction per gate host, and no host assigned to more than one group) is validated by a standalone checker before fan-out dispatch, so a malformed or overlapping manifest fails closed instead of silently serializing or double-booking a host. | Verified by scripts/check_fanout_host_groups.py rejecting a manifest with an overlapping host assignment or a missing headroom reservation, and accepting a disjoint, fully-specified manifest. | requirement | EG-CONTRACT | VERIFIED | a3e3d9924822 tests/test_check_fanout_host_groups.py:118 tests/test_check_fanout_host_groups.py:25 tests/test_check_fanout_host_groups.py:48 tests/test_check_fanout_host_groups.py:75 tests/test_check_fanout_host_groups.py:92 |
| EG-CONTRACT-R012 Complexity scanner resolves modules declared in inline mod blocks Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Complexity scanner resolves modules declared in inline mod blocks.** The complexity scanner used for the KISS census correctly resolves a module declared with mod x; inside an inline mod {} block instead of aborting, using a patched scanner pinned for this repository's gate until the upstream fix is released. | Verified by the complexity census completing without aborting on source containing an inline mod block with a nested module declaration. | requirement | EG-CONTRACT | VERIFIED | 78e5f2103219 8baee8a94894 tests/test_kiss_fork.py:54 |
| EG-CONTRACT-R013 KISS config keys avoid a silently dropped section Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**KISS config keys avoid a silently dropped section.** The repository KISS config at .config/kiss.toml SHALL use current key names. It SHALL place renamed orphan detection under its new section. Unknown keys SHALL NOT drop the global section or inflate advisory counts. Derive thresholds deliberately. Do not add a blanket rebaseline. | The complexity census returns to its expected low baseline after migration. No blanket rebaseline file is introduced. | requirement | EG-CONTRACT | VERIFIED | 72c7dfa478ba 78e5f2103219 b8aac182d679 tests/test_kiss_config_keys.py:19 |
| EG-CONTRACT-R014 Generated error catalog has stable auth-mismatch codes Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Generated error catalog has stable auth-mismatch codes.** Generate contract/errors.json from Rust ErrorCode declarations. Include code, class, retryable flag, and HTTP status hint. Include stable AUTH_TENANT_MISMATCH, AUTH_AUDIENCE_MISMATCH, and AUTH_POLICY_VERSION_MISMATCH codes. Each method error_set SHALL cover every error it can produce. | Regenerate contract/errors.json and compare bytes. Negative tests confirm each auth mismatch returns its declared code. | requirement | EG-CONTRACT | VERIFIED | 15acf1a959e5 19d0663aaf5c 2a4982e949a3 394f82a01e83 4c25220f6e1b crates/eg-capabilities/src/contract/errors.rs:470 crates/eg-capabilities/src/error_routing.rs:326 crates/eg-types/src/governed_change/tests.rs:183 |
| EG-CONTRACT-R015 Wheel ships the method, error and scope contract with callability flags Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Wheel ships the method, error and scope contract with callability flags.** The Python wheel packages epistemic_graph/contract/{methods,errors,scopes}.json and their schemas as installed data, and each method entry in methods.json exposes an is_wire_callable flag so a consumer can discover which methods are actually callable without importing server internals. | Verified by installing the packaged wheel in a clean virtual environment outside the checkout and confirming the loader returns the same digest and is_wire_callable values as the source revision. | requirement | EG-CONTRACT | VERIFIED | 26a77bc6a6c4 37a29ee3fe0e 5738b6093ea7 tests/test_wheel_contract_surface.py:475 |
| EG-CONTRACT-R016 Consumer-profile allowlist covers all generated PolicyEvolution senders Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Consumer-profile allowlist covers all generated PolicyEvolution senders.** The static consumer-profile audit's allowlist includes every generated PolicyEvolution typed operation sender that the Rust typed-adapter registry and contract publish, so a correctly published sender is not flagged as unaudited. | Verified by tests.test_generated_client_contract passing for all declared PolicyEvolution senders. | requirement | EG-CONTRACT | VERIFIED | ad14dd57f95b f2398cefb06c tests/test_generated_client_contract.py:234 |
| EG-CONTRACT-R017 Dispatch census pins cover the current compiler-declared modules Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Dispatch census pins cover the current compiler-declared modules.** The dispatch decomposition census's tracked source file list and function, control-flow, test and assertion fingerprints include the current compiler-declared elevation, policy-evolution and telemetry dispatch modules, so its ownership checks run instead of failing on stale pins, while its existing known-bad mutation proofs continue to catch the defects they were written for. | Verified by the dispatch decomposition test suite passing against the current module set while its mutation-proof tests still fail on a planted defect. | requirement | EG-CONTRACT | VERIFIED | 43137cbf0f6b b8aac182d679 tests/test_dispatch_decomposition.py:36 |
| EG-CONTRACT-R018 Release feature matrix includes the motif Cargo feature Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Release feature matrix includes the motif Cargo feature.** The release workflow's crates job enumerates the eg-numeric motif feature alongside the other Python-exposed features, so it is compiled and tested instead of silently missing from the supported feature matrix. | Verified by the crates release gate running with motif included and the Python CI replica's feature-matrix consistency check passing. | requirement | EG-CONTRACT | VERIFIED | 43200ff368b9 b8aac182d679 cfd03dda1ef7 d556e4d0895e tests/test_release_feature_matrix.py:250 tests/test_release_feature_matrix.py:87 |
| EG-CONTRACT-R019 Dispatch reachability gate follows the current FOREIGN paths Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Dispatch reachability gate follows the current FOREIGN paths.** The static dispatch-reachability check follows FOREIGN method dispatch through exec/dispatch.rs and the bound-registry refusal through federation_opt/run.rs, matching the actual served code paths, so a correct fail-closed refusal is not reported as a reachability failure. | Verified by the reachability gate passing against the current file layout while a mutation test confirms a pass-through regression in either file still fails it. | requirement | EG-CONTRACT | VERIFIED | a8cfd0978c58 b8aac182d679 tests/test_current_only_architecture.py:68 |
| EG-CONTRACT-R020 Topology test names avoid version-number suffixes Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Topology test names avoid version-number suffixes.** Test and component names describe what they verify rather than carrying a numeric version suffix such as _v1. The topology schema test is named for the schema concept it covers, with its original test body preserved. | Verified by the naming-convention check passing for the renamed test and the test itself continuing to pass unchanged. | requirement | EG-CONTRACT | VERIFIED | 40b49253d3b9 f2398cefb06c tests/test_no_version_suffixes.py:185 |
| EG-CONTRACT-R021 Failed-connect test checks its own teardown, not process counts Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Failed-connect test checks its own teardown, not process counts.** The failed-connection test asserts that the specific event loop, thread and selector created by that dial are closed, instead of comparing process-wide file-descriptor and thread counts, so unrelated concurrent test activity cannot make a correctly closed connection appear to leak. | Verified by the connection-lifecycle test suite passing when run concurrently with unrelated tests that change process-wide resource counts. | requirement | EG-CONTRACT | VERIFIED | 1bd79a8991ea 72c7dfa478ba tests/test_sync_client_lifecycle.py:107 |
| EG-CONTRACT-R022 Zero new duplicate-code pairs across the combined source tree Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Zero new duplicate-code pairs across the combined source tree.** Newly introduced duplicate-code pairs found by the jscpd scan across the combined source tree are eliminated by consolidating the actual shared implementation into one owned location, rather than by adding scanner suppressions or baseline exceptions. | Verified by running the duplication gate against origin/main and confirming zero new pairs with no suppression comments or baseline file changes. | requirement | EG-CONTRACT | VERIFIED | a3e3d9924822 tests/test_check_duplication_no_suppression.py:27 tests/test_check_duplication_no_suppression.py:42 |
| EG-CONTRACT-R023 Pre-commit hooks pass clean without bypass flags Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Pre-commit hooks pass clean without bypass flags.** Tracked WASM assets stay within the pre-commit size limit, Dupehound review pins reflect the current duplicate-ownership state, every test file has a recognized owner, and the privacy scan has no outstanding findings, so the full configured pre-commit suite passes without a skip or bypass flag. | Verified by running pre-commit run --config .config/pre-commit.yaml --all-files to completion with exit code zero and no hooks skipped. | requirement | EG-CONTRACT | VERIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R023.1 Every tracked test file has a recognized component-registry owner Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Every tracked test file has a recognized component-registry owner.** scripts/check_registry_test_ownership.py's completeness check, run against this repository's current component-registry.yml and tracked tests/ tree, finds zero unowned test files, so the pre-commit suite's test-ownership hook cannot fail on an unclaimed file. | Verified by scripts/check_registry_test_ownership.py reporting zero unowned paths against the current registry and tracked tests/ tree. | requirement | EG-CONTRACT | VERIFIED | 2598a0697e5a 85ce2ac73a96 a3e3d9924822 tests/test_check_registry_test_ownership_completeness.py:24 tests/test_check_registry_test_ownership_completeness.py:31 |
| EG-CONTRACT-R024 Pre-commit and codespell configuration finalized and locked Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Pre-commit and codespell configuration finalized and locked.** The repository's .config/pre-commit.yaml and .config/codespell.ignore reflect the final merged configuration, with release runtime dependency installation and all config-consuming gates pointing at them. | Verified by the configuration validation, lock-consistency, YAML/AST and public-surface checks all passing with no diff against the committed configuration. | requirement | EG-CONTRACT | LANDED | c65a2566a170 |
| EG-CONTRACT-R025 UDS bind-error test uses a short, environment-independent path Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**UDS bind-error test uses a short, environment-independent path.** The Unix domain socket bind-error test constructs a short socket path that does not depend on the ambient temporary-directory path length, so the test exercises the intended bind-error behavior instead of failing on the socket path length limit under a long build directory. | Verified by src/server/transport/tests.rs::uds_setup_propagates_bind_errors_without_entering_accept_loop passing regardless of the ambient temporary-directory path length. | requirement | EG-CONTRACT | VERIFIED | b43f33569dd4 src/server/transport/tests.rs:323 |
| EG-CONTRACT-R026 Combined quality-gate script runs all staged scanners together Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Combined quality-gate script runs all staged scanners together.** A single script runs the staged CCCC, KISS and Dupehound checks plus a jscpd scan of the current changes and the privacy scan together, giving one combined pass or fail result for the full quality-gate set. | Verified by running the combined quality-gate script on a clean tree and confirming it exits zero only when every included scanner passes. | requirement | EG-CONTRACT | LANDED | a1bb9fb9503e |
| EG-CONTRACT-R027 Exhaustive dispatch matches pass the complexity gate via extraction Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Exhaustive dispatch matches pass the complexity gate via extraction.** Dispatch functions that exhaustively match over an enum keep their exhaustive match with no catch-all arm, while each arm's body is extracted into its own function to reduce measured complexity, so the complexity classifier itself does not need a special case for exhaustive matches. | Verified by the complexity gate reporting zero actionable findings for the affected dispatch functions while the existing functional test suite continues to exercise each one. | requirement | EG-CONTRACT | LANDED | b43f33569dd4 |
| EG-CONTRACT-R028 SQLite-format and speech-recognition differential tests run in CI Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**SQLite-format and speech-recognition differential tests run in CI.** The eg-sqlite-format differential test and the eg-asr-whisper test execute as part of a CI job, rather than existing in the tree without any job invoking them. | Verified by the release-qualification test matrix showing both test targets executed with a recorded pass result. | requirement | EG-CONTRACT | LANDED | 7798ab372b1e |
| EG-CONTRACT-R029 Build runner keeps TMPDIR short enough for Unix socket paths Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Build runner keeps TMPDIR short enough for Unix socket paths.** The automated build runner sets TMPDIR to a short, fixed-length directory rather than a long per-run path, so a tool that places a Unix domain socket under it, such as a compiler cache server or a native dependency's cmake step, does not fail against the 108-byte sun_path limit. | Verified by the build runner's TMPDIR length staying within the socket-path budget regardless of the run's identifying name length, using the same test class as the UDS bind-error fix. | requirement | EG-CONTRACT | VERIFIED | 2a0d6eae0918 4342dc5bc1c6 tests/test_push_gate_evidence.py:256 |
| EG-CONTRACT-R030 Unconstrained build step is not CPU-affinity restricted Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Unconstrained build step is not CPU-affinity restricted.** The constrained-parallelism contract gate's first step, which compiles before timing begins, runs with full CPU availability rather than inheriting the CPU-affinity restriction that applies only to the gate's constrained execution step, so compiling dependencies does not consume the time budget intended for the constrained run; the constrained step's time bound is not relaxed to compensate. | Verified by the gate log showing full CPU availability during the unconstrained build step and the constrained step completing within its declared time bound. | requirement | EG-CONTRACT | LANDED | a1bb9fb9503e |
| EG-CONTRACT-R031 Complexity, duplication and architecture censuses pass at zero backlog Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Complexity, duplication and architecture censuses pass at zero backlog.** The CCCC tracked-tree complexity census reports zero actionable backlog, and the jscpd and Dupehound advisory censuses, the Rust dependency advisory gate, the architecture gates and the documentation contract check all pass on the same tree, with clippy and formatting also clean. | Verified by the complexity census's require-zero mode exiting zero and an independent run reproducing a clean clippy -D warnings and formatting result. | requirement | EG-CONTRACT | SPECIFIED | a0da67babeae be0f1acb05c6 e729dc1650b6 tests/test_ci_change_scope.py:171 |
| EG-CONTRACT-R031.1 Lint runner provisions the manifest-selected formatter Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Lint runner provisions the manifest-selected formatter.** Install the repository toolchain and rustfmt unconditionally before pre-commit and the explicit formatting step. | `tests/test_ci_change_scope.py::test_lint_installs_manifest_rustfmt_before_all_formatting_steps` checks manifest-based installation and ordering. | requirement | EG-CONTRACT | VERIFIED | 733e1766936b tests/test_ci_change_scope.py:172 |
| EG-CONTRACT-R031.2 Complete zero-backlog quality-gate acceptance Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Complete zero-backlog quality-gate acceptance.** The full complexity, duplication, dependency, architecture and documentation censuses plus independent clippy and formatting checks pass on the same tree. Formatter setup coverage alone does not satisfy this requirement. | Publish the complete same-tree hosted census and independent clippy/formatting evidence before binding this acceptance child. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R032 Write-classifier functions compile cleanly under the slim profile Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Write-classifier functions compile cleanly under the slim profile.** src/server/access/write_classification.rs's requires_write_native_surface, requires_write_query_surface, requires_write_mining_surface and requires_write_learning_surface compile without an unused-parameter warning under the slim server feature profile, through a structural fix to what each classifier returns or whether it compiles in under that profile, rather than by suppressing the warning on the parameter. | Verified by the slim-server clippy profile passing with -D warnings. | requirement | EG-CONTRACT | LANDED | 5bf5b719de7e |
| EG-CONTRACT-R033 Wire acceptance stays aligned with classifier and dispatch support Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Wire acceptance stays aligned with classifier and dispatch support.** crates/eg-capabilities's Cargo.toml enables an eg-types wire method feature for a server build only when the corresponding facade feature that gates its classifier and dispatch arms is also enabled, so the wire cannot accept a method that the write classifier or dispatcher is not compiled to handle under a given feature profile; the affected query-language classifiers fail closed when their feature is absent. | Verified by compiling each supported feature profile and confirming every wire-callable method under that profile has a matching classifier and dispatch arm, with no unused-parameter warnings. | requirement | EG-CONTRACT | LANDED | 5bf5b719de7e |
| EG-CONTRACT-R034 Complexity test derives its residual from the dispatch arm count Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Complexity test derives its residual from the dispatch arm count.** test_complexity_terms_keeps_accepted_dispatch_visible_and_zero_gate_passes computes its expected complexity residual from the compiler-visible arm count of dispatch_kind instead of a fixed value, so the fixture stays a meaningful positive residual as the exhaustive match grows, while still asserting the dispatch stays exhaustive and visible to the gate. | Verified by the test passing with a residual value computed from source and remaining nonzero after arms are added to dispatch_kind. | requirement | EG-CONTRACT | VERIFIED | cba884075803 tests/test_scanner_wrappers.py:428 |
| EG-CONTRACT-R035 Release workflow executes end to end with all declared targets Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Release workflow executes end to end with all declared targets.** The release workflow's gates job runs to completion as a whole, including its eg-compute solve test step, and an audit confirms every test target declared in the workflow is the one actually executed, closing any gap between declared and executed coverage such as source that no entry point ever compiles. | Verified by a completed end-to-end run of the release workflow's gates job and a coverage audit matching declared test invocations to executed ones. | requirement | EG-CONTRACT | VERIFIED | 16c35404ef56 4342dc5bc1c6 4d1920f636e7 66e652687765 69411a23a248 tests/test_ci_change_scope.py:454 tests/test_release_gates_test_target_coverage.py:62 |
| EG-CONTRACT-R036 Pinned-reference gate anchors each layer to its own admission step Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Pinned-reference gate anchors each layer to its own admission step.** scripts/check_pinned_reference_resolution.py matches each layer's entry points using a word-boundary anchor scoped to that layer's own admission step, instead of a substring match that lets one layer satisfy the check using another layer's entry points, so a removed library- or template-pin resolver is detected as missing. | Verified by tests/test_pinned_reference_resolution.py planting a library-resolver removal and a template-resolver removal and confirming the gate fails on each. | requirement | EG-CONTRACT | VERIFIED | b43f33569dd4 f2398cefb06c tests/test_pinned_reference_resolution.py:169 tests/test_pinned_reference_resolution.py:180 tests/test_pinned_reference_resolution.py:99 |
| EG-CONTRACT-R037 Clippy is warning-free across every release profile Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Clippy is warning-free across every release profile.** Running clippy with -D warnings against every supported release feature profile produces zero warnings, not only the default profile. | Verified by running clippy -D warnings for each declared release feature profile in the release workflow's feature matrix. | requirement | EG-CONTRACT | VERIFIED | 04a134298236 4342dc5bc1c6 tests/test_release_feature_matrix.py:219 |
| EG-CONTRACT-R038 Contract receipt freshness is checked before merge Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Contract receipt freshness is checked before merge.** The contract receipt is regenerated and checked for staleness whenever source that affects it changes, including a new SCHEMA_VERSION occurrence or a change to the Python client, so a drifted receipt digest cannot reach the default branch even when the regenerated catalogs and schemas are otherwise byte-identical to what was already committed. | Verified by a blocking review check that regenerates the receipt and fails on any digest difference from the committed one. | requirement | EG-CONTRACT | LANDED | 2688cddd2f7f |
| EG-CONTRACT-R039 Duplication gate runs against the full combined diff, not per-change Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Duplication gate runs against the full combined diff, not per-change.** The duplication (jscpd) gate runs against the full accumulated change set compared to origin/main, matching what the release workflow checks, so a duplicate pair split across separate incremental changes against their own earlier state cannot escape detection; shared logic extracted during a handler decomposition, such as the sqlite file and key-value dispatch handlers, is factored into one common helper rather than duplicated. | Verified by running the duplication gate over the complete combined tree against origin/main and confirming zero new duplicate pairs. | requirement | EG-CONTRACT | LANDED | 57a12eb06632 |
| EG-CONTRACT-R040 Privacy scanner excludes its own documented example patterns Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Privacy scanner excludes its own documented example patterns.** scripts/check_tracked_privacy.py's credential-pattern documentation does not itself trigger a false credential-history finding, and its entropy-candidate detection does not flag ordinary identifiers and constants as secrets, while a genuinely planted secret still fails the scan. | Verified by check_tracked_privacy.py --self-check catching a planted secret, and a live scan of the tracked history returning zero findings. | requirement | EG-CONTRACT | LANDED | 137b6e3a7898 |
| EG-CONTRACT-R041 Privacy gate detects host paths across the tracked tree Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Privacy gate detects host paths across the tracked tree.** scripts/check_tracked_privacy.py detects a host-path pattern anywhere in tracked source, including architecture/component-registry.yml, scripts/eg_coverage_report.sh, tests/test_check_complexity_staged.py, and .cargo/config.toml, and architecture/component-registry.yml cites only evidence files that are actually present in the repository. | A planted host-path literal in documentation or source fails scripts/check_tracked_privacy.py, and a live scan of the tracked tree returns zero findings. | requirement | EG-CONTRACT | VERIFIED | 2a0d6eae0918 4342dc5bc1c6 tests/test_documentation_privacy.py:100 tests/test_documentation_privacy.py:87 |
| EG-CONTRACT-R042 Quantum hardware macro feature-gated to match its consumers Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Quantum hardware macro feature-gated to match its consumers.** In crates/eg-quantum-hardware/src/registry.rs, the impl_hardware_backend macro, its re-export, and the HardwareResult alias are compiled under a feature gate matching their actual consumers (the ibm, braket, and azure provider adapters), the same pattern used for EG-CONTRACT-R033, so a default build excluding quantum-hardware features does not misreport them as dead code while a build with any of those features keeps all three adapters compiling. | clippy run with no quantum-hardware feature enabled reports no dead-code warning for these symbols, and the crate's provider test suite passes with ibm, braket, and azure each enabled. | requirement | EG-CONTRACT | LANDED | 5bf5b719de7e |
| EG-CONTRACT-R043 Test fixtures carry no credential-shaped literals Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Test fixtures carry no credential-shaped literals.** Fixtures needing PostgreSQL connection strings SHALL use non-credential-shaped literals. The full-range secret-history scan SHALL find zero credential hits before acceptance. | The full commit-range secret-history scan reports zero credential hits. | requirement | EG-CONTRACT | LANDED | e63a9e5ff1f2 |
| EG-CONTRACT-R044 Contract gate discovers Method variants structurally Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Contract gate discovers Method variants structurally.** The contract-registry test discovers every Method variant by reading the mod method_<N> declarations in the protocol module's mod.rs rather than pattern-matching a literal enum block, so it keeps working when Method is assembled from multiple macro-generated files, and it fails when a variant and its descriptor diverge in either direction. | A mutation test confirms the gate fails when a variant is added without a descriptor and when a descriptor is added without a variant, and passes once either is reverted to match. | requirement | EG-CONTRACT | VERIFIED | acc9d32155b3 f2398cefb06c tests/test_contract_method_reachability.py:52 tests/test_contract_method_reachability.py:80 |
| EG-CONTRACT-R045 Method enum size pinned and proven stable Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Method enum size pinned and proven stable.** A compile-time size assertion pins size_of::<Method>() to its measured value, and adding new boxed Method variants does not increase that size because each new variant holds a boxed payload rather than an inline large payload. | A static assertion test fails if size_of::<Method>() changes from its pinned value, proven by comparing the measurement before and after the added variants. | requirement | EG-CONTRACT | VERIFIED | a1bb9fb9503e f2398cefb06c crates/eg-types/tests/contract_wave.rs:255 |
| EG-CONTRACT-R046 Slim-server build compiles with broker feature disabled Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Slim-server build compiles with broker feature disabled.** Compiling epistemic-graph with --no-default-features --features server succeeds cleanly: the match over Method in src/server/mutation_batch/canonical.rs is cfg-scoped so broker-only variants are excluded from, or handled in, its arms whenever the broker feature is disabled. | The slim-server release check compiles that profile with --no-default-features --features server and exits zero. | requirement | EG-CONTRACT | VERIFIED | 4342dc5bc1c6 5bf5b719de7e tests/test_release_feature_matrix.py:287 |
| EG-CONTRACT-R047 Main publishes a rolling engine wheel for consumer CI Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Main publishes a rolling engine wheel for consumer CI.** Each code push to main builds the folded Linux x86_64 wheel. The wheel replaces the assets of the `engine-main` GitHub prerelease. The release targets the source commit and carries a SHA256SUMS file. Consumer CI installs this wheel because the wheel exceeds the PyPI size limit. | The release workflow `engine-main-wheel` job smoke-tests the wheel and publishes it; `gh release download engine-main -p '*.whl'` returns that wheel. | requirement | EG-CONTRACT | LANDED | 9084e9343bf4 |
| EG-CONTRACT-R048 Generated work-claim and evidence DTOs refuse coerced, empty and duplicate inputs Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Generated work-claim and evidence DTOs refuse coerced, empty and duplicate inputs.** `ClaimWorkItemRequest` refuses a blank `tenant_ref`, a zero `lease_ms`, a numeric string `now_ms` and a `max_tenant_in_flight` outside 1..4096. `EvidenceBundle` refuses a blank `bundle_id`, a non-boolean `resolved` and duplicate `policy_exclusions`. The Rust schema source declares each constraint. The generator emits it. | `tests/test_generated_dto_strictness.py` raises `ValidationError` for each of the eight AU PR #22 probe inputs. `gen_contract --check` reproduces the models. | requirement | EG-CONTRACT | VERIFIED | 37a29ee3fe0e 677e430cb3bc a5b4a1f1f638 tests/test_generated_dto_strictness.py:42 tests/test_generated_dto_strictness.py:58 tests/test_generated_dto_strictness.py:74 |
| EG-CONTRACT-R049 The Python client retries an idempotent read once on a dropped connection Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**The Python client retries an idempotent read once on a dropped connection.** `epistemic_graph/client.py`'s `cypher_read` transparently retries exactly once when its connection is dropped mid-call, since a read is idempotent and safe to replay. A non-idempotent write method never retries on a dropped connection and instead surfaces the error to the caller. | A test injects a closed connection on `cypher_read` and asserts the call still succeeds via the transparent retry. A corresponding negative test on a write method asserts no retry occurs and the dropped-connection error propagates. | requirement | EG-CONTRACT | VERIFIED | 6bfd47cbcebc tests/test_cypher_read_retry.py:35 tests/test_cypher_read_retry.py:42 tests/test_cypher_read_retry.py:50 |
| EG-CONTRACT-R050 Generated client ingests OTLP logs Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Generated client ingests OTLP logs.** The generated client exposes an OTLP log ingestion method with strict DTO bounds. Unblocks AU-SEMANTIC-R019.3.1 and R019.3.2. | A client test ingests a log batch and a malformed batch raises `ValidationError`. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R051 Generated client ingests RunTrace Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Generated client ingests RunTrace.** The generated client exposes a RunTrace ingestion method that refuses a blank trace id. Unblocks AU-SEMANTIC-R019.3.3 and R019.3.4. | A client test ingests a RunTrace and asserts the blank-id refusal. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R051.1 Client ingest carries harness fields Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Client ingest carries harness fields.** The generated client RunTrace ingestion method must accept `terminationReason`, the six counters, `costUsd`, `runModel`, `runTaskClass` and `appliedHarnessConfig`. It must refuse a termination reason outside the five values before sending. Vocabulary: `EG-ORCH-VOCAB-R009`. Touches the generated client under `epistemic_graph/`. | A client test ingests an overflow trace and asserts the refusal of an unknown termination reason. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R052 Current architecture documentation (rollup) Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Current architecture documentation (rollup).** The contract must describe existing module owners, dependency direction, shared contracts, and artifact boundaries. Children R052.1–R052.4 define separate documentation units. They must preserve all existing release acceptance requirements. | EG-T-12.1–EG-T-12.4 review the source-linked map in `plan.md`. Documentation alone gives no runtime proof. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R052.1 Module ownership model Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Module ownership model.** `plan.md` must group manifest-listed crates by responsibility and derive membership from `Cargo.toml`. It must distinguish declared dependencies, intended ownership, and implemented enforcement. | EG-T-12.1 compares the map with manifests and the architecture-check configuration. Missing members and unsupported enforcement claims fail review. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R052.2 Build, package, and deployment behavior Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Build, package, and deployment behavior.** `plan.md` must separate Cargo features, wheel composition, Python extras, and runtime activation. `docs/architecture/tiers.md` must describe the server-specific extension boundary. | EG-T-12.2 checks both wheel recipes, default features, and extras against source. Divergent recipes must remain explicit. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R052.3 Shared-contract wiring Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Shared-contract wiring.** `plan.md` must trace identity, provenance, transaction, and query contracts to existing owners and call sites. Direct native operations must remain distinct from planned queries. | EG-T-12.3 checks referenced symbols and owning requirements. Replacing an owner or claiming universal planner traversal fails review. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R052.4 Runtime evidence and refusal Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Runtime evidence and refusal.** `test-spec.md` must define evidence for the real entry points documented by R052.3. `plan.md` must mark missing coverage without inferring implementation absence. | EG-T-12.4 rejects documentation, feature declarations, or generated status as execution proof. Existing EG-C-07/08 and EG-T-10 acceptance remains mandatory. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R001.1 Generated types throughout the AU lifecycle Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Generated types throughout the AU lifecycle.** EG SHALL export strict generated request, result, identity, and decision models. The export SHALL include the complete nested type closure. The manifest SHALL include contract revision, schema digest, and exported type identifiers. The pinned generated schema SHALL govern construction, deserialization, and serialization. Validation SHALL reject unknown nested fields, invalid enums, incompatible revisions, and invalid scalar types. Validation SHALL refuse before dispatch or persistence and return the field path. AU owns AgentLifecycleState and its transition rules. The AU state composes EG-generated types with HarnessRequest, phase, tool requests/results, and RunOutcome. EG SHALL NOT define another AU lifecycle state machine. EG SHALL NOT allow an unvalidated dictionary to replace an admitted value. Rehydration SHALL validate the persisted schema revision and each nested generated value before another step. Production wiring: Extend the EG contract generator and generated-model manifest. AU HarnessRequest and run_agent SHALL consume those exports and proposed AU AgentLifecycleState. Tests SHALL cross generated-client and AU execution/persistence boundaries. Owner link: `EG-CONTRACT-R001` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/public-engine-contract-and-release/requirements.md:5`. Owner link: `AU-HARNESS-R007` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/harness-evolution/requirements.md:12`. Owner link: `AU-HARNESS-R008` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/harness-evolution/requirements.md:13`. Draft dependency `AU-HARNESS-R007.40` remains `draft_unmerged` at `50c313ab01871ff7e10aee2a9d0254fa55d71f07`. It is not a merged producer or implementation receipt. Its path is `specs/harness-evolution/requirements.md`. Explicit hold: AU-HARNESS-R007.40 remains unmerged. AU owns lifecycle state, transitions, persistence, and consumer integration. EG exports alone cannot close AU:109. Owner-review proposal: A schema/type manifest is a proposed export contract. It does not prove an implemented manifest. Original source record `AU:109`, SHA-256 `c0d92285a141dcaac6817bcac25ffa438517afeba50be716211751f3a37a31c2`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run lifecycle_generated_types_survive_run_and_restart through the generated client and real AU run_agent. Transition through tool request/result to RunOutcome. Persist, restart, and resume with the same typed values. Unknown nested fields, wrong scalar types, stale schema revisions, and malformed persisted values SHALL refuse before the next step. AU separately refuses illegal phase transitions. Read persisted/resumed values independently and compare every field. A generated-model unit round trip alone does not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-CONTRACT-R001.2 Canonical blueprint disk round trip Definition — EG-CONTRACT / EG-CONTRACT — Public engine contract and reproducible clientsCanonical requirement and verification source**Canonical blueprint disk round trip.** EG SHALL bind each exported prompt blueprint to blueprint/schema revision and generated-model revision. It SHALL also bind semantic digest and canonical-byte digest. The versioned JSON profile SHALL use UTF-8 without a BOM and sorted object keys. It SHALL use two-space indentation, LF line endings, and one final newline. It SHALL include declared default/null fields and preserve array order. It SHALL reject NaN and Infinity. Parsing SHALL reject unknown fields and scalar coercion. Schema-defined numbers and Unicode scalar values SHALL survive without rounding or normalization. Export, SDK disk write, disk read, strict validation, and re-export SHALL preserve typed values and canonical bytes. A mismatch SHALL report the first differing JSON pointer/value or byte offset. A mismatch SHALL fail acceptance. EG owns blueprint semantics and validation. SDK and GraphOS governed source-effect contracts own filesystem effects. Production wiring: Use EG-TYPED-PACKS-R094.2/.3/.5/.7 for served admin export/import and durable persistence. Use SDK-GOVERNED-WRITEBACK-R004.5-.12 and GRAPHOS-FLEET-R003.4-.10 for filesystem effects. Reuse those contracts. EG adds no filesystem writer. Owner link: `EG-CONTRACT-R001` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/public-engine-contract-and-release/requirements.md:5`. Owner link: `EG-TYPED-PACKS-R094.2` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/typed-packs-and-catalog/requirements.md:149`. Owner link: `EG-TYPED-PACKS-R094.3` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/typed-packs-and-catalog/requirements.md:150`. Owner link: `EG-TYPED-PACKS-R094.5` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/typed-packs-and-catalog/requirements.md:152`. Owner link: `EG-TYPED-PACKS-R094.7` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/typed-packs-and-catalog/requirements.md:154`. Owner link: `AU-CONTROL-R025` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/agent-control-plane/requirements.md:30`. Draft dependency `AU-CONTROL-R025.40` remains `draft_unmerged` at `50c313ab01871ff7e10aee2a9d0254fa55d71f07`. It is not a merged producer or implementation receipt. Its path is `specs/agent-control-plane/requirements.md`. Explicit hold: AU-CONTROL-R025.40 remains unmerged. The formatter must pin an exact number encoder/profile version. Do not claim arbitrary JSON parsers preserve numeric spelling. Owner-review proposal: The formatting profile matches an AU draft proposal. It is a proposed cross-owner contract, not an existing receipt. Original source record `AU:121`, SHA-256 `98b7ad1186ec2a385b334ffa0ad1b28888157ed6b51c6ed4172eeb7b7ef6768e`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run blueprint_canonical_disk_roundtrip_has_no_difference with served R094 export and governed SDK disk write/read. Import and re-export after restart. Include nested defaults, nulls, ordered arrays, Unicode, and schema-boundary numeric values. Compare exact canonical bytes and schema-typed values. Lost fields, unknowns, coerced numbers, changed array order, and changed final newline SHALL fail. Capture source-effect receipt. A serializer-only test does not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-CONTRACT | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST EG-REPO-INGEST — Repository index and native ingestion | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R001 Reconcile mode re-admits stranded semantic intents Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Reconcile mode re-admits stranded semantic intents.** SourceIngest's reconcile mode (admit_sql_source_dirty_reconcile) re-admits semantic intents that were stranded when their originating topic was retired, rather than leaving them permanently unprocessed. | An integration test retires a topic with pending stranded intents, runs a reconcile-mode SourceIngest pass, and confirms the stranded intents are re-admitted and committed. | requirement | EG-REPO-INGEST | LANDED | 06a13bef2738 ac5638477288 |
| EG-REPO-INGEST-R002 SourceIngest is sole owner of migrated ingestion capabilities Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**SourceIngest is sole owner of migrated ingestion capabilities.** EG's SourceIngest is the sole implementation of the ingestion and derivation capabilities previously named 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, each committed as part of its typed observation and receipt contract. | A consumer test confirms each listed capability is reachable only through SourceIngest and that no duplicate writer for the same capability remains in EG. | requirement | EG-REPO-INGEST | SPECIFIED | 06a13bef2738 f17f47ab300f |
| EG-REPO-INGEST-R003 EG is sole home for remaining migrated ingestion modules (rollup) Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for remaining migrated ingestion modules (rollup).** Split into one child per migrating legacy-module root: `EG-REPO-INGEST-R003.1`–`EG-REPO-INGEST-R003.11`. This parent is satisfied only when every child below is satisfied. | See each child requirement's own verification. | requirement | EG-REPO-INGEST | LANDED | ae0f93b6bf70 |
| EG-REPO-INGEST-R003.1 EG is sole home for migrated standardization processing (excluding drift detection) Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated standardization processing (excluding drift detection).** EG is the sole implementation for the ingestion-adjacent standardization processing (excluding drift detection) capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated standardization processing (excluding drift detection) capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 06a13bef2738 72c7dfa478ba ae0f93b6bf70 e72ee15e11bb |
| EG-REPO-INGEST-R003.2 EG owns the migrated infrastructure processing implementation Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG owns the migrated infrastructure processing implementation.** EG SHALL implement the capability that migrates from its legacy module. Consumers reach it through EG typed interface, not a duplicate implementation. | A consumer test calls the capability through EG interface only. It confirms the retiring source module no longer duplicates the computation. | requirement | EG-REPO-INGEST | LANDED | 06a13bef2738 72c7dfa478ba f70de8c33b4f |
| EG-REPO-INGEST-R003.3 EG is sole home for migrated quantum processing Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated quantum processing.** EG is the sole implementation for the ingestion-adjacent quantum processing capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated quantum processing capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | a17a6c5ded2f |
| EG-REPO-INGEST-R003.4 EG is sole home for migrated security processing Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated security processing.** EG is the sole implementation for the ingestion-adjacent security processing capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated security processing capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | a17a6c5ded2f |
| EG-REPO-INGEST-R003.5 EG is sole home for migrated enterprise protocol handling Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated enterprise protocol handling.** EG is the sole implementation for the ingestion-adjacent enterprise protocol handling capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated enterprise protocol handling capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | a17a6c5ded2f |
| EG-REPO-INGEST-R003.6 EG is sole home for migrated ecosystem concept extraction Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated ecosystem concept extraction.** EG is the sole implementation for the ingestion-adjacent ecosystem concept extraction capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated ecosystem concept extraction capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 06a13bef2738 72c7dfa478ba f70de8c33b4f |
| EG-REPO-INGEST-R003.7 EG is sole home for migrated trace-ontology observability Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated trace-ontology observability.** EG is the sole implementation for the ingestion-adjacent trace-ontology observability capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated trace-ontology observability capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 0554e82ae743 72c7dfa478ba fb19bf6ab789 |
| EG-REPO-INGEST-R003.8 EG is sole home for migrated self-ingestion observability Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated self-ingestion observability.** EG is the sole implementation for the ingestion-adjacent self-ingestion observability capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated self-ingestion observability capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 77fa741ee191 |
| EG-REPO-INGEST-R003.9 EG is sole home for migrated audit-logging observability Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated audit-logging observability.** EG is the sole implementation for the ingestion-adjacent audit-logging observability capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated audit-logging observability capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 77fa741ee191 |
| EG-REPO-INGEST-R003.10 EG is sole home for migrated relational-authority governance Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated relational-authority governance.** EG is the sole implementation for the ingestion-adjacent relational-authority governance capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated relational-authority governance capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 77fa741ee191 |
| EG-REPO-INGEST-R003.11 EG is sole home for migrated placement-mining research Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**EG is sole home for migrated placement-mining research.** EG is the sole implementation for the ingestion-adjacent placement-mining research capability migrating out of its legacy module, reachable through EG's own typed interface rather than a duplicate implementation. | A consumer test confirms the migrated placement-mining research capability is callable only through its EG interface and that the retiring source module no longer performs the same computation. | requirement | EG-REPO-INGEST | LANDED | 0554e82ae743 72c7dfa478ba ae0f93b6bf70 fb19bf6ab789 fd9e20bc998d |
| EG-REPO-INGEST-R004 Derived series maintained incrementally with lineage Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Derived series maintained incrementally with lineage.** EG's timeseries handlers support a SeriesDefine{name, expr, sources} mutation that creates a derived series incrementally maintained from each source's prior append history; a revision replay only appends new series values, never mutates past ones, and the graph records DerivedSeries derivedFrom Series lineage together with the defining expression's digest. Row-level security on a derived series is the most restrictive policy among its sources, a cyclic source definition is refused, and maintenance work is bounded by an explicit budget. | An integration test defines a derived series, appends to its sources, confirms incremental maintenance matches full recomputation, and negative tests confirm a cyclic definition is refused and an over-budget maintenance run is bounded. | requirement | EG-REPO-INGEST | VERIFIED | 0554e82ae743 2b8c0364ebb7 crates/eg-tsdb/src/derive/maintain_tests.rs:45 src/server/handlers/timeseries/derived_tests.rs:159 src/server/handlers/timeseries/derived_tests.rs:206 |
| EG-REPO-INGEST-R005 Replay-protection nonces commit in batches for throughput Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Replay-protection nonces commit in batches for throughput.** src/server/request_replay.rs SHALL batch or group-commit replay-protection nonces. Alternatively, it may use a bounded memory window backed by a durable epoch. Per-request durable commit overhead SHALL NOT dominate served-request latency. Replay protection remains intact. | A benchmark compares served throughput before/after at matching concurrency. A replay-attack negative test continues to pass. | requirement | EG-REPO-INGEST | VERIFIED | 0374378eb9db 7d1bf0006b94 src/server/request_replay.rs:418 src/server/request_replay.rs:428 src/server/request_replay.rs:486 |
| EG-REPO-INGEST-R006 Native ingestion commits fast; heavy enrichment deferred Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Native ingestion commits fast; heavy enrichment deferred.** Indexing a repository or other source completes natively within seconds: parsing, symbol resolution, and statistical analysis run inside EG as batched durable commits, while classical ML, embeddings, and LLM-based enrichment never block the commit and are instead enqueued as durable, budgeted work items with an admission verdict, drained by background workers, plus bounded on-demand enrichment when a query needs it. | An end-to-end benchmark against real public repositories records commit latency for the native stages and confirms the deferred-enrichment work items are admitted, enqueued, and completed asynchronously without blocking the index commit. | requirement | EG-REPO-INGEST | SPECIFIED | 0554e82ae743 6bb88b0a90cc |
| EG-REPO-INGEST-R007 Large ingestion batches refuse atomically with a stable code Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Large ingestion batches refuse atomically with a stable code.** SourceIngest refuses an over-limit batch atomically with a stable REPOSITORY_BATCH_TOO_LARGE-class error code before any graph mutation, and a large-batch regression test exercises this refusal path. | A regression test submits a batch past the configured limit and confirms the atomic refusal, the stable error code, and that no partial graph mutation occurred. | requirement | EG-REPO-INGEST | VERIFIED | 0554e82ae743 33c5c6459154 src/server/handlers/repository_index_tests.rs:218 |
| EG-REPO-INGEST-R008 Oversized batches return a stable retry code Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Oversized batches return a stable retry code.** When a repository batch exceeds the 64 MiB write-byte ceiling, EG SHALL refuse it. Return stable REPOSITORY_BATCH_TOO_LARGE code and bounded detail. This lets connector SDK halve and resend the batch. It avoids a generic internal error. | Submit a batch above the 64 MiB ceiling. Confirm stable error code and successful halve-and-resend retry. | requirement | EG-REPO-INGEST | LANDED | 504e3109b2b0 72c7dfa478ba |
| EG-REPO-INGEST-R009 Repository hydration links into the specification bridge Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Repository hydration links into the specification bridge.** EG's repository hydration maps indexed repository entities into the semantic bridge that links them to their source, test, specification, and release relationships, so a query can follow from a hydrated code entity to its governing specification without a duplicate graph writer. | An integration test hydrates a sample repository and confirms its entities are reachable through the documented source-to-specification relationship chain. | requirement | EG-REPO-INGEST | LANDED | No recorded commit/test evidence |
| EG-REPO-INGEST-R009.1 Edge identity is the `(source, target, relation_type)` triple Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Edge identity is the `(source, target, relation_type)` triple.** EG's `eg-core` graph treats an edge's identity as the `(source_id, target_id, relation_type)` triple rather than the bare `(source_id, target_id)` pair, so multiple relation types between the same two endpoints coexist as distinct addressable edges instead of silently colliding. An untyped legacy edge migrates deterministically onto this scheme by reading its stored blob's `type`/`label` field as `relation_type`, falling back to `related_to` when neither is present; a collision between two untyped edges that migrate to the same triple is resolved by a deterministic collapse rule (keep one, emit a collision receipt) rather than by dropping either silently. | A collision test adds two untyped edges between the same pair that migrate onto the same `relation_type`, confirms the deterministic collapse and its collision receipt, and a typed-edge test confirms distinct relation types between the same pair are independently addressable, retrievable and removable. | requirement | EG-REPO-INGEST | VERIFIED | 1bb3ca5fed33 1f5ba9350abb crates/eg-core/src/graph/core_edge_queries.rs:271 |
| EG-REPO-INGEST-R009.2 Semantic-bridge projection of the nine relations onto typed triples Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Semantic-bridge projection of the nine relations onto typed triples.** The semantic bridge's nine relations project onto the `(source, target, relation_type)` triple scheme from `EG-REPO-INGEST-R009.1` — each relation is stored and queried as its own typed edge between the same two endpoints, never collapsed into a shared untyped edge. | An integration test projects a sample hydration carrying multiple semantic-bridge relations between the same two entities and confirms each relation is independently retrievable by its own `relation_type`. | requirement | EG-REPO-INGEST | LANDED | 1f5ba9350abb |
| EG-REPO-INGEST-R010 Tree-sitter grammar coverage expands to 18 more languages Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Tree-sitter grammar coverage expands to 18 more languages.** EG's native parser (parser/tree_sitter.rs) adds tree-sitter grammar support for Swift, Kotlin, Objective-C, Zig, Julia, Elixir, Groovy, PowerShell, Fortran, Pascal, Verilog, CUDA, HTML, CSS, JSON, Terraform/HCL, and DreamMaker, alongside its existing C, C++, C#, Go, Rust, Python, JavaScript, TypeScript, React, Java, Scala, Ruby, PHP, Lua, Bash, and SQL support; DreamMaker, lacking a maintained tree-sitter grammar, uses a custom extractor. | A grammar-expansion test suite parses a representative fixture for each newly added language and confirms a successful parse outcome for each. | requirement | EG-REPO-INGEST | LANDED | 2a0d6eae0918 |
| EG-REPO-INGEST-R011 Ingestion community detection uses pure Leiden Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Ingestion community detection uses pure Leiden.** Use pure Leiden partitioning through the shared graph_algos/leiden.rs driver. Wire it through algorithms.rs and features.py. Do not use a Louvain/Leiden hybrid. This avoids trusting badly connected or disconnected communities as valid modules. | A test confirms the ingestion path calls Leiden refinement. No committed community in the test graph is internally disconnected. | requirement | EG-REPO-INGEST | VERIFIED | 69411a23a248 b5fe3c140c21 crates/eg-compute/src/algorithms/tests.rs:133 |
| EG-REPO-INGEST-R002.1 Compile a skill document into a typed plan Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Compile a skill document into a typed plan.** SourceIngest skill_workflow_ingest SHALL compile procedural steps in a pinned SKILL.md into typed TaskPlan. It SHALL NOT require a separate workflow file. Each step SHALL bind a unique step ID, source span, instruction digest, capability ID, typed inputs/outputs, and dependencies. The compiler SHALL resolve capabilities and bindings before it emits a plan. It SHALL order independent steps by source order. It SHALL refuse missing/duplicate IDs, unresolved dependencies/capabilities, cycles, unsupported types, or missing spans. The receipt SHALL bind skill-directory reference, document revision/digest, grammar revision, and plan revision/digest. The receipt SHALL also bind tool and type digests. The graph SHALL store the directory reference and compilation provenance, not a document copy. A changed document or capability/type digest SHALL invalidate the binding before execution. Unstructured prose SHALL NOT silently become a plan step. Production wiring: Attach compilation to existing SourceIngest skill_workflow_ingest. Proposed AU-CONTROL-R037.30 binds through graph_orchestrate, gap/plan selection, and `execute_workflow`. Do not add a parallel document executor. Owner link: `EG-REPO-INGEST-R002` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:6`. Owner link: `AU-HARNESS-R022.2` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/harness-evolution/requirements.md:111`. Owner link: `AU-CONTROL-R037.3` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/agent-control-plane/requirements.md:59`. Owner link: `AU-CONTROL-R037.5` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/agent-control-plane/requirements.md:61`. Draft dependency `AU-CONTROL-R037.30` remains `draft_unmerged` at `50c313ab01871ff7e10aee2a9d0254fa55d71f07`. It is not a merged producer or implementation receipt. Its path is `specs/agent-control-plane/requirements.md`. Explicit hold: Owners must publish the versioned SKILL.md procedural grammar. Owners must publish authoritative capability/type lookup. AU-CONTROL-R037.30 remains unmerged. The SourceIngest capability name alone does not prove document compilation. Owner-review proposal: Step fields, source-order tie breaking, and compilation receipt are proposed details. No Markdown grammar is claimed as already selected. Original source record `AU:23`, SHA-256 `3f7e133169a76ce2680ec667c28ea2c5543354ed8874d258c432e65346f2e529`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Exercise `skill_document_alone_compiles_and_executes` with a skill directory containing SKILL.md and permitted assets. Provide no separate workflow file. Invoke real SourceIngest and fetch the plan through AU graph_orchestrate. Call `execute_workflow`. Inspect independently observed step effects and data bindings. Mutate the document between compilation and invocation. Refuse before the affected step. Test duplicate IDs, cycles, unknown capabilities, wrong binding types, and missing spans. Confirm the graph stores directory reference/receipt, not copied document text. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R006.1 Measure the daily paper target and admit bounded maintenance Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Measure the daily paper target and admit bounded maintenance.** EG SHALL count distinct canonical paper IDs completed through every required ingestion stage. Count them in half-open rolling UTC window [window_end - 86400 seconds, window_end). The target SHALL be 2000 completed papers per window. Stage receipts SHALL record stage/revision, attempted IDs, distinct completed IDs, duplicate count, elapsed time, and source/commit evidence. Retries SHALL NOT increase the completed-paper count. A partial or stale window SHALL remain unknown and SHALL NOT be compared as a full day. Below target, the committed decision SHALL name count, shortfall, and stage-bottleneck evidence. The decision SHALL assess safe maintenance candidates before allocating remaining declared budget across identified goals. A purge candidate SHALL be terminal, unleased, and non-authoritative. It SHALL retain durable source and decision receipts. Active work, authoritative records, and the last source copy SHALL be ineligible. Each action SHALL carry owner authorization, expected revision, cost ceiling, and admission verdict. Missing authority or policy inputs SHALL refuse before effects. Production wiring: Read stage/work-item receipts from native SourceIngest and deferred work under R006. EG decides shortfall and per-goal allocation. AU observes the result. GraphOS performs admitted maintenance. Keep operation ID and producer/export binding as owner dependencies. Owner link: `EG-REPO-INGEST-R006` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:21`. Owner link: `AU-RETIRE-R005` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/au-engine-duplicate-retirement/requirements.md:14`. No draft consumer dependency is assigned. Explicit hold: The reviewed source does not select the required stage set or window-freshness policy. It also omits per-goal allocation objective/tie-break and the GraphOS maintenance operation/authorization contract. Do not invent IDs, budget defaults, or a purge executor. Owner-review proposal: Distinct end-to-end completions and the exact window define a proposed throughput oracle. Stage telemetry remains separate from the completed-paper numerator. Original source record `AU:70`, SHA-256 `902f964dd909186f3a31d1f8a84d146b715446e64dfeec62480c8151baa06996`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run paper_shortfall_drives_admitted_maintenance through real 24-hour stage completion and durable work queues. Include duplicate attempts, failures, and boundary timestamps. Independently count 1999 then 2000 unique completions. Confirm trigger/no-trigger decisions. Inspect goal allocations and their aggregate budget bound. Use actual GraphOS maintenance route and read its result receipt. Active leases, changed revisions, last source copy, missing authorization, and stale telemetry SHALL prevent purge. An incomplete window is unknown. Queue-only/planner-only fixtures do not pass. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R006.2 Apply importance resistance in the deferred re-embed worker Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Apply importance resistance in the deferred re-embed worker.** After a successful sync commit, EG SHALL queue a durable re-embed job. The job SHALL bind committed source revision, embedding space/model revision, old-vector digest, and importance-policy revision. The worker SHALL form an importance-regularized candidate outside the routing loop. Proposed profile squared_l2_anchor_v1 uses objective `L(z)=sum((z_i-p_i)^2)+lambda*sum(w_i*(z_i-o_i)^2)`. Here p is the proposed vector and o is the old vector. Each coordinate weight SHALL be finite and nonnegative. Lambda SHALL be finite and strictly positive. The coordinate result is `(p_i+lambda*w_i*o_i)/(1+lambda*w_i)`. Vectors and weights SHALL share one declared dimension and coordinate system. The profile SHALL NOT silently rescale or normalize the result. Missing/stale importance evidence or incompatible spaces SHALL refuse promotion. Nonfinite values or superseded source/vector revisions SHALL refuse before promotion. The candidate SHALL remain shadow data until the existing recall gate passes. A failed gate SHALL retain the prior active version. Query routing SHALL NOT perform consolidation or its embedding/model calls. Production wiring: Queue through EG-FEDERATED-QUERY-R077.3. Gate promotion through EG-UNIFIED-DATA-PLANE-R040.2/.3 before EmbeddingVersionStore::tag_batch. Read the embedding binding in the existing worker path. R040.3 records that the production tag caller must be created. EG-FEDERATED-QUERY-R040.3 is not this gate. Owner link: `EG-REPO-INGEST-R006` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:21`. Owner link: `AU-CONTEXT-R002` at `agent-utilities@50c313ab01871ff7e10aee2a9d0254fa55d71f07:specs/agent-context-and-finance/requirements.md:6`. Owner link: `EG-FEDERATED-QUERY-R077.3` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/federated-query-and-reasoning/requirements.md:95`. Owner link: `EG-UNIFIED-DATA-PLANE-R040.2` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/unified-data-plane/requirements.md:153`. Owner link: `EG-UNIFIED-DATA-PLANE-R040.3` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/unified-data-plane/requirements.md:154`. No draft consumer dependency is assigned. Explicit hold: The source does not identify the authoritative per-coordinate importance producer or revisioned export. The compatible embedding-space policy is also unbound. The squared-L2 profile remains an owner-review proposal. Do not claim the source specified or implemented this math. Owner-review proposal: squared_l2_anchor_v1 is a precise proposed penalty, not a paper-derived claim. A different owner-selected profile must publish an exact objective and monotonic resistance oracle. Generic importance weighting is insufficient. Original source record `AU:92`, SHA-256 `771acc731a6e25746641adf30cde9ec91f4eb56edd6597f2d308a42947a3abb3`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. The generated status has no receipt arrays. No implementation or served receipt is claimed. | Exercise sync_importance_penalty_is_async_and_gate_bound through real sync and deferred worker. Compare equal proposed coordinate displacements at low/high importance. Higher importance produces less displacement. Compare exact candidate math, provenance, idempotent jobs, and existing gate before tag_batch. Stale jobs, absent importance evidence, or failed recall probes leave active binding unchanged. Instrument served routing. Prove zero consolidation/embedding calls while pending and after completion. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R006.3 Serve revision-bound structured code maps Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Serve revision-bound structured code maps.** The existing UnifiedQuery surface SHALL accept a typed code-map query. The query SHALL include tenant, repository identity, and current source revision. It SHALL identify behavior text or a symbol, requested relation kinds, and bounded page limits. The result SHALL bind map generation, source-inventory revision/digest, query digest, and authorization scope. It SHALL include module/symbol IDs, language, path, source span, and source revision. It SHALL expose typed contains, calls, and depends_on edges. Behavior matches SHALL resolve to indexed entities and cited spans. Unsupported or unresolved relations SHALL be marked incomplete, not invented. Authorization SHALL precede results, counts, and cursors. Each page SHALL compare map binding with authoritative current repository revision. A changed or unknown revision SHALL refuse as stale before serving data. This rule also covers unchanged symbols from older generations. Each cursor SHALL bind the same map, query, and authorization revisions. Production wiring: Produce maps through native IndexRepository/SourceIngest. Serve them through Method::UnifiedQuery and its existing execution path. Add a typed code-map query/result mode there. Do not add a separate search service or treat LLM answers as authoritative code-map evidence. Owner link: `EG-REPO-INGEST-R006` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:21`. Owner link: `EG-REPO-INGEST-R009` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:24`. Owner link: `EG-FEDERATED-QUERY-R017` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/federated-query-and-reasoning/requirements.md:21`. No draft consumer dependency is assigned. Producer binding: The proposed typed authority/admission contract in plan.md is normative for this row. Configuration must be admitted before use; no deployed authority is claimed. Any historical query must be explicit. It cannot satisfy the current-map guarantee. Owner-review proposal: Request/result carrier and cursor bindings are proposed query additions. They are not current implemented API claims. Original source record `EG:54`, SHA-256 `e69e6fa3a5c26ae763809d600cb7d264d028b9ce0d80f8ca6141e1a40cf0638e`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Run current_code_map_locates_behavior_and_refuses_old_generation through served indexing and generated UnifiedQuery. Query behavior and a symbol. Independently inspect modules, symbols, call/dependency edges, and source spans. Change one source file so one indexed symbol behavior/span changes while another remains unchanged. Until a complete new map generation publishes, queries for either symbol and the old cursor SHALL refuse against the stale map. Reindex. Query both symbols. The changed symbol SHALL expose its current source revision and span. The unchanged symbol SHALL retain its logical ID. It SHALL bind to the new map generation and current revision. Inspect changed, deleted, and renamed entities against current files. Test unauthorized tenants, changed authorization, bounded pagination, and unresolved relations. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R006.4 Bound incremental indexing and declare semantic-type support Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Bound incremental indexing and declare semantic-type support.** IndexRepository SHALL apply authorized added/modified/deleted/renamed file deltas against exact base and target revisions. A mismatched base SHALL refuse before index mutation. Unchanged files SHALL reuse parse/index artifacts. The target generation SHALL omit entities/edges for deleted files and rebind renamed ones. Each job SHALL receive positive max_working_bytes within its host grant. It SHALL account all job-owned parser/index buffers and worker allocations. The job SHALL reserve each allocation before use. It SHALL backpressure or refuse before exceeding the grant. Existing per-batch atomic refusal remains required. Only a complete target generation may become the current code map. Completion, cancellation, and failure SHALL release job buffers, handles, and workers. The shared engine SHALL remain usable. Optional semantic typing SHALL use a versioned language/parser/resolver support table. Unsupported semantic mode SHALL refuse or return explicitly requested syntax-only output. Grammar availability SHALL NOT imply semantic-type support. Production wiring: Attach deltas to SourceIngest/IndexRepository and SDK-SOURCE-INGEST-R004. Retain R007 batch admission and native/deferred separation under R006. Extend existing parser/index workers and owner resource accounting. Research citation: Codebase-Memory, Vogel et al. (2026), arXiv:2603.27277. The paper motivates the approach; it does not define this contract or language matrix. Owner link: `EG-REPO-INGEST-R006` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:21`. Owner link: `EG-REPO-INGEST-R007` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:22`. Owner link: `EG-REPO-INGEST-R010` at `epistemic-graph@e1db3f4359e659dc07fb0e0ba5e021bed40c9f26:specs/repository-index-and-ingestion/requirements.md:27`. Owner link: `SDK-SOURCE-INGEST-R004` at `agent-connector-sdk@5babc4cc48ad73928468b243842f219f51e2cca1:specs/SDK-SOURCE-INGEST/requirements.md:8`. No draft consumer dependency is assigned. Explicit hold: The owner must publish the initial semantic-language/resolver matrix and exact host resource-grant binding. Do not substitute grammar counts, the paper language count, or an arbitrary language list. Resource evidence must include native parser/worker allocations, not only language-runtime heap counters. Owner-review proposal: The limit covers job-owned working memory. The host accounts shared engine memory separately. This is not a whole-process RSS limit. The initial semantic-language roster remains a source-decision hold. Original source record `EG:55`, SHA-256 `340c1817f2a52dc6da4c9c13d93d215debbeb9fefd8b84b8d2400b86541d4d81`. Exact original fields, including any private path, remain in the private source map. Status remains SPECIFIED. `landed_in` and `verified_by` are empty. No implementation or served receipt is claimed. | Exercise incremental_index_respects_memory_and_releases_resources through actual indexing. Exercise add/modify/delete/rename delta. Count parser calls and independently inspect the target map. Instrument allocator/workers. Peak job-owned bytes SHALL stay within the grant. Reject an over-limit reservation before allocation. No partial map becomes current. The prior map remains usable after failure. On success, cancellation, and parser failure, release job allocations/handles to baseline. Submit a subsequent job. Test every advertised semantic table row and reject unsupported modes. Planned acceptance only. No test, served readback, receipt, implementation, or closure is claimed. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R002.100 Require independent readback before ingestion success Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Require independent readback before ingestion success.** Extend the existing SourceIngest result-persistence contract. Each write receipt SHALL bind run ID, tenant, query digest, ordered result IDs/content digests, graph revision, and source provenance. After writing, the consumer SHALL issue a separately authorized read-only query. It SHALL bind its principal/grant revision and selector to the receipt. It SHALL compare every expected result ID, digest, and revision. A run SHALL report success only after a matching readback receipt. Missing, partial, stale, denied, or mismatched readback SHALL return typed non-success. EG SHALL NOT add a second graph writer. Producer/consumer: EG owns durable graph read/write. AU owns execution-success reporting. Reuse SourceIngest and existing query authorization. Preserve existing coverage: `EG-REPO-INGEST-R002`; `EG-DURABLE-KERNEL-R002`. Source record `AU:118` SHA-256 `e8ad0c2417b7fa6ce53c46899f1adf8e925977becd0bd1813db6b62d3786af11`. Explicit open AU prerequisite: No exact reviewed AU companion requirement binds execution success to this EG receipt. Leave the AU consumer ID unassigned. Treat consumer evidence as missing; do not infer an ID. Status remains SPECIFIED; implementation and served evidence remain pending. Planned served acceptance: persist a multi-result search through the served path. Read it through a separately authorized query and compare every result ID, digest, and revision. Independently read back the durable result records and both persisted receipts: the write receipt and readback receipt. Confirm the write receipt binds run, tenant, query digest, ordered result IDs/digests, graph revision, and source provenance. Confirm readback binds principal/grant revision, selector, and returned result IDs/digests/revisions. Report success only after all values match. Refuse denied, partial, stale, or mismatched data or receipts; keep success unset. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-REPO-INGEST-R002.101 Bind graph-loaded workflow execution to durable hydration readback Definition — EG-REPO-INGEST / EG-REPO-INGEST — Repository index and native ingestionCanonical requirement and verification source**Bind graph-loaded workflow execution to durable hydration readback.** Bind the graph-loaded workflow ID and revision. Bind the committed EG plan/decision digest and AU execution run/output digests. Bind the SourceIngest write receipt, resulting graph revision, and separately authorized readback receipt. The acceptance path SHALL use the real AU `graph_orchestrate` → `find_workflow_gaps`/`fill_workflow_gaps` → `execute_workflow` consumer. It SHALL use EG graph load/decision and SourceIngest. A separate authorized graph query SHALL read back hydrated content. Its digest SHALL match before the gate reports success. Fake engines/catalogs and generic handoff receipts do not satisfy this contract. Missing/stale workflows, execution mismatches, write failures, or denied/partial readback SHALL return non-success. Producer/consumer boundary: EG owns workflow graph load/decision and durable SourceIngest. AU owns graph orchestration/execution. SDK owns the source-effect runner. Pipelines owns the gate; it does not add a runtime orchestrator. Explicit open AU prerequisite: No exact reviewed AU companion requirement binds AU success to this EG hydration readback. Leave the AU consumer ID unassigned. Treat execution-success evidence as missing. Pipelines gate coverage does not establish the AU consumer. Preserve existing coverage: `EG-REPO-INGEST-R002`. Source record `PIPE:10` SHA-256 `e0c431512565acb1a8ae00e09b63ec6fb7c8f9e81ef9c786a0fd7b26b2239455`. Status remains SPECIFIED; implementation and served evidence remain pending. Planned served acceptance: Run the real graph-loaded workflow through AU. Perform hydration. Read the result through a separate authorized query. Before success, compare exact workflow revision, run, output, and graph revision bindings. Refuse stale workflows, plan mismatch, hydration-digest mismatch, and denied/partial readback. | requirement | EG-REPO-INGEST | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH EG-SRC-AUTH — Source authority: the ontology says which connected source answers a concept | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001 Authority vocabulary (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Authority vocabulary (rollup).** A `vg:SourceAuthority` row states source, concept, optional facet, rank, scope, freshness, contract kind and materialisation policy. LANDED only when every child is. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001.1 Add class `vg:SourceAuthority` with `vg:authoritativeSource`, `vg:authorityFor`, `vg:authorityRank` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add class `vg:SourceAuthority` with `vg:authoritativeSource`, `vg:authorityFor`, `vg:authorityRank`.** Touches `crates/eg-core/ontology/virtual_graph-v1.ttl`. Names match `EG-CQ-XSRC-R001.1`. | Test `the_authority_terms_are_in_the_core_vocabulary` in `src/server/graph_schema/virtual_graph_tests.rs` loads the core source and finds the class and three properties. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001.2 Add `vg:authorityFacet` and `vg:authorityMapping` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `vg:authorityFacet` and `vg:authorityMapping`.** Touches `crates/eg-core/ontology/virtual_graph-v1.ttl`. | Same test file, `the_authority_facet_and_mapping_terms_exist`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001.3 Add `vg:scopeTenant`, `vg:scopePartition`, `vg:freshnessMaxAgeSeconds` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `vg:scopeTenant`, `vg:scopePartition`, `vg:freshnessMaxAgeSeconds`.** Touches `crates/eg-core/ontology/virtual_graph-v1.ttl`. | Same test file, `the_authority_scope_and_freshness_terms_exist`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001.4 Add `vg:authorityContract` and `vg:allowFallback` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `vg:authorityContract` and `vg:allowFallback`.** Touches `crates/eg-core/ontology/virtual_graph-v1.ttl`. | Same test file, `the_authority_contract_and_fallback_terms_exist`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001.5 Add `vg:materialisation` and `vg:materialisationReason` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `vg:materialisation` and `vg:materialisationReason`.** Touches `crates/eg-core/ontology/virtual_graph-v1.ttl`. | Same test file, `the_materialisation_terms_exist`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R001.6 Add `vg:foreignSourceName` on `vg:SourceConnection`; widen the domain of `vg:approved` to `vg:SourceAuthority` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `vg:foreignSourceName` on `vg:SourceConnection`; widen the domain of `vg:approved` to `vg:SourceAuthority`.** Touches `crates/eg-core/ontology/virtual_graph-v1.ttl`. | Same test file, `the_foreign_source_name_and_widened_approved_exist`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002 Authority shapes (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Authority shapes (rollup).** SHACL refuses malformed and contradictory rows. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002.1 Shape: required cardinalities and node kinds Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Shape: required cardinalities and node kinds** (source, concept, mapping exactly one; rank positive integer; contract in the five values). Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | Fixture test in `src/server/graph_schema/virtual_graph_tests.rs`: a valid row passes; one fixture per missing property fails with its message. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002.2 Shape: mapping belongs to the named source and maps the named class Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Shape: mapping belongs to the named source and maps the named class.** Two `sh:sparql` constraints (`OPTIONAL ... FILTER(!BOUND)`). Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | Fixtures: mapping from another source fails; mapping of another class fails. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002.3 Shape: a facet must be projected by the mapping Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Shape: a facet must be projected by the mapping.** Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | Fixture: facet absent from the mapping's predicate-field pairs fails. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002.4 Shape: contract kind agrees with the connection's source kind Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Shape: contract kind agrees with the connection's source kind.** Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | Fixture: `api` row on an `mcp` connection fails; `virtual-graph` on `sql` passes. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002.5 Shape: accelerated materialisation needs reason, freshness bound and connection capability `copy` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Shape: accelerated materialisation needs reason, freshness bound and connection capability `copy`.** Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | Fixtures: missing reason, missing freshness, missing `copy` each fail; `virtual` with none passes. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R002.6 Shape: equal-rank claims by different sources on one (class, facet, scope) are refused inside one graph Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Shape: equal-rank claims by different sources on one (class, facet, scope) are refused inside one graph.** Touches `crates/eg-core/ontology/virtual_graph-v1.shapes.ttl`. | Fixture: two sources, same rank, fails; different ranks passes. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R003 Who may assert authority (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Who may assert authority (rollup).** Operator approval only; connectors propose. Reuses the governed two-person change and `AttachApproved`. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R003.1 Declare kind `governed.source-authority` with approver scope `governance:approve-source-authority` in `GOVERNED_KINDS` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Declare kind `governed.source-authority` with approver scope `governance:approve-source-authority` in `GOVERNED_KINDS`.** Touches `crates/eg-types/src/governed_change.rs`. Depends on the generated scope registry (`EG-IDENTITY-R004`, owner epistemic-graph identity). | Unit test `source_authority_kind_has_exact_scopes` asserts `kind_scopes`; scope-registry generation test lists the new scope as class `approver`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R003.2 Attach refuses `vg:approved true` inside a `Pack` or `Ingestion` origin schema source Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Attach refuses `vg:approved true` inside a `Pack` or `Ingestion` origin schema source.** Touches `crates/eg-core/src/graph/schema_sources.rs` (attach validation). | Test attaches a pack source with an approved mapping and an approved authority row. Both refused with a typed code. The same text under `Operator` origin attaches. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R003.3 `AttachApproved` accepts an authority candidate. The approval lease binds its digest Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**`AttachApproved` accepts an authority candidate. The approval lease binds its digest.** Touches `src/server/graph_schema/approved.rs`. Depends on `R003.1`. | Test: approval for digest X attaches X. A changed byte is refused with `ApprovalMismatch`. An approver equal to the proposer is refused. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R003.4 Planner derives effectiveness from origin, not from the flag Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Planner derives effectiveness from origin, not from the flag.** Add `fn row_is_effective(origin, row)` in `crates/eg-rdf/src/source_selection.rs`. Depends on `R003.2`. | Unit test: a row with the flag true under `Pack` origin is not effective; under `Approved` origin it is. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R003.5 Proposed rows are listed, never selected Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Proposed rows are listed, never selected.** Add `not_used` entries with reason `Proposed`. Touches `crates/eg-rdf/src/source_selection.rs`. | Unit test: a proposed rank-1 row beside an approved rank-2 row selects rank 2 and lists the proposal. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004 Selection reads authority (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Selection reads authority (rollup).** `select_sources` names the winner and alternates per class or facet. Cross-repo join point with `EG-FEDERATED-QUERY-R072`. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.1 Add `AuthorityRow` and `with_authority` to `CoverageFixture`; replace the silent `insert` overwrite by a list per class Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `AuthorityRow` and `with_authority` to `CoverageFixture`; replace the silent `insert` overwrite by a list per class.** Touches `crates/eg-rdf/src/source_selection.rs`. Depends on `EG-FEDERATED-QUERY-R072.1`. | Unit test: two mappings on one class are both kept (the old behaviour kept only the last). | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.2 `Premise::Authority` with row, source, class, facet, rank, scope, origin, generation Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**`Premise::Authority` with row, source, class, facet, rank, scope, origin, generation.** Touches `crates/eg-rdf/src/source_selection.rs`. | Unit test: a covered class carries the authority premise. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.3 `Covered` gains `alternates`; order candidates by rank Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**`Covered` gains `alternates`; order candidates by rank.** Touches `crates/eg-rdf/src/source_selection.rs`. | Two-source fixture: rank 1 chosen, rank 2 listed as alternate. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.4 Superclass authority is inherited; a subclass row overrides it Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Superclass authority is inherited; a subclass row overrides it.** Touches `crates/eg-rdf/src/source_selection.rs`. Same rule as `EG-CQ-XSRC-R001.3`. | Fixture: `:Incident` inherits from `:ApplicationEvent`; adding an `:Incident` row overrides. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.5 Live read: parse authority rows from the composed graph schema sources Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Live read: parse authority rows from the composed graph schema sources.** Touches `crates/eg-rdf/src/source_selection.rs` and `crates/eg-core/src/graph/schema_sources.rs`. Owner of the join: `federated-query-and-reasoning` (the live ontology search child of `EG-FEDERATED-QUERY-R072`). | Integration test: attach the vocabulary plus two rows as schema sources and `select_sources` returns the same verdicts as the fixture. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.6 Build the `ConnectedSources` view from the owner-scoped foreign catalog Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Build the `ConnectedSources` view from the owner-scoped foreign catalog.** Touches `crates/eg-plan/src/federation.rs`. Uses `vg:foreignSourceName` (`R001.6`). | Test: a source registered under another principal is absent from the view (`EG-FEDERATED-QUERY-R013` refusal kept). | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R004.7 Facet-aware selection: a question reading property `p` uses the facet row for `p` before the class row Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Facet-aware selection: a question reading property `p` uses the facet row for `p` before the class row.** Touches `crates/eg-rdf/src/source_selection.rs`. | Fixture: `:Host` identity from a CMDB, `:Host` `temperature` facet from a hardware connector; each property selects its own source. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R005 Tie-breaking (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Tie-breaking (rollup).** A total, documented order; an unresolvable tie abstains. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R005.1 Order: facet over class over nearest superclass Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Order: facet over class over nearest superclass.** Touches `crates/eg-rdf/src/source_selection.rs`. | Fixture covering each pair. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R005.2 Scope specificity: matching tenant and partition beat unscoped Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Scope specificity: matching tenant and partition beat unscoped.** Touches `crates/eg-rdf/src/source_selection.rs`. | Fixture: tenant-scoped row beats an unscoped lower rank number. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R005.3 Equal everything, different sources: `Abstained::Ambiguous` listing both rows; never choose by name Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Equal everything, different sources: `Abstained::Ambiguous` listing both rows; never choose by name.** Touches `crates/eg-rdf/src/source_selection.rs`. | Fixture across two schema sources; swapping their names leaves the verdict unchanged. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R005.4 `Premise::Tiebreak { winner, loser, rule }` records the deciding step Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**`Premise::Tiebreak { winner, loser, rule }` records the deciding step.** Touches `crates/eg-rdf/src/source_selection.rs`. | Unit test per rule. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R006 Typed abstention (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Typed abstention (rollup).** An unconnected, unapproved, stale, mismatched or ambiguous authority yields a typed verdict or a declared fallback. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R006.1 Add `CoverageResult::Abstained { class, facet, reason, source, premises }` and the reason enum `Unconnected | UnapprovedMapping | Stale | ContractMismatch | Ambiguous` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `CoverageResult::Abstained { class, facet, reason, source, premises }` and the reason enum `Unconnected | UnapprovedMapping | Stale | ContractMismatch | Ambiguous`.** Touches `crates/eg-rdf/src/source_selection.rs` and its callers. | Unit test builds one verdict per reason. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R006.2 Unconnected rank-1 authority abstains naming source and concept Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Unconnected rank-1 authority abstains naming source and concept.** Touches `crates/eg-rdf/src/source_selection.rs`. Satisfies the `.3` children of `EG-CQ-ORCH-R001` to `R007`. | Test: the authority names a source absent from the catalog; the verdict names both; other classes still report. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R006.3 `allowFallback` tries the next ordered alternate and records `FallbackFrom` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**`allowFallback` tries the next ordered alternate and records `FallbackFrom`.** Touches `crates/eg-rdf/src/source_selection.rs`. | Test: with the flag the rank-2 source answers; without it the verdict abstains. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R006.4 Freshness: a stale copy falls back to live; stale and no live route abstains `Stale` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Freshness: a stale copy falls back to live; stale and no live route abstains `Stale`.** Touches `crates/eg-rdf/src/source_selection.rs`; reads `AccelerationPolicy::resolve_mode` in `crates/eg-types/src/metadata_acceleration.rs`. | Test: watermark older than `freshnessMaxAgeSeconds` gives live mode or `Stale`. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R006.5 No authority row: one approved mapping serves with `Premise::Implicit`; several abstain `Ambiguous` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**No authority row: one approved mapping serves with `Premise::Implicit`; several abstain `Ambiguous`.** Touches `crates/eg-rdf/src/source_selection.rs`. | Fixture for each case. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R007 Audit trail (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Audit trail (rollup).** Every answer carries "sources used and why" from the premises. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R007.1 Add `AuthorityAudit` and `AuditEntry` types Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Add `AuthorityAudit` and `AuditEntry` types.** Touches `crates/eg-types/src/authority_audit.rs` (new) and registers it in the contract schema. | Serde round-trip test and contract-schema snapshot. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R007.2 Build the audit from verdicts and premises only Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Build the audit from verdicts and premises only.** Add `fn audit_from(verdicts)` in `crates/eg-rdf/src/source_selection.rs`. | Test: the audit entries equal the premises of the verdicts, none added. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R007.3 Audit lists `not_used` rows with reason (including `Proposed`) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Audit lists `not_used` rows with reason (including `Proposed`).** Touches `crates/eg-rdf/src/source_selection.rs`. | Fixture with a proposed row and a stale row. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R007.4 Wire the audit into the cross-source report's `sources_used` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Wire the audit into the cross-source report's `sources_used`.** Touches `crates/eg-types/src/supply_chain_report.rs` (owner `EG-CQ-XSRC-R006.1`). Depends on `R007.1` and `EG-CQ-XSRC-R006.1`. | Report test: `sources_used` equals the audit entries. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R007.5 Print the block in the served intent tool Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Print the block in the served intent tool.** Owning repository: graph-os. Depends on `R007.1`. | graph-os test asserts the block is present in the tool result. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R008 Materialisation policy (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Materialisation policy (rollup).** Virtual by default; a copy needs a reason. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R008.1 Selection reports `mode: live` for a `virtual` row and refuses a copy route for it Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Selection reports `mode: live` for a `virtual` row and refuses a copy route for it.** Touches `crates/eg-rdf/src/source_selection.rs`. | Test: a virtual row never resolves to a copy mode. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R008.2 An `accelerated` row resolves through `AccelerationPolicy` and carries its reason into the audit Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**An `accelerated` row resolves through `AccelerationPolicy` and carries its reason into the audit.** Touches `crates/eg-rdf/src/source_selection.rs`. | Test: the audit entry shows mode `accelerated` and the stored reason. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R009 Consumers and acceptance (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Consumers and acceptance (rollup).** The competency specs state their authority rows against this vocabulary. | Every child is LANDED. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R009.1 Fixture: ServiceNow rank 1 and PagerDuty rank 2 for `:Incident` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Fixture: ServiceNow rank 1 and PagerDuty rank 2 for `:Incident`.** Files: `crates/eg-rdf/tests/source_authority_fixture.rs`. | Fixture parses, passes the shapes, selects rank 1. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R009.2 Decisive test: swapping two ranks changes `sources_used` with equal query text Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Decisive test: swapping two ranks changes `sources_used` with equal query text.** Same file. Satisfies `EG-CQ-XSRC-R007.4`. | The test asserts both audits and equal query text. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R009.3 Re-point `EG-CQ-XSRC-R001.1` and `R001.2` to this spec and mark them delivered by `R001.*` and `R002.*` Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Re-point `EG-CQ-XSRC-R001.1` and `R001.2` to this spec and mark them delivered by `R001.*` and `R002.*`.** Touches `specs/cross-source-competency/requirements.md` and `tasks.md` (coordinate with that spec's owner). | `spec-decomposition` hook prints clean; no term is defined in two specs. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010 Source trust role and live-truth preference (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Source trust role and live-truth preference (rollup).** The platform tracks one trust role per data source: `live_truth`, `historical_context` or `inspiration`. When sources conflict on one concept, source selection must prefer live truth. Children `.1` to `.6` deliver it. | See each child. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010.1 Model Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Model.** Add `vg:sourceRole` on `vg:SourceConnection` in `crates/eg-core/ontology/virtual_graph-v1.ttl`, with closed values `live_truth`, `historical_context` and `inspiration`. Add `SourceRole` in `crates/eg-rdf/src/source_selection.rs`. The authority rank at `source_selection.rs:172` (`select_sources`) orders sources but does not grade their trust. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::source_role_round_trips`. | The vocabulary test finds the term. A serde round trip rejects an unknown role. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010.2 Behavior Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Behavior.** Add `role_order` in `source_selection.rs`. The default order is `live_truth`, then `historical_context`, then `inspiration`. It is a named replaceable default. On a conflict for one class, facet and scope, the higher role wins before rank applies. `EG-SRC-AUTH-R005.1` documents the later tie-break steps. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::live_truth_beats_historical_on_conflict`. | Two sources with different roles select the live-truth source whatever their rank. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010.3 Wiring Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Wiring.** `role_order` attaches in `select_sources` at `crates/eg-rdf/src/source_selection.rs:172`. No production caller of `select_sources` exists today; every call is in its own tests. This row creates the call site in `crates/eg-plan/src/federation.rs`, where `EG-SRC-AUTH-R004.6` builds the `ConnectedSources` view for the served federated query. Proving test: `crates/eg-plan/src/federation.rs::tests::plan_applies_source_role`. | The federated plan builder calls `select_sources` with roles loaded from the schema sources. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010.4 Refusal Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Refusal.** A question that needs current state must not be answered from an `inspiration` source. Selection must return `Abstained` with reason `RoleInsufficient` naming the class and the source. This extends the reason enum of `EG-SRC-AUTH-R006.1`. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::inspiration_only_abstains_role_insufficient`. | The verdict names class and source and no answer is produced. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010.5 Evidence Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Evidence.** Add `Premise::Role{source, role, preferred_over}` beside `Premise` at `crates/eg-rdf/src/source_selection.rs:26`. The audit of `EG-SRC-AUTH-R007` must list the preferred and the displaced source with their roles. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::role_premise_names_both_sources`. | The audit entry names both roles and the rule that decided. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R010.6 Hot-path proof Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Hot-path proof.** The entry point is the served cross-source report operation. The test attaches two sources that conflict on one concept: one `live_truth`, one `historical_context`. The test passes through the wired call site in `federation.rs`. It observes that `sources_used` names the live source and lists the other as displaced. Proving test: `tests/federated/test_source_role_served.py::test_live_truth_wins_conflict`. | The report names the live source and the displaced one. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011 Untrusted taint mark on content that enters a run (rollup) Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Untrusted taint mark on content that enters a run (rollup).** EG marks content that enters a run as untrusted and stores the mark as a fact. The harness carries the mark with the content. Children `.1` to `.6` deliver it. | See each child. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011.1 Model Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Model.** Add `vg:trustMark` on content nodes in `crates/eg-core/ontology/virtual_graph-v1.ttl`, with closed values `trusted` and `untrusted`. Add `TrustMark` in `crates/eg-rdf/src/source_selection.rs` beside `SourceRole` of `EG-SRC-AUTH-R010.1`. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::trust_mark_round_trips`. | A serde round trip rejects an unknown mark. The vocabulary test finds the term. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011.2 Behavior Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Behavior.** Add `mark_for_origin(origin, role) -> TrustMark`. The default marks content from a tool result, a retrieved document or an upload as `untrusted`. Content from a `live_truth` source with an approved mapping is `trusted`. Derived content is `untrusted` when any input is `untrusted`. Each rule is a named replaceable default. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::derived_content_inherits_untrusted`. | A derived node with one untrusted input is untrusted. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011.3 Wiring Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Wiring.** `mark_for_origin` attaches in `select_sources` at `crates/eg-rdf/src/source_selection.rs:172` for source content, and in the `AddNode` arm at `src/server/handlers/graph_ops/gateway_graph.rs:62` for content written by a run. No production caller of `select_sources` exists today, and `EG-SRC-AUTH-R010.3` creates that call site. This row adds the `AddNode` call. Proving test: `src/server/handlers/graph_ops/gateway_graph.rs::tests::add_node_stamps_trust_mark`. | A node written from a tool result reads back as untrusted. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011.4 Refusal Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Refusal.** A write that lowers a mark from `untrusted` to `trusted` must be refused with `TRUST_MARK_DOWNGRADE_REFUSED` unless it carries an operator approval identifier. The refusal names the node and the missing approval. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::downgrade_without_approval_refused`. | The mark stays untrusted and the code names the node. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011.5 Evidence Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Evidence.** Each stored mark must carry `:markedBy` (the rule name) and `:markedAtGeneration`. A read of the content must return the mark with it. Proving test: `crates/eg-rdf/src/source_selection.rs::tests::mark_carries_rule_and_generation`. | The read shows the rule name and the generation. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SRC-AUTH-R011.6 Hot-path proof Definition — EG-SRC-AUTH / EG-SRC-AUTH — Source authority: the ontology says which connected source answers a conceptCanonical requirement and verification source**Hot-path proof.** The entry point is the served graph write operation, the `AddNode` wire method. The test writes a node from a tool result, reads it back, then tries a downgrade. The call passes through `src/server/handlers/graph_ops/gateway_graph.rs:62`. It observes `untrusted` on the read and the typed refusal. Proving test: `tests/federated/test_trust_mark_served.py::test_tool_result_is_untrusted_and_sticky`. | The read shows untrusted and the downgrade is refused. | requirement | EG-SRC-AUTH | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabulary | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R001 Physical and commercial supply chain terms (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Physical and commercial supply chain terms (rollup).** Supplier, item, asset and host chain. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R001.1 Shared supplier and item vocabulary (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Shared supplier and item vocabulary (rollup).** Preserve the original declarations and native entailment acceptance across R001.1.1–R001.1.2. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R001.1.1 Declare shared supplier and item terms Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Declare shared supplier and item terms.** New `crates/eg-core/ontology/supply_chain-v1.ttl` declares `kg:Supplier rdfs:subClassOf kg:Vendor`, `kg:SupplyChainItem` and `kg:suppliesItem` with supplier domain and item range. Reuse the ERPNext IRIs and do not redeclare `kg:suppliedBy`. | Native production parser loads the exact file. Tests assert class declarations, subclass triples, labels, property domain/range and absence of a `suppliedBy` redeclaration. | requirement | EG-SUPPLY-VOCAB | VERIFIED | ee2a3497659c crates/eg-rdf/tests/supply_chain_declarations.rs:21 crates/eg-rdf/tests/supply_chain_declarations.rs:53 crates/eg-rdf/tests/supply_chain_declarations.rs:71 |
| EG-SUPPLY-VOCAB-R001.1.2 Install shared terms in the core catalog and prove native entailment Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Install shared terms in the core catalog and prove native entailment.** Register `supply_chain-v1.ttl` in `GraphSchemaSources`. Preserve existing catalog and procurement semantics. Depends on R001.1.1. | Actual default catalog loads and validates the file. Native reasoner proves Supplier entails Vendor and suppliesItem domain/range types. A Vendor alone does not entail Supplier. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R001.2 Add `:realizedByAsset` and `:assetHost` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:realizedByAsset` and `:assetHost`.** `crates/eg-core/ontology/supply_chain-v1.ttl`: `kg:realizedByAsset` (item to `kg:AssetInstance`) and `kg:assetHost` (asset to `infra:Host`). Depends on `R001.1`. | Test lists both with domain and range. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R001.3 Add `:suppliesService` with the physical chain axiom Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:suppliesService` with the physical chain axiom.** `crates/eg-core/ontology/supply_chain-v1.ttl`: `kg:suppliesService` (supplier to `infra:Service`) with `infra:serviceRunsOn` (Service to Host, subproperty of infra:runsOn, mapped only from independently typed Service records) and `owl:propertyChainAxiom (suppliesItem realizedByAsset assetHost [inverseOf infra:serviceRunsOn])`. Depends on `R001.2`. | Reasoner fixture infers `suppliesService` from a four-edge service path. A container-only or pod-only runsOn path neither infers suppliesService nor retypes its endpoint as Service. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R001.4 SHACL shapes for supplier and item Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**SHACL shapes for supplier and item.** `crates/eg-core/ontology/supply_chain-v1.shapes.ttl`: `SupplierShape` and `SupplyChainItemShape`, each requiring a label. Depends on `R001.1`. | Fixtures accept valid and refuse nameless supplier and item. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002 Software supply chain terms (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Software supply chain terms (rollup).** Component, version, image, workload, vulnerability. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.1 Add `:SoftwareComponent`, `:ComponentVersion`, `:versionOf` and `:versionString` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:SoftwareComponent`, `:ComponentVersion`, `:versionOf` and `:versionString`.** `crates/eg-core/ontology/supply_chain-v1.ttl`. | Test lists the terms; a version without `versionOf` is refused by R002.6. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.2 Declare `infra:ContainerImage` a `kg:SoftwareComponent` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Declare `infra:ContainerImage` a `kg:SoftwareComponent`.** One `rdfs:subClassOf` triple in `crates/eg-core/ontology/infrastructure-v1.ttl`. Depends on `R002.1`. | Reasoner fixture: an image entails `SoftwareComponent`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.3 Add `:containsComponent` and `:publishedBy` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:containsComponent` and `:publishedBy`.** `crates/eg-core/ontology/supply_chain-v1.ttl`: `containsComponent` (image to version), `publishedBy` (component to `kg:Supplier`). Depends on `R002.1`, `R001.1`. | Test lists both with domain and range. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.4 Add `:usesImage` and `:deployedAs` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:usesImage` and `:deployedAs`.** `crates/eg-core/ontology/supply_chain-v1.ttl`: `kg:usesImage` (same IRI as `container.ttl:83`, domain `infra:Container` or `infra:Workload`) and `kg:deployedAs` (`infra:Service` to `infra:Workload`). | Test lists both; IRI equals the container-manager ontology IRI. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.5 Add `:usesComponent` with the runtime chain axiom Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:usesComponent` with the runtime chain axiom.** `crates/eg-core/ontology/supply_chain-v1.ttl`: `kg:usesComponent` with `owl:propertyChainAxiom (deployedAs usesImage containsComponent)`. Depends on `R002.3`, `R002.4`. | Reasoner fixture infers `usesComponent` from service, workload, image, version. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.6 Add `:Vulnerability` with `:cveId`, `:severity`, `:fixedInVersion`, `:affectsComponent` and `:hasVulnerability` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:Vulnerability` with `:cveId`, `:severity`, `:fixedInVersion`, `:affectsComponent` and `:hasVulnerability`.** `crates/eg-core/ontology/supply_chain-v1.ttl`; `hasVulnerability` keeps the dockerhub IRI. Leave `trm-v1.ttl` `vulnerabilityCount` unchanged. Depends on `R002.1`. | Test lists the terms; `vulnerabilityCount` still present. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R002.7 SHACL shapes for component version, vulnerability and `usesComponent` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**SHACL shapes for component version, vulnerability and `usesComponent`.** `crates/eg-core/ontology/supply_chain-v1.shapes.ttl`: `ComponentVersionShape`, `VulnerabilityShape` (severity `sh:in`), `UsesComponentShape`. Depends on `R002.5`, `R002.6`. | Fixtures refuse versionless component, bad severity, `usesComponent` from a non-service. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003 Commercial and capability terms (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Commercial and capability terms (rollup).** Customer, contract, covered service, affected service, capability link. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.1 Add `:Customer` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:Customer`.** New `crates/eg-core/ontology/commercial-v1.ttl`: `kg:Customer rdfs:subClassOf kg:Organization, kg:BusinessActor` (same IRI as `erpnext.ttl`). | Test lists the class; `Customer` entails `Organization`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.2 Add `:CustomerContract`, `:contractCustomer`, `:coversService`, `:contractStatus` and `:contractEnd` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:CustomerContract`, `:contractCustomer`, `:coversService`, `:contractStatus` and `:contractEnd`.** `crates/eg-core/ontology/commercial-v1.ttl`. Depends on `R003.1`. | Test lists the terms with domain and range. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.3 Add `:affectsService` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:affectsService`.** `crates/eg-core/ontology/commercial-v1.ttl`: `kg:affectsService` from `kg:Incident` or `kg:Change` to `infra:Service`. Reuses `kg:Change` (`archimate-v1.ttl:33`); no `:ChangeRequest` is added. | Test asserts no `ChangeRequest` class exists and `affectsService` has the declared domain. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.4 Add `:supportsCapability` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:supportsCapability`.** `crates/eg-core/ontology/commercial-v1.ttl`: `infra:Service` to `kg:BusinessCapability` (decision D1). Do not reuse `kg:supports`. | Test lists the term; a fixture using `kg:supports` is not accepted by the shape in R003.5. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.5 SHACL shapes for contract and capability link Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**SHACL shapes for contract and capability link.** `crates/eg-core/ontology/commercial-v1.shapes.ttl`: `CustomerContractShape` (one customer, at least one covered service) and `SupportsCapabilityShape`. Depends on `R003.2`, `R003.4`. | Fixtures refuse a contract with no customer, no service, and a capability link from a non-service. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.6 Record the amendment to `EG-CQ-XSRC-R008.3.1` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Record the amendment to `EG-CQ-XSRC-R008.3.1`.** Note in `specs/cross-source-competency/plan.md` Decisions that `:ChangeRequest` is replaced by `kg:Change` and `:suppliedBy` by `kg:suppliesItem`. Touches another spec's text, so it lands after both PRs. | `spec-decomposition` clean; the note names this spec. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.7 Declare party links on `kg:Organization` (no `:Party` class) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Declare party links on `kg:Organization` (no `:Party` class).** `kg:Organization` (`core-foundation-v1.ttl:660`) already serves as the super-class, so no `:Party` class is added. `crates/eg-core/ontology/commercial-v1.ttl` must declare `kg:Supplier rdfs:subClassOf kg:Organization` beside `kg:Customer` (R003.1) if `kg:Vendor` does not entail it. Depends on `R003.1`. | Test asserts both `Customer` and `Supplier` entail `Organization` and no `:Party` class exists. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.8 Add `:PurchaseOrder` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:PurchaseOrder`.** `crates/eg-core/ontology/commercial-v1.ttl`: `kg:PurchaseOrder` with `kg:suppliesItem` lines. `R005.3` names it, but `grep -rn PurchaseOrder crates/eg-core/ontology` finds no declaration. | Test lists the class; the grep finds exactly one declaration. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.9 Add `:PurchaseInvoice` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:PurchaseInvoice`.** `crates/eg-core/ontology/commercial-v1.ttl`: `kg:PurchaseInvoice` and `kg:invoiceSupplier` to `kg:Supplier`. Depends on `R003.8`. | Test lists the class and property with domain and range. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.10 Add `:Opportunity` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:Opportunity`.** `crates/eg-core/ontology/commercial-v1.ttl`: `kg:Opportunity` with `kg:opportunityCustomer` to `kg:Customer`. Depends on `R003.1`. | Test lists the class and property with domain and range. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.11 Reuse `:Person` for `:Contact` and declare the link Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Reuse `:Person` for `:Contact` and declare the link.** `:Person` exists (`core-foundation-v1.ttl:671`) and no `:Contact` term exists. `crates/eg-core/ontology/commercial-v1.ttl` must add `kg:contactOf` from `kg:Person` to `kg:Customer` and no `:Contact` class. Depends on `R003.1`. | Test lists `contactOf` with domain and range; no `Contact` class exists. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.12 Add `:lastActivityAt` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `:lastActivityAt`.** `crates/eg-core/ontology/commercial-v1.ttl`: datatype property `kg:lastActivityAt`, domain `kg:Customer`, range `xsd:dateTime`. The shapes file `commercial-v1.shapes.ttl` should refuse a non-dateTime value. Depends on `R003.1`. | Test lists the property; a fixture with a plain string is refused. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.13 Register the commercial module Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Register the commercial module.** Create or reuse `crates/eg-core/ontology/commercial-v1.ttl` with its ontology header, core imports and canonical prefix block. Register `commercial` v1 once in `crates/eg-core/src/graph/schema_sources.rs`; regenerate `catalog-v1.ttl`. Reuse the R003.1 module. Do not create `commerce-v1.ttl`. | `commercial_vocabulary::commercial_module_loads`: Load through CoreSpec; assert module and catalog registration. Reject a missing or duplicate registration. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.14 Register the commercial shapes companion Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Register the commercial shapes companion.** Create or reuse `crates/eg-core/ontology/commercial-v1.shapes.ttl`. Wire its existing CoreSpec shapes field in `crates/eg-core/src/graph/schema_sources.rs`. Preserve R003.5 shapes. Depends on EG-SUPPLY-VOCAB-R003.13. | `commercial_vocabulary::commercial_shapes_load`: Load the registered companion and existing contract/capability shapes. Reject missing registration or overwritten existing shapes. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.15 Preserve canonical commercial namespaces Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Preserve canonical commercial namespaces.** In `crates/eg-core/ontology/commercial-v1.ttl`, use `http://knuckles.team/kg#` and import shared terms. Reuse Supplier, Customer and core classes. Do not add a CommerceFile class or narrow shared suppliedBy/ownedBy domains. Depends on EG-SUPPLY-VOCAB-R003.13. | `commercial_vocabulary::commercial_shared_namespace`: Check exact IRIs; reject duplicate incompatible declarations and accidental domain narrowing. Existing supplier and customer fixtures remain valid. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.16 Declare the Opportunity date property Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Declare the Opportunity date property.** In `crates/eg-core/ontology/commercial-v1.ttl`, declare or reuse `kg:closeDate` with xsd:dateTime range. Do not narrow an existing shared property domain. Depends on EG-SUPPLY-VOCAB-R003.15. | `commercial_vocabulary::commercial_close_date_declared`: Assert canonical property IRI, datatype-property type and dateTime range. Reject an incompatible existing declaration before adding a shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R003.17 Restore the Opportunity date constraint Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Restore the Opportunity date constraint.** In `crates/eg-core/ontology/commercial-v1.shapes.ttl`, require kg:closeDate with minCount 1 and xsd:dateTime datatype on kg:Opportunity. Preserve existing shapes and shared property domains. Depends on EG-SUPPLY-VOCAB-R003.10, EG-SUPPLY-VOCAB-R003.14 and EG-SUPPLY-VOCAB-R003.16. | `commercial_vocabulary::commercial_opportunity_date_shape`: Load the registered shape. Accept a valid dated opportunity; reject missing closeDate and an invalid date datatype. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R004 Host limit terms (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Host limit terms (rollup).** Normalized reading and limit rows. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R004.1 Add `infra:HostLimit`, `:limitOf`, `:limitKind`, `:readingValue`, `:limitValue`, `:limitUnit` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add `infra:HostLimit`, `:limitOf`, `:limitKind`, `:readingValue`, `:limitValue`, `:limitUnit`.** `crates/eg-core/ontology/infrastructure-v1.ttl`. No stored `OverLimit` class. | Test lists the terms; no `OverLimit` class. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R004.2 SHACL shape for `HostLimit` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**SHACL shape for `HostLimit`.** `crates/eg-core/ontology/infrastructure-v1.shapes.ttl` (new if absent): one `limitOf`, one `limitKind` in `{temperature, disk, memory, cpu}`, one reading, one limit. Depends on `R004.1`. | Fixtures refuse a missing limit and an unknown kind. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R004.3 Declared-threshold fixture for capacity limits Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Declared-threshold fixture for capacity limits.** `crates/eg-core/tests/fixtures/host_limit_thresholds.ttl`: declared limits for disk, memory and cpu (decision D6). Depends on `R004.1`. | Fixture passes `HostLimitShape`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005 Virtual mappings: procurement, commercial, change and capability sources (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Virtual mappings: procurement, commercial, change and capability sources (rollup).** One `vg:VirtualMapping` fixture per source concept. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.1 Mapping fixture: erpnext `Supplier` to `kg:Supplier` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: erpnext `Supplier` to `kg:Supplier`.** `crates/eg-core/tests/fixtures/vm_erpnext_supplier.ttl` using access contract `supplierAccess`; key `name`, label field `supplier_name`. | Fixture passes `vg:VirtualMapping` shape; maps the class. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.2 Mapping fixture: erpnext `Item` and `Purchase Order` to `kg:SupplyChainItem` and `kg:suppliesItem` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: erpnext `Item` and `Purchase Order` to `kg:SupplyChainItem` and `kg:suppliesItem`.** `crates/eg-core/tests/fixtures/vm_erpnext_item_po.ttl`; the PO line items need `get_document` per order (decision D2). | Fixture passes the shape; the lines field is declared as a child fetch. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.3 Resolve erpnext manifest classes (cross-repo: agent-packages `erpnext-agent`) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Resolve erpnext manifest classes (cross-repo: agent-packages `erpnext-agent`).** In `erpnext-agent/connector_manifest.yml` set `Supplier`, `Item`, `PurchaseOrder`, `Customer` `ontology_class` to the eg-core classes via the generator, not by hand (manifest is machine-generated). | Connector manifest gate passes; no `UNRESOLVED` for the four. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.4 Mapping fixture: leanix `Provider` to `kg:Supplier` (rank 2) and `supports` to `kg:supportsCapability` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: leanix `Provider` to `kg:Supplier` (rank 2) and `supports` to `kg:supportsCapability`.** `crates/eg-core/tests/fixtures/vm_leanix.ttl` using `leanix_source_factsheets`. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.5 Mapping fixture: servicenow `Incident`, `Change` and CI relation to `kg:affectsService` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: servicenow `Incident`, `Change` and CI relation to `kg:affectsService`.** `crates/eg-core/tests/fixtures/vm_servicenow.ttl` using `get_change_request_ci` and `get_cmdb_instances`. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.6 Mapping fixture: salesforce `Account` to `kg:Customer` and `Contract` to `kg:CustomerContract` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: salesforce `Account` to `kg:Customer` and `Contract` to `kg:CustomerContract`.** `crates/eg-core/tests/fixtures/vm_salesforce.ttl` via `salesforce_soql`; `Contract` is read by SOQL, not by a declared connector class. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.7 Add the Salesforce `Contract` class and access contract (cross-repo: agent-packages `salesforce-agent`) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add the Salesforce `Contract` class and access contract (cross-repo: agent-packages `salesforce-agent`).** `salesforce_agent/ontology/` declares `Contract` and an SOQL access contract; the connector ontology has none today. | Connector ontology certification passes. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.8 Mapping fixture: twenty `Company` to `kg:Customer` (rank 2) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: twenty `Company` to `kg:Customer` (rank 2).** `crates/eg-core/tests/fixtures/vm_twenty.ttl`. Twenty has no contract object, so no contract mapping is declared (decision D4). | Fixture passes the shape; a contract query against twenty only yields a typed abstention. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R005.9 Record the `coversService` source (BLOCKED, owner: operator plus salesforce-agent) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Record the `coversService` source (BLOCKED, owner: operator plus salesforce-agent).** Name the custom field or curated link that carries contract to service. Until then the row is a BLOCKED register entry `tasks.md` note, and the report abstains `Uncovered`. | The blocked-register test (R008.3) lists `coversService` with reason. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006 Virtual mappings: software, runtime and host sources (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Virtual mappings: software, runtime and host sources (rollup).** Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.1 Add the container-manager access contract (cross-repo: agent-packages `container-manager-mcp`) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add the container-manager access contract (cross-repo: agent-packages `container-manager-mcp`).** Add `ac:AccessContract` rows for pods, containers and images under `container_manager_mcp/ontology/` using `cm_k8s_workloads list_pods`, container `list_containers`, `cm_image_operations list_images`. None exists today. | Connector ontology certification passes. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.2 Add the uptime-kuma access contract (cross-repo: agent-packages `uptime-kuma-agent`) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Add the uptime-kuma access contract (cross-repo: agent-packages `uptime-kuma-agent`).** Access contract for `UptimeMonitor` (`uptime_kuma_monitors get_monitors`) and `HeartbeatStat` (`uptime_kuma_status get_heartbeats`). | Connector ontology certification passes. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.3 Mapping fixture: container-manager workload and image to `kg:deployedAs` and `kg:usesImage` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: container-manager workload and image to `kg:deployedAs` and `kg:usesImage`.** `crates/eg-core/tests/fixtures/vm_container_manager.ttl`. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.4 Mapping fixture: uptime monitor to service health Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: uptime monitor to service health.** `crates/eg-core/tests/fixtures/vm_uptime.ttl`; monitor resolves to `infra:Service` by the URL host key. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.5 Mapping fixture: dockerhub image, SBOM and Scout CVEs to `containsComponent` and `Vulnerability` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: dockerhub image, SBOM and Scout CVEs to `containsComponent` and `Vulnerability`.** `crates/eg-core/tests/fixtures/vm_dockerhub.ttl` using `hub_scout` actions `sbom`, `cves`. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.6 Mapping fixture: gitlab `dependencies` and github Dependabot alerts (rank 2) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: gitlab `dependencies` and github Dependabot alerts (rank 2).** `crates/eg-core/tests/fixtures/vm_gitlab_github.ttl` using `gitlab_vulnerabilities` and `github_dependabot`. | Fixture passes the shape. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R006.7 Mapping fixture: fan-manager and systems-manager to `infra:HostLimit` Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Mapping fixture: fan-manager and systems-manager to `infra:HostLimit`.** `crates/eg-core/tests/fixtures/vm_host_limits.ttl`: `TemperatureReading.celsius` with `FanControlPolicy.maxTemperature`; `capacityBytes` and `freeBytes` with the declared thresholds of `R004.3`. | Fixture passes the shape; a `HostLimit` row has both values. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R007 Entity resolution blocking keys (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Entity resolution blocking keys (rollup).** Cites `EG-UNIFIED-DATA-PLANE-R030`; adds only keys. Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R007.1 Blocking-key fixture for supplier, service, host, image and customer Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Blocking-key fixture for supplier, service, host, image and customer.** `crates/eg-core/tests/fixtures/supply_chain_blocking_keys.ttl` holds the table in plan.md. | Fixture parses; each concept lists at least two keys. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R007.2 Test: a digest key is exact; a name-only key is a proposal Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Test: a digest key is exact; a name-only key is a proposal.** `crates/eg-core/tests/` test over the fixture and `EntityLinkProposal::assert_same_as` (`R030.1`). Depends on `R007.1`. | Name-only match refused until approved; digest match still needs approval. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R008 Impact traversal and acceptance (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Impact traversal and acceptance (rollup).** Rollup: LANDED only once every child is. | Every child is LANDED. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R008.1 Class-only impact query fixture Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Class-only impact query fixture.** `crates/eg-core/tests/fixtures/supply_chain_impact.rq` from plan.md: parses and uses only classes of this vocabulary and `infra:Service`. | Query parses; no connector name appears. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R008.2 Recorded-response fixture: one row per source concept Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Recorded-response fixture: one row per source concept.** `crates/eg-core/tests/fixtures/supply_chain_recorded/` with one recorded response per connector operation in plan.md D4. | Fixture set covers every row of the D4 table that is not marked not available. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R008.3 Blocked-register test Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Blocked-register test.** The test reads the D4 table. It asserts each concept has an authority row or a typed abstention reason (twenty contracts, `coversService`). | No concept is silently uncovered. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009 Ecosystem packages carry transitive dependency and risk (rollup) Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Ecosystem packages carry transitive dependency and risk (rollup).** Ecosystem packages are ontology classes with transitive dependency. A finding in one package reaches every dependent package. Children .1-.6. | Rollup closes when children .1-.6 pass. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009.1 Model Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Model.** Add `:EcosystemPackage` and the property `:affectsPackage` to `crates/eg-core/ontology/supply_chain-v1.ttl`. Package dependency reuses `:dependsOn`, declared transitive in `crates/eg-core/ontology/software-v1.ttl:53`. Owner: epistemic-graph. | `crates/eg-core/tests/ecosystem_dependency.rs::package_class_and_dependency_declared`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009.2 Behavior Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Behavior.** Add `propagate_package_risk(graph, package, finding) -> Vec<PackageImpact>` in `crates/eg-core/src/ecosystem.rs`. Each rule is a named, replaceable default: follow `:dependsOn` in reverse to a depth of 8 and keep the worst severity per dependent. Owner: epistemic-graph. | `crates/eg-core/tests/ecosystem_dependency.rs::finding_reaches_transitive_dependents`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009.3 Wiring Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Wiring.** Call `propagate_package_risk` from `handle_impact` at `src/server/handlers/mining/impact.rs:264` when the request names a package. The server dispatches that handler in production. The package branch creates the call site. Owner: epistemic-graph. | `crates/eg-core/tests/ecosystem_dependency.rs::served_impact_lists_dependents`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009.4 Refusal Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Refusal.** `propagate_package_risk` must return the typed refusal `PackageRefusal::UnknownPackage` for a package absent from the graph. It must not return an empty impact list. Owner: epistemic-graph. | `crates/eg-core/tests/ecosystem_dependency.rs::unknown_package_is_refused`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009.5 Evidence Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Evidence.** Each `PackageImpact` must carry the dependency path from the changed package to the dependent. A reader replays why a dependent is affected. Owner: epistemic-graph. | `crates/eg-core/tests/ecosystem_dependency.rs::impact_carries_dependency_path`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-SUPPLY-VOCAB-R009.6 Hot-path proof Definition — EG-SUPPLY-VOCAB / EG-SUPPLY-VOCAB — Supply-chain and service-impact vocabularyCanonical requirement and verification source**Hot-path proof.** Entry point: the served impact operation naming one package of a fixture dependency chain. The test passes through `impact.rs:264` and observes every transitive dependent with its path and severity. Owner: epistemic-graph. | `crates/eg-core/tests/ecosystem_dependency.rs::served_impact_over_dependency_chain`. | requirement | EG-SUPPLY-VOCAB | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS EG-TYPED-PACKS — Typed packs and catalog authority | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001 Connector pack contract types and golden digest vectors Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Connector pack contract types and golden digest vectors.** Rollup: every child below is required; the original acceptance remains mandatory. EG defines typed ConnectorPackIndex, entry, section, annotation, ConnectorPackOp, and AgentComponent.Content operations. EG computes framed SHA-256 digests from golden vectors in `contract/fixtures/connector_pack_digest_vectors.json`. Generated clients share this wire contract. | Contract and unit tests compare fixture digest output with published golden vectors byte-for-byte. | requirement | EG-TYPED-PACKS | SPECIFIED | b43f33569dd4 d116b7dbfd27 tests/test_connector_pack_client.py:138 |
| EG-TYPED-PACKS-R001.1 Original pack index and entry types Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original pack index and entry types.** Model: The original R001 contract remains mandatory. Behavior: Qualify this original obligation independently of prompt support. Wiring: Reuse `crates/eg-types/src/connector_pack/index.rs`. Refusal: No prompt result substitutes for this proof. Evidence: Round-trip every original index and entry field. | Proposed test: `tests/test_connector_pack_contract.py::test_pack_index_entry_contract`. Round-trip every original index and entry field. Unknown kinds and malformed index fields refuse. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.2 Original section and annotation types Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original section and annotation types.** Model: The original R001 contract remains mandatory. Behavior: Qualify this original obligation independently of prompt support. Wiring: Reuse `crates/eg-types/src/connector_pack/annotations.rs`. Refusal: No prompt result substitutes for this proof. Evidence: Round-trip every section and annotation field without changing existing semantics. | Proposed test: `tests/test_connector_pack_contract.py::test_pack_section_annotation_contract`. Round-trip every section and annotation field without changing existing semantics. Invalid section bounds and malformed typed annotations refuse. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.3 Original pack and content operations Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original pack and content operations.** Model: The original R001 contract remains mandatory. Behavior: Qualify this original obligation independently of prompt support. Wiring: Reuse `crates/eg-types/src/connector_pack/ops.rs`. Refusal: No prompt result substitutes for this proof. Evidence: Preserve ConnectorPackOp and AgentComponent.Content operation and result shapes. | Proposed test: `tests/test_connector_pack_contract.py::test_pack_content_operation_contract`. Preserve ConnectorPackOp and AgentComponent.Content operation and result shapes. Missing operations and incompatible result shapes fail qualification. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.4 Original framed digest vectors Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original framed digest vectors.** Model: The original R001 contract remains mandatory. Behavior: Qualify this original obligation independently of prompt support. Wiring: Reuse `crates/eg-types/src/connector_pack/digest.rs`. Refusal: No prompt result substitutes for this proof. Evidence: Every published connector_pack_digest_vectors.json sample matches byte-for-byte. | Proposed test: `tests/test_connector_pack_contract.py::test_original_framed_digest_vectors`. Every published connector_pack_digest_vectors.json sample matches byte-for-byte. Changing a framed input or expected digest fails. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.5 All generated clients share the pack contract Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**All generated clients share the pack contract.** Model: The original R001 contract remains mandatory. Behavior: Qualify this original obligation independently of prompt support. Wiring: Reuse `crates/eg-capabilities/src/bin/gen_contract.rs`. Refusal: No prompt result substitutes for this proof. Evidence: The complete generated-client inventory shares the original wire shapes and golden bytes. | Proposed test: `tests/test_connector_pack_contract.py::test_all_clients_share_pack_contract`. The complete generated-client inventory shares the original wire shapes and golden bytes. A stale client, omitted client or changed field fails. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.6 Versioned prompt graph identity Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Versioned prompt graph identity.** Model: A SystemPrompt component pins tenant, component ID, entry revision, schema revision, body digest and provenance. Behavior: Represent the blueprint as a native graph entity with links to its schema and engine-owned body. Wiring: Extend `crates/eg-types/src/agent_component.rs` and its existing component types. Refusal: Unsupported versions, invalid IDs and missing required pins refuse. Evidence: A typed object round-trips all identity and revision fields. | Proposed test: `crates/eg-types/src/agent_component.rs::tests::prompt_blueprint_identity`. A typed object round-trips all identity and revision fields. Changing a schema or body pin cannot preserve the old definition identity. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.7 Prompt payload validation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Prompt payload validation.** Model: The bounded blueprint profile in plan.md declares core fields and preserved extension values. Behavior: Validate the full object against its exact supported schema before publication or rendering. Wiring: Extend `crates/eg-types/src/agent_component/facts.rs` and reuse the bounded JSON admission authority. Refusal: Malformed fields, duplicate keys, unsupported schema rules and exceeded limits refuse. Evidence: Nested valid objects retain every admitted field and extension value. | Proposed test: `crates/eg-types/src/agent_component/facts.rs::tests::prompt_blueprint_schema_refusals`. Nested valid objects retain every admitted field and extension value. Missing task, wrong field types, nonfinite numbers and oversized objects refuse. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.8 Deterministic runtime rendering Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Deterministic runtime rendering.** Model: The input binds one validated prompt revision and one validated variable object. Behavior: Resolve only declared variables and serialize the resulting typed object using the versioned rendering policy. Wiring: Intended source: `crates/eg-compute/src/assemble/prompt.rs`; reuse the existing compute crate. Refusal: Missing variables, unknown variables, unresolved pins and exceeded output bounds refuse. Evidence: Repeated identical inputs produce the same bytes and render digest. | Proposed test: `crates/eg-compute/src/assemble/prompt.rs::tests::prompt_render_vectors`. Repeated identical inputs produce the same bytes and render digest. A changed variable changes the result; invalid input produces no render result. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.9 Generated prompt operation contract Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Generated prompt operation contract.** Model: Typed prompt admission, render and blueprint envelopes extend the existing component operation family. Behavior: Generate descriptors, method/result shapes and client projections from Rust authority. Wiring: Use `crates/eg-types/src/agent_component.rs` and `crates/eg-capabilities/src/bin/gen_contract.rs`. Refusal: Unsupported operation/schema versions and stale generated projections fail. Evidence: Generated clients encode and decode every declared request, result and typed refusal. | Proposed test: `tests/test_prompt_blueprint_contract.py::test_generated_prompt_contract`. Generated clients encode and decode every declared request, result and typed refusal. Missing render provenance or an untyped fallback fails. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002 Engine-owned body storage with guarded refcounts and reconciliation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Engine-owned body storage with guarded refcounts and reconciliation.** Rollup: every child below is required; the original acceptance remains mandatory. EG stores engine-owned component bodies in content-addressed storage. SHA-256 keys identify each body. Guarded holder-row refcounts track liveness. AgentComponent.Content serves verified bytes. A reconciler reclaims unheld bodies after the grace window. | Integration tests cover holder counts for unchanged, revised, and withdrawn components. A fault test covers orphan reclamation after the grace window. | requirement | EG-TYPED-PACKS | SPECIFIED | 022736782512 023b482a38d3 dcc5d53c04f9 f6bd64b35e00 src/server/handlers/admin/connector_pack/tests/admin.rs:241 |
| EG-TYPED-PACKS-R002.1 Original engine body staging Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original engine body staging.** Model: Original engine bodies and holder rows remain the authority. Behavior: Qualify this original storage transition and its refusal independently. Wiring: Reuse `src/server/blob/engine_bodies.rs`. Refusal: No prompt-only test closes this original obligation. Evidence: Staged bytes use their verified SHA-256 address. | Proposed test: `tests/test_connector_pack_storage.py::test_body_staging`. Staged bytes use their verified SHA-256 address. A digest mismatch refuses; staging alone exposes no component. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.2 Original unchanged holder transition Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original unchanged holder transition.** Model: Original engine bodies and holder rows remain the authority. Behavior: Qualify this original storage transition and its refusal independently. Wiring: Reuse `src/server/persistence/connector_pack/`. Refusal: No prompt-only test closes this original obligation. Evidence: An unchanged import keeps exact holder/refcount values. | Proposed test: `tests/test_connector_pack_storage.py::test_unchanged_holder`. An unchanged import keeps exact holder/refcount values. Repeated identical import cannot increment or decrement a holder. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.3 Original revised holder transition Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original revised holder transition.** Model: Original engine bodies and holder rows remain the authority. Behavior: Qualify this original storage transition and its refusal independently. Wiring: Reuse `src/server/persistence/connector_pack/`. Refusal: No prompt-only test closes this original obligation. Evidence: A revised component binds its new body and preserves historical revision holders. | Proposed test: `tests/test_connector_pack_storage.py::test_revised_holder`. A revised component binds its new body and preserves historical revision holders. A changed revision cannot orphan a body held by history. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.4 Original withdrawn holder transition Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original withdrawn holder transition.** Model: Original engine bodies and holder rows remain the authority. Behavior: Qualify this original storage transition and its refusal independently. Wiring: Reuse `src/server/persistence/connector_pack/`. Refusal: No prompt-only test closes this original obligation. Evidence: A withdrawn component retains body access through a valid historical pin. | Proposed test: `tests/test_connector_pack_storage.py::test_withdrawn_holder`. A withdrawn component retains body access through a valid historical pin. Withdrawal cannot reclaim a held historical body. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.5 Original orphan grace and fault recovery Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original orphan grace and fault recovery.** Model: Original engine bodies and holder rows remain the authority. Behavior: Qualify this original storage transition and its refusal independently. Wiring: Reuse `src/server/handlers/admin/connector_pack/reconcile.rs:112`. Refusal: No prompt-only test closes this original obligation. Evidence: A fault before owner commit leaves an orphan reclaimed only after its grace window. | Proposed test: `tests/test_connector_pack_storage.py::test_orphan_grace_fault`. A fault before owner commit leaves an orphan reclaimed only after its grace window. An unexpired orphan or held body survives reconciliation and restart. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.6 Original verified body serving Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original verified body serving.** Model: Original engine bodies and holder rows remain the authority. Behavior: Qualify this original storage transition and its refusal independently. Wiring: Reuse `src/server/handlers/admin/component_content.rs:55`. Refusal: No prompt-only test closes this original obligation. Evidence: AgentComponent.Content returns the exact body of its pinned component revision. | Proposed test: `tests/test_connector_pack_storage.py::test_verified_body_read`. AgentComponent.Content returns the exact body of its pinned component revision. Corrupt bytes and denied tenants refuse without leaking body data. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.7 Native prompt body persistence Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Native prompt body persistence.** Model: A native prompt publication binds a validated body, schema and expected component head. Behavior: Stage the body, then commit revision, head, holder and receipt through the existing admitted owner write. Wiring: Extend `src/server/persistence/agent_component/write.rs:39`; reuse `src/server/blob/engine_bodies.rs`. Refusal: Invalid schema, denied scope or stale head leaves committed owner state unchanged. Evidence: A successful write has one revision and live holder with its exact body digest. | Proposed test: `tests/test_prompt_blueprints_served.py::test_prompt_owner_commit`. A successful write has one revision and live holder with its exact body digest. A fault before owner commit leaves only an unreferenced body subject to the existing grace rule. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.8 Prompt graph projection Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Prompt graph projection.** Model: A graph entity names the exact committed prompt identity, schema pin and body pin. Behavior: Project through existing owner events and graph admission; expose readiness before graph consumers use the revision. Wiring: Reuse `src/server/connector_pack_projection.rs` machinery with explicit native-component support as a prerequisite. Refusal: Stale events, denied graph writes and incomplete projection cannot expose a newer ready revision. Evidence: Independent graph queries read the exact prompt revision and dependency links. | Proposed test: `tests/test_prompt_blueprints_served.py::test_prompt_graph_projection`. Independent graph queries read the exact prompt revision and dependency links. Replaying an old event cannot regress the visible revision. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.9 Served prompt rendering Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Served prompt rendering.** Model: The authenticated request pins tenant, prompt revision, schema and variable input. Behavior: Read verified body bytes, validate, render and return a provenance-bound result through the generated public operation. Wiring: Extend `src/server/handlers/admin/agent.rs:142`; reuse `src/server/handlers/admin/component_content.rs:55` and R001.8. Refusal: Invalid schema, changed pins, denied tenants and unavailable producers return typed refusals. Evidence: A real generated-client request reaches the renderer and returns the pinned revision and expected bytes. | Proposed test: `tests/test_prompt_blueprints_served.py::test_prompt_render_route`. A real generated-client request reaches the renderer and returns the pinned revision and expected bytes. Invalid requests leave graph, body holders, head and render-result publication unchanged. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.10 Refusal before model dispatch Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Refusal before model dispatch.** Model: A render receipt binds prompt, schema, variables, bytes, revisions and request scope. Behavior: The production consumer must validate that receipt before any model transport call. Wiring: R002.9 supplies the engine result; the named AU dispatch consumer is an explicit prerequisite recorded in plan.md. The source-effect contracts referenced by R094.7 do not satisfy that separate dispatch prerequisite. Refusal: Invalid, stale, substituted or wrong-scope prompt objects cause zero model dispatches. Evidence: A valid served journey renders the pinned version and causes one observed model request. | Proposed test: `tests/test_prompt_blueprints_served.py::test_invalid_prompt_prevents_dispatch`. A valid served journey renders the pinned version and causes one observed model request. Each invalid case yields a typed refusal and zero requests at the real model transport boundary. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R002.11 Durable prompt restart proof Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Durable prompt restart proof.** Model: The fixture pins graph, component, body, schema and source identities. Behavior: Publish through the authenticated public operation, restart the server, then read through a second client. Wiring: Exercise `src/server/handlers/admin/agent.rs:142`, `src/server/persistence/agent_component/write.rs:39` and the existing content route. Refusal: A denied second tenant receives neither prompt metadata nor body bytes. Evidence: Current and historical revisions, graph links and verified body bytes survive restart. | Proposed test: `tests/test_prompt_blueprints_served.py::test_prompt_restart_readback`. Current and historical revisions, graph links and verified body bytes survive restart. A refused stale update leaves the previous durable head intact. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R003 Import boundary enforces archive integrity, importer binding and G1-G21 Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Import boundary enforces archive integrity, importer binding and G1-G21.** EG's ConnectorPack.Import handler verifies archive length and digest. It checks the submitted request against the bound importer. It applies validation rules G1 through G21 from architecture.md. It keeps ConnectorPack and the agent-layer write methods LocalOnly until a separately specified clustered writer exists. | Integration and negative tests exercise the Import boundary across each G1-G21 refusal path and an importer-binding mismatch. They confirm zero catalog mutation on any rejection. | requirement | EG-TYPED-PACKS | VERIFIED | 022736782512 209d6806510e db863f1e2afd f6bd64b35e00 src/server/handlers/admin/connector_pack/tests/admin.rs:440 |
| EG-TYPED-PACKS-R004 Python ConnectorPackClient with a deterministic import key Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Python ConnectorPackClient with a deterministic import key.** The epistemic_graph Python package provides ConnectorPackClient. The client computes deterministic import idempotency keys independent of request IDs. Retries after lost replies reuse the exact key and avoid duplicate imports. | Unit tests confirm transport-loss retries reuse the same generated key. They confirm the client uses generated wire types for status, content, and import results. | requirement | EG-TYPED-PACKS | VERIFIED | b43f33569dd4 d116b7dbfd27 tests/test_connector_pack_client.py:258 tests/test_connector_pack_client.py:368 |
| EG-TYPED-PACKS-R005 Acceptance suite for pack mutation, crash, authorization and tenancy Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Acceptance suite for pack mutation, crash, authorization and tenancy.** EG's test suite includes a planted-invalid-input mutation test for each validation rule, crash and retry tests over the Import atomic commit path, content-model, authorization, tenancy and clustered-mode tests, and at least one end-to-end connector fixture exercising import through to a served read. | The mapped test suite in test-spec.md passes, combining mutation, crash/retry, tenancy and end-to-end fixture coverage. | requirement | EG-TYPED-PACKS | VERIFIED | a1bb9fb9503e f6bd64b35e00 src/server/handlers/admin/connector_pack/tests/admin.rs:542 |
| EG-TYPED-PACKS-R006 Outbox-driven pack projection with a visibility readiness gate Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Outbox-driven pack projection with a visibility readiness gate.** An Agent Library outbox consumer projects the current committed pack head into its reserved graph. It attaches the schema source. It marks records visible through compare-and-swap. Typed catalog and component reads exclude records that fail this gate. Admins can invoke Reproject for failed or stale projections. Reproject preserves later work. | Integration tests cover projection commit order and the visibility compare-and-swap. They test read filtering and forced Reproject after a simulated failure. | requirement | EG-TYPED-PACKS | VERIFIED | a1bb9fb9503e f6bd64b35e00 src/server/handlers/admin/connector_pack/tests/outbox.rs:181 |
| EG-TYPED-PACKS-R007 Admin-controlled pack importer binding and entry retirement Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Admin-controlled pack importer binding and entry retirement.** EG's Bind, Unbind, and Retire operations require admin:connector-pack. Bind and Unbind change the authorized importer. Retire permanently retires a pack entry. Later imports that reintroduce retired entries refuse with stable RETIRED_ENTRY_RETURNED. | Authorization and negative tests confirm Bind, Unbind, and Retire require admin:connector-pack. Reintroducing a retired entry returns RETIRED_ENTRY_RETURNED without changing the head. | requirement | EG-TYPED-PACKS | VERIFIED | 022736782512 209d6806510e a1bb9fb9503e f6bd64b35e00 src/server/handlers/admin/connector_pack/tests/admin.rs:321 |
| EG-TYPED-PACKS-R008 Blob content-addressed store garbage-collection hardening Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Blob content-addressed store garbage-collection hardening.** EG's blob store reseeds cursor identifiers safely, computes an accurate live set during garbage collection, expires abandoned uploads, enforces a grace period before reclaiming unreferenced bodies, and applies holder-row refcount updates idempotently so repeated writes never over- or under-count references. | The blob store test suite covers grace-period reclamation, garbage-collection live-set correctness, cursor reseeding and idempotent holder-refcount updates. | requirement | EG-TYPED-PACKS | VERIFIED | b43f33569dd4 f6bd64b35e00 src/server/blob/store/tests.rs:344 |
| EG-TYPED-PACKS-R009 Projection readiness gates reader visibility Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Projection readiness gates reader visibility.** Readers see a pack record only after graph projection completes and visibility is marked. A committed catalog write alone does not grant visibility. | Integration tests confirm committed-but-unprojected records stay out of catalog and component reads until visibility is marked. | requirement | EG-TYPED-PACKS | VERIFIED | a7fb03fc503f db863f1e2afd src/server/handlers/admin/connector_pack/tests/outbox.rs:127 |
| EG-TYPED-PACKS-R010 Import is a single atomic operation, not a staged protocol Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Import is a single atomic operation, not a staged protocol.** ConnectorPack import validates, stages and commits a pack through one Import operation. EG does not expose separate Prepare, Commit or Abort steps for pack admission. | Contract tests confirm ConnectorPackOp exposes only the single Import method for pack admission, with no prepare, commit or abort variants. | requirement | EG-TYPED-PACKS | VERIFIED | a7fb03fc503f bcbbe51307d8 crates/eg-types/src/connector_pack/ops.rs:249 |
| EG-TYPED-PACKS-R011 Incompatible Agent Library storage is refused, not upgraded Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Incompatible Agent Library storage is refused, not upgraded.** When EG finds an existing Agent Library store in a format it does not recognize, it refuses to open it with a named AGENT_LIBRARY_FORMAT_UPGRADE_REQUIRED error instead of reading or migrating it, and no version performs an automatic offline upgrade of that layout. | A negative test opens an incompatible store and asserts the exact AGENT_LIBRARY_FORMAT_UPGRADE_REQUIRED refusal with no partial read or write. | requirement | EG-TYPED-PACKS | VERIFIED | 9bc78efe95b3 a7fb03fc503f src/server/persistence/store_upgrade/tests.rs:424 |
| EG-TYPED-PACKS-R012 Pack and agent-layer write methods are local-only in clustered mode Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Pack and agent-layer write methods are local-only in clustered mode.** ConnectorPack and its four agent-layer write methods are LocalOnly. They refuse clustered execution until a clustered writer is separately specified. A method-inventory test enumerates this exact set. | An inventory test asserts the exact LocalOnly method set. A clustered-mode integration test confirms every listed method refuses. | requirement | EG-TYPED-PACKS | VERIFIED | 321e6ae98be4 d116b7dbfd27 src/server/mutation.rs:2394 |
| EG-TYPED-PACKS-R013 Capability IRI validation distinguishes native errors from claims Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Capability IRI validation distinguishes native errors from claims.** EG rejects capability or modality IRIs that misuse the native eg: namespace. It accepts well-formed foreign absolute IRIs as recorded claims, not verified native facts. Govern native vocabulary extensions. | Validation tests cover mistyped native IRI refusal, foreign IRI acceptance as a claim, and malformed IRI refusal. | requirement | EG-TYPED-PACKS | VERIFIED | a7fb03fc503f db863f1e2afd src/server/handlers/admin/connector_pack/import/annotations.rs:177 |
| EG-TYPED-PACKS-R014 Absent entries become reversible Withdrawn, not retired Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Absent entries become reversible Withdrawn, not retired.** When a reimported pack omits a previously published entry, EG sets that component's lifecycle to Withdrawn. A later import of the same entry restores it. EG does not retire it permanently. | An integration test removes then restores an entry across two imports. It asserts the entry becomes Withdrawn and later republishes under the same ID. | requirement | EG-TYPED-PACKS | VERIFIED | a7fb03fc503f ac5638477288 src/server/handlers/admin/connector_pack/tests/content_model.rs:548 |
| EG-TYPED-PACKS-R015 Importer authority is admin-bound, with environment value as bootstrap only Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Importer authority is admin-bound, with environment value as bootstrap only.** Pack-import source authorization uses an admin-bound importer identity. An environment-configured importer applies only as the initial bootstrap default, before an administrator binds an importer. | A test confirms the environment importer applies only before admin Bind. A later binding supersedes that default. | requirement | EG-TYPED-PACKS | VERIFIED | a7fb03fc503f db863f1e2afd src/server/handlers/admin/connector_pack/tests/admin.rs:47 |
| EG-TYPED-PACKS-R016 Server pin follows declared contract, not package version Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Server pin follows declared contract, not package version.** The server-entry pin binds declared contract version, server name, and instructions. Package version is provenance only. It never determines pin equality or compatibility. | A unit test confirms package-only version changes preserve pin equality. Changing contract version, name, or instructions produces a new pin. | requirement | EG-TYPED-PACKS | VERIFIED | 8aca452dd012 daa948722eca crates/eg-types/src/agent_component.rs:1298 |
| EG-TYPED-PACKS-R017 Release scope excludes an offline Agent Library upgrade path Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Release scope excludes an offline Agent Library upgrade path.** This capability covers the full design in this specification. Offline upgrade of an incompatible Agent Library store remains out of scope. | Review success criteria and test-spec mapping to confirm no offline-upgrade test is required for acceptance. | requirement | EG-TYPED-PACKS | LANDED | 34b9f502483d |
| EG-TYPED-PACKS-R018 Body reads use AgentComponent.Content, not a pack-specific method Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Body reads use AgentComponent.Content, not a pack-specific method.** Verified component body bytes are read exclusively through the existing AgentComponent.Content method. EG does not expose a separate ConnectorPack-specific body-read operation. | A contract inventory test confirms ConnectorPackOp has no body-read variant and that AgentComponent.Content serves pack-sourced body bytes. | requirement | EG-TYPED-PACKS | LANDED | 71533e899d52 |
| EG-TYPED-PACKS-R019 Only SKILL.md is imported as skill content Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Only SKILL.md is imported as skill content.** Import admits only SKILL.md as skill content. Supporting files require a separate bounded contract and remain unimported. | A validation test confirms supporting-file references do not fail import. It confirms those files are not stored as body content. | requirement | EG-TYPED-PACKS | LANDED | a1bb9fb9503e |
| EG-TYPED-PACKS-R020 A tenant-profile administrative capability defect is out of EG scope Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**A tenant-profile administrative capability defect is out of EG scope.** Tenant-profile defects granting administrative graph capability belong to the tenant-profile dependency. EG pack/catalog code makes no corresponding change. | Review confirms pack-write paths do not depend on this fix. The owning dependency tests prove its correctness. | requirement | EG-TYPED-PACKS | VERIFIED | 08a2b1958cc3 tests/test_connector_pack_planted.py:216 |
| EG-TYPED-PACKS-R021 Cross-cutting import-safety defects are release-gate obligations Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Cross-cutting import-safety defects are release-gate obligations.** Cross-system pack-import safety defects must pass this release gate. The tenant-profile administrative capability fix is the sole exception; its repository owns its gate. | The test-spec release mapping includes a regression test for each cross-cutting import-safety defect before acceptance. | requirement | EG-TYPED-PACKS | LANDED | 96a4c42888e7 |
| EG-TYPED-PACKS-R022 Pack index well-formedness validation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Pack index well-formedness validation.** EG validates that a ConnectorPackIndex declares a supported schema version and a valid connector name, lists entries sorted by unique URI, uses only the closed set of entry kinds, matches each entry's declared URI scheme, and contains exactly one server entry, refusing otherwise with MALFORMED_INDEX or UNKNOWN_ENTRY_KIND. | Negative tests plant each malformed-index condition and assert the matching MALFORMED_INDEX or UNKNOWN_ENTRY_KIND refusal with zero catalog mutation. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:217 |
| EG-TYPED-PACKS-R023 Pack size bounds across index, entries, archive and body Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Pack size bounds across index, entries, archive and body.** EG enforces size bounds on every pack component: index at most 1 MiB, at most 1024 entries, at most 64 references or list items, archive at most 16 MiB, body at most 2 MiB, schema at most 1 MiB, import record at most 4 MiB, and batch size within the kernel budget, refusing any violation with PACK_TOO_LARGE. | A mutation test plants an oversized value for each bound and asserts the PACK_TOO_LARGE refusal. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:218 |
| EG-TYPED-PACKS-R024 Archive presence, length and digest integrity Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Archive presence, length and digest integrity.** EG requires the pack archive to be present and checks its declared length and SHA-256 against the received bytes, refusing with ARCHIVE_MISSING when absent or ARCHIVE_DIGEST_MISMATCH when the hash does not match. | Negative tests submit a missing archive and a tampered archive and assert the respective ARCHIVE_MISSING and ARCHIVE_DIGEST_MISMATCH refusals. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:219 |
| EG-TYPED-PACKS-R025 Archive section layout and offset correctness Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Archive section layout and offset correctness.** EG validates that every archive section's offset and length use checked arithmetic, cover the uncompressed archive exactly once with no overlap, and that the archive itself is stored uncompressed, refusing a malformed layout with MALFORMED_SECTIONS. | A mutation test plants overlapping, out-of-bounds and compressed-archive section layouts and asserts the MALFORMED_SECTIONS refusal. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:220 |
| EG-TYPED-PACKS-R026 Section, entry and pack digest recomputation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Section, entry and pack digest recomputation.** EG recomputes section SHA-256, every entry_digest, and pack_digest from received bytes. It refuses mismatches with PACK_DIGEST_MISMATCH. | Golden-vector and mutation tests confirm recomputed digests match published vectors. A one-byte tamper produces PACK_DIGEST_MISMATCH. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:221 |
| EG-TYPED-PACKS-R027 Text body UTF-8 validity without a byte-order mark Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Text body UTF-8 validity without a byte-order mark.** Every text-typed body must be valid UTF-8 without a byte-order mark. EG refuses violations with MALFORMED_BODY. | A negative test submits invalid UTF-8 and a leading byte-order mark. Both cases must return MALFORMED_BODY. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:222 |
| EG-TYPED-PACKS-R028 Bounded JSON body and schema validation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Bounded JSON body and schema validation.** EG parses every JSON-typed body and schema with a bounded parser that rejects excess depth, size overflow and duplicate keys, refuses NaN and Infinity values, and requires a tool's input schema to have an object-typed root, refusing a violation with MALFORMED_BODY. | A negative test submits excessive JSON depth, duplicate keys and a non-object tool schema root and asserts the MALFORMED_BODY refusal for each. | requirement | EG-TYPED-PACKS | VERIFIED | b43f33569dd4 d116b7dbfd27 tests/test_connector_pack_planted.py:223 |
| EG-TYPED-PACKS-R029 SKILL.md front-matter validation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**SKILL.md front-matter validation.** EG parses a skill entry's SKILL.md front matter against a restricted YAML subset that rejects anchor and alias expansion, and requires the declared name to match the entry name, refusing a violation with MALFORMED_BODY. | A negative test submits front matter using YAML anchor or alias expansion and a mismatched name and asserts the MALFORMED_BODY refusal for each. | requirement | EG-TYPED-PACKS | VERIFIED | b43f33569dd4 d116b7dbfd27 tests/test_connector_pack_planted.py:224 |
| EG-TYPED-PACKS-R030 Tool entries require an input schema Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Tool entries require an input schema.** EG requires every tool entry to declare an input schema section, refusing an entry that omits one with MISSING_TOOL_SCHEMA. | A negative test submits a tool entry with no input schema section and asserts the MISSING_TOOL_SCHEMA refusal. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:225 |
| EG-TYPED-PACKS-R031 Empty description falls back to the entry name Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Empty description falls back to the entry name.** EG accepts an empty description and uses the entry name as its effective description. It records an EMPTY_DESCRIPTION warning instead of refusing import. | A test confirms import succeeds with the entry name applied. It also confirms the EMPTY_DESCRIPTION warning. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:226 |
| EG-TYPED-PACKS-R032 Capability, cost, latency and model annotation validation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Capability, cost, latency and model annotation validation.** EG validates capability/modality IRIs, costs, ISO currency, latency bounds, and model facts. Malformed IRIs yield UNKNOWN_CAPABILITY_IRI. Invalid cost, currency, latency, or model values yield INVALID_ANNOTATION or INVALID_FACTS. | A mutation test covers malformed IRI, invalid currency, out-of-bounds latency, and invalid model facts. Each case must return its matching refusal. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:227 |
| EG-TYPED-PACKS-R033 Bounded Turtle parsing for ontology and shapes Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Bounded Turtle parsing for ontology and shapes.** EG parses ontology and shapes Turtle documents with a bounded parser enforcing at most 100000 triples and bounded IRI and literal sizes, rejects any use of @base or a relative IRI, and never fetches owl:imports over the network, refusing a violation with ONTOLOGY_INVALID or SHAPES_INVALID. | A negative test submits an oversized document, a document using @base, and an owl:imports reference and asserts the matching refusal without any network fetch. | requirement | EG-TYPED-PACKS | VERIFIED | b43f33569dd4 d116b7dbfd27 tests/test_connector_pack_planted.py:228 |
| EG-TYPED-PACKS-R034 Shape blank-node scoping and SPARQL-backed constraint rejection Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Shape blank-node scoping and SPARQL-backed constraint rejection.** EG scopes SHACL blank nodes independently per source file. It refuses shapes using sh:sparql or SERVICE constraints with SHAPES_INVALID. | A negative test covers cross-file blank-node references. Another covers sh:sparql SERVICE; both must return SHAPES_INVALID. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:229 |
| EG-TYPED-PACKS-R035 Step-bounded SHACL cross-validation against the ontology Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Step-bounded SHACL cross-validation against the ontology.** EG validates pack shapes against the composed ontology using step-bounded SHACL. Budget exhaustion yields VALIDATION_BUDGET_EXCEEDED. A genuine constraint violation yields SHACL_VIOLATION. | A test covers budget exhaustion and a genuine violation. It asserts VALIDATION_BUDGET_EXCEEDED and SHACL_VIOLATION, respectively. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:230 |
| EG-TYPED-PACKS-R036 Sibling reference resolution without cycles Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Sibling reference resolution without cycles.** EG resolves each entry reference only to a sibling of its declared kind. It rejects reference cycles with UNRESOLVED_REFERENCE or REFERENCE_CYCLE. | A negative test covers wrong-kind sibling references and cycles. Each case must return its matching refusal. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:231 |
| EG-TYPED-PACKS-R037 Server-stamped draft validation before commit Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Server-stamped draft validation before commit.** EG validates every AgentComponentDraft, including its server-stamped fields, through AgentComponentDraft::validate before it can be committed, refusing an invalid draft with INVALID_COMPONENT. | Unit tests exercise AgentComponentDraft::validate directly across valid and invalid field combinations, asserting INVALID_COMPONENT on failure. | requirement | EG-TYPED-PACKS | VERIFIED | b43f33569dd4 f41725ac0f6f crates/eg-types/src/agent_component.rs:1337 |
| EG-TYPED-PACKS-R038 Import requires a matching bound importer identity Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Import requires a matching bound importer identity.** EG compares the submitting principal with the target pack's configured or admin-bound importer. A mismatch yields IMPORTER_MISMATCH. | A negative test submits an unbound principal. It asserts IMPORTER_MISMATCH and no catalog mutation. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:232 |
| EG-TYPED-PACKS-R039 Mass-withdrawal guard requires an explicit admin override Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Mass-withdrawal guard requires an explicit admin override.** EG refuses imports that empty a pack or withdraw over half of Published members without explicit admin override. Refusal code is PACK_MASS_WITHDRAWAL. | A test omits over half of Published members without override and asserts PACK_MASS_WITHDRAWAL. The same import succeeds with override. | requirement | EG-TYPED-PACKS | VERIFIED | ac5638477288 d116b7dbfd27 tests/test_connector_pack_planted.py:233 |
| EG-TYPED-PACKS-R040 Validation stops at a bounded violation count Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Validation stops at a bounded violation count.** EG's validator stops collecting violations once it reaches 256 or exhausts its step budget, reporting in its response that the result was truncated, via VALIDATION_BUDGET_EXCEEDED. | A test submits a pack with far more than 256 violations and asserts the response is capped with a truncation indicator and VALIDATION_BUDGET_EXCEEDED. | requirement | EG-TYPED-PACKS | VERIFIED | d116b7dbfd27 db863f1e2afd tests/test_connector_pack_planted.py:234 |
| EG-TYPED-PACKS-R041 Write-time refusal codes for pack import conflicts Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Write-time refusal codes for pack import conflicts.** ConnectorPack.Import returns PACK_HEAD_CONFLICT when the expected head no longer matches, PACK_PLAN_STALE when the computed import plan was derived from a head that changed before commit, BODY_MISSING when a referenced body was not staged, and RESERVED_COMPONENT_ID when a caller attempts to directly write a pack-reserved component ID. None of these refusals changes the head, members, holders, or outbox. | Covered by the crash/retry and reserved-ID refusal cases that assert unchanged head, members, holders and outbox on every refusal. | requirement | EG-TYPED-PACKS | LANDED | b43f33569dd4 |
| EG-TYPED-PACKS-R042 Typed capability annotations: provides and requires_capabilities Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Typed capability annotations: provides and requires_capabilities.** Each pack entry carries a provides annotation listing native capability IRIs plus any foreign-namespace declared_capabilities claims, and a requires_capabilities annotation. A malformed native capability IRI is refused, while a foreign absolute IRI is accepted only as an unverified claim with a warning. | Covered by the capability-IRI validation cases asserting refusal of a malformed native IRI versus accepted foreign claim with warning. | requirement | EG-TYPED-PACKS | VERIFIED | a1bb9fb9503e |
| EG-TYPED-PACKS-R042.1 Native capability annotation admission Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Native capability annotation admission.** Validate both typed capability lists. Refuse malformed native terms and invalid absolute schemes. Retain foreign terms only as declared claims with a warning. | Owner: `src/server/handlers/admin/connector_pack/import/annotations.rs::check_annotations` and `src/server/handlers/admin/connector_pack/import/desired.rs::DesiredBuilder::draft`. Tests: `src/server/handlers/admin/connector_pack/import/capability_tests.rs::both_capability_fields_refuse_relative_and_invalid_scheme_claims` and `foreign_terms_warn_and_stay_only_in_the_declared_partition`. The same test module covers native terms, typed lists, and JSON round trips. | requirement | EG-TYPED-PACKS | VERIFIED | 042cd2be6b01 src/server/handlers/admin/connector_pack/import/capability_tests.rs:10 src/server/handlers/admin/connector_pack/import/capability_tests.rs:101 src/server/handlers/admin/connector_pack/import/capability_tests.rs:28 src/server/handlers/admin/connector_pack/import/capability_tests.rs:48 src/server/handlers/admin/connector_pack/import/capability_tests.rs:68 |
| EG-TYPED-PACKS-R042.2 Served capability claim and refusal proof Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Served capability claim and refusal proof.** Import the capability annotations through signed dispatch and read persisted component claims. | Owner: `src/server/handlers/admin/connector_pack/import.rs::run_import` and `src/server/handlers/admin/connector_pack/import/desired.rs::DesiredBuilder::draft`. Native execution pending: `src/server/handlers/admin/connector_pack/tests/admin.rs::a_rejected_import_mutates_nothing_in_the_catalog` with G12 cases and bounded owner snapshots. The test `src/server/handlers/admin/connector_pack/tests/content_model.rs::capability_annotations_remain_declared_after_import` checks persisted claims for warning receipts and persisted native/declared fields. Refusals must preserve head, members, holders, records, body liveness, and outbox. | requirement | EG-TYPED-PACKS | VERIFIED | 481fa6ea2c55 795a1ea18fa6 a0743ba9b542 c764285d098c src/server/handlers/admin/connector_pack/tests/admin.rs:440 src/server/handlers/admin/connector_pack/tests/content_model.rs:598 |
| EG-TYPED-PACKS-R043 Modality annotations on pack entries Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Modality annotations on pack entries.** Each pack entry declares bounded modalities_in and modalities_out IRI lists. Lists record data modalities consumed and produced by tools, prompts, or skills. | Covered by typed annotation validation and digest-vector replay tests. Production owners are `crates/eg-types/src/connector_pack/annotations.rs`, `crates/eg-types/src/connector_pack/digest.rs`, and `src/server/handlers/admin/connector_pack/import/annotations.rs`. Proving tests are `src/server/handlers/admin/connector_pack/import/modality_tests.rs::modality_digest_replay_is_canonical_and_direction_sensitive` and the other R043 regressions in `test-spec.md`. PACK-09 acceptance remains required. | requirement | EG-TYPED-PACKS | LANDED | 7be444b032de c08b8d0665e4 |
| EG-TYPED-PACKS-R044 EG-computed tool schema digests Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**EG-computed tool schema digests.** EG computes input_schema_digest and output_schema_digest as SHA-256 over the exact received tool schema bytes, independent of any digest the connector SDK separately computes. | Covered by the digest-vector replay asserting a changed schema byte changes the digest while repackaging does not. | requirement | EG-TYPED-PACKS | VERIFIED | 7be444b032de src/server/handlers/admin/connector_pack/import/facts.rs:209 |
| EG-TYPED-PACKS-R045 MCP ToolAnnotations hints captured as pack facts Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**MCP ToolAnnotations hints captured as pack facts.** Each tool entry's MCP ToolAnnotations hints, readOnly, destructive, idempotent, and openWorld, are captured as typed facts on the pack entry's annotations rather than left as untyped metadata. | Covered by annotation validation and digest-vector replay for pack entries. | requirement | EG-TYPED-PACKS | SPECIFIED | db863f1e2afd |
| EG-TYPED-PACKS-R045.1 Annotation type carries side effects, declarer and schema size Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Annotation type carries side effects, declarer and schema size.** `PackAnnotations` (`crates/eg-types/src/connector_pack/annotations.rs:46`) must gain `side_effects`, `declared_by` and `schema_tokens`, each with `#[serde(default)]`. `side_effects` is the closed set `none`, `workspace_write`, `external_write`, `network`. `declared_by` is `connector`, `mcp_hint` or `certified`. `schema_tokens` is `Option<u32>`. The SDK publishes these facts in `SDK-CONNECTOR-CONTROL-R045.1` to `.11`. | Test: `crates/eg-types/src/connector_pack/annotations.rs::tests::new_fields_roundtrip` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.2 Absent facts take safe defaults, never zero Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Absent facts take safe defaults, never zero.** An absent `read_only_hint` must read as `false`, absent `side_effects` as `external_write`, absent `declared_by` as `connector`, and absent `schema_tokens` as absent. A default method on `PackAnnotations` must expose these. No code path may turn an absent `schema_tokens` into 0. | Test: `crates/eg-types/src/connector_pack/annotations.rs::tests::absent_facts_take_safe_defaults` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.3 The annotation digest covers the new fields without moving old vectors Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**The annotation digest covers the new fields without moving old vectors.** `annotations_digest` (`crates/eg-types/src/connector_pack/digest.rs:135`) must hash the three fields only when present. An entry without them must keep its existing golden digest vector. | Test: `crates/eg-types/src/connector_pack/digest.rs::tests::absent_new_fields_keep_golden_vectors` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.4 Admission refuses an unknown side-effect or declarer value Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Admission refuses an unknown side-effect or declarer value.** `check_annotations` (`src/server/handlers/admin/connector_pack/import/annotations.rs:34`) must refuse an unknown `side_effects` or `declared_by` value, or a `schema_tokens` of 0, with a typed annotation refusal naming the field. | Test: `src/server/handlers/admin/connector_pack/import/annotations.rs::tests::unknown_side_effect_is_refused` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.5 Admission records an unproven read-only claim Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Admission records an unproven read-only claim.** `tool_facts` (`src/server/handlers/admin/connector_pack/import/facts.rs:21`) must copy the three fields into `AgentComponentFacts::Tool` (`crates/eg-types/src/agent_component/facts.rs:198`). When `read_only_hint` is true and `declared_by` is `mcp_hint`, the stored fact must mark the claim unproven. The `effect` mapping at `facts.rs:25` must then yield `ToolEffect::Write`. | Test: `src/server/handlers/admin/connector_pack/import/facts.rs::tests::mcp_hint_read_only_is_unproven` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.6 The tool-subset path abstains for a tool with no size Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**The tool-subset path abstains for a tool with no size.** `token_cost` (`src/server/handlers/decide/stat_tool_subset.rs:91`) now returns 0 for an undeclared cost, which treats the tool as free. It must return no value instead. `request_body` (`stat_tool_subset.rs:99`) must read each candidate's `schema_tokens` as its `token_cost` and must abstain on the `tool_subset` part for any candidate without one. It must not assume a size. This feeds `EG-DECISION-ENGINE-R045.2` and `EG-DECISION-ENGINE-R128.9`. | Test: `src/server/handlers/decide/stat_tests/tool_subset_tests.rs::missing_schema_tokens_abstains` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.7 No decision premise treats an unproven read-only claim as certified Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**No decision premise treats an unproven read-only claim as certified.** The `HarnessConfig` handler (`EG-DECISION-ENGINE-R128.8`) and the capability rules (`crates/eg-rdf/src/rules/capability.rs:384`) must treat `read_only` as certified only when `declared_by` is `certified` or `connector`. A premise built from an `mcp_hint` claim must carry the label unproven. | Test: `src/server/handlers/decide/stat_tests/harness_config_tests.rs::mcp_hint_read_only_premise_is_unproven` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.8 The generated contract and Python client carry the new fields Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**The generated contract and Python client carry the new fields.** `gen_contract --check` (`crates/eg-capabilities/Cargo.toml:102`) must pass after regeneration. The Python `PackAnnotations` model (`crates/eg-capabilities/src/contract/python/surfaces.rs:12`) must expose the three fields, so the SDK can import them. | Test: `crates/eg-capabilities/src/contract/python/surfaces/tests.rs::pack_annotations_expose_harness_tool_facts` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R045.9 End-to-end proof: a two-tool pack yields a budget-respecting subset Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**End-to-end proof: a two-tool pack yields a budget-respecting subset.** A served test must import a pack with two tools of known `schema_tokens` through the import path. It must then call `Decide` with `HarnessConfig` (`EG-DECISION-ENGINE-R128`) and a budget that fits one tool. The answer's tool subset must stay within that budget. A tool with no `schema_tokens` must produce an abstention. | Test: `tests/harness_config_tool_facts_served.rs::two_tool_pack_subset_respects_budget` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R046 Cost annotation on pack entries Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Cost annotation on pack entries.** A pack entry may declare a cost annotation naming its currency and per-call, per-input-token and per-output-token cost in micros. An invalid currency or cost value is refused. | Covered by the invalid-cost-value validation case. | requirement | EG-TYPED-PACKS | VERIFIED | 347ce471e2c9 db863f1e2afd src/server/handlers/admin/connector_pack/import/annotations.rs:211 |
| EG-TYPED-PACKS-R047 Latency annotation on pack entries Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Latency annotation on pack entries.** A pack entry may declare a latency annotation giving its stated p50 and p95 response times. An out-of-bounds latency value is refused. | Covered by the invalid-latency-value validation case. | requirement | EG-TYPED-PACKS | VERIFIED | 347ce471e2c9 db863f1e2afd src/server/handlers/admin/connector_pack/import/annotations.rs:212 |
| EG-TYPED-PACKS-R048 ModelProfile cost, latency, modality and capability facts Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**ModelProfile cost, latency, modality and capability facts.** A model_profile pack entry carries provider, model identity, context window, maximum output tokens and supports_* capability facts alongside its cost, latency and modality annotations. | Covered by the model-fact validation cases and the digest-vector replay for pack entries. | requirement | EG-TYPED-PACKS | SPECIFIED | db863f1e2afd |
| EG-TYPED-PACKS-R048.1 Context window is a named model fact Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Context window is a named model fact.** `crates/eg-types/src/agent_component/facts.rs` already carries `context_window_tokens` on `ModelProfile`. EG must expose it as `contextWindowTokens` in the ontology projection and the Python DTO. The pack validator must reject a value of 0. | Test: `crates/eg-types/src/agent_component/facts.rs::tests::context_window_zero_is_refused` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R048.2 A measured fact cites the evaluation run that produced it Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**A measured fact cites the evaluation run that produced it.** `facts.rs` must define `MeasuredFact<T>` holding a `value` and an `evaluation_run_ref: ObservationRef`, reusing the `ObservationRef` type that `latency_observed_ref` uses. A measured fact without a run reference must fail validation. | Test: `crates/eg-types/src/agent_component/facts.rs::tests::measured_fact_requires_run_ref` | requirement | EG-TYPED-PACKS | VERIFIED | a565bdb085f2 crates/eg-types/src/agent_component/facts.rs:514 |
| EG-TYPED-PACKS-R048.3 Shell proficiency is a measured model fact Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Shell proficiency is a measured model fact.** `facts.rs` must define `ShellProficiency` (`low`, `medium`, `high`) and add `shell_proficiency: Option<MeasuredFact<ShellProficiency>>` to `ModelProfile` with `#[serde(default)]`. The ontology projection must name it `shellProficiency`. An absent value must leave the existing digest vectors unchanged. | Test: `crates/eg-types/src/agent_component.rs::tests::absent_shell_proficiency_keeps_digest` | requirement | EG-TYPED-PACKS | VERIFIED | 3a23459ceec7 crates/eg-rdf/src/rules/capability/tests.rs:234 crates/eg-types/src/agent_component.rs:1459 crates/eg-types/src/agent_component.rs:1510 crates/eg-types/src/agent_component.rs:1549 |
| EG-TYPED-PACKS-R048.4 Stopping behaviour is a measured model fact Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Stopping behaviour is a measured model fact.** `facts.rs` must define `StoppingBehaviour` (`stops_early`, `balanced`, `over_verifies`) and add `stopping_behaviour: Option<MeasuredFact<StoppingBehaviour>>` to `ModelProfile` with `#[serde(default)]`. The ontology projection must name it `stoppingBehaviour`. The digest function at `agent_component.rs:748` must hash both measured facts when present. | Test: `crates/eg-types/src/agent_component.rs::tests::measured_model_facts_change_digest` | requirement | EG-TYPED-PACKS | VERIFIED | 3a23459ceec7 crates/eg-rdf/src/rules/capability/tests.rs:235 crates/eg-types/src/agent_component.rs:1460 crates/eg-types/src/agent_component.rs:1511 crates/eg-types/src/agent_component.rs:1550 |
| EG-TYPED-PACKS-R048.5 Pack import round-trips the new model facts Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Pack import round-trips the new model facts.** A signed pack entry carrying `contextWindowTokens`, `shellProficiency` and `stoppingBehaviour` must import and read back unchanged. An entry with an unknown enum value must be refused with a typed error. | Test: `tests/typed_packs/test_model_harness_facts.py::test_model_profile_round_trip` | requirement | EG-TYPED-PACKS | VERIFIED | 03fd1d10476f 20f92260b576 35c16b482e05 4d345c857f13 6be6da12f970 crates/eg-types/src/connector_pack/digest.rs:303 tests/typed_packs/test_model_harness_facts.py:36 |
| EG-TYPED-PACKS-R049 contract_pin is carried as an opaque SDK claim Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**contract_pin is carried as an opaque SDK claim.** EG stores and returns the connector SDK's contract_pin value as a carried claim attribute on the server pin without independently recomputing or verifying the SDK's own schema normalization. | Covered by the server-pin digest vectors confirming EG treats the pin as declared rather than recomputed. | requirement | EG-TYPED-PACKS | LANDED | db863f1e2afd |
| EG-TYPED-PACKS-R050 Per-entry contract_version replaces package-version pinning Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Per-entry contract_version replaces package-version pinning.** Each server pin binds the entry's declared contract_version, name and instructions. The connector's package version is carried as provenance only and never determines pin compatibility. | Covered by the import test case showing a contract-version change cascades pins while a package-only version change does not. | requirement | EG-TYPED-PACKS | VERIFIED | 347ce471e2c9 db863f1e2afd src/server/handlers/admin/connector_pack/tests/content_model.rs:102 src/server/handlers/admin/connector_pack/tests/content_model.rs:264 |
| EG-TYPED-PACKS-R051 Composable per-graph schema source sets Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Composable per-graph schema source sets.** A graph owns a bounded ordered map of named GraphSchemaSource entries, each carrying its own shapes and ontology bytes, origin and revision. The composed digest and policy are derived from the union, and conflict and consistency rules govern attach, detach and pack projection. | Covered by the schema-source composition and conflict-rule test cases. | requirement | EG-TYPED-PACKS | LANDED | f17f47ab300f |
| EG-TYPED-PACKS-R052 No pack-specific stand-in for pending schema authority Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**No pack-specific stand-in for pending schema authority.** A capability that depends on a general typed schema or ontology authority that does not yet exist is not shipped as a pack-specific placeholder; it is delivered only once the general authority exists. | Covered by the generated-type parity and migration check required before any duplicate type is removed. | requirement | EG-TYPED-PACKS | VERIFIED | 3eb80ef31218 src/server/handlers/admin/connector_pack/tests/outbox.rs:68 |
| EG-TYPED-PACKS-R053 Visible-staleness snapshot for non-pack schema attach Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Visible-staleness snapshot for non-pack schema attach.** Attaching a pack's schema to a graph other than its reserved projection graph copies a static snapshot whose staleness is visible to readers. Automatic following of later pack updates into that graph is not performed until a separately specified durable target-list design exists. | Covered by the static-attachment staleness-reporting test case. | requirement | EG-TYPED-PACKS | LANDED | f17f47ab300f |
| EG-TYPED-PACKS-R054 One topic per Agent Library outbox consumer Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**One topic per Agent Library outbox consumer.** Each Agent Library outbox consumer subscribes to exactly one topic; a projection consumer never mixes multiple unrelated topics in a way that would require skipping an acknowledgment. | Covered by the outbox crash and redelivery test cases asserting idempotent, topic-scoped redelivery. | requirement | EG-TYPED-PACKS | VERIFIED | 3eb80ef31218 ceec54145720 crates/eg-transaction/src/tests/outbox.rs:1466 |
| EG-TYPED-PACKS-R055 Outbox retry never collateral dead-letters unrelated events Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Outbox retry never collateral dead-letters unrelated events.** Retry failed outbox events a bounded number of times (for example, 16). Then dead-letter each failed event alone. Treat failure as durable, visible data-loss risk, not a stall. Healthy unrelated events never dead-letter with it. | Covered by stale/failed-event tests that assert later events are not collateral-dead-lettered. | requirement | EG-TYPED-PACKS | VERIFIED | 3eb80ef31218 7704b8d7294f crates/eg-transaction/src/tests/outbox.rs:2262 |
| EG-TYPED-PACKS-R056 Owner-layout refusal happens at the manifest read Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Owner-layout refusal happens at the manifest read.** An incompatible Agent Library owner-file layout is refused by a named error at the manifest read, through OwnerManifest validation, not later during any table-level scan. | Covered by the incompatible-layout refusal case exercised alongside the owner-transaction crash and recovery tests. | requirement | EG-TYPED-PACKS | LANDED | a1bb9fb9503e |
| EG-TYPED-PACKS-R057 Ontology withdrawal removes a whole source, not per-triple Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Ontology withdrawal removes a whole source, not per-triple.** Because the composed TBox is a derived cache and not stored authority, withdrawing a source's ontology contribution is performed by detaching that named GraphSchemaSource under the schema conflict rules, not by tracking provenance on individual triples. | Covered by the attach-detach-attach composition test cases. | requirement | EG-TYPED-PACKS | VERIFIED | f17f47ab300f src/server/graph_schema/compiled_tests.rs:93 |
| EG-TYPED-PACKS-R058 One shared derivation-step budget bounds EL+/RL reasoning Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**One shared derivation-step budget bounds EL+/RL reasoning.** A single bounded derivation-step budget for EL+ and RL classification is enforced once in the shared RDF reasoning component and reused by both pack ontology validation and graph schema source composition, so admission never invokes exponential tableau reasoning. | Covered by the derivation-budget-exhaustion case and the step-bounded classification test case. | requirement | EG-TYPED-PACKS | LANDED | 0d5be273ab86 80c865971ea8 |
| EG-TYPED-PACKS-R059 Schema attach validates only newly introduced data Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Schema attach validates only newly introduced data.** IcvConfigure and GraphSchema.Attach validate the staged schema document and the writes it introduces. They never retroactively scan or revalidate data already present in the graph. | Covered by the attach-without-retroactive-scan assertion in the schema composition tests. | requirement | EG-TYPED-PACKS | LANDED | 2c04520d740f |
| EG-TYPED-PACKS-R060 Manifest-read refusal precedes dependent import paths Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Manifest-read refusal precedes dependent import paths.** The manifest-read refusal for an incompatible owner layout is in place before any import path that depends on it is implemented to rely on that refusal. | Covered by the same incompatible-layout refusal evidence relied on by the owner-transaction recovery tests. | requirement | EG-TYPED-PACKS | LANDED | 08a2b1958cc3 |
| EG-TYPED-PACKS-R061 Bounded schema source catalog: 32 sources, 8 MiB Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Bounded schema source catalog: 32 sources, 8 MiB.** Graph schema composition admits at most 32 named sources per graph with a combined dynamic schema size of at most 8 MiB, a bound sized to cover the largest pack's snapshot staging cost. | Covered by the source-count and byte-bound overflow refusal test case. | requirement | EG-TYPED-PACKS | LANDED | b43f33569dd4 |
| EG-TYPED-PACKS-R062 GraphSchema replicates through the existing GraphState route Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**GraphSchema replicates through the existing GraphState route.** Graph schema state replicates through the existing GraphState catalog record type rather than introducing a new sealed payload variant. | Covered by the composed-schema read and replication test cases. | requirement | EG-TYPED-PACKS | LANDED | f17f47ab300f |
| EG-TYPED-PACKS-R063 Agent-layer row types affected by a schema bump are enumerated Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Agent-layer row types affected by a schema bump are enumerated.** Before any shared schema version is bumped, the specific agent-layer record types it changes are explicitly enumerated rather than assumed. | Covered by the generated-contract fixpoint and committed-artifact comparison test. | requirement | EG-TYPED-PACKS | LANDED | 08a2b1958cc3 |
| EG-TYPED-PACKS-R064 Output-schema digest recorded on tool pins Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Output-schema digest recorded on tool pins.** A tool's server pin carries an output_schema_digest alongside its input-schema digest, computed by EG over the exact received schema bytes. | Covered by the digest-vector replay test for pack entries. | requirement | EG-TYPED-PACKS | VERIFIED | 7be444b032de src/server/handlers/admin/connector_pack/import/facts.rs:210 |
| EG-TYPED-PACKS-R065 EG does not recompute the SDK's contract-pin normalization Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**EG does not recompute the SDK's contract-pin normalization.** EG does not independently validate or recompute the connector SDK's normalized contract-pin schema. EG only carries the pin as a declared claim, and that normalization is proved by the SDK's own conformance suite. | Covered by the server-pin claim-handling assertions in the digest and import replay tests. | requirement | EG-TYPED-PACKS | LANDED | db863f1e2afd |
| EG-TYPED-PACKS-R066 OWL/rule classification over model and capability facts Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**OWL/rule classification over model and capability facts.** ModelProfile and capability metadata are classified using the same bounded OWL and rule-based reasoning used for pack ontology validation, within the shared derivation-step budget. | Covered by the bounded ontology-consistency and classification test cases. | requirement | EG-TYPED-PACKS | SPECIFIED | f50555aa6421 |
| EG-TYPED-PACKS-R066.1 SHACL shapes validate the measured model facts Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**SHACL shapes validate the measured model facts.** A new shapes file `crates/eg-core/ontology/harness-v1.shapes.ttl` must require `shellProficiency` and `stoppingBehaviour` to be one of their enum values. It must require an `evaluationRun` link whenever a value is present. It must require `contextWindowTokens` to be at least 1. | Test: `crates/eg-core/tests/harness_shapes.rs::model_fact_shapes_reject_missing_run` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R066.2 The task class carries a shell-centric fact Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**The task class carries a shell-centric fact.** `crates/eg-core/ontology/swarm_topology-v1.ttl` must declare the boolean property `swarm:shellCentric` on `swarm:TaskShape` (line 80 area owns `swarm:DecomposableTask`). The matching shape in `swarm_topology-v1.shapes.ttl` must require a boolean datatype and at most one value. | Test: `crates/eg-shacl/tests/swarm_topology_shapes.rs::shell_centric_must_be_boolean` | requirement | EG-TYPED-PACKS | VERIFIED | fa0de58b4e2e crates/eg-shacl/tests/swarm_topology_shapes.rs:17 crates/eg-shacl/tests/swarm_topology_shapes.rs:30 crates/eg-shacl/tests/swarm_topology_shapes.rs:47 |
| EG-TYPED-PACKS-R066.3 The shell-centric fact is inherited by task subclasses Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**The shell-centric fact is inherited by task subclasses.** A task class with no own `swarm:shellCentric` value must read the value of its nearest ancestor through `agent_ontology::broader_chain`. When no ancestor states it, the reader must return an absent value, never `false`. | Test: `crates/eg-core/tests/swarm_topology_shapes.rs::shell_centric_inherits_or_is_absent` | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R067 Coordinated contract regeneration for new library methods Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Coordinated contract regeneration for new library methods.** A feature that adds new library API methods regenerates and commits the shared wire, client and receipt artifacts together in the same change, rather than landing library code ahead of its contract. | Covered by the generated-contract fixpoint and committed-artifact comparison test. | requirement | EG-TYPED-PACKS | LANDED | 339e26cbbbca |
| EG-TYPED-PACKS-R068 Contract regeneration packages the complete generated set Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Contract regeneration packages the complete generated set.** Regenerating the pack contract produces and commits the complete generated artifact set together, including the contract directory, the generated client package, the generated capabilities documentation, and the Rust catalog digest and method catalog files, so the committed catalog digest can never drift from the committed receipt digest while a byte-size-only comparison would miss a content-only change. | Covered by a committed-artifact content comparison that checks bytes and digests rather than file size alone. | requirement | EG-TYPED-PACKS | VERIFIED | a1bb9fb9503e crates/eg-capabilities/src/catalog.rs:82 |
| EG-TYPED-PACKS-R069 Branch-aware, blob-deduplicated repository indexing Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Branch-aware, blob-deduplicated repository indexing.** EG's repository indexing projects a repository's full set of branches into a Blob node keyed by content SHA, a FileVersion node binding a path to a blob, and a Branch edge to each FileVersion, parsing each unique blob exactly once regardless of how many branches share it. | Covered by a repository-ingestion test proving each unique blob is parsed once across branches that share history. | requirement | EG-TYPED-PACKS | SPECIFIED | a1bb9fb9503e |
| EG-TYPED-PACKS-R070 Committed contract artifacts match generated content, not size Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Committed contract artifacts match generated content, not size.** The committed contract receipt files and the Rust catalog digest file must match what the current registry generates byte-for-byte. A same-size, different-content drift between them is treated as a failure, not ignored. | Proven by crates/eg-capabilities/tests/contract_generated.rs::committed_contract_artifacts_match_the_registry. | requirement | EG-TYPED-PACKS | VERIFIED | be0f1acb05c6 crates/eg-capabilities/tests/contract_generated.rs:25 |
| EG-TYPED-PACKS-R071 Generated core ontology corpus as GraphSchema authority Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Generated core ontology corpus as GraphSchema authority.** EG's first schema corpus is generated from typed Rust authority as versioned core module artifacts outside the 32-source dynamic quota, preserves its existing published ontology IRI vocabulary, covers root and core terms plus capability, enterprise and ArchiMate terms and governed shapes, and is checked with combined EL+/RL and tableau reasoning. | Covered by the codegen/check parity and ontology-consistency test cases. | requirement | EG-TYPED-PACKS | SPECIFIED | 86787edc8a87 90f5578ae2f4 |
| EG-TYPED-PACKS-R071.1 Versioned core vocabulary crosswalks (rollup) Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Versioned core vocabulary crosswalks (rollup).** Extend R071 authority with explicit Schema.org mappings for person, event and document metadata. RDF/OWL semantics and upper-ontology disjointness remain authoritative in EG. Children `.1` through `.6` define this contract. | All six children require served acceptance. Existing alignment comments alone do not establish delivery. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.1.1 Model Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Model.** Add `VocabularyCrosswalk` beside `DomainClass` in `crates/eg-types/src/domain_pack.rs`. Carry source and target absolute class IRIs, relation, source revision, target vocabulary revision, origin and content digest. Relations are closed: `SeeAlso`, `SkosExactMatch`, `SkosCloseMatch`, `SkosBroadMatch`, `SkosNarrowMatch`. Store approved target declarations and their categories with the vocabulary revision. | Round-trip all fields. Reject unknown relations, malformed IRIs, absent revisions and empty origins. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.1.2 Behavior Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Behavior.** Use the exact source/target/relation fixtures in the test specification for EG Person, Event and Document. Their declared relation is `SeeAlso`; Document includes physical documents and must not become `SkosExactMatch` to DigitalDocument. `SkosBroadMatch` means the target is broader than the source. `SkosNarrowMatch` means the target is narrower. Choose each relation explicitly in typed authority. References never imply `owl:sameAs`, class equivalence or new subclass assertions. Preserve continuant, process and temporal-region separation. Use named limits: 4096 source classes, 16384 mappings and 2048 bytes per IRI. | Deterministic fixtures cover all three classes, duplicate input and every bound. Verify exact tuples against pinned source and target declarations. Assert broad/narrow direction with asymmetric fixtures. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.1.3 Wiring Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Wiring.** Extend `VocabularyModule::to_turtle` at `crates/eg-core/src/ontology_codegen.rs:45` to emit declared crosswalks. Reuse schema composition in `src/server/graph_schema.rs::apply_pack_source` before activation. Extend `OntologyInspection` and `src/server/handlers/rdf/inspect.rs::handle_ontology_inspect` to return crosswalks from composed sources. The production caller is `Method::OntologyInspect` in `src/server/handlers/rdf/dispatch.rs:314`. These crosswalk call sites remain to be implemented. | Generator parity and real served inspection must resolve identical records and composed digests. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.1.4 Refusal Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Refusal.** Resolve every source IRI as a class in the pinned source revision and selected source scope before activation. Return `CROSSWALK_SOURCE_UNKNOWN` for an unresolved class, including a property IRI. Return `CROSSWALK_SOURCE_OUT_OF_SCOPE` for a known class outside the authorized selected source set. Include the source IRI, requested revision and scope. Reject unresolved targets, conflicting relations and mappings incompatible with approved target categories before activation. Return `CROSSWALK_TARGET_UNKNOWN`, `CROSSWALK_CONFLICT`, `CROSSWALK_CATEGORY_CONFLICT` or `CROSSWALK_LIMIT_EXCEEDED`, with the offending IRI. Existing schema consistency and disjointness checks still run. Never fetch or silently adopt external definitions during import. | Unknown and out-of-scope sources must refuse even when their target is valid. A Person-to-Event mapping and a conflicting duplicate leave the active schema digest unchanged. Exceeding any bound refuses without truncation. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.1.5 Evidence Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Evidence.** Return source and target IRIs, relation, both vocabulary revisions, origin, crosswalk digest and committed schema digest. Distinguish inline inspection from committed-source inspection. Bind report evidence to the inspected tenant, graph and source set. | Independent readback matches the committed mapping records and digest. Inline inspection cannot claim activation. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.1.6 Hot-path proof Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated `ConnectorPack.Import`, followed by schema attachment and served `OntologyInspect` over composed sources. `tests/test_ontology_crosswalk_served.py::test_core_metadata_crosswalks` imports person, event and document fixtures using the real client and server. Query committed classes through `GraphSchemaClasses` and inspect mappings separately. | Assert the exact golden tuples and committed digest, including the declared relation and endpoint direction. Refuse unknown and out-of-scope sources. Submit category conflicts and disjointness violations, then independently read the unchanged prior state. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R072 EG/SDK typed fleet-catalog authority, not SQL tables Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**EG/SDK typed fleet-catalog authority, not SQL tables.** ServerRegistry is the sole liveness authority for fleet servers, and ConnectorPack and AgentComponent are the sole content and lifecycle authority. The connector SDK pulls, builds and imports packs, and GraphOS joins typed reads for serving, with no SQL shadow catalog or independent content authority elsewhere. | Covered by the fleet-catalog join and distinct-authority assertions in the end-to-end connector test. | requirement | EG-TYPED-PACKS | SPECIFIED | 2a0d6eae0918 90f5578ae2f4 |
| EG-TYPED-PACKS-R073 Raise the core schema source bound to 64 and split world_model Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Raise the core schema source bound to 64 and split world_model.** The core schema source bound, the in-process maximum and the wire contract's maximum source count, is raised from 32 to 64 as one coordinated contract change, and the world_model schema module is split into separate life, environment and nutrition modules with their shapes moved into their own document. | Covered by the raised source-count bound test case and the contract-regeneration check. | requirement | EG-TYPED-PACKS | VERIFIED | 90f5578ae2f4 a4c80c2b6f90 src/server/graph_schema/world_model_tests.rs:106 src/server/graph_schema/world_model_tests.rs:248 |
| EG-TYPED-PACKS-R074 Least-privilege, per-pack projection grant with recorded failure Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Least-privilege, per-pack projection grant with recorded failure.** The projection worker writes each pack's reserved graph under a least-privilege grant scoped to that outbox row rather than a broad per-graph check that can deny it. Any write failure is recorded as a durable failed outbox status and surfaced for dead-letter and retry rather than only logged. | Covered by the graph-grant-denial and durable-failed-status test cases. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 d76ac1402723 |
| EG-TYPED-PACKS-R075 Landing gate runs the full integration test suite Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Landing gate runs the full integration test suite.** The release gate runs the complete Rust test suite, including integration binaries such as admission-saga result contracts and transaction recovery. It does not run unit tests only. These cases are gated before merge. | The full-suite gate requires a complete nextest run, including integration binaries, with zero omissions. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 b43f33569dd4 |
| EG-TYPED-PACKS-R076 Signal-killed test binaries are detected and rerun in isolation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Signal-killed test binaries are detected and rerun in isolation.** If a test binary is killed by a signal partway through a run, the gate detects the signal death and reruns that binary under per-test process isolation so every test receives a pass or fail verdict instead of being silently skipped. A durability test pair that depends on sibling-test process state is diagnosed and isolated so it does not depend on run order. | Covered by the full-suite gate requirement to account for every test when a binary dies by signal. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 a1bb9fb9503e |
| EG-TYPED-PACKS-R077 GraphSchemaClasses exposes canonical class and property names Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**GraphSchemaClasses exposes canonical class and property names.** EG exposes a GraphSchemaClasses read returning the committed composed graph schema's classes and properties together with its composition digest, so a consumer can verify a referenced class name against the canonical schema. | Covered by the GraphSchemaClasses comparison test case. | requirement | EG-TYPED-PACKS | VERIFIED | 2068ec01a667 90f5578ae2f4 src/server/graph_schema/terms.rs:201 src/server/graph_schema/terms.rs:231 |
| EG-TYPED-PACKS-R078 Proven retrieval plan templates keyed by task class and digest Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Proven retrieval plan templates keyed by task class and digest.** EG records RetrievalPath entries as proven plan templates keyed by task class and the composed graph schema digest, exposing them as candidates to EG-DECISION-ENGINE-R029 along with topology-to-skill edges used to assemble a plan. | Covered by a retrieval-plan-candidate test asserting the recorded template is keyed by task class and schema digest. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 e429630278b8 |
| EG-TYPED-PACKS-R079 Typed OHLCV bar-series contract Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Typed OHLCV bar-series contract.** EG defines a typed OHLCV bar-series contract covering bar rollup, trading-calendar alignment, finalized-versus-provisional bar status, and bar revision handling. | Covered by a bar-series contract test asserting rollup, calendar alignment, provisional-to-finalized transition and revision replay. | requirement | EG-TYPED-PACKS | LANDED | 532418b7e55b 90f5578ae2f4 |
| EG-TYPED-PACKS-R080 Exhaustive OpKind/PredKind printer and parser contract Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Exhaustive OpKind/PredKind printer and parser contract.** A single macro generates each OpKind and PredKind enum together with its complete variant list. A walk prints, parses and canonicalizes every variant against an empty builder-only allowlist, backed by a 512-case property round-trip test and a fuzz target asserting the same round trip. | Covered by the printer/parser round-trip, property and fuzz test cases. | requirement | EG-TYPED-PACKS | LANDED | 1b4fc2558151 90f5578ae2f4 |
| EG-TYPED-PACKS-R081 Ontology object model migrated into EG's kg/ontology package Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Ontology object model migrated into EG's kg/ontology package.** The epistemic-graph kg/ontology package owns the core ontology object model migrated out of agent-utilities: object_set, property_types, derived_properties, links, the functions, edits, and indexing modules, classification_claims, permissioning, document_processing, schema_graph, ops_causal_crosswalk, repository_provenance, style_lint, and the generic object-path and object-collection utilities. The sync_conflict and leanix_metamodel modules remain outside this package as connector-SDK concerns. | A focused unit-test run over the migrated kg/ontology modules passes with no behavior regression against the prior agent-utilities implementation. | requirement | EG-TYPED-PACKS | LANDED | 64b30a5187f3 90f5578ae2f4 |
| EG-TYPED-PACKS-R082 EG-generated types replace hand-written graph-schema DTOs Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**EG-generated types replace hand-written graph-schema DTOs.** epistemic-graph's generated contract types replace agent-utilities' hand-written DTOs for models/knowledge_graph, models/schema_definition, models/evidence_bundle, models/knowledge_pack, models/codemap, models/graph, models/knowledge_base, and the schema_pack and schema_packs modules. The kg/domain_packs module migrates to the same generated types once AU-SEMANTIC-R005 removes its separate pack_loader path. | Unit tests comparing callers against the EG-generated types confirm behavioral parity for each migrated model module. | requirement | EG-TYPED-PACKS | LANDED | 08a2b1958cc3 90f5578ae2f4 |
| EG-TYPED-PACKS-R083 Schema-drift SHACL rendering and contract store move into EG Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Schema-drift SHACL rendering and contract store move into EG.** EG owns schema-drift SHACL rendering, contract_store, and activation modules, replacing the prior agent-utilities implementation. The connector-SDK sync runner invokes EG's drift gate between drain and apply. EG covers detection, shaping, classification, and reporting. The SDK does not render SHACL. | Integration tests drive connector-SDK sync through drain and apply. They assert EG's drift gate and SHACL rendering run as dependencies. No SHACL generation remains in agent-utilities. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 97e9074f0467 |
| EG-TYPED-PACKS-R084 Request deadlines propagate into long-running pack operations Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Request deadlines propagate into long-running pack operations.** A pack import, classification, or derivation observes the client's request deadline and cancellation signal and releases the tenant's pack lock on cancellation rather than continuing to hold it once the deadline has passed, so later pack operations for that tenant are not blocked behind abandoned work. | An integration test cancels an in-flight import at its deadline and asserts the next bind for the same tenant proceeds without waiting on the abandoned lock. | requirement | EG-TYPED-PACKS | VERIFIED | 147959ad6f13 90f5578ae2f4 src/server/handlers/admin/connector_pack/tests/ontology.rs:87 |
| EG-TYPED-PACKS-R085 Identity domain operations with Argon2id and redacted views Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Identity domain operations with Argon2id and redacted views.** A family of identity operations covering user, credential, session, token, MFA, API key, role, group, identity-provider, link, audit, and throttle actions is implemented in crates/eg-types/src/identity/ and dispatched through src/server/dispatch/router/identity_store.rs and crates/eg-capabilities/src/domains/security.rs. Credential verification uses argon2id inside EG, pgwire views expose identity data redacted, and the kernel exposes an identity catalog supporting DDL export and import. | Unit and integration tests exercise each identity operation, assert redaction in the pgwire view, and confirm the identity catalog's DDL export and import round-trip. | requirement | EG-TYPED-PACKS | LANDED | 0035f9fac382 90f5578ae2f4 |
| EG-TYPED-PACKS-R086 Planted derivation-budget and malformed-path cases are refused Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Planted derivation-budget and malformed-path cases are refused.** A connector pack import that would require an unbounded derivation budget completes within its declared budget or refuses with a typed error rather than timing out, and an import containing a malformed path is refused rather than imported. | Planted-fixture tests for the derivation-budget and malformed-path cases each assert the correct refusal or typed-error outcome. | requirement | EG-TYPED-PACKS | LANDED | 334a69c2e3de 90f5578ae2f4 |
| EG-TYPED-PACKS-R087 Stable error codes for auth-boundary refusals Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Stable error codes for auth-boundary refusals.** An authorization refusal raised in auth::claims::validate_deployment_binding for a tenant, audience, or policy-version mismatch returns a stable error code, such as AUTH_TENANT_MISMATCH, in Response.error, with the descriptive free-text message retained only as supplementary detail. | Unit tests assert each auth-boundary refusal path returns its documented stable error code rather than only a free-text message. | requirement | EG-TYPED-PACKS | LANDED | 48746fc0e5ac 90f5578ae2f4 |
| EG-TYPED-PACKS-R088 Embedded engine enforces graph-level access control Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Embedded engine enforces graph-level access control.** The in-process engine (crates/eg-pyengine, EmbeddedTransport) enforces the same graph-level read authority as the served engine, refusing GetNodeProperties for another principal with ACCESS_DENIED instead of returning data filtered only per caller property, or explicitly refuses multi-principal use. Embedded transport methods beyond CreateGraph, AddNode, GetNodeProperties, HasNode, and NodeCount are added through one table-driven result-contract mapping so parity with the served engine holds by construction. | tests/parity/test_parity_graph_ops.py::test_get_node_properties_rls_isolation and related parity tests assert embedded and served access-control behavior match. | requirement | EG-TYPED-PACKS | VERIFIED | 88499bb6424b 90f5578ae2f4 tests/parity/test_parity_graph_ops.py:74 |
| EG-TYPED-PACKS-R089 Blob-layout table for pack body holder rows Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Blob-layout table for pack body holder rows.** The owner storage layout includes a connector_pack_body_holders table, defined in crates/eg-storage/src/owner/registry.rs as part of OwnerLayout::Blob, to hold pack body holder rows. | crates/eg-storage/src/owner/tests.rs::owner_layout_registry_has_frozen_cardinality pins the OwnerLayout::Blob table count so an untracked addition or removal fails the test. | requirement | EG-TYPED-PACKS | VERIFIED | 90f5578ae2f4 b43f33569dd4 crates/eg-storage/src/owner/tests.rs:18 |
| EG-TYPED-PACKS-R090 Canonical ontology and SHACL artifacts generated from Rust Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Canonical ontology and SHACL artifacts generated from Rust.** The canonical ontology and SHACL shape artifacts are generated deterministically from the typed Rust vocabulary, which owns the core ontology and shape corpus as the single source of truth, and regeneration reproduces identical output across runs. Rollup: delivered by its child requirements, in order. | A regeneration test re-emits the ontology and SHACL artifacts from the Rust vocabulary and diffs them against the checked-in output for byte equality. | requirement | EG-TYPED-PACKS | LANDED | 080677a31fdd 90f5578ae2f4 |
| EG-TYPED-PACKS-R090.1 A typed-vocabulary-to-Turtle generator reproduces checked-in output byte-for-byte Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**A typed-vocabulary-to-Turtle generator reproduces checked-in output byte-for-byte.** One typed Rust vocabulary module declares its classes and properties in a fixed order and renders canonical Turtle text; regenerating from the same declaration twice, and against the checked-in fixture, is byte-identical. This proves the generation mechanism before the existing `crates/eg-core/ontology/*.ttl` corpus migrates onto it in later child requirements. | A unit test regenerates the module's Turtle twice and against a checked-in fixture and asserts byte equality, plus a negative test confirming a changed module does not match the fixture. | requirement | EG-TYPED-PACKS | LANDED | 080677a31fdd |
| EG-TYPED-PACKS-R091 Food composition and nutrient reference types Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Food composition and nutrient reference types.** USDA FoodData Central and FoodOn source data map into FoodTerm, FoodCompositionRecord, and NutrientAmount records, with FDC nutrient identifiers mapped through a ChEBI crosswalk table, and DRI, EFSA, and NRC reference tables map into NutrientReferenceIntake records. | Unit tests validate the FDC-to-ChEBI nutrient mapping and confirm imported records conform to the FoodTerm, FoodCompositionRecord, NutrientAmount, and NutrientReferenceIntake schemas. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 a1bb9fb9503e |
| EG-TYPED-PACKS-R092 Python client idempotency key excludes the request ID Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Python client idempotency key excludes the request ID.** The Python client's default idempotency key for a connector pack import is derived from the connector, content digest, and expected head, and excludes the request ID, so a retried request after a transport loss reuses the identical import operation key rather than generating a new one. | tests/test_connector_pack_client.py::test_transport_loss_retry_reuses_the_exact_import_operation_key asserts a retried import reuses the identical idempotency key after simulated transport loss. | requirement | EG-TYPED-PACKS | VERIFIED | 90f5578ae2f4 b43f33569dd4 f097533e52c8 tests/test_connector_pack_client.py:367 tests/test_connector_pack_client.py:412 |
| EG-TYPED-PACKS-R093 Turtle parser blank-node identities do not collide Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Turtle parser blank-node identities do not collide.** Each Turtle parse produces blank-node identities scoped to that parse, so unioning the results of independently parsed graphs introduces no blank-node identity collision. | Blank-node isolation tests covering the reproject path assert no identity collision when independently parsed graphs are unioned. | requirement | EG-TYPED-PACKS | VERIFIED | 90f5578ae2f4 f17f47ab300f |
| EG-TYPED-PACKS-R093.1 Public Turtle parse identity locality Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Public Turtle parse identity locality.** Bounded and unbounded public Turtle parses allocate independent blank-node identities while retaining within-document references. Existing catalogue composition preserves explicit source labels before applying its own namespace. | Bound native parser tests union repeated labels from independent parses, include anonymous nodes, verify repeated references, and retain bounded refusal behavior. | requirement | EG-TYPED-PACKS | VERIFIED | a60419de4cf7 crates/eg-rdf/src/mapping/parsing.rs:172 |
| EG-TYPED-PACKS-R093.2 Reproject-path blank-node isolation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Reproject-path blank-node isolation.** Verify independently parsed connector-pack members through the served reproject path, preserving deterministic catalogue identity and eliminating cross-member blank-node collisions. | Execute a served reproject regression that unions reused member labels and verifies isolated identities and repeatable composed digests. | requirement | EG-TYPED-PACKS | VERIFIED | 481fa6ea2c55 c764285d098c src/server/handlers/admin/connector_pack/tests/outbox.rs:181 |
| EG-TYPED-PACKS-R094 AgentComponent.content serves pack body bytes directly Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**AgentComponent.content serves pack body bytes directly.** Rollup: every child below is required; the original acceptance remains mandatory. AgentComponent.content returns verified body bytes for a Stable, Python-visible method rather than a METHOD_NOT_YET_SERVED refusal once pack-body content serving is implemented. Because the reachability gate only permits a refusal-only arm for an Internal or no-consumer method, this method's compliance is not mechanically enforced and must be verified directly. | An integration test calls AgentComponent.content on the Stable method and asserts it returns verified body bytes rather than METHOD_NOT_YET_SERVED. | requirement | EG-TYPED-PACKS | SPECIFIED | 90f5578ae2f4 a1bb9fb9503e |
| EG-TYPED-PACKS-R094.1 Original Stable content route Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Original Stable content route.** Model: The existing Python-visible AgentComponent.Content method remains Stable. Behavior: Return verified pack body bytes through the real method. Wiring: Exercise `src/server/handlers/admin/component_content.rs:55` from authenticated public dispatch. Refusal: METHOD_NOT_YET_SERVED is not a successful result for this method. Evidence: A generated Python client reads exact verified pack body bytes. | Proposed test: `tests/test_connector_pack_content.py::test_stable_content_returns_body`. A generated Python client reads exact verified pack body bytes. A refusal-only dispatch arm fails this acceptance. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R094.2 Pinned native blueprint export Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Pinned native blueprint export.** Model: The export envelope carries identity, exact revision, schema, complete payload, provenance and body digest. Behavior: Read one pinned version and export every admitted field without a second prompt authority. Wiring: Extend `src/server/handlers/admin/agent.rs:142` and reuse the verified content reader. Refusal: Mixed-revision reads, unresolved pins and denied scope refuse. Evidence: Export preserves nested extension values, nulls, arrays and exact numeric values. | Proposed test: `tests/test_prompt_blueprints_served.py::test_lossless_blueprint_export`. Export preserves nested extension values, nulls, arrays and exact numeric values. An omitted field, changed revision or lost numeric precision fails. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R094.3 Modified native blueprint import Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Modified native blueprint import.** Model: A modified envelope names the same component identity and exact expected base revision. Behavior: Validate and persist a new revision through R002.7 after the existing publication policy admits it. Wiring: Extend `src/server/handlers/admin/agent.rs:142` and `src/server/persistence/agent_component/write.rs:39`. Refusal: Stale bases, malformed envelopes, changed identity and denied tenants refuse without mutation. Evidence: Changing one field creates one new revision and preserves every other field. | Proposed test: `tests/test_prompt_blueprints_served.py::test_modified_blueprint_import`. Changing one field creates one new revision and preserves every other field. Concurrent writers cannot overwrite a newer head; reserved pack identities require pack admission. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R094.4 Blueprint retry identity Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Blueprint retry identity.** Model: The operation identity binds tenant, component, base revision and submitted content digest. Behavior: A lost-reply retry returns the same receipt; unchanged content follows the existing no-op contract. Wiring: Reuse `src/server/persistence/agent_component/write.rs:39` and existing owner replay. Refusal: Reusing the operation identity with different content refuses. Evidence: Replay produces no extra revision, holder or outbox event. | Proposed test: `tests/test_prompt_blueprints_served.py::test_blueprint_retry_identity`. Replay produces no extra revision, holder or outbox event. A conflicting retry preserves the prior committed result. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R094.5 Served lossless round trip Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Served lossless round trip.** Model: The fixture includes nested values, extensions, nulls, Unicode and exact numbers. Behavior: Export, modify, reimport, restart and independently read the native blueprint. Wiring: Exercise the generated public operations through `src/server/handlers/admin/agent.rs:142` and verified content serving. Refusal: Any field loss, silent schema migration or unauthorized mutation fails. Evidence: The new revision contains the one intended change and all unchanged values. | Proposed test: `tests/test_prompt_blueprints_served.py::test_blueprint_roundtrip_restart`. The new revision contains the one intended change and all unchanged values. Stale import and denied-tenant cases preserve both historical and current readback. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R094.6 Optimization proposals carry no authority Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Optimization proposals carry no authority.** Model: A proposal pins the source revision, proposed payload digest and comparison evidence. Behavior: Store or export a proposal without treating it as publication authority or a repository write grant. Wiring: Extend `crates/eg-types/src/agent_component.rs`; consume existing policy admission in `src/server/handlers/admin/agent.rs:142`. Refusal: A proposal cannot supply its own approval, actor scope or permission. Evidence: Authorized graph adoption uses the normal publication boundary and records the source revision. | Proposed test: `tests/test_prompt_blueprints_served.py::test_prompt_proposal_has_no_authority`. Authorized graph adoption uses the normal publication boundary and records the source revision. A proposal alone causes no active-head change, model dispatch or external write. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R094.7 Approved repository-source effect dependency Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Approved repository-source effect dependency.** Model: The external effect binds repository, path, base revision, payload digest, approved actor and receipt. Behavior: Retain SDK execution and GraphOS authorization as prerequisites; never implement a filesystem writer inside EG. Wiring: R094.2 supplies the export. Consume SDK-GOVERNED-WRITEBACK-R004.5 through R004.12 and GRAPHOS-FLEET-R003.4 through R003.10; plan.md pins both merged definitions. Refusal: Missing approval, stale source base, path escape and unbound receipts prevent an external effect. Evidence: A real authorized producer journey writes only the approved source and returns a bound receipt. | Proposed test: `tests/test_prompt_blueprints_served.py::test_approved_source_effect_dependency`. A real authorized producer journey writes only the approved source and returns a bound receipt. Absent producers leave this acceptance unfulfilled; graph persistence cannot substitute. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R095 GraphSchema attach exposes snapshot staleness Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**GraphSchema attach exposes snapshot staleness.** Attaching a graph schema to another graph produces a snapshot, and the schema's staleness relative to its source is visible to readers rather than silently assumed current. | A contract test attaches a graph schema, mutates the source, and asserts the staleness indicator reflects the divergence. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 f4744679fab0 |
| EG-TYPED-PACKS-R096 Connector-pack reprojection with bounded, isolated aggregates Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Connector-pack reprojection with bounded, isolated aggregates.** handlers/admin/connector_pack/reproject.rs and the persistence/connector_pack, persistence/connector_pack/commit, and persistence/connector_pack/projection modules reproject a connector pack's committed head with bounded per-document aggregates and blank-node isolation across reprojected documents, and a reprojection survives a restart without losing a prior commit or looping. | Restart-replay and no-loop tests covering the reproject and persistence modules assert bounded aggregation, blank-node isolation, and idempotent recovery after restart. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 d76ac1402723 |
| EG-TYPED-PACKS-R097 Domain vocabularies ship as typed domain packs Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Domain vocabularies ship as typed domain packs.** Human-resources, legal, medical and government domain vocabularies — classes, enumerations, properties and their alignment to upper ontologies — are published as typed, versioned domain packs through the pack import boundary, so any agent or connector reads one governed definition from the engine instead of carrying its own model classes. Agent Utilities' `domains/hr`, `domains/law`, `domains/medical`, `domains/government` and `models/domains` modules are the source material and are deleted there once the packs are published and their callers read the packs. Rollup: delivered by its child requirements, one per domain plus the cutover. | Pack validation and import tests pass for each domain pack, a round-trip test shows the published classes and enumerations match the source declarations, and a caller census shows no remaining import of the retired model modules. | requirement | EG-TYPED-PACKS | SPECIFIED | 6a1a0e46d99f 90f5578ae2f4 |
| EG-TYPED-PACKS-R097.1 HR domain vocabulary ships as a typed domain pack Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**HR domain vocabulary ships as a typed domain pack.** The human-resources domain vocabulary — classes, enumerations, properties and alignment to an upper ontology — is modeled as one typed, versioned `DomainPack`, drawn from `crates/eg-core/ontology/hr-v1.ttl`. The pack validates its own internal consistency (no empty, duplicate or dangling-reference declarations) before any later wiring through the pack import boundary. | A validation test proves a well-formed HR pack passes and each malformed case (no classes, duplicate class, dangling property domain) is refused, and a round-trip test shows the published classes and enumerations match the source declarations. | requirement | EG-TYPED-PACKS | LANDED | 6a1a0e46d99f |
| EG-TYPED-PACKS-R097.2 Domain crosswalks and exact unmapped-class reports (rollup) Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Domain crosswalks and exact unmapped-class reports (rollup).** Extend R097 with medical, technology and labor crosswalks to SKOS and Schema.org. Reuse R071.1 records and keep ontology authority inside EG. Children `.1` through `.6` define this contract. | All six children require served acceptance. Domain model validation alone does not close this rollup. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.1 Model Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Model.** Extend `DomainPack` with versioned crosswalks and `CrosswalkCoverage{declared,mapped,unmapped,source_digest}`. Each unmapped item carries its class IRI and `NoDeclaredMapping` reason. Add `Technology` to `DomainPackKind`; labor uses existing `Hr`, and medical uses existing `Medical`. Preserve the existing HR model and its validation. | Round-trip the three domain fixtures. Unknown domain kinds and coverage entries outside the declared class set refuse. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.2 Behavior Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Behavior.** Compute coverage over every class declared by the selected pack revision. A class is mapped only when it has a validated declared crosswalk. Return the exact sorted set difference as unmapped classes. Missing mappings never infer equivalence or import external authority. Reuse R071.1 bounds and typed vocabulary generation. | Medical, software/technology and HR/labor fixtures each include mapped and unmapped classes. Reordering input preserves coverage and generated bytes. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.3 Wiring Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Wiring.** Extend `validate_and_commit` in `src/server/handlers/admin/connector_pack/import.rs:45` before publishing a pack head. Its production caller is `serve_import` in `src/server/handlers/admin/connector_pack.rs:132`. Validate crosswalks again at `src/server/graph_schema.rs::apply_pack_source` before activating schema. Extend the existing served `OntologyInspect` result with revision-bound coverage. The domain-to-import crosswalk path does not exist today; this row creates the call site. | A signed domain pack reaches import, schema attachment and inspection. Reports must match the imported revision, not a separate helper fixture. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.4 Refusal Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Refusal.** Missing mappings produce explicit unmapped results and never count as full coverage. Invalid mappings use R071.1 typed refusals and block pack publication or schema activation. Source resolution uses the selected pack revision, not the global class catalog. Unknown or out-of-scope sources never become unmapped entries. Reject stale vocabulary revisions and caller-forged origin or coverage with `CROSSWALK_REVISION_MISMATCH` or `CROSSWALK_EVIDENCE_INVALID`. | Refused imports preserve pack heads, receipts and active schema digests. An unmapped class stays declared and appears once in coverage. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.5 Evidence Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Evidence.** Bind coverage to tenant, graph, pack digest, pack revision, target vocabulary revision and committed schema digest. Return exact mapped and unmapped class sets with reasons and declared totals. Source connectors only supply candidate data; EG validates and records authority. | Independent pack-status and schema reads agree with coverage. A caller cannot substitute a report from another tenant or revision. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.6 Hot-path proof Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Hot-path proof.** Entry point: authenticated `ConnectorPack.Import`, schema attachment, `OntologyInspect` and `GraphSchemaClasses` through the generated client. `tests/test_ontology_crosswalk_served.py::test_domain_coverage_and_refusals` loads medical, technology and labor fixtures. It exercises unmapped results, unknown and out-of-scope source classes, conflicting mappings, stale revisions, category violations and restart readback. | The real server returns exact coverage and declared mappings. Independent reads prove rejected imports cannot change committed state. No helper-only result establishes acceptance. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R098 Ontology inspection method and inline data triples for validation Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Ontology inspection method and inline data triples for validation.** The engine serves a read-only OntologyInspect method that parses caller-supplied or composed schema sources and returns a typed inspection report of the classes, properties and shapes they declare, and ShaclValidate accepts data triples supplied inline in the request so a caller can validate triples it holds without first writing them to a graph. Both are part of the generated wire contract and available from the Python client. | Handler tests cover inline, composed and source-filtered inspection and a malformed-source refusal; a validation test proves inline data triples are validated without any graph write; the read-classification partition test includes the new method; a Python client test calls both through the generated sender. | requirement | EG-TYPED-PACKS | LANDED | 90f5578ae2f4 cc6536f05e17 |
| EG-TYPED-PACKS-R099 Best-matching prototype by cosine similarity in the numeric kernel Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Best-matching prototype by cosine similarity in the numeric kernel.** The in-process numeric extension exposes best_cosine_prototype(query, prototypes), returning nothing when no prototype has a strictly positive cosine with the query and otherwise the index of the first prototype with the maximum positive cosine together with that score. Empty and zero vectors yield no match, a prototype whose length differs from the query is refused with a shape error unless it is all zero, non-finite inputs follow the numeric kernel's existing policy, and the binding enforces the kernel's aggregate input bounds. It is an in-process function, not an engine wire method. | Rust unit tests cover first-wins positive maximum, empty, zero and negative cases and ragged shapes; installed-binding Python tests cover the same behaviours, the aggregate input limits and the call shape used by the downstream semantic client. | requirement | EG-TYPED-PACKS | VERIFIED | 157b4417eb24 3fe75684934d 90f5578ae2f4 crates/eg-numeric/src/prototype.rs:45 crates/eg-numeric/src/prototype.rs:60 crates/eg-numeric/src/prototype.rs:70 |
| EG-TYPED-PACKS-R100 Skill packages are rendered on demand from graph content (rollup) Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Skill packages are rendered on demand from graph content (rollup).** The engine renders a skill package from the content and ontology references held in the graph, so the package tracks the latest ingest. Children .1-.6. | Rollup closes when children .1-.6 are verified. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.1 Model Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Model.** Add `RenderedSkillPackage` in new file `crates/eg-types/src/fleet_catalog/rendered.rs`. It carries the skill uri, the content digest, the ontology references used and the graph revision it was rendered from. Owner: epistemic-graph. | `crates/eg-capabilities/tests/skill_package_regeneration.rs::rendered_package_round_trip`. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.2 Behavior Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Behavior.** Add `render_skill_package(entry, graph) -> RenderedSkillPackage` in `src/server/dispatch/consensus/fleet_catalog/rendered.rs`. Each rule is a named, replaceable default: include the skill body, the ontology terms it references, and the code delta since the last render. Owner: epistemic-graph. | `crates/eg-capabilities/tests/skill_package_regeneration.rs::render_reflects_latest_ingest`. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.3 Wiring Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Wiring.** Call `render_skill_package` from `skill_row` at `src/server/dispatch/consensus/fleet_catalog/project.rs:271`. The fleet catalog listing calls `skill_row` for every skill in production. The package is rendered on read and never cached. Owner: epistemic-graph. | `crates/eg-capabilities/tests/skill_package_regeneration.rs::catalog_listing_renders_current_content`. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.4 Refusal Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Refusal.** `render_skill_package` must return the typed refusal `RenderRefusal::DanglingOntologyRef` when a referenced term is absent from the graph. The row must stay listed without a package. Owner: epistemic-graph. | `crates/eg-capabilities/tests/skill_package_regeneration.rs::dangling_reference_is_refused`. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.5 Evidence Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Evidence.** Each rendered package must carry the graph revision and the content digest. A reader tells whether two renders came from the same revision. Owner: epistemic-graph. | `crates/eg-capabilities/tests/skill_package_regeneration.rs::render_carries_revision_and_digest`. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.6 Hot-path proof Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Hot-path proof.** Entry point: the fleet catalog list wire method. The test ingests a skill, lists it, changes the referenced code, ingests again and lists again. It must observe a new digest and revision on the second listing. Owner: epistemic-graph. | `crates/eg-capabilities/tests/skill_package_regeneration.rs::list_after_reingest_returns_new_digest`. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.7 Exact rendered-package validation gate Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Exact rendered-package validation gate.** Extend the existing `render_skill_package`/fleet-catalog `skill_row` path: before a rendered candidate is exposed as publishable, bind a `RecordedRunValidationV1` to `{tenant_id, skill_iri, candidate_revision, package_content_digest, graph_revision, validation_policy_ref:{policy_iri, policy_revision}, run_set_complete, run_set_digest, run_refs:[{run_ref, package_content_digest, graph_revision, policy_revision, outcome, evidence_digest}], verdict, evaluator_ref}`. `run_refs` are unique and sorted by `run_ref`; `run_set_digest` hashes their canonical encoding. Every run must attest the same package digest/graph revision and policy revision; `run_set_complete` must be true. A missing, failed, stale, cross-tenant, partial, or mismatched receipt returns a typed refusal and no publishable package; preserve R100 dangling-reference behavior and do not duplicate the existing rendered package revision/digest. `skill_row` remains the existing projection/attach point; AU `record_outcome`/`SkillGraphPipeline` is the candidate source, while EG checks receipt binding. Preserve `AU-HARNESS-R022.2/.5/.6`, `AU-HARNESS-R004.1`, and `EG-TYPED-PACKS-R100.1/.5/.6`. Owner source hash: `96ff38761f9e21d52f608ba593c902aff4c93ca7b1ed13088ad39efd3e968a3a`. **Hold:** those AU rows do not define a recorded-run validation operation, exact receipt producer/fields, or the policy's pass criterion/run-set selection. AU must publish that producer contract before a positive publication path can be closed; absent receipt already refuses. This row remains SPECIFIED. | Planned acceptance: an exact-package passing receipt admits the catalog candidate; absent receipt and each digest/revision/policy/tenant mismatch, partial run set, or failing verdict suppresses the package with a typed refusal. Verify R100.4 dangling ontology behavior remains. The positive AU producer journey is held until its exact owner operation and validation rubric are defined; no runtime or served receipt is claimed. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R097.2.7 Directional external-schema import and complete unmapped-term report Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Directional external-schema import and complete unmapped-term report.** Extend `ConnectorPack.Import::validate_and_commit` before pack-head commit and `apply_pack_source` before schema activation for the external-to-platform direction. A pinned `ExternalTermMappingV1` binds `{source_schema_digest, source_revision, external_iri, external_kind, platform_iri, platform_kind, mapping_revision}`. The closed supported source kinds are `Class`, `ObjectProperty`, `DatatypeProperty`, `AnnotationProperty`, and `NamedIndividual`; an enumeration is represented by its class plus named individuals. The importer identity is server-stamped from the authorized `ConnectorPack.Import` request; only a declared mapping with kind-compatible platform target is adopted, and it preserves the original external IRI/kind as provenance. `ExternalOntologyCoverageV1` is `{source_schema_digest, source_revision, pack_revision, schema_revision, mapping_revision, platform_vocabulary_revision, terms, coverage_digest}`; `terms` are sorted `{external_iri, kind, result: Mapped{platform_iri, provenance_digest} | Unmapped{reason: NoDeclaredMapping}}` for every declared term; unmapped terms are reported and not added as platform terms, while a pack with partial coverage may still commit under existing R097.2 rules. Refuse malformed/duplicate terms, incompatible mappings, unknown kinds, forged or stale revisions, and mappings outside the pinned source schema before mutation. Serve full per-term coverage from existing `OntologyInspect`; independently read `GraphSchemaClasses` to verify adopted classes and that unmapped classes were not activated. This is directional ingestion; R071.1's EG-class-to-external-vocabulary links do not imply reverse normalization and remain unchanged. Preserve `EG-TYPED-PACKS-R051`, `EG-UNIFIED-DATA-PLANE-R005/R037`, `EG-TYPED-PACKS-R071.1.1-.6`, and `EG-TYPED-PACKS-R097.2.1-.6`. Owner source hash: `318723aee15c476039eca669a3230b206532c0c704b37efad5a7c49690bbb9c2`. This remains SPECIFIED. | Planned acceptance: import a pinned schema with mapped and unmapped instances of every supported kind; independently inspect the committed revision and verify exact sorted coverage, mapped target and source provenance, with unmapped terms absent from active schema. Refuse unsupported kind, duplicate IRI, kind mismatch, stale map/schema, out-of-scope source and forged report with no change to pack head or active schema. Reordered inputs produce identical coverage and digest. No runtime or served result is claimed. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.8 Lossless versioned workflow RDF export/import Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Lossless versioned workflow RDF export/import.** Define `WorkflowRdfDocumentV1` as `{workflow_iri, skill_iri, workflow_revision, workflow_version, stored_version_ref, graph_revision, ontology_revision, canonical_nquads, dataset_digest, serializer_id, serializer_version}` and expose `ExportWorkflowRdfV1(workflow_iri, requested_workflow_version, stored_version_ref) -> WorkflowRdfDocumentV1` plus `ImportWorkflowRdfV1(document) -> WorkflowImportReceiptV1{workflow_iri, committed_workflow_revision, graph_revision, dataset_digest, importer_id}` in the existing skill-package owner. Export serializes every workflow statement, named-graph identity, literal datatype/language and referenced ontology IRI as canonical N-Quads using the document-pinned serializer; `dataset_digest` is SHA-256 of those canonical UTF-8 bytes. Import validates that digest and graph isomorphism, then restores the exported dataset without dropping unknown workflow predicates. Attach the export to the existing R100 skill rendering/catalog path; import is admitted through the existing graph write boundary and returns the committed workflow revision. An export-time version check must refuse when the exported workflow version is not strictly newer than the stored workflow version. Preserve `EG-TYPED-PACKS-R051/R090/R100.1-.6`. Owner source hash: `620b1ae05d8e35696c7522f207672ef6f374525004d5488fe62fb4b27fc6cf5a`. **Hold:** reviewed evidence does not identify which persisted workflow/version record is the comparison baseline, the version ordering grammar, or the existing R100 consumer operation that imports these documents. Keep the export-time comparison requirement; do not move it to import. The row remains SPECIFIED pending that owner decision and exact attach-point link. | Planned acceptance: round-trip a workflow containing named graphs, typed and language-tagged literals, ontology references and an unknown workflow predicate; compare canonical dataset digest and graph isomorphism. Tampered digest, malformed RDF, unresolved references and unsupported serializer version refuse without graph mutation. At export, equal/older versions refuse and newer passes once the stored-version baseline/order is resolved. The version-baseline/consumer-link cases remain held; no implementation or receipt is claimed. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R069.100 Semantic fingerprint separates cosmetic from structural repository changes Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Semantic fingerprint separates cosmetic from structural repository changes.** Define `FingerprintIdentityV1` as repository id, branch/ref id, normalized path, commit/source revision, blob/raw digest, language id, parser implementation/version, normalization-policy revision and grammar digest. The versioned profile registry lists each supported language and trivia/comment forms removed from its canonical token stream; strings, literals, token order and all non-trivia tokens are preserved. Hash canonical tokens together with language/parser/profile versions. Unsupported languages use raw-content digest and are never classified as cosmetic. A full no-op is allowed only when the complete identity and profile revision match an already committed binding. Same bytes at a new branch, path or source revision are a new binding and must update source revision/provenance; parsed tokens may be reused only if language/parser/profile identity matches. Parser/profile revision changes force reparse and recompute before deciding graph mutation; always persist the new source binding even when semantics are unchanged. SDK transports raw revision/digest only; EG owns semantic classification. Producer/consumer boundary: RepositorySnapshotProvider -> SDK transport -> generated `IndexRepository` -> EG parser/index mutation; R079 embedding dedupe is not structural-mutation suppression. Preserve existing parent obligations `EG-TYPED-PACKS-R069`, `EG-REPO-INGEST-R006`, `SDK-SOURCE-INGEST-R004`. Source record AU:69 SHA-256 `8ca81dc16448fefc73440f2eb9ea07b2e433f7e38075563f86800071029846e9`; parent R069 remains unchanged. Planned proving tests (names only; not present or executed evidence): `tests/typed_packs/test_repository_fingerprint_identity_served.py::test_source_identity_profile_drives_mutation_decision`, `tests/typed_packs/test_repository_fingerprint_identity_served.py::test_unsupported_language_uses_raw_digest_only`. | Planned served acceptance: Same full identity/profile is idempotent. Same blob at a new branch or path creates the new source binding and provenance while reusing parse output only under identical parser/profile. A changed parser/profile reparses and re-fingerprints even when raw bytes match. Cosmetic-only change updates source revision/provenance without semantic graph mutation; structural change mutates semantic graph. Planned tests separately assert source-binding and semantic-graph revisions for each case; no implementation or runtime receipt is claimed. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.100 Lossless SKILL.md frontmatter and step editing round trip Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Lossless SKILL.md frontmatter and step editing round trip.** Define an edit representation bound to the original SKILL.md byte digest, source revision, frontmatter field spans, step spans, line endings and unknown/custom-field spans. Apply edits as bounded source-range patches; do not parse and reserialize the entire document. Preserve all untouched bytes, ordering, spacing, comments, line endings and unknown frontmatter fields; emit new content digest and source provenance. Continue to enforce R019 SKILL.md-only import and R029 restricted YAML validation. Producer/consumer boundary: EG owns skill parse/admission and R100 rendering; SDK owns source transport/edit write-back edge. No prompt blueprint or whole-document normalization path is substituted. Preserve existing parent obligations: `EG-TYPED-PACKS-R019; R029; R100.1-.6; SDK source-ingestion owner`. Source record `AU:90` SHA-256 `1b717c4a284896dbf8c7b4fb1f00ebba80fa6a75e930a020c5bc01706634f582`; parent `R100` remains unchanged. Planned proving tests (names only; not present or executed evidence): `tests/typed_packs/test_skill_lossless_edit_served.py::test_frontmatter_and_step_edits_preserve_unmodified_bytes`, `tests/typed_packs/test_skill_lossless_edit_served.py::test_stale_or_ambiguous_edit_refuses_before_write`. | Planned served acceptance: Served export/edit/reimport test changes one frontmatter value and one step while asserting all non-target byte ranges, custom fields, comments, spacing, ordering and CRLF/LF style are identical. Malformed anchors, overlapping patches, stale source digest and unknown edit spans refuse without write. Prompt-blueprint JSON roundtrip is not accepted as evidence. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R100.101 Skill consumer compatibility and declared-migration admission Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Skill consumer compatibility and declared-migration admission.** Define an admission record bound to prior/new skill content digests, consumer-declared input/output behavior contract revisions, observed consumer cohort, compatibility verdict, migration id/digest and admission revision. Compatibility is checked against consuming-code behavior, not package version equality, contract-pin equality, endpoint certification or dependency digest alone. A breaking change is refused before publication/invocation unless a declared migration is bound to the exact old/new digests and consumer contract and its migration receipt passes. Producer/consumer boundary: EG skill package read/admission -> GraphOS invoke certification and consumer code; GraphOS owns its invocation gate. Do not equate existing version/dependency pins with compatibility. Preserve existing parent obligations: `EG-TYPED-PACKS-R100.1-.6; GRAPHOS-FLEET-R034.7-.10`. Source record `AU:98` SHA-256 `531cb0ba1accd9e88833249fb253a9f5f7a3c1a911f653b3c9a5bfc42341f978`; parent `R100` remains unchanged. Planned proving tests (names only; not present or executed evidence): `tests/typed_packs/test_skill_compatibility_admission_served.py::test_breaking_upgrade_requires_exact_consumer_migration`, `tests/typed_packs/test_skill_compatibility_admission_served.py::test_changed_consumer_contract_invalidates_admission`. | Planned served acceptance: Serve compatible upgrade, breaking upgrade without migration (refused before effects), and breaking upgrade with exact declared migration. Changing a consumer contract, package digest or migration receipt invalidates admission. Keep historical package readable and read back the admitted new version only after validation. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R001.100 Versioned nested prompt/tool schemas with incremental compatibility Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Versioned nested prompt/tool schemas with incremental compatibility.** Extend existing ConnectorPack prompt and tool definition entries with explicit schema version, nested field schema, required/optional status and compatibility revision. Incremental evolution records base digest, changed paths and compatibility verdict; additive optional fields may be admitted only when consumer policy says compatible, while removed/changed required fields refuse before publication. Pack index/entry digest rules remain canonical. SDK owns tool execution/schema compatibility authority; EG records and serves the versioned declaration and does not authorize SDK calls. Producer/consumer boundary: EG ConnectorPack typed authority -> generated public pack APIs; SDK retains tool compatibility and execution authority. Preserve R001 index/entry/section/annotation and digest contract. Preserve existing parent obligations: `EG-TYPED-PACKS-R001.1-.5; SDK-CONNECTOR-CONTROL-R003; GRAPHOS-FLEET-R002.3-.6`. Source record `AU:52` SHA-256 `e03b25156a4f84d27c4afba63d0cd9e526b549b5905994a53664d193416d048c`; parent `R001` remains unchanged. Planned proving tests (names only; not present or executed evidence): `tests/typed_packs/test_connector_nested_schema_served.py::test_nested_schema_evolution_preserves_digest`, `tests/typed_packs/test_connector_nested_schema_served.py::test_incompatible_nested_schema_refuses_before_dispatch`. | Planned served acceptance: Round-trip nested schemas and version metadata through generated clients and canonical digest vectors. Test additive optional-field evolution, required-field removal, incompatible type change, stale base digest and unknown nested fields. Verify SDK authority remains separate and no tool dispatch occurs from pack admission. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R072.100 Workflow registration and invocation through typed registry Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Workflow registration and invocation through typed registry.** Extend the typed fleet catalog with workflow registration identity, version/content digest, owner/tenant scope, schema and lifecycle state. Registration is persisted through the existing SourceIngest authority; invocation resolves by registry id and exact admitted revision rather than a caller-supplied body. Unknown, withdrawn, stale or unauthorized workflow ids refuse before execution. Engine/client initialization remains lazy at the AU first-use boundary and is not performed at registration or process startup. Producer/consumer boundary: EG typed registry and SourceIngest R002 own durable registration; AU owns lazy client initialization/execution; preserve GRAPHOS-HOST-R022 workflow-store semantics. Preserve existing parent obligations: `EG-TYPED-PACKS-R072; EG-REPO-INGEST-R002; AU-CONTROL-R037.5; GRAPHOS-HOST-R022`. Source record `AU:97` SHA-256 `f73767d1a3fdba29a702254ed1db2c9904158b6136f6f4b38a3c9a0d3e4fcb03`; parent `R072` remains unchanged. Owner prerequisite: AU-CONTROL-R037.5 only fills a requirement gap; it does not define lazy initialization timing, the first-use operation, or the execution receipt. No exact AU companion requirement ID is identified. Keep that consumer as an explicit hold until its owner publishes the operation and receipt; no invocation evidence is claimed. Planned proving tests (names only; not present or executed evidence): `tests/typed_packs/test_workflow_registry_served.py::test_registration_is_lazy_and_invokes_exact_revision`, `tests/typed_packs/test_workflow_registry_served.py::test_unknown_withdrawn_or_stale_registry_id_refuses`. | Planned served acceptance: Served registry tests register/read a workflow, prove no eager AU engine initialization, prove one initialization on first invocation, invoke by registry id, and refuse unknown/withdrawn/stale ids with no run. Read back registry and invocation receipt independently. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-TYPED-PACKS-R071.100 Canonical shared hierarchical concept paths across repositories Definition — EG-TYPED-PACKS / EG-TYPED-PACKS — Typed packs and catalog authorityCanonical requirement and verification source**Canonical shared hierarchical concept paths across repositories.** Define one versioned concept-path grammar and canonicalization rule shared by EG vocabulary producers, with stable segment identity, parent path and canonical concept IRI. Admission resolves the entire path against the pinned vocabulary revision and checks repository-wide uniqueness plus parent/child consistency. Duplicate aliases, a path that contradicts an existing parent/child relationship, or two IRIs for the same canonical path refuse with the conflicting ids; existing published ontology IRIs remain unchanged and are crosswalked rather than rewritten. Producer/consumer boundary: EG vocabulary validation owns canonical identity; repository producers submit proposed paths. Preserve existing published IRIs and federated query vocabulary. Preserve existing parent obligations: `EG-TYPED-PACKS-R071 existing generated ontology corpus; EG-DATAPLAT-VOCAB-R001.1/.4; EG-FEDERATED-QUERY-R011`. Source record `EG:8` SHA-256 `525e39d1d194ac8a820bbd741a1c261ceab0c7d564981c33c731c06c1eb641d8`; parent `R071` remains unchanged. Owner decision hold: the canonical segment grammar is not approved for separators/escaping, Unicode normalization, case, or whitespace. Keep admission SPECIFIED until the vocabulary owner publishes one versioned grammar shared by producers; preserve existing published IRIs. Planned proving tests (names only; not present or executed evidence): `tests/typed_packs/test_concept_path_admission_served.py::test_owner_approved_path_grammar_is_shared`, `tests/typed_packs/test_concept_path_admission_served.py::test_duplicate_or_conflicting_paths_refuse_without_iri_changes`. | Planned served acceptance: Cross-repository fixtures admit a new unique path and refuse duplicate canonical path, alias collision, incompatible parent assignment and stale vocabulary revision. Read back canonical path and unchanged published IRIs; retain R071 generated ontology authority and R001.4 digest vectors. Owner-source review only; no runtime/test receipt is inferred. | requirement | EG-TYPED-PACKS | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE EG-UNIFIED-DATA-PLANE — Unified data plane | spec | None | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R001 Record attached-source and native-hosting architecture decisions Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Record attached-source and native-hosting architecture decisions.** EG documents, as approved architecture decision records, that attached third-party sources are the default integration path, that EG remains the single converged query engine, that native hosting is earned per application through a defined gate, the router's consistency contract, and the scope boundary of the pgrx companion. | Review of the merged architecture decision records confirms each decision is recorded and accepted. | requirement | EG-UNIFIED-DATA-PLANE | LANDED | 1f6d512ae013 3dd56fe53283 5a4a0b3d4936 7e14801e08c3 9a85c8a49fd4 |
| EG-UNIFIED-DATA-PLANE-R002 Unify attached-source registration into one owner-scoped registry (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Unify attached-source registration into one owner-scoped registry (rollup).** EG provides a single owner-scoped attached-source registry that replaces the separate eg-plan ForeignSourceSpec::Sql, OBDA external_sources, and kernel mirror-target registrations, backed by a dialect-adapter contract covering the driver, SQL rendering, catalog reader, change capture, and type map. Credentials are resolved only by secret reference, and registration verifies the outbound target before persistence. This row is a rollup, split by code root into `EG-UNIFIED-DATA-PLANE-R002.1`, `.2` and `.3`; it is LANDED only when all three children are LANDED. | Integration tests show SQL, OBDA, change capture, and mirror paths all resolve through the same registered source, and registration of an unverified or cross-owner endpoint fails closed. | requirement | EG-UNIFIED-DATA-PLANE | LANDED | 23ba8c7eab2a 64f76c5b3209 d603182af742 dc9533466828 e8695518196e |
| EG-UNIFIED-DATA-PLANE-R002.1 Verify the outbound target before persisting a `ForeignSourceSpec::Sql` registration (producer path) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Verify the outbound target before persisting a `ForeignSourceSpec::Sql` registration (producer path).** `ForeignSourceCatalog::register` runs the existing SSRF-sensitive destination gate (`eg_plan::federation_ssrf::check_sql_dsn`) against a `Sql` spec's DSN before the entry is inserted, so a registration naming a disallowed address never reaches the catalog. Depends on none (producer; `check_sql_dsn` and the owner-scoped catalog already exist). | A unit test registers a `Sql` spec whose DSN names a disallowed destination and confirms the catalog holds no entry for it afterward; a spec naming an allowed destination still registers. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 23ba8c7eab2a 3dd56fe53283 b28c6e06c13a d603182af742 src/server/foreign_catalog.rs:402 src/server/foreign_catalog.rs:425 |
| EG-UNIFIED-DATA-PLANE-R002.2 Verify the outbound target before persisting an OBDA `external_sources` registration (consumer path) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Verify the outbound target before persisting an OBDA `external_sources` registration (consumer path).** The OBDA table-source handler (`src/server/handlers/rdf/obda.rs::register_table_sources`) runs the same destination gate against each `ObdaExternalSource`'s DSN before registering it into the `ObdaSourceRegistry`, so OBDA registration fails closed exactly like the SQL federation path. Depends on `EG-UNIFIED-DATA-PLANE-R002.1` (reuses its verification call). | A unit test feeds `register_table_sources` an entry whose DSN names a disallowed destination and confirms the registry holds no source for it afterward; a disallowed entry does not block registering the other, allowed entries in the same call. | requirement | EG-UNIFIED-DATA-PLANE | LANDED | 23ba8c7eab2a b28c6e06c13a |
| EG-UNIFIED-DATA-PLANE-R002.3 Verify the outbound target before persisting a kernel mirror-target registration (sink path) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Verify the outbound target before persisting a kernel mirror-target registration (sink path).** Once `EG-DURABLE-KERNEL-R024` lands a per-target mirror-sink registration (today `CdcHub` holds one process-global `ExternalCdcSink`, not a registry), that registration path runs the same destination gate before a mirror target is persisted. Depends on `EG-UNIFIED-DATA-PLANE-R002.1` and the same-repo `EG-DURABLE-KERNEL-R024` (status: BUILDING — the mirror-target registration concept does not exist yet, so this child has no code root to verify against today). | A unit test registers a mirror target whose destination is disallowed and confirms the sink registry holds no entry for it afterward. | requirement | EG-UNIFIED-DATA-PLANE | LANDED | 9a7674d1bae5 |
| EG-UNIFIED-DATA-PLANE-R003 Extract typed, hashed catalog graphs per dialect Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Extract typed, hashed catalog graphs per dialect.** Each dialect adapter's catalog reader extracts tables, columns, keys, foreign keys, indexes, views, enums, and JSON columns into a versioned, typed, hashed schema graph, and every catalog artifact has a named OBDA or schema_context consumer. Net-new (no catalog-graph type existed on main): split per the net-new rule. `.1` is the typed catalog-graph model and its hash. Rollup: LANDED only once every child is. | A golden test confirms repeated catalog reads against the same source produce a stable hash and ordering. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 37003f28164f 8ef8d8e817b7 dc9533466828 |
| EG-UNIFIED-DATA-PLANE-R003.1 `AttachedCatalogGraph` is a versioned, typed catalog with a reorder-stable content hash, refusing an ambiguous duplicate table name Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`AttachedCatalogGraph` is a versioned, typed catalog with a reorder-stable content hash, refusing an ambiguous duplicate table name.** `crates/eg-types/src/attached_catalog.rs` hashes a catalog's tables and columns after sorting them, so two reads of the same unchanged catalog in a different discovery order hash identically, and refuses a catalog naming the same schema-qualified table twice. | Verified by unit tests: the hash is stable under table/column reordering, changes when the catalog changes, and a duplicated schema-qualified table name is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 dc9533466828 crates/eg-types/src/attached_catalog.rs:117 crates/eg-types/src/attached_catalog.rs:145 crates/eg-types/src/attached_catalog.rs:159 crates/eg-types/src/attached_catalog.rs:173 |
| EG-UNIFIED-DATA-PLANE-R004 Infer schema structure deterministically from attached catalogs Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Infer schema structure deterministically from attached catalogs.** EG profiles attached-source columns and infers JSON shapes under a bounded, policy-gated sampling budget, discovers inclusion and functional dependencies with supporting evidence, and groups related tables using Leiden community detection with a fixed seed. Net-new (no sampling-budget type existed on main): split per the net-new rule. `.1` is the typed sampling-budget model. Rollup: LANDED only once every child is. | A deterministic test fixture produces identical dependency and grouping results across repeated runs. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 197081533292 8ef8d8e817b7 |
| EG-UNIFIED-DATA-PLANE-R004.1 `ColumnSamplingBudget` is a bounded, policy-gated row/byte budget, refusing a zero or unbounded declaration Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ColumnSamplingBudget` is a bounded, policy-gated row/byte budget, refusing a zero or unbounded declaration.** `crates/eg-types/src/schema_inference.rs` refuses a sampling budget declaring zero rows, zero bytes, or more rows than a fixed ceiling, so JSON-shape profiling can never run with an effectively unlimited budget. | Verified by unit tests: a budget within bounds validates, and a zero-row, zero-byte, or over-ceiling budget is each refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 8ef8d8e817b7 crates/eg-types/src/schema_inference.rs:101 crates/eg-types/src/schema_inference.rs:65 crates/eg-types/src/schema_inference.rs:75 crates/eg-types/src/schema_inference.rs:88 |
| EG-UNIFIED-DATA-PLANE-R005 Compile approved relational mappings to named R2RML virtual graphs Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Compile approved relational mappings to named R2RML virtual graphs.** EG proposes ontology mappings deterministically first, allows a model to suggest additional mappings as proposals only, and compiles approved mappings to R2RML stored as versioned, server-side named virtual graphs queryable by name from SPARQL, UQL, and REASON. Net-new (no mapping-approval type existed on main): split per the net-new rule. `.1` is the typed approval-state model. Rollup: LANDED only once every child is. | A test confirms an unapproved or model-only mapping cannot be queried, while an approved mapping answers a known query by name. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 197081533292 545b68818f0b 79ba71d072a5 |
| EG-UNIFIED-DATA-PLANE-R005.1 `VirtualGraphMapping` carries a typed approval state, refusing a query against a proposed or model-suggested mapping Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`VirtualGraphMapping` carries a typed approval state, refusing a query against a proposed or model-suggested mapping.** `crates/eg-plan/src/virtual_graph_mapping.rs` returns a mapping's queryable name only when its state is `Approved`. A `Proposed` or `ModelSuggested` mapping's query is refused with a typed error naming its actual state. | Verified by unit tests: an approved mapping's name is queryable, and a proposed or model-suggested mapping is each refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 197081533292 3dd56fe53283 crates/eg-plan/src/virtual_graph_mapping.rs:80 crates/eg-plan/src/virtual_graph_mapping.rs:87 crates/eg-plan/src/virtual_graph_mapping.rs:96 |
| EG-UNIFIED-DATA-PLANE-R006 Push down virtual-graph queries to source SQL Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Push down virtual-graph queries to source SQL.** EG renders joins across triples maps on the same source, aggregates, and ORDER BY/LIMIT into native source SQL using typed values rather than text casts, and shows any in-memory fallback explicitly in the query plan. Net-new (no pushdown-decision type existed on main): split per the net-new rule. `.1` is the typed decision/fallback model. Rollup: LANDED only once every child is. | A differential test compares pushed-down query results against the native source and confirms EXPLAIN reports the fallback reason when pushdown is not possible. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 545b68818f0b |
| EG-UNIFIED-DATA-PLANE-R006.1 `PushdownDecision` names an explicit fallback reason, refusing a decision that claims both success and a fallback Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`PushdownDecision` names an explicit fallback reason, refusing a decision that claims both success and a fallback.** `crates/eg-plan/src/pushdown_plan.rs` refuses a decision where `pushed_down` is true alongside a set `fallback_reason`, so EXPLAIN can never report a fallback reason for a fragment that actually pushed down. | Verified by unit tests: a pushed-down decision with no reason validates, a fallback decision validates, and a decision claiming both is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 545b68818f0b crates/eg-plan/src/pushdown_plan.rs:70 crates/eg-plan/src/pushdown_plan.rs:80 crates/eg-plan/src/pushdown_plan.rs:90 |
| EG-UNIFIED-DATA-PLANE-R007 Federate attached tables as DataFusion table providers Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Federate attached tables as DataFusion table providers.** EG exposes attached tables as DataFusion TableProviders with dialect-aware sub-plan pushdown for projection, filter, limit, join, and aggregate operations, reusing the datafusion-table-providers and datafusion-federation crates where their license permits. Net-new (no pushdown-capability type existed on main): split per the net-new rule. `.1` is the typed capability model. Rollup: LANDED only once every child is. | An integration test compares a federated query plan and result against direct execution on the source for each supported pushdown operation. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | bff86f252aa4 e8695518196e |
| EG-UNIFIED-DATA-PLANE-R008 Normalize change capture into a durable, replayable framework Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Normalize change capture into a durable, replayable framework.** Each adapter emits ChangeEnvelope records into CdcHub, which persists a durable position per subscription, replays idempotently after restart, reports lag metrics with guardrails such as a WAL retention cap, and handles keyless tables explicitly. Catalog-drift detection re-runs schema intelligence and flags mappings that the drift breaks. No typed ChangeEnvelope model existed on main; split producer-first: `.1` is the typed model. Known blocker for the full row: depends on `EG-UNIFIED-DATA-PLANE-R002`, itself `BUILDING`. Rollup: LANDED only once every child is. | A fault-injection test stops and restarts capture mid-stream and confirms the replayed result matches a snapshot of the source, with drift detection flagging an affected mapping. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 343ebb9c7c6a 64f76c5b3209 |
| EG-UNIFIED-DATA-PLANE-R008.1 `ChangeEnvelope`/`ChangeOp` are a typed change-capture record and a validated refusal rule, refusing a change with no durable position or a keyed table's update/delete with no key Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ChangeEnvelope`/`ChangeOp` are a typed change-capture record and a validated refusal rule, refusing a change with no durable position or a keyed table's update/delete with no key.** `crates/eg-durable/src/change_envelope.rs` defines the `Insert`/`Update`/`Delete` op enum and the envelope's `source_position`/`table`/`op`/`key`/`table_is_keyless` fields, and `ChangeEnvelope::validate` refuses an empty `source_position` and refuses an `Update`/`Delete` with no `key` unless `table_is_keyless` is set. CdcHub, durable position storage, replay, lag metrics, the WAL retention cap, and catalog-drift detection are out of scope for this child. | Verified by unit tests: a keyed table's insert with no key validates, a keyed table's update with a key validates, an empty `source_position` is refused, a keyed table's update with no key is refused, and an explicitly keyless table's update with no key validates. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 64f76c5b3209 crates/eg-durable/src/change_envelope.rs:113 crates/eg-durable/src/change_envelope.rs:126 crates/eg-durable/src/change_envelope.rs:141 crates/eg-durable/src/change_envelope.rs:157 crates/eg-durable/src/change_envelope.rs:176 |
| EG-UNIFIED-DATA-PLANE-R007.1 `DialectPushdownCapabilities` declares a dialect's supported pushdown operations, refusing an unknown operation name Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`DialectPushdownCapabilities` declares a dialect's supported pushdown operations, refusing an unknown operation name.** `crates/eg-plan/src/federation_capabilities.rs` parses the five named operations (projection, filter, limit, join, aggregate) and refuses the whole capability declaration if any named operation is not one of them. | Verified by unit tests: all five names parse, an unknown name is refused, declaring all valid names succeeds, and one bad name among good ones refuses the whole declaration. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 e8695518196e crates/eg-plan/src/federation_capabilities.rs:106 crates/eg-plan/src/federation_capabilities.rs:71 crates/eg-plan/src/federation_capabilities.rs:85 crates/eg-plan/src/federation_capabilities.rs:92 |
| EG-UNIFIED-DATA-PLANE-R009 Drive consumers from change capture idempotently Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Drive consumers from change capture idempotently.** Change events update the graph through approved mappings, refresh vector and full-text indexes, and emit CEP and outbox events, all idempotent on the source position so a replayed event produces no duplicate effect. Net-new (no idempotent-consumer type existed on main): split per the net-new rule. `.1` is the typed checkpoint/idempotent-apply model. Rollup: LANDED only once every child is. | A replay test re-delivers the same change position and confirms each consumer's state is unchanged. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 79ba71d072a5 |
| EG-UNIFIED-DATA-PLANE-R010 Maintain an accelerated local copy of attached data Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Maintain an accelerated local copy of attached data.** EG maintains an optional cached virtual graph or columnar replica in eg-lake for attached tables, refreshed by change capture under a per-table acceleration policy. Depends on EG-UNIFIED-DATA-PLANE-R008 (change capture), which is being split concurrently. Split per the net-new rule (no typed acceleration-policy model existed on main): `.1` is the typed model. Rollup: LANDED only once every child is. | A restart/failover test shows the accelerated copy reconverges to the source within its declared lag objective. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 343ebb9c7c6a |
| EG-UNIFIED-DATA-PLANE-R010.1 `AccelerationPolicy` is a typed per-table policy, refusing a declaration its own verification could never check Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`AccelerationPolicy` is a typed per-table policy, refusing a declaration its own verification could never check.** `crates/eg-lake/src/acceleration_policy.rs` validates a declared policy names a real table and, when `enabled`, declares a non-zero lag objective — an enabled policy with no declared lag objective cannot be measured against a "reconverges within its declared lag objective" test. A disabled policy may carry `lag_objective_ms == 0`. | Verified by unit tests: an enabled policy with a positive lag objective validates, a disabled policy with `lag_objective_ms == 0` validates, an empty table name is refused regardless of `enabled`, and an enabled policy with `lag_objective_ms == 0` is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 343ebb9c7c6a crates/eg-lake/src/acceleration_policy.rs:110 crates/eg-lake/src/acceleration_policy.rs:72 crates/eg-lake/src/acceleration_policy.rs:83 crates/eg-lake/src/acceleration_policy.rs:94 |
| EG-UNIFIED-DATA-PLANE-R009.1 `ConsumerCheckpoint` applies an incoming position idempotently, refusing an unnamed consumer Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ConsumerCheckpoint` applies an incoming position idempotently, refusing an unnamed consumer.** `crates/eg-durable/src/idempotent_consumer.rs` refuses a checkpoint with no `consumer_id`, and `apply_if_newer` is a no-op on a replayed or stale position rather than reapplying it. | Verified by unit tests: a named checkpoint validates, an empty `consumer_id` is refused, a strictly newer position applies, and replaying the same position a second time is an idempotent no-op. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 79ba71d072a5 crates/eg-durable/src/idempotent_consumer.rs:60 crates/eg-durable/src/idempotent_consumer.rs:66 crates/eg-durable/src/idempotent_consumer.rs:74 crates/eg-durable/src/idempotent_consumer.rs:82 |
| EG-UNIFIED-DATA-PLANE-R011 Route queries by freshness across native, live, and accelerated paths Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Route queries by freshness across native, live, and accelerated paths.** The query router selects between the native store, a live source read, and the accelerated copy based on declared freshness policy, and a client requesting read-your-writes waits for its last committed source position up to a bounded timeout rather than returning a stale result. EXPLAIN reports the selected route. Net-new (no freshness-route type existed on main): split per the net-new rule. `.1` is the typed route/bounded-wait model. Rollup: LANDED only once every child is. | A timeout test confirms a read-your-writes request either waits successfully or fails explicitly, never returning stale data silently, and EXPLAIN output is checked against the actual route taken. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | bff86f252aa4 |
| EG-UNIFIED-DATA-PLANE-R011.1 `ReadYourWritesWait` is a bounded timeout, refusing a zero (unbounded) declaration; `FreshnessRoute` names exactly the three tiers Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ReadYourWritesWait` is a bounded timeout, refusing a zero (unbounded) declaration; `FreshnessRoute` names exactly the three tiers.** `crates/eg-plan/src/freshness_router.rs` refuses constructing a wait with `timeout_ms == 0`, and resolves a wait to one of exactly two typed outcomes (satisfied or typed-timeout), never an implicit stale-data path. | Verified by unit tests: a positive timeout constructs, a zero timeout is refused, the two wait outcomes are distinct, and all three routes are known. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | bff86f252aa4 crates/eg-plan/src/freshness_router.rs:72 crates/eg-plan/src/freshness_router.rs:79 crates/eg-plan/src/freshness_router.rs:85 crates/eg-plan/src/freshness_router.rs:91 |
| EG-UNIFIED-DATA-PLANE-R012 Govern write-back to attached sources Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Govern write-back to attached sources.** EG writes back to an attached source only through an approved, idempotent path with an audit reservation, and prefers the application's own API over a direct write when the application declares business logic of its own. Rollup: split into `.1` (below) per SPEC-SIZING §5; further children land the live adapter dispatch and the EG-DURABLE-KERNEL-R031 audit reservation wiring. | A negative test confirms a write missing approval, an audit reservation, or idempotency is rejected before it reaches the source. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | b3aca9fb42ce |
| EG-UNIFIED-DATA-PLANE-R012.1 Typed model for attached-source write-back governance, proved by refusal tests Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Typed model for attached-source write-back governance, proved by refusal tests.** `eg-types::attached_source_governance` defines `AttachedSourceWriteRequest` (approval reference, audit reservation digest, idempotency key, application-API-vs-direct-write path) and a fail-closed `validate` that refuses a write missing approval, missing an audit reservation, missing an idempotency key, or taking the direct-write path against a source that declares its own business logic. | Unit tests prove refusal for each of the four missing/disallowed conditions and acceptance for a fully-governed request. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | d0a69c4685f5 crates/eg-types/src/attached_source_governance.rs:109 crates/eg-types/src/attached_source_governance.rs:120 crates/eg-types/src/attached_source_governance.rs:131 crates/eg-types/src/attached_source_governance.rs:142 crates/eg-types/src/attached_source_governance.rs:92 |
| EG-UNIFIED-DATA-PLANE-R013 Implement the Postgres attached-source adapter Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the Postgres attached-source adapter.** The Postgres adapter connects via sqlx/tokio-postgres, reads the pg_catalog, captures changes through pgoutput logical replication, and maps jsonb, array, enum, and pgvector types without loss. | A per-engine conformance entry compares EG's query and capture results against native Postgres for each covered type. | requirement | EG-UNIFIED-DATA-PLANE | LANDED | 3dd56fe53283 6bc4b5668ed0 |
| EG-UNIFIED-DATA-PLANE-R014 Implement the MySQL and MariaDB attached-source adapters Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the MySQL and MariaDB attached-source adapters.** The MySQL and MariaDB adapters connect via sqlx mysql, read information_schema, capture changes through row-based binlog with GTID, and map each engine's types, with separate conformance entries for MySQL and MariaDB. | A per-engine conformance entry compares EG's query and capture results against native MySQL and against native MariaDB. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | bf6452b7f8d4 |
| EG-UNIFIED-DATA-PLANE-R014.1 Typed MySQL/MariaDB dialect-entry model (producer-first split of R014) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Typed MySQL/MariaDB dialect-entry model (producer-first split of R014).** A pure, typed model (`SqlEngineKind`, `SqlEngineCaptureSupport`, `SqlEngineDialectEntry`) keeps MySQL and MariaDB as two separate, explicitly declared dialect entries rather than one collapsed dialect, refusing to construct an entry with a default version floor or type-map revision. The driver, SQL rendering, catalog reader and binlog capture parts are later slices (`R014.2`+). | A test asserts a MySQL entry and a MariaDB entry built from equivalent inputs remain distinct (never merged), plus negative tests that an empty version floor and a zero type-map revision are both refused rather than defaulted. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 0e6a4eb8555d 3dd56fe53283 crates/eg-types/src/attached_source_dialect.rs:127 crates/eg-types/src/attached_source_dialect.rs:146 crates/eg-types/src/attached_source_dialect.rs:96 |
| EG-UNIFIED-DATA-PLANE-R014.2 Remaining scope of EG-UNIFIED-DATA-PLANE-R014 (slice .2): Implement the MySQL and MariaDB attached-source adapters Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Remaining scope of EG-UNIFIED-DATA-PLANE-R014 (slice .2): Implement the MySQL and MariaDB attached-source adapters.** Child slice of `EG-UNIFIED-DATA-PLANE-R014` (see tasks.md). This row is LANDED only once every child is. | A per-engine conformance entry compares EG's query and capture results against native MySQL and against native MariaDB | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R014.2.1 MySQL/MariaDB adapter skeleton: typed connection-config → driver-config mapping plus the connect/refusal path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**MySQL/MariaDB adapter skeleton: typed connection-config → driver-config mapping plus the connect/refusal path.** `crates/eg-types/src/mysql_mariadb_connection.rs` defines `MysqlMariadbConnectionConfig`/`MysqlMariadbDriverConfig` and `to_driver_config`, refusing an empty host, empty database, empty username, or zero port before any network attempt — behind the existing `federation-sql` sqlx-mysql feature structure already present in `crates/eg-plan`. The binlog/GTID capture loop and real sqlx connection are `EG-UNIFIED-DATA-PLANE-R014.2.2+`. | Verified by unit tests needing no live database: a MySQL and a MariaDB config both map to a driver config; empty host, empty database, empty username, and zero port are each refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6b382bb1a3ec crates/eg-types/src/mysql_mariadb_connection.rs:107 crates/eg-types/src/mysql_mariadb_connection.rs:119 crates/eg-types/src/mysql_mariadb_connection.rs:130 crates/eg-types/src/mysql_mariadb_connection.rs:141 crates/eg-types/src/mysql_mariadb_connection.rs:152 |
| EG-UNIFIED-DATA-PLANE-R014.2.2 Live MySQL/MariaDB binlog/GTID capture and per-engine conformance Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live MySQL/MariaDB binlog/GTID capture and per-engine conformance.** Child slice of `EG-UNIFIED-DATA-PLANE-R014.2` wiring the real sqlx connection, row-based binlog with GTID, and the information_schema catalog read behind `MysqlMariadbDriverConfig` from `.2.1`. | A per-engine conformance entry compares EG's query and capture results against native MySQL and against native MariaDB. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R015 Implement the SQLite file attached-source adapter (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the SQLite file attached-source adapter (rollup).** The SQLite adapter extends eg-sqlite-format to cover WITHOUT ROWID tables, attaches a live application's database file read-only in a lock-safe manner, and captures changes by WAL-frame tailing where safe or by rowid/updated_at watermark polling otherwise. No typed SQLite catalog model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | A conformance test attaches a live SQLite fixture under concurrent writes and confirms no lock contention and correct change capture. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 423b02e97c9d |
| EG-UNIFIED-DATA-PLANE-R015.1 `SqliteSourceCatalog` is a typed catalog model with a WITHOUT-ROWID capture-safety refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`SqliteSourceCatalog` is a typed catalog model with a WITHOUT-ROWID capture-safety refusal.** `crates/eg-types/src/sqlite_attached_catalog.rs` defines `SqliteSourceCatalog`/`SqliteTableCatalog`/`SqliteColumn` with a closed `SqliteCaptureMode` vocabulary (`WalRowidTailing`, `WatermarkPolling`), and `validate_table` refuses a `WITHOUT ROWID` table that declares no primary-key column or that claims rowid/WAL tailing (it has no implicit rowid to tail). | Verified by unit tests: a rowid table with WAL tailing round-trips through `insert_table`; a WITHOUT ROWID table with a declared primary key and watermark polling is valid; a WITHOUT ROWID table with no primary key is refused; a WITHOUT ROWID table claiming WAL tailing is refused; an invalid table is refused rather than silently inserted; the capture-mode variants stay distinct; and the catalog serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 37003f28164f 6c11520aebfc crates/eg-types/src/sqlite_attached_catalog.rs:130 crates/eg-types/src/sqlite_attached_catalog.rs:147 crates/eg-types/src/sqlite_attached_catalog.rs:159 crates/eg-types/src/sqlite_attached_catalog.rs:171 crates/eg-types/src/sqlite_attached_catalog.rs:186 |
| EG-UNIFIED-DATA-PLANE-R015.2 Lock-safe live read-only attach and real WAL-frame tailing/watermark polling Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Lock-safe live read-only attach and real WAL-frame tailing/watermark polling.** Child slice of `EG-UNIFIED-DATA-PLANE-R015` (see tasks.md). This row is LANDED only once every child is. | A conformance test attaches a live SQLite fixture under concurrent writes and confirms no lock contention and correct change capture | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R015.2.1 SQLite live-attach adapter skeleton: typed attach-config → driver-open-config mapping plus the refusal path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**SQLite live-attach adapter skeleton: typed attach-config → driver-open-config mapping plus the refusal path.** `crates/eg-types/src/sqlite_live_attach.rs` defines `SqliteAttachConfig`/`SqliteDriverOpenConfig` and `to_driver_open_config`, refusing an empty file path and refusing the `ReadOnlyImmutable` open mode paired with either declared `SqliteCaptureMode`. The real WAL-frame tailing/watermark polling against a live, concurrently-written file is `EG-UNIFIED-DATA-PLANE-R015.2.2+`. | Verified by unit tests needing no live database file: a lock-safe attach maps for both `WalRowidTailing` and `WatermarkPolling`. An empty file path is refused. The immutable open mode is refused for either capture mode. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6b382bb1a3ec crates/eg-types/src/sqlite_live_attach.rs:102 crates/eg-types/src/sqlite_live_attach.rs:113 crates/eg-types/src/sqlite_live_attach.rs:124 crates/eg-types/src/sqlite_live_attach.rs:84 crates/eg-types/src/sqlite_live_attach.rs:95 |
| EG-UNIFIED-DATA-PLANE-R015.2.2 Real WAL-frame tailing / watermark polling under concurrent writers Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Real WAL-frame tailing / watermark polling under concurrent writers.** Child slice of `EG-UNIFIED-DATA-PLANE-R015.2` wiring the real lock-safe open and capture loop behind `SqliteDriverOpenConfig` from `.2.1`. | A conformance test attaches a live SQLite fixture under concurrent writes and confirms no lock contention and correct change capture. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R016 Implement the Microsoft SQL Server attached-source adapter (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the Microsoft SQL Server attached-source adapter (rollup).** The SQL Server adapter connects via the tiberius driver, reads the sys.* catalog, renders T-SQL including TOP and OFFSET/FETCH pagination, and captures changes through CDC or Change Tracking polled by LSN. No typed SQL Server catalog model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | A conformance entry compares EG's query and capture results against native SQL Server. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R016.1 `MssqlSourceCatalog` is a typed catalog model with a bracket-quoting identifier refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`MssqlSourceCatalog` is a typed catalog model with a bracket-quoting identifier refusal.** `crates/eg-types/src/mssql_attached_catalog.rs` defines `MssqlSourceCatalog`/`MssqlTableCatalog`/`MssqlColumn` with a closed `MssqlCaptureMode` vocabulary (`Cdc`, `ChangeTracking`, `Unsupported`), and `validate_identifier`/`validate_table` refuse a schema or table identifier that is empty or contains `]` or a NUL byte — either would break the renderer's `[schema].[table]` bracket-quoting. | Verified by unit tests: a valid table round-trips through `insert_table`; an empty identifier is refused; a `]`-containing identifier is refused; a NUL-byte identifier is refused; an unsafe identifier is refused rather than silently inserted; `Unsupported` stays a distinct capture-mode variant; and the catalog serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 37003f28164f 6c11520aebfc crates/eg-types/src/mssql_attached_catalog.rs:119 crates/eg-types/src/mssql_attached_catalog.rs:132 crates/eg-types/src/mssql_attached_catalog.rs:141 crates/eg-types/src/mssql_attached_catalog.rs:147 crates/eg-types/src/mssql_attached_catalog.rs:153 |
| EG-UNIFIED-DATA-PLANE-R016.2 tiberius driver connection, T-SQL TOP/OFFSET-FETCH rendering, and LSN-polled CDC/Change Tracking capture Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**tiberius driver connection, T-SQL TOP/OFFSET-FETCH rendering, and LSN-polled CDC/Change Tracking capture.** Child slice of `EG-UNIFIED-DATA-PLANE-R016` (see tasks.md). This row is LANDED only once every child is. | A conformance entry compares EG's query and capture results against native SQL Server | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R016.2.1 MSSQL adapter skeleton: typed connection-config → tiberius-shaped driver-config mapping plus the connect/refusal path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**MSSQL adapter skeleton: typed connection-config → tiberius-shaped driver-config mapping plus the connect/refusal path.** `crates/eg-types/src/mssql_driver_connection.rs` defines `MssqlConnectionConfig`/`MssqlDriverConfig` and `to_driver_config`, refusing an empty host, empty database, empty username, zero port, or `trust_server_certificate` paired with `Strict` encryption, before any network attempt. T-SQL TOP/OFFSET-FETCH rendering and the real tiberius connection + LSN-polled capture are `EG-UNIFIED-DATA-PLANE-R016.2.2+`. | Verified by unit tests needing no live server: a CDC and a Change Tracking config both map to a driver config. Empty host, empty database, zero port, and trusting an unverified certificate under strict encryption are each refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6b382bb1a3ec crates/eg-types/src/mssql_driver_connection.rs:113 crates/eg-types/src/mssql_driver_connection.rs:124 crates/eg-types/src/mssql_driver_connection.rs:135 crates/eg-types/src/mssql_driver_connection.rs:146 crates/eg-types/src/mssql_driver_connection.rs:157 |
| EG-UNIFIED-DATA-PLANE-R016.2.2 Real tiberius connection, T-SQL TOP/OFFSET-FETCH rendering, and LSN-polled CDC/Change Tracking capture loop Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Real tiberius connection, T-SQL TOP/OFFSET-FETCH rendering, and LSN-polled CDC/Change Tracking capture loop.** Child slice of `EG-UNIFIED-DATA-PLANE-R016.2` wiring the tiberius driver behind `MssqlDriverConfig` from `.2.1`. | A conformance entry compares EG's query and capture results against native SQL Server. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R017 Implement the ClickHouse attached-source adapter (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the ClickHouse attached-source adapter (rollup).** The ClickHouse adapter connects via its HTTP or native client, reads the system.* catalog, and supports federation and acceleration while explicitly declaring that it has no change-capture capability. No typed ClickHouse catalog model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | A conformance entry confirms federated query results match native ClickHouse and that capture requests return an explicit unsupported result. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R017.1 `ClickHouseSourceCatalog` is a typed catalog model whose capture capability is always explicit Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ClickHouseSourceCatalog` is a typed catalog model whose capture capability is always explicit.** `crates/eg-types/src/clickhouse_attached_catalog.rs` defines `ClickHouseSourceCatalog`/`ClickHouseTableCatalog`/`ClickHouseColumn`, and `ClickHouseTableCatalog::capture_capability` always returns the single `ClickHouseCaptureCapability::Unsupported` value rather than a silently-missing `Option<_>`; `validate_table` refuses an empty database/table name or a table with no discovered columns. | Verified by unit tests: a valid table round-trips through `insert_table`; `capture_capability` is always explicitly `Unsupported`; an empty database/table name is refused; a table with no columns is refused; an invalid table is refused rather than silently inserted; and the catalog serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 37003f28164f 6c11520aebfc crates/eg-types/src/clickhouse_attached_catalog.rs:142 crates/eg-types/src/clickhouse_attached_catalog.rs:150 crates/eg-types/src/clickhouse_attached_catalog.rs:159 crates/eg-types/src/clickhouse_attached_catalog.rs:167 crates/eg-types/src/clickhouse_attached_catalog.rs:178 |
| EG-UNIFIED-DATA-PLANE-R017.2 HTTP/native client connection and federated query pushdown (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**HTTP/native client connection and federated query pushdown (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R017` (see tasks.md), split producer-first: `.2.1` is the typed driver config plus connect/refusal path. `.2.2` is live federated query pushdown. This row is LANDED only once every child is. | A conformance entry confirms federated query results match native ClickHouse and that capture requests return an explicit unsupported result | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 04791f8c77de |
| EG-UNIFIED-DATA-PLANE-R017.2.1 `ClickHouseDriverConfig` builds from validated host/port/database, and `connect` refuses an unsafe or invalid destination before issuing any request Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ClickHouseDriverConfig` builds from validated host/port/database, and `connect` refuses an unsafe or invalid destination before issuing any request.** `crates/eg-plan/src/clickhouse_connection.rs` converts host/port/database into a `ClickHouseDriverConfig`, refusing an empty host, a zero port, or an empty database; `connect` resolves the configured host and refuses (does not dial) a non-loopback or otherwise unresolvable destination, mirroring the existing `connect_remote_engine` gate in `crates/eg-plan/src/federation.rs`. No live ClickHouse server is required. | Verified by unit tests needing no live database: a valid config round-trips; an empty host, zero port, and empty database are each refused; an unresolvable destination is refused by `connect`; and a loopback destination passes the refusal gate. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 04791f8c77de crates/eg-plan/src/clickhouse_connection.rs:114 crates/eg-plan/src/clickhouse_connection.rs:124 crates/eg-plan/src/clickhouse_connection.rs:133 crates/eg-plan/src/clickhouse_connection.rs:142 crates/eg-plan/src/clickhouse_connection.rs:151 |
| EG-UNIFIED-DATA-PLANE-R017.2.2 Live HTTP/native client federated query pushdown Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live HTTP/native client federated query pushdown.** `connect`'s validated handle issues real ClickHouse HTTP/native-client queries and pushes federated query fragments down to `system.*`-backed execution. Depends on `EG-UNIFIED-DATA-PLANE-R017.2.1`. | A conformance entry confirms federated query results match native ClickHouse and that capture requests return an explicit unsupported result. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R018 Implement the Oracle and Db2 attached-source adapters (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the Oracle and Db2 attached-source adapters (rollup).** The Oracle and Db2 adapters query and read the catalog through their driver or ODBC, and capture changes through the Debezium bridge. No typed Oracle/Db2 catalog model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | A conformance entry compares EG's query results against native Oracle and native Db2, and confirms captured changes match a Debezium-sourced change stream. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | c14a9a63a0b3 |
| EG-UNIFIED-DATA-PLANE-R018.1 `RelationalSourceCatalog` is a typed Oracle/Db2 catalog model with identifier and Debezium-capture refusals Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`RelationalSourceCatalog` is a typed Oracle/Db2 catalog model with identifier and Debezium-capture refusals.** `crates/eg-types/src/relational_attached_catalog.rs` defines `RelationalSourceCatalog`/`RelationalTableCatalog`/`RelationalColumn` over a closed `RelationalEngine` (`Oracle`, `Db2`); `validate_table` refuses a schema/table identifier that is empty or contains `"` or a NUL byte (either breaks double-quoted identifier rendering), and refuses a table marked `captured_via_debezium` with no declared primary-key column. | Verified by unit tests: a valid table round-trips through `insert_table`; a `"`-containing identifier is refused; a NUL-byte identifier is refused; a Debezium-captured table with no primary key is refused; a non-captured table with no primary key is valid; an invalid table is refused rather than silently inserted; and the catalog serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc eb058c53407e crates/eg-types/src/relational_attached_catalog.rs:137 crates/eg-types/src/relational_attached_catalog.rs:147 crates/eg-types/src/relational_attached_catalog.rs:155 crates/eg-types/src/relational_attached_catalog.rs:163 crates/eg-types/src/relational_attached_catalog.rs:173 |
| EG-UNIFIED-DATA-PLANE-R018.2 Driver/ODBC connection, catalog read, and Debezium bridge wiring (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Driver/ODBC connection, catalog read, and Debezium bridge wiring (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R018` (see tasks.md), split producer-first: `.2.1` is the typed driver config plus connect/refusal path; `.2.2` is live catalog read and Debezium bridge wiring. This row is LANDED only once every child is. | A conformance entry compares EG's query results against native Oracle and native Db2, and confirms captured changes match a Debezium-sourced change stream | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 04791f8c77de |
| EG-UNIFIED-DATA-PLANE-R018.2.1 `RelationalDriverConfig` builds from a validated engine/host/port/service name, and `connect` refuses an unsafe or invalid destination before issuing any request Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`RelationalDriverConfig` builds from a validated engine/host/port/service name, and `connect` refuses an unsafe or invalid destination before issuing any request.** `crates/eg-plan/src/relational_connection.rs` converts a `RelationalEngine` (`Oracle`, `Db2`) plus host/port/service name into a `RelationalDriverConfig`, refusing an empty host, a zero port, or an empty service name; `connect` resolves the configured host and refuses (does not dial) a non-loopback or otherwise unresolvable destination, mirroring the existing `connect_remote_engine` gate in `crates/eg-plan/src/federation.rs`. No live Oracle/Db2 server or Debezium bridge is required. | Verified by unit tests needing no live database: a valid config round-trips for each engine; an empty host, zero port, and empty service name are each refused; an unresolvable destination is refused by `connect`; and a loopback destination passes the refusal gate. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R018.2.2 Live driver/ODBC catalog read and Debezium bridge wiring Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live driver/ODBC catalog read and Debezium bridge wiring.** `connect`'s validated handle reads the Oracle/Db2 catalog through its driver or ODBC and wires change capture through the Debezium bridge. Depends on `EG-UNIFIED-DATA-PLANE-R018.2.1`. | A conformance entry compares EG's query results against native Oracle and native Db2, and confirms captured changes match a Debezium-sourced change stream. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R019 Implement the MongoDB and DocumentDB attached-source adapter Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement the MongoDB and DocumentDB attached-source adapter.** The MongoDB/DocumentDB adapter connects through its native driver, represents the inferred document JSON shape as its catalog, and captures changes through native change streams. Split per the net-new rule (no document-catalog type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | A conformance entry compares EG's query results and captured change stream against native MongoDB/DocumentDB. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 211962e9c846 |
| EG-UNIFIED-DATA-PLANE-R019.1 `DocumentSourceCatalog` is a typed inferred-shape model with a refusal for a malformed field path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`DocumentSourceCatalog` is a typed inferred-shape model with a refusal for a malformed field path.** `crates/eg-types/src/document_source_catalog.rs` defines `DocumentSourceCatalog`/`DocumentCollectionShape`/`DocumentField` with a closed `DocumentFieldType` vocabulary (including `Mixed` for sampling that observes more than one type at a path), and `validate_field_path` refuses an empty, leading/trailing-dot, empty-segment, or `$`-operator-prefixed path rather than admitting it into the shape. | Verified by unit tests: a valid dotted path round-trips through `insert_field`, each malformed path shape is refused, a malformed path is refused rather than silently inserted, `Mixed` stays a distinct variant, and the catalog serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 211962e9c846 6c11520aebfc crates/eg-types/src/document_source_catalog.rs:108 crates/eg-types/src/document_source_catalog.rs:119 crates/eg-types/src/document_source_catalog.rs:128 crates/eg-types/src/document_source_catalog.rs:135 crates/eg-types/src/document_source_catalog.rs:141 |
| EG-UNIFIED-DATA-PLANE-R019.2 Native MongoDB/DocumentDB driver connection and change-stream capture into ChangeEnvelope (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Native MongoDB/DocumentDB driver connection and change-stream capture into ChangeEnvelope (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R019` (see tasks.md), split producer-first: `.2.1` is the typed driver config plus connect/refusal path. `.2.2` is the live native-driver connection and change-stream capture. This row is LANDED only once every child is. | A conformance entry compares EG's query results and captured change stream against native MongoDB/DocumentDB | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 04791f8c77de 94edcf341758 c3b87d31ac11 |
| EG-UNIFIED-DATA-PLANE-R019.2.1 `DocumentDriverConfig` builds from a validated host/port/database, and `connect` refuses an unsafe or invalid destination before issuing any request Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`DocumentDriverConfig` builds from a validated host/port/database, and `connect` refuses an unsafe or invalid destination before issuing any request.** `crates/eg-plan/src/document_connection.rs` converts host/port/database into a `DocumentDriverConfig`, refusing an empty host, a zero port, or an empty database; `connect` resolves the configured host and refuses (does not dial) a non-loopback or otherwise unresolvable destination, mirroring the existing `connect_remote_engine` gate in `crates/eg-plan/src/federation.rs`. No live MongoDB/DocumentDB server is required; the native driver and change-stream capture are a later slice. | Verified by unit tests needing no live database: a valid config round-trips; an empty host, zero port, and empty database are each refused; an unresolvable destination is refused by `connect`; and a loopback destination passes the refusal gate. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R019.2.2 Live native driver connection and change-stream capture into `ChangeEnvelope` Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live native driver connection and change-stream capture into `ChangeEnvelope`.** `connect`'s validated handle opens a real MongoDB/DocumentDB native-driver session and captures native change-stream events into `ChangeEnvelope`. Depends on `EG-UNIFIED-DATA-PLANE-R019.2.1`. | A conformance entry compares EG's query results and captured change stream against native MongoDB/DocumentDB. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R019.3 Conformance entry comparing EG query results and captured change stream against native MongoDB/DocumentDB (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Conformance entry comparing EG query results and captured change stream against native MongoDB/DocumentDB (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R019` (see tasks.md), split producer-first: `.3.1` is the typed per-adapter conformance-entry constructor. `.3.2` is actually running the comparison against native MongoDB/DocumentDB. This row is LANDED only once every child is. | A conformance entry compares EG's query results and captured change stream against native MongoDB/DocumentDB | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R019.3.1 `build_document_conformance_entry` builds a MongoDB/DocumentDB conformance entry with a fixed adapter label, refusing a malformed outcome/deviation shape Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`build_document_conformance_entry` builds a MongoDB/DocumentDB conformance entry with a fixed adapter label, refusing a malformed outcome/deviation shape.** `crates/eg-types/src/document_conformance.rs` defines the closed `DocumentConformanceEngine` vocabulary (`MongoDb6`/`MongoDb7`/`DocumentDb`) and builds a `DialectConformanceEntry` (EG-UNIFIED-DATA-PLANE-R022.1) whose `adapter` is always the fixed `mongodb_documentdb` label, never a caller-supplied string, delegating to that type's own refusal for a deviated entry with no reviewed deviation or a green entry carrying one. No live MongoDB/DocumentDB connection is required; actually running the comparison is a later child. | Verified by unit tests needing no live database: a green entry builds with the fixed adapter label; each engine variant maps to its own version label; a deviated entry with no reviewed deviation is refused; a deviated entry with a reviewed deviation builds; and a green entry carrying a deviation is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | d6e3cf6232d8 crates/eg-types/src/document_conformance.rs:101 crates/eg-types/src/document_conformance.rs:118 crates/eg-types/src/document_conformance.rs:65 crates/eg-types/src/document_conformance.rs:78 crates/eg-types/src/document_conformance.rs:90 |
| EG-UNIFIED-DATA-PLANE-R019.3.2 Live comparison of EG's query results and captured change stream against native MongoDB/DocumentDB Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live comparison of EG's query results and captured change stream against native MongoDB/DocumentDB.** Runs the comparison and records its real outcome through `build_document_conformance_entry`. Depends on `EG-UNIFIED-DATA-PLANE-R019.3.1` and `EG-UNIFIED-DATA-PLANE-R019.2`. | A conformance entry compares EG's query results and captured change stream against native MongoDB/DocumentDB. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R020 Federate Snowflake, BigQuery, DuckDB, and Iceberg sources Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Federate Snowflake, BigQuery, DuckDB, and Iceberg sources.** EG federates queries to Snowflake, BigQuery, DuckDB, and Iceberg as read-only sources, extending the existing iceberg_federation.rs for Iceberg, and uses Arrow Flight SQL where the source offers it. Split per the net-new rule (no warehouse-source-kind type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | A conformance entry compares federated query results against each native warehouse or lake engine. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 74870676b1cc |
| EG-UNIFIED-DATA-PLANE-R020.1 `WarehouseSourceKind`/`WarehouseSourceConfig` are a closed source-kind vocabulary with a per-kind required-field refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`WarehouseSourceKind`/`WarehouseSourceConfig` are a closed source-kind vocabulary with a per-kind required-field refusal.** `crates/eg-types/src/warehouse_federation.rs` defines `WarehouseSourceKind` (`Snowflake`/`BigQuery`/`DuckDb`/`Iceberg`), each kind's declared Arrow-Flight-SQL offering and required connection-config fields, and `WarehouseSourceConfig::validate`, which refuses a config with no declared kind or a missing/empty required field rather than deferring the gap to connect time. | Verified by unit tests: a complete Snowflake config validates, an incomplete BigQuery config names its missing field, an empty field value counts as missing, an undeclared kind is refused rather than guessed, Flight SQL is offered only by the declared kinds, and the config serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc 74870676b1cc crates/eg-types/src/warehouse_federation.rs:118 crates/eg-types/src/warehouse_federation.rs:128 crates/eg-types/src/warehouse_federation.rs:136 crates/eg-types/src/warehouse_federation.rs:143 crates/eg-types/src/warehouse_federation.rs:150 |
| EG-UNIFIED-DATA-PLANE-R020.2 Query pushdown per kind (Arrow Flight SQL where offered), extending eg-query::sql::iceberg_federation for Iceberg (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Query pushdown per kind (Arrow Flight SQL where offered), extending eg-query::sql::iceberg_federation for Iceberg (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R020` (see tasks.md), split producer-first: `.2.1` is the typed pushdown-transport dispatch plus its refusal path. `.2.2` is actually issuing the pushed-down query per kind. This row is LANDED only once every child is. | A conformance entry compares federated query results against each native warehouse or lake engine | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R020.2.1 `plan_pushdown` decides the Arrow-Flight-SQL-vs-native transport for a validated `WarehouseSourceConfig`, refusing an invalid config or an unmet Flight SQL preference Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`plan_pushdown` decides the Arrow-Flight-SQL-vs-native transport for a validated `WarehouseSourceConfig`, refusing an invalid config or an unmet Flight SQL preference.** `crates/eg-plan/src/warehouse_pushdown.rs` defines `WarehousePushdownRequest`/`WarehousePushdownTransport` and `plan_pushdown`, which first delegates to `WarehouseSourceConfig::validate` (EG-UNIFIED-DATA-PLANE-R020.1) and then refuses — rather than silently downgrading — a `prefer_flight_sql` request against a kind that does not offer it. Issues no request and opens no connection. | Verified by unit tests needing no live warehouse: Snowflake prefers Flight SQL when requested; DuckDB with no preference uses native; a DuckDB/Iceberg Flight SQL preference is refused rather than downgraded; and an invalid or kind-less config is refused before any transport decision. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | d6e3cf6232d8 crates/eg-plan/src/warehouse_pushdown.rs:111 crates/eg-plan/src/warehouse_pushdown.rs:127 crates/eg-plan/src/warehouse_pushdown.rs:145 crates/eg-plan/src/warehouse_pushdown.rs:160 crates/eg-plan/src/warehouse_pushdown.rs:173 |
| EG-UNIFIED-DATA-PLANE-R020.2.2 Live Arrow Flight SQL / native query pushdown per kind, extending `eg-query::sql::iceberg_federation` for Iceberg Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live Arrow Flight SQL / native query pushdown per kind, extending `eg-query::sql::iceberg_federation` for Iceberg.** `plan_pushdown`'s validated transport decision is used to issue the real pushed-down query against each native warehouse or lake engine. Depends on `EG-UNIFIED-DATA-PLANE-R020.2.1`. | A conformance entry compares federated query results against each native warehouse or lake engine. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R020.3 Conformance entry comparing federated query results against each native warehouse/lake engine (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Conformance entry comparing federated query results against each native warehouse/lake engine (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R020` (see tasks.md), split producer-first: `.3.1` is the typed per-kind conformance-entry constructor. `.3.2` is actually running the comparison against each native engine. This row is LANDED only once every child is. | A conformance entry compares federated query results against each native warehouse or lake engine | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R020.3.1 `build_warehouse_conformance_entry` builds a warehouse/lake conformance entry whose adapter label is derived from the closed `WarehouseSourceKind`, refusing a blank engine version or a malformed outcome/deviation shape Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`build_warehouse_conformance_entry` builds a warehouse/lake conformance entry whose adapter label is derived from the closed `WarehouseSourceKind`, refusing a blank engine version or a malformed outcome/deviation shape.** `crates/eg-types/src/warehouse_conformance.rs` derives the `adapter` label (`warehouse_snowflake`/`warehouse_bigquery`/`warehouse_duckdb`/`warehouse_iceberg`) from `WarehouseSourceKind` (EG-UNIFIED-DATA-PLANE-R020.1) rather than a caller-supplied string, refuses an empty `engine_version`, and delegates to `DialectConformanceEntry::validate` (EG-UNIFIED-DATA-PLANE-R022.1) for the outcome/deviation shape. No live warehouse/lake connection is required; actually running the comparison is a later child. | Verified by unit tests needing no live engine: a green entry builds with the kind-derived label; each kind maps to a distinct label; an empty engine version is refused; a deviated entry with no reviewed deviation is refused; and a deviated entry with a reviewed deviation builds. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | d6e3cf6232d8 crates/eg-types/src/warehouse_conformance.rs:102 crates/eg-types/src/warehouse_conformance.rs:119 crates/eg-types/src/warehouse_conformance.rs:134 crates/eg-types/src/warehouse_conformance.rs:151 crates/eg-types/src/warehouse_conformance.rs:88 |
| EG-UNIFIED-DATA-PLANE-R020.3.2 Live comparison of federated query results against each native warehouse/lake engine Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live comparison of federated query results against each native warehouse/lake engine.** Runs the comparison and records its real outcome through `build_warehouse_conformance_entry`. Depends on `EG-UNIFIED-DATA-PLANE-R020.3.1` and `EG-UNIFIED-DATA-PLANE-R020.2`. | A conformance entry compares federated query results against each native warehouse or lake engine. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R021 Bridge Debezium Kafka events into ChangeEnvelope Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Bridge Debezium Kafka events into ChangeEnvelope.** EG consumes Debezium change events from Kafka and converts them into ChangeEnvelope records for any Debezium-supported source, reimplementing Debezium's envelope semantics natively in EG. Split per the net-new rule (no Debezium event type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | A replay test feeds a captured Debezium event stream through the bridge and confirms the resulting ChangeEnvelope sequence matches the source's actual changes. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 9cb571fb74aa |
| EG-UNIFIED-DATA-PLANE-R021.1 `DebeziumChangeEvent` is a typed envelope shape with an op-code and before/after refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`DebeziumChangeEvent` is a typed envelope shape with an op-code and before/after refusal.** `crates/eg-types/src/debezium_bridge.rs` defines the closed `DebeziumOp` vocabulary (`c`/`u`/`d`/`r`, refusing an unrecognized code), `DebeziumSource`, `DebeziumChangeEvent`, and `validate`, which refuses a create/update/read event with no `after` row or a delete event with no `before` row; `to_change_cursor` maps the source position onto an opaque `ChangeCursor`. | Verified by unit tests: every known op code parses, an unknown code is refused, a create without `after` and a delete without `before` are refused, a well-formed update validates, the cursor stays opaque and carries the source position, and the event serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc 9cb571fb74aa crates/eg-types/src/debezium_bridge.rs:273 crates/eg-types/src/debezium_bridge.rs:282 crates/eg-types/src/debezium_bridge.rs:291 crates/eg-types/src/debezium_bridge.rs:303 crates/eg-types/src/debezium_bridge.rs:315 |
| EG-UNIFIED-DATA-PLANE-R021.2 Kafka consumer plus real conversion into ChangeEnvelope records Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Kafka consumer plus real conversion into ChangeEnvelope records.** Child slice of `EG-UNIFIED-DATA-PLANE-R021` (see tasks.md). | A replay test feeds a captured Debezium event stream through the bridge and confirms the resulting ChangeEnvelope sequence matches the source's actual changes | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | de71b5ddd2b2 crates/eg-types/src/debezium_bridge.rs:361 crates/eg-types/src/debezium_bridge.rs:402 |
| EG-UNIFIED-DATA-PLANE-R021.3 Replay test feeding a captured Debezium event stream through the bridge Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Replay test feeding a captured Debezium event stream through the bridge.** Child slice of `EG-UNIFIED-DATA-PLANE-R021` (see tasks.md). | A replay test feeds a captured Debezium event stream through the bridge and confirms the resulting ChangeEnvelope sequence matches the source's actual changes | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | de71b5ddd2b2 crates/eg-types/src/debezium_bridge.rs:417 |
| EG-UNIFIED-DATA-PLANE-R022 Build a per-dialect conformance harness Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Build a per-dialect conformance harness.** A conformance harness runs each adapter against a containerized matrix of supported engine versions, verifying that pushed-down query results equal the native source's result and that a change-capture replay equals a snapshot of the source. Split per the net-new rule (no conformance-entry type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | The harness reports a green conformance entry per engine/version pair and a reviewed deviation for any known difference. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 23769c3ec0f9 |
| EG-UNIFIED-DATA-PLANE-R022.1 `DialectConformanceEntry`/`ConformanceReport` are a typed per-engine-version result with a refusal for an auto-suppressed deviation Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`DialectConformanceEntry`/`ConformanceReport` are a typed per-engine-version result with a refusal for an auto-suppressed deviation.** `crates/eg-types/src/dialect_conformance.rs` defines `ConformanceOutcome` (green/deviated), `ConformanceDeviation` (description, reviewer, reproducing fixture), and `validate`, which refuses a deviated entry with no deviation record, a green entry carrying one, or a deviation with a blank reviewer — a deviation can never be auto-suppressed. | Verified by unit tests: a green entry without deviation validates, a deviated entry with a reviewed deviation validates, a deviated entry without one is refused, a green entry with one is refused, a blank-reviewer deviation is refused, and a report refuses if any entry is malformed while still reporting its green count. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 23769c3ec0f9 6c11520aebfc crates/eg-types/src/dialect_conformance.rs:121 crates/eg-types/src/dialect_conformance.rs:133 crates/eg-types/src/dialect_conformance.rs:145 crates/eg-types/src/dialect_conformance.rs:160 crates/eg-types/src/dialect_conformance.rs:175 |
| EG-UNIFIED-DATA-PLANE-R022.2 Containerized matrix runner per adapter/engine version Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Containerized matrix runner per adapter/engine version.** Child slice of `EG-UNIFIED-DATA-PLANE-R022` (see tasks.md). | The harness reports a green conformance entry per engine/version pair and a reviewed deviation for any known difference | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R022.3 Change-capture replay comparison against a source snapshot (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Change-capture replay comparison against a source snapshot (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R022` (see tasks.md), split producer-first: `.3.1` is the pure comparison and conformance-entry construction. `.3.2` is running it against a real replay stream and source snapshot. This row is LANDED only once every child is. | The harness reports a green conformance entry per engine/version pair and a reviewed deviation for any known difference | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R022.3.1 `compare_replay_to_snapshot` builds a `DialectConformanceEntry` from a replayed row-state map and a source-snapshot row-state map, refusing a blank engine version Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`compare_replay_to_snapshot` builds a `DialectConformanceEntry` from a replayed row-state map and a source-snapshot row-state map, refusing a blank engine version.** `crates/eg-types/src/replay_conformance.rs` compares the two already-captured maps and delegates to `DialectConformanceEntry::validate` (EG-UNIFIED-DATA-PLANE-R022.1) for the outcome/deviation shape: a difference is `Deviated` with no deviation record, so it still needs human review before it validates — never auto-suppressed. No live replay stream or source connection is read; running the comparison against a real replay is a later child. | Verified by unit tests needing no live replay stream: matching maps build a `Green` entry; differing maps build a `Deviated` entry that is refused until reviewed; a blank engine version is refused; and a fixture source-snapshot comparison builds `Green`. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | a4d1e790a69e crates/eg-types/src/replay_conformance.rs:114 crates/eg-types/src/replay_conformance.rs:124 crates/eg-types/src/replay_conformance.rs:82 crates/eg-types/src/replay_conformance.rs:96 |
| EG-UNIFIED-DATA-PLANE-R022.3.2 Live change-capture replay comparison against a real source snapshot Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live change-capture replay comparison against a real source snapshot.** Feeds a real replay stream's resulting row state and a real source snapshot through `compare_replay_to_snapshot`. Depends on `EG-UNIFIED-DATA-PLANE-R022.3.1` and `EG-UNIFIED-DATA-PLANE-R022.2`. | The harness reports a green conformance entry per engine/version pair and a reviewed deviation for any known difference. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R023 Operate a shared CloudNativePG and MariaDB platform Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Operate a shared CloudNativePG and MariaDB platform.** EG runs attached applications on a shared platform using CloudNativePG, grouping clusters by major version and required extensions, with a dedicated database and role per application, separate EG read and replication roles, wal_level set to logical, point-in-time recovery to object storage, scheduled restore drills, and local storage volumes. A separate shared MariaDB group serves MariaDB-based applications. Split per the net-new rule (no cluster-group type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | A restore drill independently recovers a cluster from its point-in-time recovery backup and confirms data matches the pre-restore state. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 03439e243c80 |
| EG-UNIFIED-DATA-PLANE-R023.1 `SharedPlatformClusterGroup` is a typed cluster-group and role-set model with engine-specific refusals Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`SharedPlatformClusterGroup` is a typed cluster-group and role-set model with engine-specific refusals.** `crates/eg-types/src/shared_db_platform.rs` defines `SharedPlatformEngine` (CloudNativePG/MariaDB), `ApplicationRoleSet` (dedicated application/EG-read/EG-replication roles), and `validate`, which refuses a CloudNativePG group not declaring `wal_level=logical`, a MariaDB group declaring one, an application aliasing two of its three roles, and an empty group. | Verified by unit tests: a well-formed Postgres group validates, a non-logical or absent `wal_level` is refused, a MariaDB group with a `wal_level` is refused and without one validates, an aliased role is refused, and an empty group is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 03439e243c80 6c11520aebfc crates/eg-types/src/shared_db_platform.rs:138 crates/eg-types/src/shared_db_platform.rs:144 crates/eg-types/src/shared_db_platform.rs:155 crates/eg-types/src/shared_db_platform.rs:166 crates/eg-types/src/shared_db_platform.rs:182 |
| EG-UNIFIED-DATA-PLANE-R023.2 CloudNativePG/MariaDB operator wiring and PITR schedule to object storage (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**CloudNativePG/MariaDB operator wiring and PITR schedule to object storage (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R023` (see tasks.md), split producer-first: `.2.1` is the typed PITR schedule contract and refusal path. `.2.2` is wiring the real operator CRDs and installing the schedule. This row is LANDED only once every child is. | A restore drill independently recovers a cluster from its point-in-time recovery backup and confirms data matches the pre-restore state | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R023.2.1 `PitrSchedule`/`validate` are a typed PITR schedule contract with an engine/archiving-mode refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`PitrSchedule`/`validate` are a typed PITR schedule contract with an engine/archiving-mode refusal.** `crates/eg-types/src/pitr_schedule.rs` defines `ContinuousArchivingMode` (logical-WAL/binlog) and `PitrSchedule`, whose `validate` refuses an archiving mode that does not match the cluster group's `SharedPlatformEngine` (EG-UNIFIED-DATA-PLANE-R023.1), a zero retention window, or a blank cron or destination URI. No CloudNativePG/MariaDB operator is wired yet; installing the real schedule is a later child. | Verified by unit tests needing no live operator: a well-formed Postgres schedule validates; a Postgres schedule with binlog archiving is refused; a MariaDB schedule with logical-WAL archiving is refused; a MariaDB schedule with binlog validates; zero retention is refused; and a blank cron or destination is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | a4d1e790a69e crates/eg-types/src/pitr_schedule.rs:110 crates/eg-types/src/pitr_schedule.rs:116 crates/eg-types/src/pitr_schedule.rs:127 crates/eg-types/src/pitr_schedule.rs:139 crates/eg-types/src/pitr_schedule.rs:148 |
| EG-UNIFIED-DATA-PLANE-R023.2.2 Live CloudNativePG/MariaDB operator wiring and PITR schedule installation to object storage Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live CloudNativePG/MariaDB operator wiring and PITR schedule installation to object storage.** Installs a validated `PitrSchedule` against the real operator CRDs. Depends on `EG-UNIFIED-DATA-PLANE-R023.2.1`. | A restore drill independently recovers a cluster from its point-in-time recovery backup and confirms data matches the pre-restore state. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R023.3 Restore-drill automation and post-restore data-match verification (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Restore-drill automation and post-restore data-match verification (rollup).** Child slice of `EG-UNIFIED-DATA-PLANE-R023` (see tasks.md), split producer-first: `.3.1` is the typed drill-result contract and refusal path. `.3.2` is automating the real drill. This row is LANDED only once every child is. | A restore drill independently recovers a cluster from its point-in-time recovery backup and confirms data matches the pre-restore state | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R023.3.1 `RestoreDrillResult`/`validate` are a typed drill-result contract that refuses a `data_matched` flag disagreeing with the actual digest comparison Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`RestoreDrillResult`/`validate` are a typed drill-result contract that refuses a `data_matched` flag disagreeing with the actual digest comparison.** `crates/eg-types/src/restore_drill.rs` defines `RestoreDrillResult` and `from_digests`, the only constructor that derives `data_matched` from comparing the pre/post-restore digests; `validate` refuses a matched flag with differing digests, a mismatched flag with equal digests, or a blank digest. No restore is run yet; automating the real drill is a later child. | Verified by unit tests needing no live cluster: matching and differing digests built via `from_digests` both validate; a hand-set matched flag with differing digests is refused; a hand-set mismatched flag with equal digests is refused; and a blank digest is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | a4d1e790a69e crates/eg-types/src/restore_drill.rs:108 crates/eg-types/src/restore_drill.rs:121 crates/eg-types/src/restore_drill.rs:134 crates/eg-types/src/restore_drill.rs:150 crates/eg-types/src/restore_drill.rs:166 |
| EG-UNIFIED-DATA-PLANE-R023.3.2 Live restore-drill automation and post-restore data-match verification Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Live restore-drill automation and post-restore data-match verification.** Runs the real restore drill and records its digests through `RestoreDrillResult::from_digests`. Depends on `EG-UNIFIED-DATA-PLANE-R023.3.1` and `EG-UNIFIED-DATA-PLANE-R023.2`. | A restore drill independently recovers a cluster from its point-in-time recovery backup and confirms data matches the pre-restore state. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R024 Admit applications to the shared platform with rollback Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Admit applications to the shared platform with rollback.** EG admits each application to the shared database platform one at a time, with a tested rollback path, and retires that application's prior ingest connector only after it is fully attached with parity. Split per the net-new rule (no admission-stage type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | An admission test for each candidate application confirms rollback restores the prior state and that the retired connector no longer writes. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 1b3cc2f03fa2 |
| EG-UNIFIED-DATA-PLANE-R024.1 `ApplicationAdmission` is a typed stage machine refusing early connector retirement Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ApplicationAdmission` is a typed stage machine refusing early connector retirement.** `crates/eg-types/src/platform_admission.rs` defines `AdmissionStage` (`Pending`/`Admitted`/`ParityConfirmed`/`ConnectorRetired`/`RolledBack`) and `advance`, the one entry point that moves a record, which refuses retiring the connector before `ParityConfirmed` and refuses a rollback once the connector is retired. | Verified by unit tests: the full admission path advances in order, retiring the connector before parity or from `Pending` is refused without changing the recorded stage, rollback is allowed before connector retirement, rollback after retirement is refused, and the record serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 1b3cc2f03fa2 6c11520aebfc crates/eg-types/src/platform_admission.rs:232 crates/eg-types/src/platform_admission.rs:242 crates/eg-types/src/platform_admission.rs:254 crates/eg-types/src/platform_admission.rs:262 crates/eg-types/src/platform_admission.rs:272 |
| EG-UNIFIED-DATA-PLANE-R024.2 Admission runner and tested rollback path per candidate application Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Admission runner and tested rollback path per candidate application.** Split per the net-new rule (no runner existed on main): `.1` is the runner slice needing no live service; the live per-application runs against the real candidates are a later child. | An admission test for each candidate application confirms rollback restores the prior state and that the retired connector no longer writes | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 15a7370ecac3 |
| EG-UNIFIED-DATA-PLANE-R024.2.1 `AdmissionRunner` drives `ApplicationAdmission` against a pluggable `PriorIngestConnector`, with a tested rollback path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`AdmissionRunner` drives `ApplicationAdmission` against a pluggable `PriorIngestConnector`, with a tested rollback path.** `crates/eg-types/src/platform_admission.rs` adds `PriorIngestConnector`, `AdmissionRunner`, and `AdmissionRunError`; the runner retires the connector only after `ParityConfirmed` and refuses to record retirement if the connector still reports writing. Needs no live candidate application: driven against a fake in-process connector. | Verified by unit tests: retiring the connector after parity stops its writes, rollback restores `Pending`-reachable state while the connector keeps writing, and rollback is refused once the connector is retired. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 15a7370ecac3 crates/eg-types/src/platform_admission.rs:292 crates/eg-types/src/platform_admission.rs:304 crates/eg-types/src/platform_admission.rs:317 |
| EG-UNIFIED-DATA-PLANE-R024.3 Per-application admission test confirming rollback and that the retired connector no longer writes Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Per-application admission test confirming rollback and that the retired connector no longer writes.** Split per the net-new rule (no such test existed on main): `.1` covers every candidate application against a fake connector, needing no live service; the live per-application runs against the real candidates are a later child. | An admission test for each candidate application confirms rollback restores the prior state and that the retired connector no longer writes | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 15a7370ecac3 |
| EG-UNIFIED-DATA-PLANE-R024.3.1 One fake-connector admission test per candidate application, confirming rollback and that the retired connector no longer writes Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**One fake-connector admission test per candidate application, confirming rollback and that the retired connector no longer writes.** `crates/eg-types/src/platform_admission.rs` runs the rollback-restores-state and retirement-stops-writes assertions for each of `gramps`, `immich`, and `firefly` against `AdmissionRunner`. Needs no live candidate application. | Verified by a unit test iterating all three candidate applications: each confirms rollback leaves the prior connector writing and that a retired connector stops writing. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 15a7370ecac3 crates/eg-types/src/platform_admission.rs:352 |
| EG-UNIFIED-DATA-PLANE-R025 Evaluate a pgrx companion extension through a spike Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Evaluate a pgrx companion extension through a spike.** A pgrx-based companion extension spike evaluates running a slice of EG inside Postgres, covering SPARQL over tables, vector search, one time-series kernel, and a wait-for-position helper, concluding in an approved go/no-go architecture decision record. Split per the net-new rule (no spike-decision type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | The spike's results and the recorded decision are reviewed against its defined scope before further pgrx work is authorized. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | e265a52820f5 |
| EG-UNIFIED-DATA-PLANE-R025.1 `PgrxSpikeDecision` is a typed decision record refusing an outcome without full-scope evidence Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`PgrxSpikeDecision` is a typed decision record refusing an outcome without full-scope evidence.** `crates/eg-types/src/pgrx_spike.rs` defines the closed `PgrxSpikeArea` vocabulary (SPARQL over tables, vector search, time-series kernel, wait-for-position helper) and `validate`, which refuses a decision missing evidence for any declared area or recording no outcome. | Verified by unit tests: a complete decision validates with its outcome, a missing area is refused and named, a decision without an outcome is refused, an empty decision names every missing area, and the record serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc e265a52820f5 crates/eg-types/src/pgrx_spike.rs:171 crates/eg-types/src/pgrx_spike.rs:181 crates/eg-types/src/pgrx_spike.rs:197 crates/eg-types/src/pgrx_spike.rs:207 crates/eg-types/src/pgrx_spike.rs:217 |
| EG-UNIFIED-DATA-PLANE-R025.2 Run the spike across its declared scope areas Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run the spike across its declared scope areas.** Split per the net-new rule (no spike runner existed on main): `.1` is the runner slice needing no live pgrx/Postgres instance; the live run inside pgrx/Postgres is a later child. | The spike's results and the recorded decision are reviewed against its defined scope before further pgrx work is authorized | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 15a7370ecac3 |
| EG-UNIFIED-DATA-PLANE-R025.2.1 `run_spike` assembles a `PgrxSpikeDecision` from one evidence source per declared area, deferring to the typed model's full-scope refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`run_spike` assembles a `PgrxSpikeDecision` from one evidence source per declared area, deferring to the typed model's full-scope refusal.** `crates/eg-types/src/pgrx_spike.rs` adds `PgrxSpikeAreaEvaluator` and `run_spike`, which collects one `PgrxSpikeEvidence` per evaluator and validates the assembled decision. Needs no live pgrx extension or Postgres instance: driven against fake evaluators. | Verified by unit tests: a full set of evaluators plus an outcome produces a valid decision, an evaluator set missing an area is refused and named, and a complete evaluator set with no outcome is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 15a7370ecac3 crates/eg-types/src/pgrx_spike.rs:229 crates/eg-types/src/pgrx_spike.rs:242 crates/eg-types/src/pgrx_spike.rs:257 |
| EG-UNIFIED-DATA-PLANE-R025.3 Review the spike's results and recorded decision; produce the approved ADR Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Review the spike's results and recorded decision; produce the approved ADR.** Child slice of `EG-UNIFIED-DATA-PLANE-R025` (see tasks.md). This row is LANDED only once every child is. | The spike's results and the recorded decision are reviewed against its defined scope before further pgrx work is authorized | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R025.3.1 Review skeleton: typed review request → approved ADR mapping plus the refusal path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Review skeleton: typed review request → approved ADR mapping plus the refusal path.** `crates/eg-types/src/pgrx_spike_review.rs` defines `PgrxSpikeReviewRequest`/`ApprovedPgrxAdr` and `approve`, refusing an invalid underlying decision, an empty reviewer, or an empty ADR title before any ADR is approved. Filing the ADR document and the live spike results it reviews are `EG-UNIFIED-DATA-PLANE-R025.3.2+`. | Verified by unit tests needing no live service: a well-formed review approves the ADR. An invalid decision, an empty reviewer, and an empty ADR title are each refused. The approved ADR serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 04347dc35255 crates/eg-types/src/pgrx_spike_review.rs:106 crates/eg-types/src/pgrx_spike_review.rs:119 crates/eg-types/src/pgrx_spike_review.rs:130 crates/eg-types/src/pgrx_spike_review.rs:141 crates/eg-types/src/pgrx_spike_review.rs:97 |
| EG-UNIFIED-DATA-PLANE-R025.3.2 File the approved pgrx ADR from the live spike results Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**File the approved pgrx ADR from the live spike results.** Remaining scope of `EG-UNIFIED-DATA-PLANE-R025.3` after the `.1` review skeleton: review the real spike results recorded by `R025.2`, approve through `approve`, and file the ADR document before further pgrx work is authorized. | The filed ADR names the reviewed `PgrxSpikeDecision`, its reviewer and scope, and is produced through `approve` from the live spike results. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R026 Run the Gramps native-hosting pilot phases P0 through P5 Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run the Gramps native-hosting pilot phases P0 through P5.** The Gramps pilot records a baseline content digest, establishes a real-Postgres control with a captured driver statement corpus, runs that corpus unmodified against EG, fixes only proven gaps with a failing test first, verifies restore paths, and demonstrates schema understanding through an approved mapping and query. Split per the net-new rule (no phase-gate type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Each phase's exit artifact, as defined in the specification, is produced and reviewed before the next phase begins. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 30af64b172d4 |
| EG-UNIFIED-DATA-PLANE-R026.1 `GrampsPilotProgress` is a typed P0-P5 phase gate refusing a wrong, unreviewed, or out-of-order exit Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`GrampsPilotProgress` is a typed P0-P5 phase gate refusing a wrong, unreviewed, or out-of-order exit.** `crates/eg-types/src/gramps_pilot_phase.rs` defines the closed `GrampsPilotPhase` order and each phase's required exit-artifact kind, `PhaseExitArtifact::validate` (refuses a mismatched artifact kind or a blank reviewer), and `GrampsPilotProgress::admits`/`next_phase`, which refuse admitting a phase before every earlier phase has a valid exit. | Verified by unit tests: a well-formed exit validates, a wrong artifact kind and an unreviewed exit are refused, a fresh pilot admits only P0, skipping ahead without a prior exit is refused, an invalid exit does not advance progress, and the full ordered exit sequence completes the pilot. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 30af64b172d4 6c11520aebfc 9a7674d1bae5 eb058c53407e crates/eg-types/src/gramps_pilot_phase.rs:151 crates/eg-types/src/gramps_pilot_phase.rs:157 crates/eg-types/src/gramps_pilot_phase.rs:168 crates/eg-types/src/gramps_pilot_phase.rs:176 crates/eg-types/src/gramps_pilot_phase.rs:185 |
| EG-UNIFIED-DATA-PLANE-R026.2 Run P0-P2 (baseline digest, Postgres control, unmodified corpus replay) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run P0-P2 (baseline digest, Postgres control, unmodified corpus replay).** Child slice of `EG-UNIFIED-DATA-PLANE-R026` (see tasks.md). This row is LANDED only once every child is. | Each phase's exit artifact, as defined in the specification, is produced and reviewed before the next phase begins | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R026.2.1 P0 adapter skeleton: typed baseline-digest → P0 phase-exit mapping plus the refusal path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**P0 adapter skeleton: typed baseline-digest → P0 phase-exit mapping plus the refusal path.** `crates/eg-types/src/gramps_baseline_digest.rs` defines `GrampsBaselineDigest` and `to_phase_exit`, refusing a zero record count, an empty digest, or an unreviewed exit before P0 is marked closed. The real baseline capture, the Postgres control, and the unmodified corpus replay (P1-P2) are `EG-UNIFIED-DATA-PLANE-R026.2.2+`. | Verified by unit tests needing no live service: a well-formed digest maps to the P0 exit. A zero record count, an empty digest, and an unreviewed exit are each refused. The digest serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 04347dc35255 crates/eg-types/src/gramps_baseline_digest.rs:100 crates/eg-types/src/gramps_baseline_digest.rs:111 crates/eg-types/src/gramps_baseline_digest.rs:121 crates/eg-types/src/gramps_baseline_digest.rs:78 crates/eg-types/src/gramps_baseline_digest.rs:89 |
| EG-UNIFIED-DATA-PLANE-R026.2.2 Run P0-P2 live: real baseline capture, Postgres control, unmodified corpus replay Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run P0-P2 live: real baseline capture, Postgres control, unmodified corpus replay.** Remaining scope of `EG-UNIFIED-DATA-PLANE-R026.2` after the `.1` P0 skeleton: capture the real Gramps baseline digest, stand up the Postgres control, and replay the unmodified corpus, recording each phase exit through `to_phase_exit`. | Each of P0-P2 produces its reviewed phase-exit artifact from the live run before the next phase begins. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R026.3 Run P3-P5 (proven-gap fixes, restore verification, schema-understanding demonstration) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run P3-P5 (proven-gap fixes, restore verification, schema-understanding demonstration).** Child slice of `EG-UNIFIED-DATA-PLANE-R026` (see tasks.md). This row is LANDED only once every child is. | Each phase's exit artifact, as defined in the specification, is produced and reviewed before the next phase begins | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R026.3.1 P3 adapter skeleton: typed proven-gap-fix → P3 phase-exit mapping plus the refusal path Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**P3 adapter skeleton: typed proven-gap-fix → P3 phase-exit mapping plus the refusal path.** `crates/eg-types/src/gramps_gap_fix.rs` defines `GrampsProvenGapFix` and `to_phase_exit`, refusing an empty description, an empty failing or passing test name, an identical before/after test name, or an unreviewed exit before P3 is marked closed. Real restore verification (P4) and the schema-understanding demonstration (P5) are `EG-UNIFIED-DATA-PLANE-R026.3.2+`. | Verified by unit tests needing no live service: a well-formed fix maps to the P3 exit; an empty description, an empty failing-test name, an identical before/after test name, and an unreviewed exit are each refused; the fix serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 04347dc35255 crates/eg-types/src/gramps_gap_fix.rs:105 crates/eg-types/src/gramps_gap_fix.rs:116 crates/eg-types/src/gramps_gap_fix.rs:127 crates/eg-types/src/gramps_gap_fix.rs:138 crates/eg-types/src/gramps_gap_fix.rs:148 |
| EG-UNIFIED-DATA-PLANE-R026.3.2 Run P4-P5 live: restore verification and the schema-understanding demonstration Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run P4-P5 live: restore verification and the schema-understanding demonstration.** Remaining scope of `EG-UNIFIED-DATA-PLANE-R026.3` after the `.1` P3 skeleton: verify a real restore and demonstrate schema understanding over the Gramps corpus, recording each phase exit. | P4 and P5 each produce their reviewed phase-exit artifact from the live run. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R027 Fix Postgres compatibility gaps proven by captured traffic Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Fix Postgres compatibility gaps proven by captured traffic.** EG implements each Postgres compatibility feature in its inventory only once captured application traffic proves it is needed, with a test that fails before the fix and passes after. Split per the net-new rule (no feature-fix-proof type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | Each fixed feature has a committed test shown failing against the prior behavior and passing against the fix. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 5873d340b4de |
| EG-UNIFIED-DATA-PLANE-R027.1 `FeatureFixRecord` is a typed inventory entry refusing a fix without complete captured-traffic/test proof Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`FeatureFixRecord` is a typed inventory entry refusing a fix without complete captured-traffic/test proof.** `crates/eg-types/src/pg_compat_feature.rs` defines the closed `PgCompatFeature` inventory and `validate`, which accepts an unfixed (no-proof) record, accepts a fixed record only with a non-empty captured-traffic reference and a non-empty failing/passing test-reference pair, and refuses any proof with an empty field. | Verified by unit tests: an unfixed feature with no proof validates, a fixed feature with complete proof validates and reports fixed, a proof with an empty traffic or failing-test reference is refused and reports unfixed, and the record serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 5873d340b4de 6c11520aebfc crates/eg-types/src/pg_compat_feature.rs:193 crates/eg-types/src/pg_compat_feature.rs:204 crates/eg-types/src/pg_compat_feature.rs:215 crates/eg-types/src/pg_compat_feature.rs:228 crates/eg-types/src/pg_compat_feature.rs:240 |
| EG-UNIFIED-DATA-PLANE-R027.2 Capture application traffic per feature and record the proof reference Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Capture application traffic per feature and record the proof reference.** Split per the net-new rule (no capture runner existed on main): `.1` is the runner slice needing no live candidate application. The live per-feature captures against real traffic are a later child. | Each fixed feature has a committed test shown failing against the prior behavior and passing against the fix | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | e8b99c7db914 |
| EG-UNIFIED-DATA-PLANE-R027.2.1 `capture_feature_fix` assembles a `FeatureFixRecord` from a pluggable `TrafficCaptureSource`, refusing an unproven or incomplete capture Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`capture_feature_fix` assembles a `FeatureFixRecord` from a pluggable `TrafficCaptureSource`, refusing an unproven or incomplete capture.** `crates/eg-types/src/pg_compat_feature.rs` adds `TrafficCaptureSource` and `capture_feature_fix`, which refuses to produce a fixed record when the source has not yet captured traffic proving the feature needed, and bubbles `FeatureFixRecord::validate`'s refusal for an incomplete proof. Needs no live candidate application: driven against a fake capture source. | Verified by unit tests: a complete captured proof produces a valid fixed record, a source with no traffic yet is refused as not proven, and an incomplete captured proof is refused and reports the underlying validation error. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | e8b99c7db914 crates/eg-types/src/pg_compat_feature.rs:262 crates/eg-types/src/pg_compat_feature.rs:272 crates/eg-types/src/pg_compat_feature.rs:280 |
| EG-UNIFIED-DATA-PLANE-R027.3 Implement each proven feature with its failing-then-passing test Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Implement each proven feature with its failing-then-passing test.** Split per the net-new rule (no fix-application runner existed on main): `.1` is the runner slice needing no live Postgres-compatible target. Applying each real feature's fix is a later child. | Each fixed feature has a committed test shown failing against the prior behavior and passing against the fix | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | e8b99c7db914 |
| EG-UNIFIED-DATA-PLANE-R027.3.1 `apply_proven_fix` applies a feature's fix only once its record is proven fixed, refusing -- without invoking the fix -- an unproven record Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`apply_proven_fix` applies a feature's fix only once its record is proven fixed, refusing -- without invoking the fix -- an unproven record.** `crates/eg-types/src/pg_compat_feature.rs` adds `apply_proven_fix`, which checks `FeatureFixRecord::is_fixed()` before invoking the caller-supplied fix closure. Needs no live Postgres-compatible target: driven against a fake fix closure. | Verified by unit tests: a proven record invokes the fix exactly once for its feature, and an unproven record is refused without invoking the fix. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | e8b99c7db914 crates/eg-types/src/pg_compat_feature.rs:295 crates/eg-types/src/pg_compat_feature.rs:311 |
| EG-UNIFIED-DATA-PLANE-R028 Build the Postgres-equivalence differential harness Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Build the Postgres-equivalence differential harness.** A differential harness compares EG against real Postgres using the Postgres regression suite, SQLancer-style generated cases, and captured application traffic, recording any known difference as a reviewed, named deviation rather than a self-updating baseline. Split per the net-new rule (no deviation-baseline type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | The harness report lists every deviation with its owner and a reproducing fixture, and no deviation is auto-suppressed on a subsequent run. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 2f94e96c5129 |
| EG-UNIFIED-DATA-PLANE-R028.1 `DeviationBaseline::reconcile` refuses a baseline update that drops a deviation without an explicit resolution Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`DeviationBaseline::reconcile` refuses a baseline update that drops a deviation without an explicit resolution.** `crates/eg-types/src/pg_diff_baseline.rs` defines the closed `DifferentialSource` vocabulary (Postgres regression suite, SQLancer-generated, captured application traffic), `PostgresDeviation` (name, source, owner, reproducing fixture), and `reconcile`, which refuses when a current run's baseline is missing a prior deviation that is not named in an explicit `resolved` list — a deviation never silently vanishes. | Verified by unit tests: an identical baseline reconciles, a new deviation is not a problem, a dropped deviation without resolution is refused and named, a dropped deviation with explicit resolution reconciles, an emptied current baseline against a nonempty prior is refused, and a deviation serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 2f94e96c5129 6c11520aebfc crates/eg-types/src/pg_diff_baseline.rs:141 crates/eg-types/src/pg_diff_baseline.rs:149 crates/eg-types/src/pg_diff_baseline.rs:157 crates/eg-types/src/pg_diff_baseline.rs:166 crates/eg-types/src/pg_diff_baseline.rs:177 |
| EG-UNIFIED-DATA-PLANE-R028.2 Run the Postgres regression suite and SQLancer-style generated corpora against EG Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run the Postgres regression suite and SQLancer-style generated corpora against EG.** Split per the net-new rule (no harness runner existed on main): `.1` is the runner slice needing no live Postgres instance; the live regression-suite and SQLancer-generated runs are a later child. | The harness report lists every deviation with its owner and a reproducing fixture, and no deviation is auto-suppressed on a subsequent run | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | e8b99c7db914 |
| EG-UNIFIED-DATA-PLANE-R028.2.1 `run_differential_harness` assembles a run's `DeviationBaseline` from one evaluator per declared corpus source and reconciles it against the prior baseline Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`run_differential_harness` assembles a run's `DeviationBaseline` from one evaluator per declared corpus source and reconciles it against the prior baseline.** `crates/eg-types/src/pg_diff_baseline.rs` adds `DifferentialCaseEvaluator` and `run_differential_harness`, which merges each evaluator's deviations by name and bubbles `DeviationBaseline::reconcile`'s refusal for an unaccounted drop. Needs no live Postgres instance: driven against fake evaluators. | Verified by unit tests: deviations from every declared source merge into one baseline, a dropped prior deviation with no resolution is refused and named, and an explicitly resolved drop reconciles. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | e8b99c7db914 crates/eg-types/src/pg_diff_baseline.rs:210 crates/eg-types/src/pg_diff_baseline.rs:233 crates/eg-types/src/pg_diff_baseline.rs:245 |
| EG-UNIFIED-DATA-PLANE-R028.3 Run the captured-application-traffic corpus and publish the harness report Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run the captured-application-traffic corpus and publish the harness report.** Child slice of `EG-UNIFIED-DATA-PLANE-R028` (see tasks.md). | The harness report lists every deviation with its owner and a reproducing fixture, and no deviation is auto-suppressed on a subsequent run | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R029 Expose a schema_context query surface Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Expose a schema_context query surface.** EG exposes a schema_context query that answers what a table is, what joins to it, which ontology class and application it belongs to, and the impact of a change, following the same pattern as the existing code_context surface. Split per the net-new rule (no schema_context answer type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | A query test against a known catalog fixture confirms schema_context returns the expected joins, class, application, and impact for a table. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | d9b702c9e7e2 |
| EG-UNIFIED-DATA-PLANE-R029.1 `SchemaContextCatalog::schema_context` is a typed answer lookup refusing an unknown table Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`SchemaContextCatalog::schema_context` is a typed answer lookup refusing an unknown table.** `crates/eg-types/src/schema_context.rs` defines `SchemaContextAnswer` (joins, ontology class, application, change impact) and `schema_context`, which refuses a table absent from the catalog rather than returning a default/empty answer. | Verified by unit tests: a known table returns its full answer, an unknown table is refused rather than defaulted, an empty catalog refuses every table, and the answer serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc d9b702c9e7e2 crates/eg-types/src/schema_context.rs:146 crates/eg-types/src/schema_context.rs:156 crates/eg-types/src/schema_context.rs:163 crates/eg-types/src/schema_context.rs:170 |
| EG-UNIFIED-DATA-PLANE-R029.2 Wire the real schema_context query entry point through Graph OS, following the code_context pattern Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Wire the real schema_context query entry point through Graph OS, following the code_context pattern.** Child slice of `EG-UNIFIED-DATA-PLANE-R029` (see tasks.md). | A query test against a known catalog fixture confirms schema_context returns the expected joins, class, application, and impact for a table | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | c1bf552a9c33 efcab03c2fa8 crates/eg-types/src/schema_context.rs:179 crates/eg-types/src/schema_context.rs:202 |
| EG-UNIFIED-DATA-PLANE-R030 Resolve entities across attached applications Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Resolve entities across attached applications.** EG proposes cross-application entity links among Gramps, Immich, Twenty, and Firefly using blocking, field similarity, and a Fellegi-Sunter model, and records each link as an owl:sameAs proposal that only becomes active once approved. Split per the net-new rule (no entity-link-proposal type existed on main): `.1` is the typed model (this requirement's rollup is LANDED only once every child is). | An entity-resolution fixture with true matches, false matches, and ambiguous candidates confirms no proposal is asserted as owl:sameAs before approval. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 648e9b47f700 |
| EG-UNIFIED-DATA-PLANE-R030.1 `EntityLinkProposal::assert_same_as` refuses an unapproved or non-Match candidate Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`EntityLinkProposal::assert_same_as` refuses an unapproved or non-Match candidate.** `crates/eg-types/src/entity_link_proposal.rs` defines `AttachedApplication` (Gramps/Immich/Twenty/Firefly), `MatchClass` (Match/NonMatch/Ambiguous), and `assert_same_as`, which refuses a `NonMatch`/`Ambiguous` candidate even if marked approved, and refuses an unapproved or blank-approver `Match`. | Verified by unit tests: an approved match asserts, an unapproved match is refused, an approved non-match and an approved ambiguous candidate are both refused, a blank approver is refused, and the proposal serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 648e9b47f700 6c11520aebfc crates/eg-types/src/entity_link_proposal.rs:109 crates/eg-types/src/entity_link_proposal.rs:116 crates/eg-types/src/entity_link_proposal.rs:123 crates/eg-types/src/entity_link_proposal.rs:130 crates/eg-types/src/entity_link_proposal.rs:137 |
| EG-UNIFIED-DATA-PLANE-R030.2 Blocking and field-similarity candidate generation across Gramps/Immich/Twenty/Firefly Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Blocking and field-similarity candidate generation across Gramps/Immich/Twenty/Firefly.** Child slice of `EG-UNIFIED-DATA-PLANE-R030` (see tasks.md). | An entity-resolution fixture with true matches, false matches, and ambiguous candidates confirms no proposal is asserted as owl:sameAs before approval | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R030.3 Real Fellegi-Sunter scoring and the approval workflow Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Real Fellegi-Sunter scoring and the approval workflow.** Child slice of `EG-UNIFIED-DATA-PLANE-R030` (see tasks.md). | An entity-resolution fixture with true matches, false matches, and ambiguous candidates confirms no proposal is asserted as owl:sameAs before approval | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R031 Enforce consolidation safety across attached applications (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Enforce consolidation safety across attached applications (rollup).** EG isolates each attached application by tenant and principal, exposes its data only through approved mappings, enforces quotas that bound the blast radius of one application's load or failure, and applies an explicit upgrade-coupling policy and admission criteria before adding another application. No typed admission/quota model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | A fault-isolation test confirms one application's failure or quota breach does not degrade another attached application's service. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R031.1 `ApplicationAdmission`/`ConsolidationIsolationRegistry` are a typed admission model with identity and quota refusals Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ApplicationAdmission`/`ConsolidationIsolationRegistry` are a typed admission model with identity and quota refusals.** `crates/eg-types/src/consolidation_isolation.rs` defines `ApplicationAdmission` (tenant/principal/quota/`UpgradeCouplingPolicy`); `validate_admission` refuses an admission with an empty application/tenant/principal or a quota with every bound at zero, and `ConsolidationIsolationRegistry::admit` additionally refuses re-admitting the same tenant/application pair under a different principal. | Verified by unit tests: a valid admission round-trips through `admit`; an empty identity is refused; an all-zero quota is refused; the same principal re-admitting is idempotent; a different principal re-admitting the same tenant/application is refused; and an invalid admission is refused rather than silently admitted. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc eb058c53407e crates/eg-types/src/consolidation_isolation.rs:160 crates/eg-types/src/consolidation_isolation.rs:170 crates/eg-types/src/consolidation_isolation.rs:178 crates/eg-types/src/consolidation_isolation.rs:193 crates/eg-types/src/consolidation_isolation.rs:206 |
| EG-UNIFIED-DATA-PLANE-R031.2 Real fault-isolation enforcement and quota metering Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Real fault-isolation enforcement and quota metering.** Child slice of `EG-UNIFIED-DATA-PLANE-R031` (see tasks.md). | A fault-isolation test confirms one application's failure or quota breach does not degrade another attached application's service | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R032 Run the Immich connector pilot phases I0 through I6 (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run the Immich connector pilot phases I0 through I6 (rollup).** The Immich pilot generates a version-pinned API client from a checked-in OpenAPI fixture, provides read-first MCP tools with approval-gated writes, registers the connector across every required release catalog, ingests assets and per-user people incrementally with no-op replay on a second run, resolves cross-application entity proposals, and adds health, lag, and upgrade-digest checks. No typed phase-gate model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | Each phase's fixture and test, as defined in the specification, passes, including the no-op replay and one-change incremental ingest tests. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R032.1 `ImmichPilotProgress` is a typed phase gate (I0-I6) with exit-artifact and skip-ahead refusals Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`ImmichPilotProgress` is a typed phase gate (I0-I6) with exit-artifact and skip-ahead refusals.** `crates/eg-types/src/immich_pilot_phase.rs` defines the closed `ImmichPilotPhase` order (I0 client generation through I6 health checks) with each phase's required exit-artifact kind; `PhaseExitArtifact::validate` refuses a mismatched artifact kind or a blank reviewer, and `ImmichPilotProgress::admits`/`next_phase` refuse admitting a phase before every earlier phase has a valid exit. | Verified by unit tests: a well-formed exit validates; a wrong artifact kind is refused; an unreviewed exit is refused; a fresh pilot admits only I0; skipping ahead without a prior exit is refused; an invalid exit does not advance progress; and the full I0-I6 order completes the pilot. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc eb058c53407e crates/eg-types/src/immich_pilot_phase.rs:158 crates/eg-types/src/immich_pilot_phase.rs:167 crates/eg-types/src/immich_pilot_phase.rs:178 crates/eg-types/src/immich_pilot_phase.rs:186 crates/eg-types/src/immich_pilot_phase.rs:198 |
| EG-UNIFIED-DATA-PLANE-R032.2 Run phase I0 (version-pinned OpenAPI client generation and digest) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Run phase I0 (version-pinned OpenAPI client generation and digest).** Child slice of `EG-UNIFIED-DATA-PLANE-R032` (see tasks.md). | Each phase's fixture and test, as defined in the specification, passes, including the no-op replay and one-change incremental ingest tests | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R033 Cut over Gramps to EG-backed storage in production (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Cut over Gramps to EG-backed storage in production (rollup).** Gramps P6 moves the production family tree to EG-backed storage with a Postgres replica and a nightly independent XML export, keeps a 30-day read-only SQLite fallback available, and proceeds only after an explicit, separately recorded go-ahead following the P0 through P5 evidence. No typed go-ahead model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | A rehearsed failover test exercises the fallback path and confirms the nightly export and replica remain consistent throughout the 30-day observation window. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | 273dc35315ff |
| EG-UNIFIED-DATA-PLANE-R033.1 `GrampsCutoverGoAhead` is a typed go-ahead model gated on a valid P5 exit and a 30-day fallback window Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`GrampsCutoverGoAhead` is a typed go-ahead model gated on a valid P5 exit and a 30-day fallback window.** `crates/eg-types/src/gramps_cutover_gate.rs` reuses `gramps_pilot_phase::PhaseExitArtifact`; `validate_go_ahead` refuses a go-ahead that cites any phase but `P5SchemaUnderstanding`, cites an invalid (unreviewed) P5 exit, names no approver, or declares a fallback window shorter than the required 30 days. | Verified by unit tests: a well-formed go-ahead validates; citing the wrong phase is refused; citing an unreviewed P5 exit is refused; naming no approver is refused; a fallback window under 30 days is refused; and the model serializes and decodes round-trip. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 6c11520aebfc 9a7674d1bae5 crates/eg-types/src/gramps_cutover_gate.rs:101 crates/eg-types/src/gramps_cutover_gate.rs:107 crates/eg-types/src/gramps_cutover_gate.rs:121 crates/eg-types/src/gramps_cutover_gate.rs:132 crates/eg-types/src/gramps_cutover_gate.rs:143 |
| EG-UNIFIED-DATA-PLANE-R033.2 Real production cutover: Postgres replica, nightly independent XML export, and the rehearsed failover test Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Real production cutover: Postgres replica, nightly independent XML export, and the rehearsed failover test.** Child slice of `EG-UNIFIED-DATA-PLANE-R033` (see tasks.md). | A rehearsed failover test exercises the fallback path and confirms the nightly export and replica remain consistent throughout the 30-day observation window | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R034 Keep eg-core's build, Clippy, and generated contract suite green Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Keep eg-core's build, Clippy, and generated contract suite green.** eg-core's root library compiles successfully, and Clippy passes cleanly with all features and targets enabled. The generated contract suite passes all of its cases, and the scanner/contract/catalog test suite passes all of its cases. | Continuous integration enforces a successful root library build, a clean all-features/all-targets Clippy run, and full passes of the generated contract and scanner/contract/catalog test suites. | requirement | EG-UNIFIED-DATA-PLANE | LANDED | 2e6d7617289a |
| EG-UNIFIED-DATA-PLANE-R035 Share the compiled ontology cache with attached-schema graphs Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Share the compiled ontology cache with attached-schema graphs.** EG reuses the compiled shapes and ontology cache on every RDF write to a graph with an attached, non-core schema source, rather than recomputing the full parse-and-classification composition in icv_guard::compiled_policy on each write, matching the caching EG-TYPED-PACKS-R051 requires for core-schema graphs. | A benchmark test measures per-write latency on an attached-schema graph and confirms it matches cache-hit performance rather than full-recomputation performance. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 bee3dd02e6ed src/server/graph_schema/compiled_tests.rs:68 src/server/graph_schema/compiled_tests.rs:79 src/server/graph_schema/compiled_tests.rs:93 |
| EG-UNIFIED-DATA-PLANE-R036 Derive HealthAnomaly and Incident facts with conformance checking Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Derive HealthAnomaly and Incident facts with conformance checking.** EG's complex-event-processing pipeline derives HealthAnomaly and Incident facts from the data plane's change and telemetry events, and checks each derived fact against its declared-versus-observed conformance. | A test feeds a known event sequence through the pipeline and confirms the expected HealthAnomaly and Incident facts and conformance result are produced. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 155bd9b55e81 6c11520aebfc crates/eg-stream/src/telemetry/tests/derive.rs:108 crates/eg-stream/src/telemetry/tests/derive.rs:121 crates/eg-stream/src/telemetry/tests/derive.rs:139 crates/eg-stream/src/telemetry/tests/derive.rs:28 crates/eg-stream/src/telemetry/tests/derive.rs:48 |
| EG-UNIFIED-DATA-PLANE-R037 Virtual-graph vocabulary is an EG core schema source Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Virtual-graph vocabulary is an EG core schema source.** EG ships `core:virtual-graph@1` with three classes: `SourceConnection`, `MetadataContract` and `VirtualMapping`. A `SourceConnection` carries a source kind, an endpoint reference and declared capabilities. Source kinds cover API, MCP, A2A, GraphQL, SQL, Iceberg, Teradata-style warehouses and SPARQL endpoints. A `MetadataContract` describes one source at one schema version under a content digest. It lists discovered entities, fields, relationships and operations. A `VirtualMapping` binds one ontology class to one discovered entity, with a key field and predicate-to-field pairs. SHACL shapes refuse an endpoint reference with credentials. They also refuse a mapping that names an undiscovered entity or field. Only an approved mapping serves reads. | Shape fixtures accept a valid connection, contract and approved mapping. They reject credential-bearing references, undiscovered fields and unapproved mappings at read time. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 3dd56fe53283 85f4ea82f45f 9b6036853937 src/server/graph_schema/virtual_graph_tests.rs:52 src/server/graph_schema/virtual_graph_tests.rs:74 src/server/graph_schema/virtual_graph_tests.rs:80 |
| EG-UNIFIED-DATA-PLANE-R038 Materialize metadata and hot subsets; virtualize the rest (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Materialize metadata and hot subsets; virtualize the rest (rollup).** Metadata discovery runs for every registered source kind, not only SQL dialect catalogs. Discovery writes a versioned, hashed `MetadataContract` and never copies entity rows. Entity rows stay at the source by default and answer queries through approved virtual mappings. A mapping copies rows only under an acceleration policy. That policy needs the source `copy` capability, a declared hot-subset predicate and a freshness watermark. A missing watermark disables the copied route. EXPLAIN states whether each fragment ran live or from a copy. No typed `MetadataContract`/acceleration-policy model existed on main; split producer-first: `.1` is the typed model. This row is LANDED only once every child is. | Tests prove discovery writes metadata only, a cold mapping reads live, a hot mapping copies only its declared subset, and a stale watermark falls back to live reads. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R038.1 `MetadataContract`/`AccelerationPolicy` are typed models with a capability refusal and a watermark-missing live fallback Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`MetadataContract`/`AccelerationPolicy` are typed models with a capability refusal and a watermark-missing live fallback.** `crates/eg-types/src/metadata_acceleration.rs` defines `MetadataContract` (source-kind-generic, metadata only, no row data field) and `AccelerationPolicy`; `validate_policy` refuses a policy that declares a hot-subset predicate for a source with no `copy` capability, and `AccelerationPolicy::resolve_mode` returns `FragmentExecutionMode::Live` whenever the copy capability, predicate, or freshness watermark is missing, `Copy` only when all three are present. | Verified by unit tests: a well-formed contract validates; an empty source kind is refused; a fully declared policy resolves to `Copy`; a missing watermark falls back to `Live`; a mapping with no predicate is `Live`; and a predicate declared without copy capability is refused. | requirement | EG-UNIFIED-DATA-PLANE | VERIFIED | 9a7674d1bae5 crates/eg-types/src/metadata_acceleration.rs:121 crates/eg-types/src/metadata_acceleration.rs:127 crates/eg-types/src/metadata_acceleration.rs:135 crates/eg-types/src/metadata_acceleration.rs:147 crates/eg-types/src/metadata_acceleration.rs:154 |
| EG-UNIFIED-DATA-PLANE-R038.2 Real per-source-kind discovery writing the contract, the copy pipeline, and EXPLAIN's per-fragment live/copy reporting Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Real per-source-kind discovery writing the contract, the copy pipeline, and EXPLAIN's per-fragment live/copy reporting.** Child slice of `EG-UNIFIED-DATA-PLANE-R038` (see tasks.md). | Tests prove discovery writes metadata only, a cold mapping reads live, a hot mapping copies only its declared subset, and a stale watermark falls back to live reads | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R039 Authenticated, tenant-scoped Iceberg REST catalog (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Authenticated, tenant-scoped Iceberg REST catalog (rollup).** The lake catalog endpoint must refuse unauthenticated and cross-tenant requests. It must reuse EG's verified request envelope and tenant model, not a second token store. External engines then read EG tables as Iceberg tables. | Tests prove a valid token lists and loads its own tables, and a missing or cross-tenant token is refused. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R039.1 `CatalogPrincipal` typed model Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**`CatalogPrincipal` typed model.** `crates/eg-lake/src/catalog.rs` must define `CatalogPrincipal` with tenant, subject and scopes, built only from the verified request envelope. | Unit test builds a principal from a verified envelope and rejects an unsigned one. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R039.2 Catalog authorization refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Catalog authorization refusal.** `authorize_catalog_call` in `crates/eg-lake/src/catalog.rs` must refuse a call whose principal tenant differs from the table tenant, and must refuse an absent principal. | Two unit tests: cross-tenant refusal and absent-principal refusal. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R039.3 Locate and wire the REST listener Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Locate and wire the REST listener.** The first step must locate the lake REST listener and call `authorize_catalog_call` on every route. No route may keep the deny-all stub. | Route test enumerates every catalog route and asserts each calls the check. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R039.4 Partition spec in emitted Iceberg metadata Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Partition spec in emitted Iceberg metadata.** `crates/eg-lake/src/iceberg.rs` must emit a partition spec and per-partition field summaries when a table declares a partition column. Unpartitioned tables stay unchanged. | Metadata test reads back the partition spec and prunes one manifest by a partition predicate. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R039.5 End-to-end external read Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**End-to-end external read.** An external Iceberg client must load a table through the authenticated catalog, and an out-of-tenant client must be refused. | Disposable-fixture test with a pinned external reader loads one table and fails the cross-tenant load. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040 Per-modality retrieval gate blocks promotion of a shared embedding space (rollup) Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Per-modality retrieval gate blocks promotion of a shared embedding space (rollup).** Embeddings for the text, image and audio modalities share one vector space. After any model or projector change, the engine must re-validate each modality on its own retrieval check. A modality that regresses must block promotion. Children `.1` to `.6` deliver it. [arXiv:2606.09331] | See each child. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040.1 Model Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Model.** Add `ModalityCheck{modality, probe_set_digest, metric, floor, baseline}` and `PromotionVerdict` in new `crates/eg-types/src/embedding_promotion.rs`. Closed `modality` values are `text`, `image` and `audio`. `EmbeddingVersion` at `crates/eg-ann/src/version.rs:32` names a model and version but holds no check result. Proving test: `crates/eg-types/src/embedding_promotion.rs::tests::checks_round_trip`. | A serde round trip keeps every field and rejects an unknown modality. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040.2 Behavior Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Behavior.** Add `evaluate_promotion(candidate, checks)` in `embedding_promotion.rs`. It computes recall at k per modality with `recall_at_k` at `crates/eg-ann/src/recall.rs:28` on that modality probe set. A drop beyond the tolerance blocks promotion. The default tolerance is 0.02 absolute and is a named replaceable default. A modality with no probe set blocks promotion. Proving test: `crates/eg-types/src/embedding_promotion.rs::tests::one_regression_blocks_promotion`. | One regressed modality blocks even when the mean improves. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040.3 Wiring Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Wiring.** The gate attaches before `EmbeddingVersionStore::tag_batch` at `crates/eg-ann/src/version.rs:129` in the re-embed path. No production caller of `tag_batch` or `tag` exists today. This row creates the call site in the re-embed worker queued by `EG-FEDERATED-QUERY-R077.3`, and it reads the binding at `crates/eg-query/src/tables/embedding_binding.rs:526`. Proving test: `crates/eg-ann/src/version.rs::tests::tag_requires_passing_verdict`. | The re-embed worker calls the gate before it tags a new version. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040.4 Refusal Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Refusal.** A blocked promotion must leave the prior version active. The engine must return `PromotionBlocked` naming each regressed modality, its baseline and its measured value. The engine must not tag any vector with the candidate version. Proving test: `crates/eg-ann/src/version.rs::tests::blocked_promotion_tags_nothing`. | No vector carries the candidate version after a block. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040.5 Evidence Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Evidence.** The engine must store each `PromotionVerdict` as a node linked to the candidate model and version. It carries the per-modality metric, floor and probe set digest. The node is readable through a graph query. Proving test: `crates/eg-types/src/embedding_promotion.rs::tests::verdict_is_stored_with_modality_entries`. | A graph query returns the verdict with one entry per modality. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R040.6 Hot-path proof Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**Hot-path proof.** The entry point is a served row write on a bound text column. The test replaces the embedding model with a candidate that regresses the image check. The write passes through the re-embed worker and the wired gate. The test observes the blocked promotion and the prior version still active. Proving test: `tests/embedding/test_promotion_gate_served.py::test_regressed_modality_blocks_promotion`. | The served write leaves the prior version active and records the verdict. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |
| EG-UNIFIED-DATA-PLANE-R026.4 EG:64 source definition Definition — EG-UNIFIED-DATA-PLANE / EG-UNIFIED-DATA-PLANE — Unified data planeCanonical requirement and verification source**EG:64 source definition.** Expose graph-backed relational projections through an approved, version-pinned schema mapping. Reuse `AttachedCatalogGraph`/R2RML and the existing query surface. A projection-read request binds tenant, actor, graph, mapping id/revision, table, selected columns, typed predicates, and query digest. Its response binds mapping revision, graph revision, column types, and result digest. Projection reads are read-only. Refuse INSERT, UPDATE, DELETE, or DDL through projected tables. Apply the same refusal to read-only principals and principals with separate write grants. A write request names the target graph mutation and passes existing policy/admission through the authoritative `MutationBatch` path. A mutation grant does not make a projection a writer. Preserve R026 P0–P5. Reuse R003/R005 for catalog and mapping. Reuse R029 for schema context. **Explicit hold:** The source record names no external application, relational table/column contract, or driver statement corpus. Keep application-level schema compatibility open until the R026 P0/P5 owner provides and approves the concrete mapping and captured statements. Do not imply a universal relational schema. **Original source objective:** The platform acts as a persistent store backend for external applications expecting a relational schema. Expose graph data read-only through that schema unless writes are explicitly granted. **Source SHA-256:** `c55bc629b1bfefc9d0346b75b8bb95e5a231b891e7e34297df17b960d6c9773c`. **Preserves:** EG-DURABLE-KERNEL-R035, EG-DURABLE-KERNEL-R043, EG-FEDERATED-QUERY-R080, EG-UNIFIED-DATA-PLANE-R026, EG-FEDERATED-QUERY-R080.1, EG-FEDERATED-QUERY-R080.2, EG-FEDERATED-QUERY-R080.3, EG-FEDERATED-QUERY-R080.4, EG-FEDERATED-QUERY-R080.5, and EG-FEDERATED-QUERY-R080.6. Delivery state remains SPECIFIED. This text does not assert implementation or served evidence. | A served external client reads a mapped table through an approved, pinned mapping. Bind the result to schema/graph revisions and row digest. Try INSERT, UPDATE, DELETE, and DDL through read-only and separately mutation-granted principals. Each attempt refuses and leaves graph revision unchanged. Submit an authorized graph `MutationBatch`. Confirm the projection read reflects its committed revision. Also refuse stale/unapproved mappings and unauthorized graph mutations. Keep application-level SQL/schema conformance open until R026 provides the approved target mapping and captured statement corpus. These are acceptance targets only. No test, implementation, receipt, or served result is asserted. | requirement | EG-UNIFIED-DATA-PLANE | SPECIFIED | No recorded commit/test evidence |