diff --git a/.release-please-manifest.json b/.release-please-manifest.json index fc5553b07..945fbaf29 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.24.0" + ".": "0.25.0" } diff --git a/AGENTS.md b/AGENTS.md index f043320b2..9e0e535bc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ -# ACES SDL Agent Rules +# RAES SDL Agent Rules Use the repo policy tooling before and after implementation work. diff --git a/CHANGELOG.md b/CHANGELOG.md index 032174f38..56d132d2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 PRs do **not** edit this file directly. release-please maintains it from the Conventional Commit history on `main` (#684). +## [0.25.0](https://github.com/RAESystem/rae/compare/v0.24.0...v0.25.0) (2026-07-25) + + +### Features + +* add ASR-515 validation-basis disclosure contract ([#871](https://github.com/RAESystem/rae/issues/871)) ([1cd7362](https://github.com/RAESystem/rae/commit/1cd73624c2a2a694e428f12969bc71f0899d29d3)) +* **contracts:** add participant control occurrence contracts ([#868](https://github.com/RAESystem/rae/issues/868)) ([9122de5](https://github.com/RAESystem/rae/commit/9122de5be5a961c6954a5ec501748f1a5f486c57)) + + +### Bug Fixes + +* **release:** publish package as raes ([#879](https://github.com/RAESystem/rae/issues/879)) ([dad6692](https://github.com/RAESystem/rae/commit/dad6692322eccede19d81fe424ff61d20b1a253b)) + ## [0.24.0](https://github.com/RAESystem/rae/compare/v0.23.1...v0.24.0) (2026-07-25) diff --git a/README.md b/README.md index 56481c7f5..f16bf7509 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,27 @@ # Reproducible Agentic Environments System -Reproducible Agentic Environments System (RAES) is a backend-agnostic scenario -description language, Python reference implementation, and contract surface -for cyber range scenarios and experiments. +Reproducible Agentic Environments System (RAES) is a system for describing, +realizing, controlling, evaluating, and reproducing agentic environments. An +agentic environment is a declared and realized setting in which participants +receive observations, take actions, interact with resources or other +participants, and are evaluated under stated controls. Participants can +include software agents, policies, scripts, and human-control proxies. + +RAES supports a bounded reproduction attempt by connecting authored intent, +deterministic or governed variation, realization inputs, participant behavior, +observations, apparatus identity, provenance, evidence, replay boundaries, and +conformance results. It does not guarantee deterministic runtime behavior, +equal outcomes, exact replay, scientific validity, or reproducibility. + +Cyber, AI security, AI safety, testing, research, and evaluation are +non-exhaustive application areas. The general model can support additional +domains through domain-specific examples, controlled vocabularies, semantic +profiles, reusable assets, backend profiles, and evidence requirements. + +The current repository materializes RAES through its Scenario Description +Language (SDL), Python reference implementation, published contracts, examples, +and assurance material. RAES names the overall system; RAES SDL is the authored +scenario language within it. The repository separates authored scenario meaning from processors, backends, participant implementations, runtime state, and archived evidence. In the @@ -12,12 +31,13 @@ backend contracts without binding the authored scenario to one cloud, range implementation, or execution harness. This is an academic and engineering project. The repository is intended to be -read, tested, and used as reference implementation code, not treated as a product -surface. +read, tested, and used as reference implementation code, not treated as a +managed service. -The repository is not a managed cyber range and does not include a production -backend. Backend contracts, stubs, conformance checks, and examples are present; -real deployment backends remain separate implementations. +The repository is not a managed environment service and does not include a +production backend. Backend contracts, stubs, conformance checks, and examples +are present; real deployment backends remain separate implementations. Cyber is +the strongest current example and lineage base, not the boundary of the core. A worked example of RAES SDL driving a concrete range is [APTL (Advanced Purple Team Lab)](https://github.com/Brad-Edwards/aptl), a @@ -26,7 +46,7 @@ realizes the selected topology on a Docker Compose backend. ## Contents -- [What RAES Describes](#what-raes-describes) +- [Agentic Environments And RAES SDL](#agentic-environments-and-raes-sdl) - [Getting Started](#getting-started) - [Using the Python Reference Implementation](#using-the-python-reference-implementation) - [Repository Layout](#repository-layout) @@ -39,12 +59,15 @@ realizes the selected topology on a Docker Compose backend. - [License](#license) - [Maintainer](#maintainer) -## What RAES Describes +## Agentic Environments And RAES SDL -An SDL file is a declarative scenario document. It can describe topology, -hosts, services, identities, content, relationships, agents, objectives, -workflows, variables, and evaluation material without directly describing a -specific backend's infrastructure primitives. +RAES SDL records authored scenario and experiment intent. An SDL file can +describe topology, hosts, services, identities, content, relationships, agents, +objectives, workflows, variables, and evaluation material without directly +describing a specific backend's infrastructure primitives. Processors, +backends, participant implementations, and runtime choices turn that authored +scenario into a realized environment; the realization is not identical to the +SDL document. ```yaml name: hospital-ransomware-surgery-day @@ -99,7 +122,7 @@ Parse and validate a scenario from Python: ```python from pathlib import Path -from aces_sdl import parse_sdl_file +from raes import parse_sdl_file scenario = parse_sdl_file( Path("../../examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml") @@ -234,12 +257,12 @@ must mint a new schema version as described in ## Citation -If you use RAES SDL in academic work, cite the repository: +If you use RAES in academic work, cite the system: ```bibtex @software{raes, author = {Edwards, Brad}, - title = {RAES SDL: Backend-Agnostic Scenario Description Language for Cyber Range Experiments}, + title = {RAES: Reproducible Agentic Environments System}, year = {2026}, license = {MIT}, url = {https://github.com/RAESystem/rae} diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index be33110f4..11e8afbdf 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -2,7 +2,7 @@ ## Z3 Theorem Prover -ACES uses the `z3-solver` Python package, version 4.16.0.0, for the governed +RAES uses the `z3-solver` Python package, version 4.16.0.0, for the governed finite-domain scenario satisfiability profile. Z3 is distributed under the MIT License. @@ -28,7 +28,7 @@ SOFTWARE. ## Open Cyber Range SDL Parser -Portions of the ACES SDL model structure were translated and adapted from Open +Portions of the RAES SDL model structure were translated and adapted from Open Cyber Range SDL Parser v0.21.2, revision `fe83e8281fc4b954967fbaa5a0d099007ddcb06c`. diff --git a/contracts/concept-authority/behavioral-relations-v1.json b/contracts/concept-authority/behavioral-relations-v1.json index 6521470e9..7f5ce67a9 100644 --- a/contracts/concept-authority/behavioral-relations-v1.json +++ b/contracts/concept-authority/behavioral-relations-v1.json @@ -363,7 +363,7 @@ "test_status": "tested", "proof_status": "deliberately-unproved", "evidence_refs": [ - "implementations/python/packages/aces_sdl/validator/" + "implementations/python/packages/raes/validator/" ] }, "source_refs": [ @@ -703,7 +703,7 @@ "test_status": "tested", "proof_status": "not-applicable", "evidence_refs": [ - "implementations/python/packages/aces_sdl/canonical.py" + "implementations/python/packages/raes/canonical.py" ] }, "source_refs": [ diff --git a/contracts/profiles/scientific-completeness/delivery-assessment-2026-07-12.json b/contracts/profiles/scientific-completeness/delivery-assessment-2026-07-12.json index c0dc1c9a3..71e771066 100644 --- a/contracts/profiles/scientific-completeness/delivery-assessment-2026-07-12.json +++ b/contracts/profiles/scientific-completeness/delivery-assessment-2026-07-12.json @@ -8,28 +8,28 @@ { "concern_id": "source-profile-validity", "status": "implemented", "limitation": "Admission proves the governed source profile, not scientific adequacy.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/_yaml_loader.py", "claim": "Safe YAML ingress and source-profile enforcement."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/_yaml_loader.py", "claim": "Safe YAML ingress and source-profile enforcement."}, {"kind": "test", "path": "implementations/python/tests/test_sdl_parser.py", "claim": "Source-profile and parser rejection coverage."} ] }, { "concern_id": "closed-structural-model", "status": "implemented", "limitation": "Closed structure permits a name-only fragment and is not a completeness claim.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/scenario.py", "claim": "Closed Scenario model."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/scenario.py", "claim": "Closed Scenario model."}, {"kind": "test", "path": "implementations/python/tests/test_sdl_models.py", "claim": "Closed-model validation coverage."} ] }, { "concern_id": "semantic-reference-integrity", "status": "implemented", "limitation": "Semantic admission covers declared SDL references, not backend realization.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/validator/_core.py", "claim": "Collect-all semantic validation."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/validator/_core.py", "claim": "Collect-all semantic validation."}, {"kind": "test", "path": "implementations/python/tests/test_sdl_validator.py", "claim": "Cross-section semantic validation coverage."} ] }, { "concern_id": "topology-and-resource-intent", "status": "implemented", "limitation": "The SDL expresses intent; realizability remains apparatus and backend relative.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/scenario.py", "claim": "Typed scenario topology and resource surfaces."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/scenario.py", "claim": "Typed scenario topology and resource surfaces."}, {"kind": "test", "path": "implementations/python/tests/test_sdl_realworld.py", "claim": "Real-world scenario authoring coverage."} ] }, @@ -39,12 +39,12 @@ }, { "concern_id": "scoped-specificity-open-world-intent", "status": "partial", "limitation": "Realization envelopes and explicitness semantics exist, but scenario-scoped default and most-specific override authority remain open.", "issue_refs": ["#539"], - "evidence": [{"kind": "implementation", "path": "implementations/python/packages/aces_sdl/explicitness.py", "claim": "Current explicitness analysis."}] + "evidence": [{"kind": "implementation", "path": "implementations/python/packages/raes/explicitness.py", "claim": "Current explicitness analysis."}] }, { "concern_id": "parameter-typing", "status": "implemented", "limitation": "SDL variables instantiate scenario values; they do not define an experimental factor design.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/instantiate.py", "claim": "Typed variable binding and instantiation."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/instantiate.py", "claim": "Typed variable binding and instantiation."}, {"kind": "test", "path": "implementations/python/tests/test_sdl_phase_contracts.py", "claim": "Instantiation and closed-phase coverage."} ] }, @@ -77,28 +77,28 @@ { "concern_id": "propositions", "status": "implemented", "limitation": "The model defines claims and truth domains; it does not guarantee a backend can decide them.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/propositions.py", "claim": "Typed proposition model."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/propositions.py", "claim": "Typed proposition model."}, {"kind": "test", "path": "implementations/python/tests/test_proposition_semantics.py", "claim": "Predicate, subject, and truth-composition coverage."} ] }, { "concern_id": "assertions", "status": "implemented", "limitation": "Assertion composition is not evaluator lifecycle success or graded scoring.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/propositions.py", "claim": "Role-constrained assertion model."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/propositions.py", "claim": "Role-constrained assertion model."}, {"kind": "test", "path": "implementations/python/tests/test_truth_result_contracts.py", "claim": "Assertion truth-result integrity coverage."} ] }, { "concern_id": "condition-probe-binding", "status": "implemented", "limitation": "Conditions are probe realizations and cannot substitute command success for truth.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/conditions.py", "claim": "Explicit condition-to-proposition binding."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/conditions.py", "claim": "Explicit condition-to-proposition binding."}, {"kind": "test", "path": "implementations/python/tests/test_proposition_capabilities.py", "claim": "Backend binding capability and rejection coverage."} ] }, { "concern_id": "workflow-compensation", "status": "implemented", "limitation": "Compensation is bounded workflow behavior, not universal resource rollback.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/orchestration.py", "claim": "Workflow compensation surface."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/orchestration.py", "claim": "Workflow compensation surface."}, {"kind": "test", "path": "implementations/python/tests/test_fm2_semantics.py", "claim": "Workflow semantic invariants."} ] }, @@ -123,7 +123,7 @@ }, { "concern_id": "deadlines-and-windows", "status": "partial", "limitation": "Objective windows exist, but a complete time-domain-bound deadline surface is not published.", "issue_refs": ["#285", "#288"], - "evidence": [{"kind": "implementation", "path": "implementations/python/packages/aces_sdl/semantics/objectives.py", "claim": "Current objective-window analysis."}] + "evidence": [{"kind": "implementation", "path": "implementations/python/packages/raes/semantics/objectives.py", "claim": "Current objective-window analysis."}] }, { "concern_id": "pacing-and-synchronization", "status": "partial", "limitation": "Participant time-management records exist; general advancement and synchronization semantics remain open.", "issue_refs": ["#284", "#287", "#290"], @@ -132,13 +132,13 @@ { "concern_id": "participant-declaration", "status": "implemented", "limitation": "Participant declaration does not prove that an implementation respects every authority or observation boundary.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/agents.py", "claim": "Participant identity, scope, and boundary references."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/agents.py", "claim": "Participant identity, scope, and boundary references."}, {"kind": "test", "path": "implementations/python/tests/test_sem_208_participant_behavior.py", "claim": "Participant semantic validation coverage."} ] }, { "concern_id": "participant-action-observation", "status": "partial", "limitation": "Action contracts and observation boundaries exist, but participant-relative information-flow admission is not complete.", "issue_refs": ["#747"], - "evidence": [{"kind": "implementation", "path": "implementations/python/packages/aces_sdl/participant_behavior.py", "claim": "Current action-contract and observation-boundary models."}] + "evidence": [{"kind": "implementation", "path": "implementations/python/packages/raes/participant_behavior.py", "claim": "Current action-contract and observation-boundary models."}] }, { "concern_id": "participant-episode-reset", "status": "partial", "limitation": "Runtime episode lifecycle is implemented, while complete authored episode/reset semantics and conformance remain open.", "issue_refs": ["#305", "#307", "#311", "#314"], @@ -172,7 +172,7 @@ }, { "concern_id": "credential-intent", "status": "partial", "limitation": "Account and runtime-value posture exists, but authored credential-bearing setup remains unresolved.", "issue_refs": ["#673", "#708"], - "evidence": [{"kind": "implementation", "path": "implementations/python/packages/aces_sdl/accounts.py", "claim": "Current account and credential-posture authoring."}] + "evidence": [{"kind": "implementation", "path": "implementations/python/packages/raes/accounts.py", "claim": "Current account and credential-posture authoring."}] }, { "concern_id": "credential-materialization", "status": "missing", "limitation": "No complete portable binding materializes authored credential-bearing accounts while preserving secret boundaries.", "issue_refs": ["#708"], "evidence": [] @@ -191,7 +191,7 @@ { "concern_id": "vulnerability-inventory", "status": "implemented", "limitation": "A declared vulnerability is not proof of reachability, exploitability, or observation.", "evidence": [ - {"kind": "implementation", "path": "implementations/python/packages/aces_sdl/vulnerabilities.py", "claim": "Typed vulnerability inventory."}, + {"kind": "implementation", "path": "implementations/python/packages/raes/vulnerabilities.py", "claim": "Typed vulnerability inventory."}, {"kind": "test", "path": "implementations/python/tests/test_sdl_models.py", "claim": "Vulnerability model validation coverage."} ] }, @@ -201,11 +201,11 @@ }, { "concern_id": "flexible-step-tooling", "status": "partial", "limitation": "Scripts and workflows exist, but portable tool selection and affordance binding remain incomplete.", "issue_refs": ["#653"], - "evidence": [{"kind": "implementation", "path": "implementations/python/packages/aces_sdl/orchestration.py", "claim": "Current script and workflow step surfaces."}] + "evidence": [{"kind": "implementation", "path": "implementations/python/packages/raes/orchestration.py", "claim": "Current script and workflow step surfaces."}] }, { "concern_id": "portable-behavior-contracts", "status": "partial", "limitation": "Behavior specifications and action contracts exist, but portable participant affordance and realization coverage is incomplete.", "issue_refs": ["#653"], - "evidence": [{"kind": "implementation", "path": "implementations/python/packages/aces_sdl/participant_behavior_specification.py", "claim": "Current behavior specification surface."}] + "evidence": [{"kind": "implementation", "path": "implementations/python/packages/raes/participant_behavior_specification.py", "claim": "Current behavior specification surface."}] }, { "concern_id": "behavioral-relation-taxonomy", "status": "implemented", "limitation": "The revisioned taxonomy, bindings, finite-evidence gate, and counterexamples are implemented; universal simulation, refinement, equivalence, bisimulation, epistemic, strategic, probabilistic, timed, and partial-order proofs remain deliberately unproved or future.", "issue_refs": [], diff --git a/contracts/profiles/scientific-completeness/scientific-scenario-completeness-rev1.json b/contracts/profiles/scientific-completeness/scientific-scenario-completeness-rev1.json index e1556e648..fe609d562 100644 --- a/contracts/profiles/scientific-completeness/scientific-scenario-completeness-rev1.json +++ b/contracts/profiles/scientific-completeness/scientific-scenario-completeness-rev1.json @@ -59,7 +59,7 @@ "taxonomy_id": "aces-behavioral-relations", "taxonomy_revision": "rev2", "relation_id": "semantic-validity", "subject": "An artifact admitted by the valid-sdl-fragment profile", "left_carrier_ref": "scientific-scenario-completeness@rev1:valid-sdl-fragment", "quantifier_scope": "single-artifact", "evidence_scope": "structural", "evidence_boundary": "Parser and semantic validator acceptance for the submitted SDL artifact under its declared profile.", - "assurance_status": "tested", "evidence_refs": ["implementations/python/packages/aces_sdl/validator/", "implementations/python/tests/"], + "assurance_status": "tested", "evidence_refs": ["implementations/python/packages/raes/validator/", "implementations/python/tests/"], "limitations": ["Acceptance applies only to the submitted artifact and the declared SDL profile revision."], "explicit_non_claims": ["Semantic validity does not establish backend realization or behavioral equivalence."] } diff --git a/contracts/provenance/sdl-lineage-ledger-v1.json b/contracts/provenance/sdl-lineage-ledger-v1.json index 56908178a..f370e2945 100644 --- a/contracts/provenance/sdl-lineage-ledger-v1.json +++ b/contracts/provenance/sdl-lineage-ledger-v1.json @@ -914,7 +914,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/conditions.py", + "artifact": "implementations/python/packages/raes/conditions.py", "symbol_or_pointer": "conditions" } ], @@ -1037,7 +1037,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/scenario.py", + "artifact": "implementations/python/packages/raes/scenario.py", "symbol_or_pointer": "description" } ], @@ -1132,7 +1132,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/entities.py", + "artifact": "implementations/python/packages/raes/entities.py", "symbol_or_pointer": "entities" } ], @@ -1196,7 +1196,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/orchestration.py", + "artifact": "implementations/python/packages/raes/orchestration.py", "symbol_or_pointer": "events" } ], @@ -1291,7 +1291,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/features.py", + "artifact": "implementations/python/packages/raes/features.py", "symbol_or_pointer": "features" } ], @@ -1417,7 +1417,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/infrastructure.py", + "artifact": "implementations/python/packages/raes/infrastructure.py", "symbol_or_pointer": "infrastructure" } ], @@ -1481,7 +1481,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/orchestration.py", + "artifact": "implementations/python/packages/raes/orchestration.py", "symbol_or_pointer": "injects" } ], @@ -1576,7 +1576,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/scenario.py", + "artifact": "implementations/python/packages/raes/scenario.py", "symbol_or_pointer": "name" } ], @@ -1640,7 +1640,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/nodes.py", + "artifact": "implementations/python/packages/raes/nodes.py", "symbol_or_pointer": "nodes" } ], @@ -1935,7 +1935,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/orchestration.py", + "artifact": "implementations/python/packages/raes/orchestration.py", "symbol_or_pointer": "scripts" } ], @@ -1999,7 +1999,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/orchestration.py", + "artifact": "implementations/python/packages/raes/orchestration.py", "symbol_or_pointer": "stories" } ], @@ -2132,7 +2132,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/scenario.py", + "artifact": "implementations/python/packages/raes/scenario.py", "symbol_or_pointer": "version" } ], @@ -2196,7 +2196,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/vulnerabilities.py", + "artifact": "implementations/python/packages/raes/vulnerabilities.py", "symbol_or_pointer": "vulnerabilities" } ], @@ -3551,7 +3551,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/conditions.py", + "artifact": "implementations/python/packages/raes/conditions.py", "symbol_or_pointer": "conditions" } ], @@ -3672,7 +3672,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/orchestration.py", + "artifact": "implementations/python/packages/raes/orchestration.py", "symbol_or_pointer": "events" } ], @@ -3735,7 +3735,7 @@ ], "aces_boundaries": [ { - "artifact": "implementations/python/packages/aces_sdl/nodes.py", + "artifact": "implementations/python/packages/raes/nodes.py", "symbol_or_pointer": "nodes" } ], @@ -4154,35 +4154,35 @@ "source_ref": "ocr-sdl-v0.21.2", "derivation_scope": [ { - "artifact": "implementations/python/packages/aces_sdl/scenario.py", + "artifact": "implementations/python/packages/raes/scenario.py", "symbol_or_pointer": "Scenario identity fields and OCR-derived top-level section structure" }, { - "artifact": "implementations/python/packages/aces_sdl/nodes.py", + "artifact": "implementations/python/packages/raes/nodes.py", "symbol_or_pointer": "Node, VM, Switch, Resources, and Role model lineage" }, { - "artifact": "implementations/python/packages/aces_sdl/conditions.py", + "artifact": "implementations/python/packages/raes/conditions.py", "symbol_or_pointer": "Condition model lineage" }, { - "artifact": "implementations/python/packages/aces_sdl/entities.py", + "artifact": "implementations/python/packages/raes/entities.py", "symbol_or_pointer": "Entity model lineage" }, { - "artifact": "implementations/python/packages/aces_sdl/orchestration.py", + "artifact": "implementations/python/packages/raes/orchestration.py", "symbol_or_pointer": "Inject, Event, Script, and Story model lineage" }, { - "artifact": "implementations/python/packages/aces_sdl/infrastructure.py", + "artifact": "implementations/python/packages/raes/infrastructure.py", "symbol_or_pointer": "InfraNode model lineage" }, { - "artifact": "implementations/python/packages/aces_sdl/features.py", + "artifact": "implementations/python/packages/raes/features.py", "symbol_or_pointer": "Feature model lineage" }, { - "artifact": "implementations/python/packages/aces_sdl/vulnerabilities.py", + "artifact": "implementations/python/packages/raes/vulnerabilities.py", "symbol_or_pointer": "Vulnerability model lineage" } ], diff --git a/contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.json b/contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.json index a117bbcdd..5cf9f5d1c 100644 --- a/contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.json +++ b/contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.json @@ -2,9 +2,9 @@ "contract_id": "instantiated-scenario-snapshot-v1", "schema_path": "contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json", "stability": "draft", - "content_hash": "02ffc6e11ecc9cb171208df98faeb059f6fbb61b52848f1e7635ce06272b4df8", + "content_hash": "f8edcfb9f653ad387daa3f83d86e882d101af188b5878a7e7641bedc7019cf60", "last_change": { - "summary": "Published enterprise tenancy, service materialization, shared time, and autonomous participant execution in immutable snapshots.", - "content_hash": "02ffc6e11ecc9cb171208df98faeb059f6fbb61b52848f1e7635ce06272b4df8" + "summary": "Retargeted qualified Python validator references from aces_sdl to raes without changing schema identifiers or semantics.", + "content_hash": "f8edcfb9f653ad387daa3f83d86e882d101af188b5878a7e7641bedc7019cf60" } } diff --git a/contracts/schema-publication/entries/instantiated-scenario-v1.json b/contracts/schema-publication/entries/instantiated-scenario-v1.json index af6a0e141..49c4ed21a 100644 --- a/contracts/schema-publication/entries/instantiated-scenario-v1.json +++ b/contracts/schema-publication/entries/instantiated-scenario-v1.json @@ -2,9 +2,9 @@ "contract_id": "instantiated-scenario-v1", "schema_path": "contracts/schemas/sdl/instantiated-scenario-v1.json", "stability": "draft", - "content_hash": "2501d05645a48ed1d883e5467f6742d646975ae69cdb2f71a2f6f2066877d458", + "content_hash": "41698ee5c3340e69345aaef67a82dd906c46d686b46646444e1164a8ba1fba9c", "last_change": { - "summary": "Published enterprise tenancy, service materialization, shared time, and autonomous participant execution in instantiated scenarios.", - "content_hash": "2501d05645a48ed1d883e5467f6742d646975ae69cdb2f71a2f6f2066877d458" + "summary": "Retargeted qualified Python validator references from aces_sdl to raes without changing schema identifiers or semantics.", + "content_hash": "41698ee5c3340e69345aaef67a82dd906c46d686b46646444e1164a8ba1fba9c" } } diff --git a/contracts/schema-publication/entries/scenario-satisfiability-evidence-v1.json b/contracts/schema-publication/entries/scenario-satisfiability-evidence-v1.json index f4848314e..aab19d2dd 100644 --- a/contracts/schema-publication/entries/scenario-satisfiability-evidence-v1.json +++ b/contracts/schema-publication/entries/scenario-satisfiability-evidence-v1.json @@ -2,9 +2,9 @@ "contract_id": "scenario-satisfiability-evidence-v1", "schema_path": "contracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.json", "stability": "draft", - "content_hash": "3574119edf519a577191c8be691bf4dcf747906eefab50a6bb22ca31725a87a2", + "content_hash": "4f49b1c744b930b4e100bfef12e105ab3a569208356d06016b7d06e8b5a669c0", "last_change": { - "summary": "Carried enterprise tenancy, service materialization, shared time, and autonomous participant invariants into satisfiability evidence.", - "content_hash": "3574119edf519a577191c8be691bf4dcf747906eefab50a6bb22ca31725a87a2" + "summary": "Retargeted qualified Python validator references from aces_sdl to raes without changing schema identifiers or semantics.", + "content_hash": "4f49b1c744b930b4e100bfef12e105ab3a569208356d06016b7d06e8b5a669c0" } } diff --git a/contracts/schema-publication/entries/sdl-authoring-input-v1.json b/contracts/schema-publication/entries/sdl-authoring-input-v1.json index 32c7970e9..6713df2b1 100644 --- a/contracts/schema-publication/entries/sdl-authoring-input-v1.json +++ b/contracts/schema-publication/entries/sdl-authoring-input-v1.json @@ -2,9 +2,9 @@ "contract_id": "sdl-authoring-input-v1", "schema_path": "contracts/schemas/sdl/sdl-authoring-input-v1.json", "stability": "draft", - "content_hash": "c0456a4af6bbd5be7fac5932e7bcb0c77b3f1e0d0e31afcaf88fef79a4261ed5", + "content_hash": "422eb2a20af82a59c42ce1064a4b973207ca7099e4e8ea808b4fdfb9ccfeb471", "last_change": { - "summary": "Published enterprise tenancy, service materialization, shared time, and autonomous participant authoring semantics.", - "content_hash": "c0456a4af6bbd5be7fac5932e7bcb0c77b3f1e0d0e31afcaf88fef79a4261ed5" + "summary": "Retargeted qualified Python validator references from aces_sdl to raes without changing schema identifiers or semantics.", + "content_hash": "422eb2a20af82a59c42ce1064a4b973207ca7099e4e8ea808b4fdfb9ccfeb471" } } diff --git a/contracts/schemas/README.md b/contracts/schemas/README.md index a6948d3a5..9ad9e8067 100644 --- a/contracts/schemas/README.md +++ b/contracts/schemas/README.md @@ -1,7 +1,7 @@ # Schemas `contracts/schemas/` publishes versioned JSON Schema documents for -language-neutral ACES external contracts. +language-neutral RAES external contracts. This directory is now the contract bucket in the repo layout. It is intended to be the home of the authoritative machine-readable artifacts, independent of any @@ -87,12 +87,12 @@ stack, contract tests, and conformance profiles use `v2`. The `concept-families-v1` schema publishes the machine-readable shared concept authority catalog. Catalog entries distinguish adopted, adapted, and -ACES-native concept families. +RAES-native concept families. Adopted and adapted families must declare `authority` and `authority_reference`. Native families must not declare those authority fields; instead they must declare non-empty `extension_scope`, `relation_rules`, and -`non_ambiguity_constraints`. This keeps ACES experiment, runtime, apparatus, +`non_ambiguity_constraints`. This keeps RAES experiment, runtime, apparatus, provenance, and governance concepts explicit without letting them silently fork shared cyber-domain concepts. @@ -244,12 +244,12 @@ Run traceability and realized-form disclosure invariants keep claims grounded in evidence/derived-measure refs and keep realized choices distinct from authored scenario meaning and result values. Cross-artifact or graph invariants that standard JSON Schema cannot express are -published under the ACES semantic-invariant profile with `x-aces-invariants` +published under the RAES semantic-invariant profile with `x-aces-invariants` entries that name the validator and input contract paths. The generated schemas declare draft 2020-12 identity, and the annotation profile shape is published as `aces-semantic-invariants-v1` and checked during generation. Generic JSON Schema validation remains structural; consumers of experiment-core records must apply -the named semantic validators before accepting records as ACES-conformant. +the named semantic validators before accepting records as RAES-conformant. The optional backend-manifest `capabilities.observation` block declares EXP-715 observation/evidence collection support. Backends that declare it must also diff --git a/contracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.json b/contracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.json index bb4cb47cd..0f46a8fa2 100644 --- a/contracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.json +++ b/contracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.json @@ -20558,7 +20558,7 @@ } ], "level": "error", - "validator": "aces_sdl.validator.SemanticValidator._verify_service_materialization" + "validator": "raes.validator.SemanticValidator._verify_service_materialization" } ], "x-aces-semantic-profile": { diff --git a/contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json b/contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json index 777804a52..f26347a9d 100644 --- a/contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json +++ b/contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json @@ -25287,7 +25287,7 @@ } ], "level": "error", - "validator": "aces_sdl.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers" + "validator": "raes.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers" }, { "description": "Persistent volume consumers and dependency entries must be unique and access cardinality must match the declared portable access mode.", @@ -25299,7 +25299,7 @@ } ], "level": "error", - "validator": "aces_sdl.stateful_resources.PersistentVolume._unique_consumers" + "validator": "raes.stateful_resources.PersistentVolume._unique_consumers" }, { "description": "Stateful resource consumers and dependencies must resolve unambiguously, use the POSIX v1 path dialect, and must not collide on a consumer node mount destination.", @@ -25311,7 +25311,7 @@ } ], "level": "error", - "validator": "aces_sdl._stateful_resource_references.stateful_resource_reference_errors" + "validator": "raes._stateful_resource_references.stateful_resource_reference_errors" }, { "description": "Service-target content must resolve to one named service, retain exact tenant/reset ownership and content ordering, and bind observed-state postconditions to participant observation boundaries.", @@ -25323,7 +25323,7 @@ } ], "level": "error", - "validator": "aces_sdl.validator.SemanticValidator._verify_service_materialization" + "validator": "raes.validator.SemanticValidator._verify_service_materialization" } ], "x-aces-semantic-profile": { diff --git a/contracts/schemas/sdl/instantiated-scenario-v1.json b/contracts/schemas/sdl/instantiated-scenario-v1.json index 6d78dc190..1dbd1a152 100644 --- a/contracts/schemas/sdl/instantiated-scenario-v1.json +++ b/contracts/schemas/sdl/instantiated-scenario-v1.json @@ -25266,7 +25266,7 @@ } ], "level": "error", - "validator": "aces_sdl.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers" + "validator": "raes.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers" }, { "description": "Persistent volume consumers and dependency entries must be unique and access cardinality must match the declared portable access mode.", @@ -25278,7 +25278,7 @@ } ], "level": "error", - "validator": "aces_sdl.stateful_resources.PersistentVolume._unique_consumers" + "validator": "raes.stateful_resources.PersistentVolume._unique_consumers" }, { "description": "Stateful resource consumers and dependencies must resolve unambiguously, use the POSIX v1 path dialect, and must not collide on a consumer node mount destination.", @@ -25290,7 +25290,7 @@ } ], "level": "error", - "validator": "aces_sdl._stateful_resource_references.stateful_resource_reference_errors" + "validator": "raes._stateful_resource_references.stateful_resource_reference_errors" }, { "description": "Service-target content must resolve to one named service, retain exact tenant/reset ownership and content ordering, and bind observed-state postconditions to participant observation boundaries.", @@ -25302,7 +25302,7 @@ } ], "level": "error", - "validator": "aces_sdl.validator.SemanticValidator._verify_service_materialization" + "validator": "raes.validator.SemanticValidator._verify_service_materialization" } ], "x-aces-semantic-profile": { diff --git a/contracts/schemas/sdl/sdl-authoring-input-v1.json b/contracts/schemas/sdl/sdl-authoring-input-v1.json index 87144fe49..d0af91fc7 100644 --- a/contracts/schemas/sdl/sdl-authoring-input-v1.json +++ b/contracts/schemas/sdl/sdl-authoring-input-v1.json @@ -21341,7 +21341,7 @@ } ], "level": "error", - "validator": "aces_sdl.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers" + "validator": "raes.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers" }, { "description": "Persistent volume consumers and dependency entries must be unique and access cardinality must match the declared portable access mode.", @@ -21353,7 +21353,7 @@ } ], "level": "error", - "validator": "aces_sdl.stateful_resources.PersistentVolume._unique_consumers" + "validator": "raes.stateful_resources.PersistentVolume._unique_consumers" }, { "description": "Stateful resource consumers and dependencies must resolve unambiguously, use the POSIX v1 path dialect, and must not collide on a consumer node mount destination.", @@ -21365,7 +21365,7 @@ } ], "level": "error", - "validator": "aces_sdl._stateful_resource_references.stateful_resource_reference_errors" + "validator": "raes._stateful_resource_references.stateful_resource_reference_errors" }, { "description": "Service-target content must resolve to one named service, retain exact tenant/reset ownership and content ordering, and bind observed-state postconditions to participant observation boundaries.", @@ -21377,7 +21377,7 @@ } ], "level": "error", - "validator": "aces_sdl.validator.SemanticValidator._verify_service_materialization" + "validator": "raes.validator.SemanticValidator._verify_service_materialization" } ], "x-aces-semantic-profile": { diff --git a/docs/aces/inventory/ad-preflight.md b/docs/aces/inventory/ad-preflight.md index 88add3ca3..39295f4bf 100644 --- a/docs/aces/inventory/ad-preflight.md +++ b/docs/aces/inventory/ad-preflight.md @@ -1,7 +1,7 @@ -# AD ACES Inventory Preflight +# AD RAES Inventory Preflight -This is a historical APTL TechVault validation note imported into ACES as a -reference example. It is not the methodology authority; the canonical ACES +This is a historical APTL TechVault validation note imported into RAES as a +reference example. It is not the methodology authority; the canonical RAES methodology is `docs/aces/inventory/asset-inventory-methodology.md`. This note records the local architecture preflight for SCN-010 / issue #332. @@ -10,9 +10,9 @@ the issue phase marker, but the tool did not create a repo-local note file. ## Binding Guardrails -- Keep this work as an ACES inventory and specification update. Evidence, +- Keep this work as an RAES inventory and specification update. Evidence, Docker output, package manifests, scanner output, checksums, and ledgers are - proof inputs only; catalogued facts that ACES can express belong in + proof inputs only; catalogued facts that RAES can express belong in `scenarios/techvault.sdl.yaml`. - Do not create an APTL-local schema, parser, validator, Pydantic model, or runtime exception hierarchy for AD inventory facts. diff --git a/docs/aces/inventory/asset-inventory-issue-template.md b/docs/aces/inventory/asset-inventory-issue-template.md index e9998d6f4..15a51eac1 100644 --- a/docs/aces/inventory/asset-inventory-issue-template.md +++ b/docs/aces/inventory/asset-inventory-issue-template.md @@ -1,20 +1,20 @@ --- -name: ACES Asset Inventory -about: Capture participant-discoverable asset evidence and map it to ACES. +name: RAES Asset Inventory +about: Capture participant-discoverable asset evidence and map it to RAES. title: "[INVENTORY] : " labels: enhancement assignees: "" --- -# ACES Asset Inventory Issue Template +# RAES Asset Inventory Issue Template Copy this file, or the body below, into a downstream backend repository's `.github/ISSUE_TEMPLATE/` tree when that repository needs an issue form for -inventorying realized scenario assets against the ACES methodology. +inventorying realized scenario assets against the RAES methodology. ## Methodology Authority -Use the ACES participant-discoverable asset inventory methodology as the +Use the RAES participant-discoverable asset inventory methodology as the authority: - Methodology: @@ -97,9 +97,9 @@ Before completion: - [ ] No `needs_gap_triage` mapping remains. - [ ] Every evidence file is referenced by a fact, provenance entry, correspondence check, or capture-limit fact. -- [ ] Every `blocked_by_aces_gap` row links an ACES issue. +- [ ] Every `blocked_by_aces_gap` row links an RAES issue. - [ ] Every `blocked_by_aptl_gap` row links a downstream backend issue. -- [ ] Correspondence checks describe how later encoding work will compare ACES +- [ ] Correspondence checks describe how later encoding work will compare RAES surfaces against fresh realized evidence. ## Validation @@ -118,7 +118,7 @@ changed code, docs, templates, or committed evidence. ## Completion Claim This issue is complete only when every participant-discoverable fact in scope -is captured, mapped to ACES, or blocked by a linked ACES/downstream issue with +is captured, mapped to RAES, or blocked by a linked RAES/downstream issue with an explicit limitation. Evidence bundles, scanner output, screenshots, summaries, and backend support limits are proof inputs only; they do not -replace ACES specification or explicit gap records. +replace RAES specification or explicit gap records. diff --git a/docs/aces/inventory/asset-inventory-methodology.md b/docs/aces/inventory/asset-inventory-methodology.md index fb2c6baaf..c62f3f8e8 100644 --- a/docs/aces/inventory/asset-inventory-methodology.md +++ b/docs/aces/inventory/asset-inventory-methodology.md @@ -1,6 +1,6 @@ # Participant-Discoverable Asset Inventory Methodology -This is the ACES-owned methodology for participant-discoverable asset +This is the RAES-owned methodology for participant-discoverable asset inventory capture. It was first validated against the TechVault `shuffle-backend` asset during APTL issue #353, with later APTL asset captures used as downstream proof work. The companion assurance report @@ -9,18 +9,18 @@ supply-chain, reproducible-research, and verification/validation basis for the methodology. The method has one inclusion rule: > If a participant or agent could discover a fact from inside the range, -> capture it and attempt to specify it in ACES. +> capture it and attempt to specify it in RAES. There is no relevance filter during capture, no accidental-versus-deliberate filter, and no early split that sends facts to backend evidence merely because -they came from Docker or another realization layer. ACES is the methodology and +they came from Docker or another realization layer. RAES is the methodology and specification authority. A downstream runtime such as APTL can provide reference reality for a proof pass, but it does not own the inclusion rule. The participant-discoverable rule is the evidence boundary for inventory capture; it is not the semantic frame for extending the SDL. Backend and provenance evidence explain how the configuration was realized and how the claim was captured; they do not shrink the set of facts that must be attempted -in ACES. +in RAES. ## Scope and Claim Boundary @@ -43,7 +43,7 @@ The practical reproducibility standard is therefore: - another maintainer can identify every captured participant-discoverable fact, its discovery vantage, and the evidence that supports it; -- every captured fact has either an ACES specification mapping or an ACES +- every captured fact has either an RAES specification mapping or an RAES issue for the expressivity gap; - the capture can be rerun with non-commercial tooling on a local lab; - limits, time-sensitive scanner output, mutable tags, operator/out-of-scenario @@ -57,7 +57,7 @@ scientific replication. ## Requirement Alignment -This methodology is support for the ACES requirements that govern apparatus, +This methodology is support for the RAES requirements that govern apparatus, provenance, realized-form disclosure, replay, and realization honesty. It does not replace those requirements or define final SDL syntax. Its role is to make the evidence and gap trail explicit enough for those requirement surfaces to @@ -74,7 +74,7 @@ consume: it differs from authored intent or backend defaults. - `ASR-519` realization honesty: force explicit mappings, caveats, and gap issues instead of silent approximation or evidence-only claims. -- `DSL-115` and follow-on DSL gap work: route missing SDL expressivity to ACES +- `DSL-115` and follow-on DSL gap work: route missing SDL expressivity to RAES issue records with evidence and checked surfaces. The reusable downstream issue skeleton for applying this method lives in @@ -88,7 +88,7 @@ Each asset is described across five layers: | --- | --- | --- | | Discovery vantage | Where an in-range participant or agent could learn the fact. | Kali/red-agent shell, compromised app shell, blue console, service API, filesystem, network scan. | | Captured configuration fact | The discovered fact itself, with no intent/relevance filtering. | IPs, DNS names, routes, ports, banners, versions, files, packages, env names/values visible in-range, processes, mounts, data, credentials. | -| ACES specification mapping | The SDL element or ACES contract that represents the fact. | `nodes`, `infrastructure`, `services`, `features`, `content`, `accounts`, `relationships`, `agents`, `objectives`, variables, or a cited ACES issue. | +| RAES specification mapping | The SDL element or RAES contract that represents the fact. | `nodes`, `infrastructure`, `services`, `features`, `content`, `accounts`, `relationships`, `agents`, `objectives`, variables, or a cited RAES issue. | | Provenance | Where the realized artifact came from and which immutable identifiers were observed. | Image digest, image history, Dockerfile or upstream absence, source lockfiles, scanner/tool versions. | | Assurance products | Derived artifacts used for audit, comparison, and gap filing. | CycloneDX or SPDX SBOM, vulnerability JSON, package list, filesystem hashes, evidence checksums. | @@ -154,7 +154,7 @@ instead of pretending a local build recipe exists. facts and must not be redacted from source inventory bundles. For example, Wazuh/OpenSearch Security `internal_users.yml` bcrypt hashes are target configuration facts; replacing them with `` corrupts the - inventory and prevents later ACES/APTL mapping from seeing the realized + inventory and prevents later RAES/APTL mapping from seeing the realized system. Operator/out-of-scenario secrets remain outside the capture boundary: @@ -204,20 +204,20 @@ instead of pretending a local build recipe exists. binds, service DNS names, static IPs, and healthcheck dependencies become visible. -10. Attempt maximal ACES mapping without silently promoting evidence. +10. Attempt maximal RAES mapping without silently promoting evidence. - For every participant-discoverable fact, identify the most specific ACES + For every participant-discoverable fact, identify the most specific RAES carrier. First preserve the exact observation in the source evidence bundle and `mapping-ledger.yaml`. Then decide whether it is authored/defaulted contract state, a planned or realized choice, an observation, or a derived interpretation. Schema compatibility alone does not authorize copying a captured value into SDL. - Attempt to represent deliberate scenario requirements in ACES SDL. + Attempt to represent deliberate scenario requirements in RAES SDL. Use the most specific existing SDL surface available: nodes, infrastructure, services, features, content, accounts, relationships, agents, objectives, workflows, variables, or a contract surface if one - already exists. The questions at this stage are "where can ACES preserve + already exists. The questions at this stage are "where can RAES preserve this fact exactly?" and, separately, "does the scenario author intend to require it?" Generated Docker network/endpoint IDs, generated DNS identities, health results, and scanner version/database/time/findings @@ -226,11 +226,11 @@ instead of pretending a local build recipe exists. Record the result in `mapping-ledger.yaml` instead of relying on prose. Each captured fact must have one of these dispositions: - - `encoded` when current ACES can represent the fact directly; - - `encoded_with_caveat` when current ACES can represent the fact but the + - `encoded` when current RAES can represent the fact directly; + - `encoded_with_caveat` when current RAES can represent the fact but the later encoding issue must preserve a stated limitation; - - `blocked_by_aces_gap` when ACES lacks a semantically correct surface; - - `blocked_by_aptl_gap` when ACES can express the fact but APTL cannot yet + - `blocked_by_aces_gap` when RAES lacks a semantically correct surface; + - `blocked_by_aptl_gap` when RAES can express the fact but APTL cannot yet realize or consume that SDL; - `needs_gap_triage` only as a temporary local state before filing or linking the required issue. @@ -241,19 +241,19 @@ instead of pretending a local build recipe exists. and `aptl aces-inventory validate ` fails schema, evidence-path, and mapping-accountability violations. -11. Handle ACES gaps immediately. +11. Handle RAES gaps immediately. When a captured participant-discoverable fact cannot be fully expressed in - ACES, search the ACES issue tracker for an existing issue that covers the + RAES, search the RAES issue tracker for an existing issue that covers the missing expressivity. If an issue exists, record the evidence path and - stop for discussion. If none exists, create a new ACES issue with: + stop for discussion. If none exists, create a new RAES issue with: - the discovered fact or class of facts; - the in-range vantage point that can discover it; - the evidence path in the downstream bundle; - - the ACES surfaces that were checked; + - the RAES surfaces that were checked; - why those surfaces are insufficient; - - the proposed ACES expressivity requirement. + - the proposed RAES expressivity requirement. After linking or creating the issue, stop and discuss before continuing with additional gaps. @@ -269,8 +269,8 @@ instead of pretending a local build recipe exists. 13. Plan correspondence checks. - Methodology issues do not have to finish the ACES encoding, but they must - define how later issues will prove correspondence between encoded ACES + Methodology issues do not have to finish the RAES encoding, but they must + define how later issues will prove correspondence between encoded RAES surfaces and realized downstream state. Record these checks in the ledger's `correspondence_checks` section. A check names the source surface, captured @@ -295,7 +295,7 @@ Required local tools: - A downstream ledger validator. The current reference implementation is `aptl aces-inventory validate ` to validate the mapping ledger and its evidence references. -- `aptl aces-inventory gaps ` to list the ACES and downstream +- `aptl aces-inventory gaps ` to list the RAES and downstream implementation issues later encoding work must resolve or consume. - `aptl aces-inventory schema` to inspect the reference ledger schema. - Docker Buildx `imagetools inspect`, build-time `--sbom`, and `--provenance` @@ -338,7 +338,7 @@ The pass proved that the method can capture an upstream-image asset with: This proof pass is not yet a full maximal-discovery pass because it mostly uses host-side Docker evidence plus a container runtime baseline. The next pass must add in-range participant/agent discovery commands and then attempt -maximal ACES specification from the discovered facts. +maximal RAES specification from the discovered facts. Known limits are first-class methodology data, not prose footnotes. The shuffle-backend ledger records that registry-visible in-toto/SLSA provenance @@ -349,10 +349,10 @@ implemented in this methodology issue. ## Issue Breakdown Implication APTL #330, #331, #332, and #353 were useful as a downstream per-asset -validation queue, but they should not define ACES methodology ownership or -drive cloning/spec/capture order by themselves. The method should land in ACES +validation queue, but they should not define RAES methodology ownership or +drive cloning/spec/capture order by themselves. The method should land in RAES first, then one upstream-image asset and one custom-build asset should exercise -it before a wave of ACES or downstream implementation gap issues is filed. +it before a wave of RAES or downstream implementation gap issues is filed. In practice: @@ -360,8 +360,8 @@ In practice: - APTL #331 (`db`) is a second upstream-image comparison point. - APTL #330 (`webapp`) and #332 (`ad`) are custom-build cases that should decide whether source package capture needs more structure. -- ACES SDL encoding should happen as soon as a participant-discoverable fact - is captured. Where ACES cannot express the fact, create or link the ACES +- RAES SDL encoding should happen as soon as a participant-discoverable fact + is captured. Where RAES cannot express the fact, create or link the RAES gap issue and stop for discussion. If those captures show that cloning/spec/capture need a different split, diff --git a/docs/aces/inventory/kali-preflight.md b/docs/aces/inventory/kali-preflight.md index da8134bab..29fd025f1 100644 --- a/docs/aces/inventory/kali-preflight.md +++ b/docs/aces/inventory/kali-preflight.md @@ -1,17 +1,17 @@ -# Kali ACES Inventory Preflight +# Kali RAES Inventory Preflight -This is a historical APTL TechVault validation note imported into ACES as a -reference example. It is not the methodology authority; the canonical ACES +This is a historical APTL TechVault validation note imported into RAES as a +reference example. It is not the methodology authority; the canonical RAES methodology is `docs/aces/inventory/asset-inventory-methodology.md`. This note is the architecture preflight for SCN-010 / issue #339. It is a binding guardrail for the Kali steady-state inventory, not a replacement for -downstream APTL ADR-035, ACES ADR-033, ACES ADR-029, or the ACES +downstream APTL ADR-035, RAES ADR-033, RAES ADR-029, or the RAES asset-inventorying methodology. ## Architecture Decisions -- The completion artifact is an ACES inventory bundle under +- The completion artifact is an RAES inventory bundle under `docs/aces/inventory/kali/`, using the existing `mapping-ledger.yaml` schema, `aptl aces-inventory validate`, and the evidence/checksum shape already used by `shuffle-backend` and `webapp`. @@ -19,19 +19,19 @@ asset-inventorying methodology. post-`aptl lab start` steady-state snapshot. If the capture is not from a destructive clean reset, record that boundary explicitly and do not claim clean-lab reproducibility or byte-identical rebuildability. -- `scenarios/techvault.sdl.yaml` remains an ACES SDL document whose authority - is the sibling ACES parser and runtime compiler. Do not validate Kali +- `scenarios/techvault.sdl.yaml` remains an RAES SDL document whose authority + is the sibling RAES parser and runtime compiler. Do not validate Kali additions through `aptl.core.sdl`, `aptl.core.scenarios`, or a local mirror - of ACES models. -- Keep three concepts separate: the ACES red-side node/agent surface, the APTL + of RAES models. +- Keep three concepts separate: the RAES red-side node/agent surface, the APTL Docker Compose realization, and ADR-033 experimental capture/runstore data. Participant-visible Kali facts must be captured and mapped; run archive and harvest mechanics stay owned by ADR-033, `LocalRunStore`, and the MCP common capture boundary. - Kali is not a target host for declared scenario weaknesses. Scanner CVEs and - patch state belong in runtime/package inventory evidence unless ACES has a + patch state belong in runtime/package inventory evidence unless RAES has a more specific non-target weakness surface. -- Missing ACES expressivity must be represented as an upstream ACES blocker. +- Missing RAES expressivity must be represented as an upstream RAES blocker. APTL backend consumption gaps do not justify leaving an observable fact as evidence-only for this inventory issue. @@ -46,7 +46,7 @@ asset-inventorying methodology. `docs/aces/inventory/webapp/`, `docs/aces/inventory/webapp-preflight.md`, and `tests/test_webapp_inventory.py`. -- ACES adoption and parity routing: +- RAES adoption and parity routing: downstream APTL ADR-035, `docs/aces/parity-inventory.yaml`, `docs/aces/parity-inventory.md`, and `tests/test_parity_inventory.py`. - Kali realization owners: @@ -60,18 +60,18 @@ asset-inventorying methodology. `_LAB_START_STEPS`, `DeploymentBackend`, `LabResult`, `StartupDiagnostic`, `RangeSnapshot.to_dict()`, `LocalRunStore`, and the MCP run/capture helpers mirrored under `mcp/aptl-mcp-common`. -- Shared safety helpers and policies: ACES ADR-028, ACES ADR-029, ACES +- Shared safety helpers and policies: RAES ADR-028, RAES ADR-029, RAES ADR-033, downstream APTL ADR-036, downstream APTL ADR-037, `aptl.utils.redaction.redact`, and `aptl.utils.curl_safe` when commands would otherwise put credentials in process argv. ## Security And Validation Layers -- **ACES SDL shape:** Kali SDL additions must parse with - `aces_sdl.parse_sdl_file` and compile through the ACES runtime compiler. - Do not add local structural validators for ACES fields. +- **RAES SDL shape:** Kali SDL additions must parse with + `raes.parse_sdl_file` and compile through the RAES runtime compiler. + Do not add local structural validators for RAES fields. - **Inventory ledger:** every captured fact needs an existing - `AcesSurface` mapping, caveat, or linked ACES issue in + `AcesSurface` mapping, caveat, or linked RAES issue in `mapping-ledger.yaml`. No `needs_gap_triage` rows should remain at review. - **Secret classification:** ADR-057 is canonical for scenario-target values, with ADR-029 still governing operator/control-plane handling. Preserve @@ -87,7 +87,7 @@ asset-inventorying methodology. record contamination and redact or checksum sensitive content. - **Config and env binding:** durable toggles remain in strict `AptlConfig`. `.env` parsing and placeholder rejection remain in `EnvVars` / - `find_placeholder_env_values`. Do not add ACES-specific environment parsing + `find_placeholder_env_values`. Do not add RAES-specific environment parsing for Kali. Compose `VICTIM_IP` and SSH `APTL_*` session env vars are different surfaces and must not be collapsed. - **OS/process exposure:** inventory capture commands must not place @@ -102,20 +102,20 @@ asset-inventorying methodology. `capsh --drop=cap_audit_control` behavior, and healthcheck degraded subsystem reporting. Do not flatten them into one generic privilege flag. - **Error envelopes and observability:** any new CLI/test helper must report - narrow diagnostics and reuse redaction. Raw Docker, scanner, SSH, or ACES + narrow diagnostics and reuse redaction. Raw Docker, scanner, SSH, or RAES exception payloads must not cross CLI, log, API, snapshot, or runstore boundaries unfiltered. ## Extensibility Seam -The seam is the versioned inventory ledger plus ACES runtime fields for one +The seam is the versioned inventory ledger plus RAES runtime fields for one asset id, source class, and Compose service. A future red-side asset or custom build should reuse the same schema and test fixture pattern by changing asset parameters, not by extending the validator with Kali-specific branches. -For the SDL, parameterization belongs in ACES-native node, source, runtime, +For the SDL, parameterization belongs in RAES-native node, source, runtime, agent, relationship, content, and account fields. Backend realization remains -behind the ACES backend profile and existing APTL owners. +behind the RAES backend profile and existing APTL owners. ## Gotchas And Anti-Patterns @@ -123,7 +123,7 @@ behind the ACES backend profile and existing APTL owners. issue asks for participant/agent-observable steady-state facts, including logs, caches, generated state, and volume contents. If a full enumeration is not done, record the exact claim boundary and leave remaining facts encoded - later or blocked by ACES expressivity. + later or blocked by RAES expressivity. - Do not encode stale public SSH port assumptions. Current Compose declares no host port for `kali`; the control plane reaches it by container IP. - Do not treat `kalilinux/kali-last-release:latest` as immutable. Pair the @@ -134,7 +134,7 @@ behind the ACES backend profile and existing APTL owners. - Do not model auditd/procacct as fully available unless the readiness marker and health log show those subsystems as `ok`; healthy Kali can still be capture-degraded. -- Do not hide missing ACES expressivity in `metadata`, `x-aptl-*`, comments, +- Do not hide missing RAES expressivity in `metadata`, `x-aptl-*`, comments, evidence-only ledgers, or TechVault-name dispatch. - Do not create a second scenario schema, second inventory validator, second secret taxonomy, second readiness taxonomy, or new exception hierarchy. @@ -147,9 +147,9 @@ behind the ACES backend profile and existing APTL owners. tests from this preflight. - Do not run `aptl lab stop -v && aptl lab start` unless the user explicitly authorizes destroying the current lab state. -- Do not implement the ACES backend interpreter, default-scenario flip, +- Do not implement the RAES backend interpreter, default-scenario flip, legacy SDL deletion, scenario archive move, or Phase B cutover. - Do not redesign ADR-033 capture ownership, close the Kali tamper-resistance follow-up, redesign run archives, or add a red-to-SIEM path. -- Do not use APTL runtime consumption gaps as a substitute for ACES SDL - expression or ACES expressivity blockers. +- Do not use APTL runtime consumption gaps as a substitute for RAES SDL + expression or RAES expressivity blockers. diff --git a/docs/aces/inventory/methodology-assurance-report.md b/docs/aces/inventory/methodology-assurance-report.md index ebf43aa5a..b4a2f7ce4 100644 --- a/docs/aces/inventory/methodology-assurance-report.md +++ b/docs/aces/inventory/methodology-assurance-report.md @@ -1,12 +1,12 @@ -# ACES Inventory Methodology Assurance Report +# RAES Inventory Methodology Assurance Report -This report reviews the ACES asset-inventory methodology for defensibility +This report reviews the RAES asset-inventory methodology for defensibility under DevOps/security practice, supply-chain evidence practice, reproducible-research expectations, and verification/validation thinking. The -method was first exercised through APTL #353, but ACES owns the methodology and +method was first exercised through APTL #353, but RAES owns the methodology and semantic gates. This report is not a final TechVault asset specification; it exists to keep the methodology itself from drifting while downstream asset -captures and later ACES/downstream gap issues do the full encoding work. +captures and later RAES/downstream gap issues do the full encoding work. ## Current Position @@ -23,7 +23,7 @@ used with explicit ledger gates. The current reference implementation is APTL's Pydantic ledger model. The methodology is not yet sufficient to claim final equivalence between a -future ACES encoding and any realized downstream deployment. That requires the +future RAES encoding and any realized downstream deployment. That requires the planned correspondence checks in the ledger to become implemented checks after the encoding exists. @@ -38,12 +38,12 @@ the encoding exists. | Evidence provenance | Separates captured facts, evidence paths, tool output, and provenance metadata. | W3C PROV distinguishes entities, activities, and agents for auditable provenance. | | Reproducible research | Preserves enough artifact, tool, environment, and parameter evidence to rerun and challenge the claim. | Peng, Goodman et al., and ACM artifact-review guidance frame reproducibility as artifact-backed evaluation, not narrative alone. | | Cyber-range scenario rigor | Treats scenario assets, services, topology, and evidence as explicit artifacts rather than backend lore. | Cyber-range literature emphasizes scenario definition, infrastructure, tooling, monitoring, and evaluation as separable concerns. | -| V&V / correspondence | Adds planned correspondence checks tying future ACES surfaces to realized evidence. | NASA model/simulation assurance guidance and IEEE-style V&V practice emphasize evidence that the model satisfies requirements and corresponds to intended use. | +| V&V / correspondence | Adds planned correspondence checks tying future RAES surfaces to realized evidence. | NASA model/simulation assurance guidance and IEEE-style V&V practice emphasize evidence that the model satisfies requirements and corresponds to intended use. | ## Improvements Made In This Pass The first APTL validation proof captured useful evidence but left several -methodology risks too implicit. The ACES methodology closes the visible +methodology risks too implicit. The RAES methodology closes the visible problems now: - The ledger is now schema-governed by Pydantic models, with a schema CLI. @@ -54,7 +54,7 @@ problems now: predicate type. - The ledger now has explicit correspondence-check records. They are planned, not implemented, because the first validation pass covered methodology and - tooling rather than final ACES encoding. + tooling rather than final RAES encoding. - The docs state scanner limits, attestation-verification limits, and correspondence limits directly. @@ -70,11 +70,11 @@ later issues must not silently carry them into final claims: builder identity. - The Trivy SBOM and vulnerability outputs are scanner state tied to tool, database, advisory, and capture time. They are not permanent ground truth. -- The ledger proves mapping accountability, not semantic completeness of ACES. - ACES #354 added the first typed runtime configuration surfaces, but later +- The ledger proves mapping accountability, not semantic completeness of RAES. + RAES #354 added the first typed runtime configuration surfaces, but later captures may still expose additional SDL gaps that need their own issues. - Correspondence checks are planned. Final encoding issues must implement them - by comparing ACES/source-package content against fresh realized evidence. + by comparing RAES/source-package content against fresh realized evidence. ## Required Bar For Later Asset Issues @@ -89,8 +89,8 @@ Each follow-on asset issue should meet this minimum: tooling. 5. Validate the mapping ledger with `aptl aces-inventory validate`. 6. Run `aptl aces-inventory gaps` and file/link gap issues before encoding - unsupported facts through semantically wrong ACES fields. -7. Add or update correspondence checks so the future ACES encoding can be + unsupported facts through semantically wrong RAES fields. +7. Add or update correspondence checks so the future RAES encoding can be verified against realized evidence. ## References diff --git a/docs/aces/inventory/scn010-expressivity-gap-analysis.md b/docs/aces/inventory/scn010-expressivity-gap-analysis.md index b612281d1..ae1615990 100644 --- a/docs/aces/inventory/scn010-expressivity-gap-analysis.md +++ b/docs/aces/inventory/scn010-expressivity-gap-analysis.md @@ -1,9 +1,9 @@ # SCN-010 Expressivity Gap Analysis — Final Architect-Review Report -## ACES SDL runtime surface coverage for the 16 remaining APTL containers +## RAES SDL runtime surface coverage for the 16 remaining APTL containers ## 1. Executive summary -The 16 remaining SCN-010 containers fall into seven functional groups — a search/index cluster tier (`wazuh.indexer`, `thehive-es`, `shuffle-opensearch`), an analytics dashboard (`wazuh.dashboard`), log-shipping/intel-sync sidecars (`wazuh-sidecar-db`, `wazuh-sidecar-suricata`, `misp-suricata-sync`) plus the standalone Suricata they govern, a threat-intelligence platform (`misp`), a Redis/MariaDB data-store-and-sync tier (`misp-redis`, `misp-db`), an IR/case-management platform over a wide-column store (`thehive`, `thehive-cassandra`), a SOAR tier (`shuffle-frontend`, `shuffle-orborus`, `shuffle-backend`), and an analyzer/responder engine (`cortex`). Holding each container to the **wazuh.manager parity bar** — wazuh.manager (a SIEM) earned a fully domain-typed `security_monitoring_managers` family rather than being folded into generic `filesystem`/`listeners`/`software` surfaces — surfaces a consistent failure mode: every one of these containers has *defining logical state* that ACES can only shallow-encode today (a Redis cache as a relational `RuntimeDatabaseService`, a search cluster as a relational engine, a MISP as content counts, a SOAR as a data volume, an embedded RBAC store as OS `/etc` identity). The cohesive response is **extension-first at the least structural cost that still clears parity**: collapse the recurring *shapes* into two discriminator-guarded spines plus three orthogonal shared primitives and one forwarder family, each spine **guarded by a `require_profile_for_` after-validator** so the abstraction provably cannot silently shallow-encode a defining fact, with inter-node access detail expressed as typed relationship subtypes, and a single executable cross-family invariant lint making "#439 one small invariant set" testable rather than aspirational. +The 16 remaining SCN-010 containers fall into seven functional groups — a search/index cluster tier (`wazuh.indexer`, `thehive-es`, `shuffle-opensearch`), an analytics dashboard (`wazuh.dashboard`), log-shipping/intel-sync sidecars (`wazuh-sidecar-db`, `wazuh-sidecar-suricata`, `misp-suricata-sync`) plus the standalone Suricata they govern, a threat-intelligence platform (`misp`), a Redis/MariaDB data-store-and-sync tier (`misp-redis`, `misp-db`), an IR/case-management platform over a wide-column store (`thehive`, `thehive-cassandra`), a SOAR tier (`shuffle-frontend`, `shuffle-orborus`, `shuffle-backend`), and an analyzer/responder engine (`cortex`). Holding each container to the **wazuh.manager parity bar** — wazuh.manager (a SIEM) earned a fully domain-typed `security_monitoring_managers` family rather than being folded into generic `filesystem`/`listeners`/`software` surfaces — surfaces a consistent failure mode: every one of these containers has *defining logical state* that RAES can only shallow-encode today (a Redis cache as a relational `RuntimeDatabaseService`, a search cluster as a relational engine, a MISP as content counts, a SOAR as a data volume, an embedded RBAC store as OS `/etc` identity). The cohesive response is **extension-first at the least structural cost that still clears parity**: collapse the recurring *shapes* into two discriminator-guarded spines plus three orthogonal shared primitives and one forwarder family, each spine **guarded by a `require_profile_for_` after-validator** so the abstraction provably cannot silently shallow-encode a defining fact, with inter-node access detail expressed as typed relationship subtypes, and a single executable cross-family invariant lint making "#439 one small invariant set" testable rather than aspirational. Final proposed surfaces: @@ -22,7 +22,7 @@ Final proposed surfaces: ### 2.1 The parity contract -SCN-010 requires **full observable parity**: every fact a participant/adversary/defender/agent/evaluator could observe from inside the realized range at steady state must be either encoded in `techvault.sdl.yaml` using ACES *or* blocked by a specific ACES expressivity issue. "Captured in evidence", "representative subset", "load-bearing fields only", "APTL can't consume it yet", and "out of scope" are forbidden completion claims. Therefore: **any observable fact ACES cannot *type* today is an expressivity gap.** +SCN-010 requires **full observable parity**: every fact a participant/adversary/defender/agent/evaluator could observe from inside the realized range at steady state must be either encoded in `techvault.sdl.yaml` using RAES *or* blocked by a specific RAES expressivity issue. "Captured in evidence", "representative subset", "load-bearing fields only", "APTL can't consume it yet", and "out of scope" are forbidden completion claims. Therefore: **any observable fact RAES cannot *type* today is an expressivity gap.** ### 2.2 Why wazuh.manager sets the depth standard @@ -156,7 +156,7 @@ These are shipped as a first-class "deliberate confirmation-folds / non-gaps" ar **Registry attachment.** `RuntimeServiceFamily(collection_name="datastore_services", id_field="datastore_service_id", child_refs=(...for every typed child collection...))` in `_runtime_service_families.py`; attaches `Node.runtime.datastore_services`. -**Lineage (four-part).** *Direct SDL lineage:* Open Cyber Range SDL, CyRIS, KYPO, VSDL, CRACK model deployable services but expose no portable non-relational datastore inventory; ACES extends the ADR-029 `database_services` posture (node-scoped observed state, present-vs-absent V&V, secret-redacted provenance settings, evidence-refs) from a relational-only body to a `data_model`-discriminated spine — and per the verdict the epic **back-fills the missing `database_services` lineage.md section** it claims as anchor. *Primary standards:* Codd CACM 13(6)/ISO 9075; Zobel-Moffat/Raft; Dynamo/Bigtable/Cassandra/CAP; Redis RESP3/ACL/persistence/eviction + AMQP 1.0; NIST SP 800-92/53/209; RFC 8446/5280. *Implementation precedents (lineage, not authority):* OpenSearch/ES cluster/shard/ISM specs, Cassandra CQL, Redis docs, Gormley & Tong. *Evidence-downstream:* `_cat/_cluster`, `cqlsh DESCRIBE`, `CONFIG GET/INFO` as evidence_refs; stable `_id` are ACES identity, native names are observed data. +**Lineage (four-part).** *Direct SDL lineage:* Open Cyber Range SDL, CyRIS, KYPO, VSDL, CRACK model deployable services but expose no portable non-relational datastore inventory; RAES extends the ADR-029 `database_services` posture (node-scoped observed state, present-vs-absent V&V, secret-redacted provenance settings, evidence-refs) from a relational-only body to a `data_model`-discriminated spine — and per the verdict the epic **back-fills the missing `database_services` lineage.md section** it claims as anchor. *Primary standards:* Codd CACM 13(6)/ISO 9075; Zobel-Moffat/Raft; Dynamo/Bigtable/Cassandra/CAP; Redis RESP3/ACL/persistence/eviction + AMQP 1.0; NIST SP 800-92/53/209; RFC 8446/5280. *Implementation precedents (lineage, not authority):* OpenSearch/ES cluster/shard/ISM specs, Cassandra CQL, Redis docs, Gormley & Tong. *Evidence-downstream:* `_cat/_cluster`, `cqlsh DESCRIBE`, `CONFIG GET/INFO` as evidence_refs; stable `_id` are RAES identity, native names are observed data. **Anti-local-optimization rationale.** Search/wide-column/key-value share the cluster→node→partition→settings skeleton differentiated only by `data_model`; collapsing to ONE guarded spine (4-entry registry cohesion, no re-forked cluster/settings/redaction logic) and paying the faithfulness cost with `require_profile_for_data_model` is strictly preferable to three forked families re-forking three id/settings/redaction conventions (`#439`). @@ -248,7 +248,7 @@ This is built to survive expert review because the cohesion is **structural and ## 8. Recommended issue + ADR slate -Filed as ACES expressivity issues, ordered by dependency. Each ships its ADR (adr-044 template) + the full `docs/explain/sdl/{sections,validation,lineage,precedents,limitations}.md` set. +Filed as RAES expressivity issues, ordered by dependency. Each ships its ADR (adr-044 template) + the full `docs/explain/sdl/{sections,validation,lineage,precedents,limitations}.md` set. | # | Issue (one per surface) | Motivating SCN-010 containers | Depends on | ADR + doc surfaces | |---|---|---|---|---| diff --git a/docs/aces/inventory/webapp-preflight.md b/docs/aces/inventory/webapp-preflight.md index e7548fe5f..d8fe4e96b 100644 --- a/docs/aces/inventory/webapp-preflight.md +++ b/docs/aces/inventory/webapp-preflight.md @@ -1,31 +1,31 @@ -# Webapp ACES Inventory Preflight +# Webapp RAES Inventory Preflight -This is a historical APTL TechVault validation note imported into ACES as a -reference example. It is not the methodology authority; the canonical ACES +This is a historical APTL TechVault validation note imported into RAES as a +reference example. It is not the methodology authority; the canonical RAES methodology is `docs/aces/inventory/asset-inventory-methodology.md`. This note is the local architecture preflight for SCN-010 / issue #330 after `gc_codex_architecture_preflight` timed out twice on 2026-05-21. It is a binding implementation guardrail for the webapp steady-state inventory, not a -replacement for downstream APTL ADR-035 or the ACES asset-inventorying +replacement for downstream APTL ADR-035 or the RAES asset-inventorying methodology. ## Architecture Decisions -- The completion artifact is an ACES inventory bundle under +- The completion artifact is an RAES inventory bundle under `docs/aces/inventory/webapp/`, using the same ledger schema and validation CLI as the existing `shuffle-backend` proof pass. - The inventory captures the realized `aptl-webapp` container at one steady-state point. It does not claim byte-identical rebuildability, dynamic attack-state coverage, or clean-lab proof unless the evidence says that was performed. -- Current ACES SDL can express webapp node identity, OS, source, resources, +- Current RAES SDL can express webapp node identity, OS, source, resources, network service, runtime mounts, process identity, package inventory, dependency manifests, scanner findings, and declared CWE weaknesses. These fields belong in `scenarios/techvault.sdl.yaml`. - APTL-specific realization and public start-path interpretation are outside - this issue. This issue records ACES expressivity gaps only when the webapp - ACES SDL/spec inventory cannot express an observed fact. It must not + this issue. This issue records RAES expressivity gaps only when the webapp + RAES SDL/spec inventory cannot express an observed fact. It must not implement a TechVault-only backend shortcut. - `docs/aces/parity-inventory.yaml` remains the audit router for SCN-010. Update rows only to point at the new webapp inventory/SDL evidence; do not @@ -45,8 +45,8 @@ methodology. `docker-compose.yml` service `webapp`, `containers/webapp/Dockerfile`, `containers/webapp/entrypoint.sh`, `containers/webapp/supervisord.conf`, `containers/webapp/requirements.txt`, and `containers/webapp/app/`. -- ACES SDL authority: sibling `../aces-sdl` parser/model documentation and - the closed ACES #354 runtime-surface gap. Do not parse +- RAES SDL authority: sibling `../aces-sdl` parser/model documentation and + the closed RAES #354 runtime-surface gap. Do not parse `techvault.sdl.yaml` with `aptl.core.sdl`. - Secret and evidence safety: ADR-057, ADR-029, `aptl.utils.redaction`, the existing test pattern for explicit redaction classifications, and source @@ -62,12 +62,12 @@ methodology. Docker inspect/history/network/volume/top, in-container runtime baseline, package manifests, filesystem hashes, and scanner output when available. - `mapping-ledger.yaml` must validate through `aptl aces-inventory validate` - with every captured fact assigned an ACES/APTL disposition and no temporary + with every captured fact assigned an RAES/APTL disposition and no temporary `needs_gap_triage` rows. - Tests must fail if the webapp bundle omits required evidence, if evidence - checksums drift, if raw secret assignments leak, if the ledger loses ACES gap + checksums drift, if raw secret assignments leak, if the ledger loses RAES gap accountability, or if `scenarios/techvault.sdl.yaml` stops declaring the - ACES-expressible webapp runtime fields. + RAES-expressible webapp runtime fields. - The issue changes executable tests and YAML artifacts, so the documentation carve-out does not apply. The documentation carve-out does not apply. Run focused pytest while iterating, then the @@ -75,19 +75,19 @@ methodology. ## Extensibility Seam -The seam is the versioned inventory ledger plus ACES runtime fields on the +The seam is the versioned inventory ledger plus RAES runtime fields on the TechVault SDL node. Later per-asset inventory issues should be able to add their own bundle by reusing the same validator and tests with a different asset fixture, without adding new parser branches or a second inventory schema. -When APTL later consumes these ACES fields, that work must land behind the ACES +When APTL later consumes these RAES fields, that work must land behind the RAES backend boundary, not in this evidence pass. ## Non-Goals - Do not run a destructive `aptl lab stop -v && aptl lab start` unless the user explicitly authorizes resetting the current lab. -- Do not implement the ACES backend interpreter, default-scenario flip, legacy +- Do not implement the RAES backend interpreter, default-scenario flip, legacy SDL deletion, scenario archive move, or public start-path routing. - Do not add a second scenario model, second inventory validator, or TechVault-name-dispatch shortcut. diff --git a/docs/api/processor-semantics.rst b/docs/api/processor-semantics.rst index 5108bcfa4..5fcc4e926 100644 --- a/docs/api/processor-semantics.rst +++ b/docs/api/processor-semantics.rst @@ -8,7 +8,7 @@ compiled resources and runtime snapshots. Per ADR-015, the SDL-language semantic helpers (objective windows, the workflow step-type contract, branch closure, the workflow step-result -validator) live under ``aces_sdl.semantics`` and are documented in +validator) live under ``raes.semantics`` and are documented in :doc:`sdl-semantics`. .. currentmodule:: aces_processor.semantics diff --git a/docs/api/sdl-semantics.rst b/docs/api/sdl-semantics.rst index 16a4beae8..809861624 100644 --- a/docs/api/sdl-semantics.rst +++ b/docs/api/sdl-semantics.rst @@ -1,25 +1,25 @@ SDL Semantics ============= -The ``aces_sdl.semantics`` subpackage holds SDL-language semantic rules — +The ``raes.semantics`` subpackage holds SDL-language semantic rules — objective-window analysis, the workflow step-type contract, branch closure, and the (pure) workflow step-result validator — used by the SDL validator, by the processor at compile time, and by the processor runtime. -Per ADR-015 these helpers live with the SDL package because ``aces_sdl`` +Per ADR-015 these helpers live with the SDL package because ``raes`` defines the language; they depend only on the standard library and have no import-time coupling to ``aces_processor``. -.. currentmodule:: aces_sdl.semantics +.. currentmodule:: raes.semantics Objective Semantics ------------------- -.. automodule:: aces_sdl.semantics.objectives +.. automodule:: raes.semantics.objectives :members: Workflow Semantics ------------------ -.. automodule:: aces_sdl.semantics.workflow +.. automodule:: raes.semantics.workflow :members: diff --git a/docs/api/sdl.rst b/docs/api/sdl.rst index fb2b92a14..14a4f970c 100644 --- a/docs/api/sdl.rst +++ b/docs/api/sdl.rst @@ -1,15 +1,15 @@ SDL Authoring Layer =================== -The ``aces_sdl`` package provides the author-facing SDL models, parser, +The ``raes`` package provides the author-facing SDL models, parser, validator, instantiation, and composition machinery. -.. currentmodule:: aces_sdl +.. currentmodule:: raes Public API ---------- -.. automodule:: aces_sdl +.. automodule:: raes :members: :undoc-members: :noindex: @@ -17,49 +17,49 @@ Public API Parser ------ -.. automodule:: aces_sdl.parser +.. automodule:: raes.parser :members: Scenario Model -------------- -.. automodule:: aces_sdl.scenario +.. automodule:: raes.scenario :members: Instantiation ------------- -.. automodule:: aces_sdl.instantiate +.. automodule:: raes.instantiate :members: Validator --------- -.. automodule:: aces_sdl.validator +.. automodule:: raes.validator :members: Language Service ---------------- -.. automodule:: aces_sdl.language_service +.. automodule:: raes.language_service :members: Agent Guidance -------------- -.. automodule:: aces_sdl.agent_guidance +.. automodule:: raes.agent_guidance :members: Composition ----------- -.. automodule:: aces_sdl.composition +.. automodule:: raes.composition :members: Module Registry --------------- -.. automodule:: aces_sdl.module_registry +.. automodule:: raes.module_registry :members: SDL Models @@ -68,77 +68,77 @@ SDL Models Nodes ~~~~~ -.. automodule:: aces_sdl.nodes +.. automodule:: raes.nodes :members: Infrastructure ~~~~~~~~~~~~~~ -.. automodule:: aces_sdl.infrastructure +.. automodule:: raes.infrastructure :members: Features ~~~~~~~~ -.. automodule:: aces_sdl.features +.. automodule:: raes.features :members: Vulnerabilities ~~~~~~~~~~~~~~~ -.. automodule:: aces_sdl.vulnerabilities +.. automodule:: raes.vulnerabilities :members: Relationships ~~~~~~~~~~~~~ -.. automodule:: aces_sdl.relationships +.. automodule:: raes.relationships :members: Accounts ~~~~~~~~ -.. automodule:: aces_sdl.accounts +.. automodule:: raes.accounts :members: Agents ~~~~~~ -.. automodule:: aces_sdl.agents +.. automodule:: raes.agents :members: Content ~~~~~~~ -.. automodule:: aces_sdl.content +.. automodule:: raes.content :members: Entities ~~~~~~~~ -.. automodule:: aces_sdl.entities +.. automodule:: raes.entities :members: Conditions ~~~~~~~~~~ -.. automodule:: aces_sdl.conditions +.. automodule:: raes.conditions :members: Orchestration ~~~~~~~~~~~~~ -.. automodule:: aces_sdl.orchestration +.. automodule:: raes.orchestration :members: Objectives ~~~~~~~~~~ -.. automodule:: aces_sdl.objectives +.. automodule:: raes.objectives :members: Variables ~~~~~~~~~ -.. automodule:: aces_sdl.variables +.. automodule:: raes.variables :members: diff --git a/docs/conf.py b/docs/conf.py index 0de8249e5..d5470fda7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -3,7 +3,7 @@ # -- Project information ------------------------------------------------------- -project = "RAES SDL" +project = "Reproducible Agentic Environments System" copyright = "2026, Brad Edwards" author = "Brad Edwards" @@ -44,7 +44,7 @@ # -- Options for HTML output --------------------------------------------------- html_theme = "furo" -html_title = "RAES SDL" +html_title = "RAES Documentation" html_static_path = ["_static"] html_theme_options = { diff --git a/docs/decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md b/docs/decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md index 5eb4e6560..6453baa0b 100644 --- a/docs/decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md +++ b/docs/decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md @@ -202,11 +202,11 @@ different facts. [ADR-030](adr-030-process-scoped-linux-capability-policy.md), and [ADR-031](adr-031-ssh-server-configuration-surface.md) — concrete runtime and provenance surfaces that this ADR generalizes. -- [`runtime_configuration.py`](../../../implementations/python/packages/aces_sdl/runtime_configuration.py), - [`runtime_filesystem.py`](../../../implementations/python/packages/aces_sdl/runtime_filesystem.py), - [`runtime_network.py`](../../../implementations/python/packages/aces_sdl/runtime_network.py), - [`runtime_capabilities.py`](../../../implementations/python/packages/aces_sdl/runtime_capabilities.py), - and [`image_provenance.py`](../../../implementations/python/packages/aces_sdl/image_provenance.py) +- [`runtime_configuration.py`](../../../implementations/python/packages/raes/runtime_configuration.py), + [`runtime_filesystem.py`](../../../implementations/python/packages/raes/runtime_filesystem.py), + [`runtime_network.py`](../../../implementations/python/packages/raes/runtime_network.py), + [`runtime_capabilities.py`](../../../implementations/python/packages/raes/runtime_capabilities.py), + and [`image_provenance.py`](../../../implementations/python/packages/raes/image_provenance.py) — current implementation surfaces checked for the owning typed fields. - [Open Cyber Range SDL](https://documentation.opencyberrange.ee/docs/sdl/), [CACAO Security Playbooks v2.0](https://docs.oasis-open.org/cacao/security-playbooks/v2.0/security-playbooks-v2.0.pdf), @@ -230,3 +230,4 @@ different facts. | Date | Commit/PR | Summary | |------|-----------|---------| | 2026-07-13 | #417 | Refined the six-way carrier boundary: participant-discoverable facts are preserved in evidence by default and enter authored `Node.runtime` only through a deliberate exact, constrained, or open scenario requirement; observation alone is not promotion authority. | +| 2026-07-25 | #884 | Updated current implementation links for the breaking `aces_sdl` to `raes` package cutover. | diff --git a/docs/decisions/adrs/adr-093-raes-rename-and-compatibility-boundaries.md b/docs/decisions/adrs/adr-093-raes-rename-and-compatibility-boundaries.md index d914b4d38..1c42a62c5 100644 --- a/docs/decisions/adrs/adr-093-raes-rename-and-compatibility-boundaries.md +++ b/docs/decisions/adrs/adr-093-raes-rename-and-compatibility-boundaries.md @@ -145,3 +145,4 @@ land under its own owning ADR/spec/contract process. |---|---|---| | 2026-07-24 | #866 | Revised the decision from compatibility-preserving rename boundaries to a hard cutover for public command, MCP, guidance, and Python distribution surfaces after implementation clarification. | | 2026-07-25 | #866-pypi-name-correction | Corrected the RAES PyPI distribution target to the `raes` project name and removed the erroneous suffix-bearing slug from current emitted surfaces. | +| 2026-07-25 | #884 | MOD-884 supersedes the retained `aces_sdl` source-import boundary: top-level `raes` becomes the only SDL import namespace, with no compatibility alias or shim. | diff --git a/docs/decisions/adrs/adr-index.yaml b/docs/decisions/adrs/adr-index.yaml index e5dd2aa17..c35c3ad7a 100644 --- a/docs/decisions/adrs/adr-index.yaml +++ b/docs/decisions/adrs/adr-index.yaml @@ -163,8 +163,11 @@ adrs: summary: "Added primary-standards and access-control literature grounding (LDAP/Kerberos/SCIM/SAML/OAuth/OIDC RFCs, NIST SP 800-63C/162/207, RBAC/ABAC) for identity authorities and authority boundaries." - id: ADR-033 path: docs/decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md - pin: da01715747264384779a9bb203f4081ca401edaf7a947ecc48d791a18c97b69b + pin: 43b1b3a868e93ed5c70c0dce268227fda82fc5060d19466b719128d013c976d5 amendments: + - date: 2026-07-25 + ref: "#884" + summary: "Updated current implementation links for the breaking aces_sdl to raes package cutover." - date: 2026-07-13 ref: "#417" summary: "Refined participant-discoverable capture versus deliberate authored runtime contract promotion across the six carrier categories." @@ -430,3 +433,4 @@ adrs: amendments: - ref: "#866" - ref: "#866-pypi-name-correction" + - ref: "#884" diff --git a/docs/decisions/issue-884-raes-python-import-hard-cut-preflight.md b/docs/decisions/issue-884-raes-python-import-hard-cut-preflight.md new file mode 100644 index 000000000..ef58da68a --- /dev/null +++ b/docs/decisions/issue-884-raes-python-import-hard-cut-preflight.md @@ -0,0 +1,105 @@ +# Issue 884 MOD-884 RAES Python Import Hard-Cut Preflight + +Date: 2026-07-25 + +Requirement: MOD-884. This note governs the package-boundary migration reserved +by ADR-093 and the issue-866 preflight; it does not alter SDL, runtime, or +contract semantics. + +## Decision And Boundaries + +- `raes` is the top-level Python package for the canonical SDL API. Its public + root exports and supported submodules retain the current SDL API and behavior + of the owning `aces_sdl` package. +- `aces_sdl` is removed from the source tree and every built wheel/sdist. Do not + provide a re-export package, import hook, `sys.modules` alias, namespace-only + directory, warning shim, or fallback import. An old import must fail with the + normal `ModuleNotFoundError`. +- The existing deprecated `aces.*` compatibility tree is a distinct surface. + If retained during this migration, its SDL wrappers may target `raes` only; + new repository source and all user-facing examples must import `raes`, not + `aces.core.sdl`. This does not preserve `aces_sdl` compatibility. +- Other owning packages (`aces_contracts`, `aces_processor`, `aces_runtime`, + and siblings), contract ids, schema `$id` values, wire discriminators, SDL + fields, and persisted artifact meaning are outside this cut. Do not create a + `raes_sdl` package or a new aggregate package to avoid changing imports. + +ADR-093 is amended to replace its intentionally temporary retained-source- +namespace position. The release is a breaking 1.0.0 release; release-please, +not this change, owns the version literal and `CHANGELOG.md`. + +## Required Existing Owners + +- `implementations/python/packages/aces_sdl/` is the sole SDL owner to move to + `raes/`; preserve its parser, source-profile, semantic-validator, + instantiation, canonicalization, formatting, language-service, and module + registry implementations rather than duplicating any of them. +- `implementations/python/pyproject.toml` and `hatch_build.py` own wheel/sdist + inclusion; the package list, coverage roots, and Ruff per-file exception must + name the moved owner. The distribution name remains `raes`. +- `tools/policy/adr_policy.yaml` and `tools/policy/repo_policy.py` own package + layering and module boundaries. Retarget the existing SDL lower-layer rule + and every allowed/public import prefix from `aces_sdl` to `raes`; do not add a + parallel policy or weaken existing edges. +- `tools/check_sdl_lineage.py`, `tools/check_sdl_catalog_parity.py`, + `tools/check_example_library.py`, `tools/check_specification_coverage.py`, + and `tools/check_formal_semantic_validation.py` are the existing repository + tooling consumers. They must use the canonical package and current source + paths. +- `docs/api/sdl.rst`, `docs/api/sdl-semantics.rst`, the current SDL guides, + README/getting-started examples, and `examples/README.md` own user-visible + imports and Sphinx autodoc targets. +- `test_version_classification.py` is the existing hard-cut release-surface + test, while `test_corpus_packaging.py` is the installed-wheel isolation + harness. Extend those incumbents to prove `raes` works from a clean install + and `aces_sdl` is absent; do not add a second packaging harness. + +## Cross-Cutting Guardrails + +| Layer | Required treatment | +| --- | --- | +| SDL ingress and validation | Keep `raes.parser`, `_yaml_loader`, `SDLParserLimits`, closed Pydantic models, `SemanticValidator`, `instantiate_scenario()`, and `admit_instantiated_scenario()` as the same validation chain. A namespace migration must not bypass, duplicate, or relax a parse/shape/semantic gate. | +| Module/import security | Keep `raes.module_registry` as the sole lockfile, digest, signature/trust-policy, URL, path-containment, archive-shape, and resource-limit boundary. Its import paths are module-asset paths, not Python package aliases. No new environment variable, registry, or fallback resolution is permitted. | +| Diagnostics and adapters | Preserve `SDLError`, `SDLParseError`, `SDLValidationError`, structured language diagnostics, `aces_contracts.Diagnostic`, Typer error handling, and MCP `json_response()` envelopes. Only their import owner changes; do not add a namespace-specific exception or leak traceback, payload, path, or environment data. | +| Contract/schema publication | `aces_contracts.contracts.schema_invariants` publishes qualified validator references. Retargeting those strings to `raes` changes the generated SDL/satisfiability schemas. Update the owning source and the hand-governed schemas together, record a `last_change` summary and current hash in each affected `contracts/schema-publication/entries/` record, and retain `schema_bundle()` parity. Schema ids and semantics stay unchanged. | +| Evidence and documentation locators | Update current executable/source locators in policy tools, contracts, specs, API docs, and assurance records. Preserve historical changelog entries, accepted historical ADR text, pinned research snapshots, external URLs, and evidence about an earlier checkout unless their authority says they describe the current source location. | +| Build and OS/process boundary | Use the existing fixed-argv `uv build` and isolated-wheel tests. The installed-distribution check must run without `PYTHONPATH` or a checkout source tree, inspect the wheel's names, import `raes`, and prove the legacy package is unavailable. No secret, token, private key, or package mapping belongs in argv, environment, logs, fixtures, or docs. | +| Workflow governance | The branch `884-reframe-raes-docs` has no UID. Before implementation, map `MOD-884` to a requirement-order phase with ownership covering the moved package, consumers, policy, current locators, schemas, tests, and docs; run with `ACES_REQUIREMENT_UID=MOD-884`, not `--skip-requirement`. Reconcile Ground Control IMPLEMENTS and TESTS links for the changed code and tests. | + +The module-boundary policy's package identifier/root is the extension seam. A +future package-boundary migration changes that one owner and its approved import +edges; it must not restore an alias or teach every consumer a second import +spelling. The stable consumer parameter is the `raes` root plus its existing +public submodule names. + +## Gotchas + +- A source-tree test can pass while a wheel accidentally ships `aces_sdl`, or + while an ignored empty/`__pycache__` directory becomes a namespace package. + The clean installed-wheel negative import test is required evidence. +- Do not retain an `except ModuleNotFoundError: import aces_sdl`, dynamic name + fallback, `pkgutil` alias, or compatibility package. Those all violate the + hard cut even if they emit a warning. +- Changing `validator="aces_sdl..."` annotations without the generated schema + and publication ledger leaves public contracts pointing at a nonexistent + implementation. Conversely, changing schema ids or semantic rules merely to + rename that annotation is out of scope. +- Do not mechanically rewrite historical evidence or accepted ADR canonical + content. Update current locators; use ADR amendments for live-decision + changes and preserve historical truth. +- The package move is a breaking Python API change, including qualified class + names used by external importers or pickles. Do not claim data or binary + compatibility, silently reinterpret persisted data, or add a migration + service; document the no-rollback import cut in the existing migration note. + +## Release And Non-Goals + +The merge must carry a breaking Conventional Commit (`feat!:` or an equivalent +`BREAKING CHANGE:` footer) and a `Release-As: 1.0.0` footer so release-please +opens the 1.0.0 release PR. Do not hand-edit `[project].version`, +`.release-please-manifest.json`, or `CHANGELOG.md`. + +This work does not add or change auth, control-plane routes, persistence, +logging policy, secret handling, SDL syntax, runtime behavior, schema meaning, +contract identifiers, or any new validation/error hierarchy. It is a package +ownership and public-import cutover only. diff --git a/docs/decisions/issue-884-reframe-raes-documentation-preflight.md b/docs/decisions/issue-884-reframe-raes-documentation-preflight.md new file mode 100644 index 000000000..54ad4be6a --- /dev/null +++ b/docs/decisions/issue-884-reframe-raes-documentation-preflight.md @@ -0,0 +1,380 @@ +# Issue 884 RAES Documentation Reframing Preflight + +Date: 2026-07-25 + +Issue: #884. Requirement: GOV-884. The requirement is the positioning +constraint; the issue supplies the implementation context and acceptance +criteria. + +This note records repository-wide guardrails for presenting Reproducible +Agentic Environments System (RAES) as a domain-neutral system while keeping +every capability and assurance statement within the evidence currently +published by the repository. It is design guidance, not an implementation +plan, a new semantic authority, or a new product claim. + +## Binding Decisions And Evidence + +- ADR-093 makes Reproducible Agentic Environments System (RAES) the current + project identity while retaining SDL as the name of the authored scenario + language. Current user-facing prose introduces the full name on first use. +- ADR-009, ADR-019, and `specs/authority/authority-boundary.yaml` keep + explanatory docs, normative specs, published contracts, reference code, and + examples in separate authority classes. +- ADR-021 and `specs/agent-guidance/agent-guidance.yaml` require claims to stop + at their named evidence. Valid SDL, a dry-run plan, a fixture, or one + conformance probe must not be promoted into deployment, reproduction, replay, + participant-readiness, or behavioral-equivalence evidence. +- ADR-055, ADR-065, ADR-068, ADR-074, and the experiment-core contracts keep + scenario intent, experiment design, apparatus context, archival runs, + evidence, measures, studies, and replay/reproducibility claims distinct. +- ADR-070 and ADR-084 keep authored variation, experiment selection, backend + realizability, realization, scheduling, and provenance as separate planes. +- `scientific-scenario-completeness-rev1.json` defines a reproducible benchmark + or study input as support for a bounded reproduction attempt, not a guarantee + of bitwise replay, equal outcomes, scientific validity, generalizability, or + behavioral equivalence. The current delivery assessment reports that + stronger profile as incomplete. +- ADR-014, `.ground-control.yaml`, `.gc/plan-rules.md`, `noxfile.py`, and the + docs workflow define the verification path. + +No ADR amendment is required. The issue changes explanatory positioning and +current user-facing metadata; it does not change an accepted architectural +decision or normative SDL meaning. GOV-884 is the traceability authority for +the repository check, tests, and governed documentation changes. + +## Framing Vocabulary + +Use these distinctions consistently across the README, documentation entry +points, glossary, architecture/reference pages, examples, and metadata: + +**RAES** +: Reproducible Agentic Environments System, the repository-wide system of + specifications, contracts, reference implementations, examples, and + assurance material. RAES is broader than its SDL and broader than any one + backend or application domain. + +**Agentic environment** +: For explanatory positioning, a declared and realized setting in which one or + more participants can receive observations, take actions, interact with + resources or other participants, and be evaluated under stated controls. + Participants may be software agents, policies, scripts, or human-control + proxies. This definition does not introduce a new schema, root object, + participant kind, or runtime guarantee. + +**Authored scenario** +: Intent expressed in SDL before instantiation, compilation, planning, or + backend realization. SDL remains a scenario description language; it is not + renamed to an “agentic environment schema.” + +**Realized environment** +: The concrete environment produced by a selected processor, backend, + participant implementations, configuration, and runtime choices. It is not + identical to the authored scenario, and underspecified choices require + realized-form and apparatus disclosure where the applicable contracts + provide it. + +**Reproducibility support** +: Preservation and connection of authored intent, explicit deterministic or + governed variation, instantiation and realization inputs, participant + behavior and observations, apparatus identity, provenance, evidence, replay + boundaries, and conformance results so that a bounded reproduction attempt + can be made and assessed. Do not shorten this to “RAES guarantees + reproducibility.” + +Cyber, AI security, AI safety, testing, research, and evaluation are +non-exhaustive application areas. The general model can support additional +domains whose environments and evidence fit the same authored-intent, +realization, participant, observation, provenance, and conformance boundaries. +That statement is about model applicability, not a claim that each domain +already has complete vocabularies, examples, profiles, assets, or production +backends. + +## Architecture Guardrails + +- Lead with RAES as the system and present SDL, contracts, the Python reference + implementation, examples, and conformance material as its current + materialized parts. Do not redefine RAES as only the SDL or describe the SDL + as the entire environment. +- Preserve the one-way conceptual boundary: + authored intent -> admitted/instantiated scenario -> compiled plans -> + backend realization and participant execution -> observations/evidence -> + archival provenance and bounded replay/conformance claims. +- Describe deterministic behavior only at the proven phase. Canonicalization, + deterministic composition, governed random streams, or deterministic plan + construction do not imply deterministic participant behavior, backend + behavior, observations, outcomes, or exact replay. +- Keep the domain-neutral core separate from domain-specific examples, + controlled vocabularies, semantic profiles, reusable assets, and backend + profiles. Existing cyber examples remain valid demonstrations and must not + become the definition of the core. +- Keep current implementation limits adjacent to high-level positioning: + there is no managed service or production backend in this repository; + several participant, evidence, provenance, time, storage, and study surfaces + are partial, architecture-level, or separately contracted; stronger + scientific-completeness profiles remain incomplete. +- Use `docs/explain/reference/glossary.md` as the explanatory terminology + anchor. Entry points should link to it or repeat only a short consistent + definition, not create competing definitions of agent, participant, + scenario, environment, apparatus, run, evidence, replay, or conformance. +- Historical ADRs, research records, external titles/URLs, source package names, + and governed `aces-*` contract/profile identifiers are not stale positioning + prose. Classify them under ADR-093 before changing them. + +## Canonical Incumbents + +Build on these existing surfaces rather than introducing a second documentation +taxonomy or project-description registry: + +- Project identity and migration: ADR-093 and + `docs/migration/raes-rename.md`. +- Current-state prose policy: + `docs/explain/reference/documentation-style-guide.md`. +- Entry and navigation surfaces: `README.md`, `docs/index.md`, + `docs/explain/getting-started.md`, and + `docs/explain/reference/canonical-reference-map.md`. +- Terminology and boundaries: `docs/explain/reference/glossary.md`, + `docs/explain/sdl/index.md`, + `docs/explain/sdl/runtime-architecture.md`, + `docs/explain/reference/explicitness-realization-semantics.md`, + `docs/explain/reference/realization-envelopes.md`, and + `docs/explain/reference/scenario-variation-and-trial-realization.md`. +- Normative claim limits: `specs/agent-guidance/agent-guidance.yaml`, + `specs/sdl/scientific-scenario-completeness.md`, + `specs/formal/experiment-core/README.md`, and the current + scientific-completeness taxonomy and delivery assessment under + `contracts/profiles/scientific-completeness/`. +- Examples and library entry points: `examples/README.md` and + `examples/library/catalog.yaml`, guarded by + `tools/check_example_library.py`. +- Published metadata: `implementations/python/pyproject.toml` for the short + distribution description; the root `README.md` for the Hatch-injected PyPI + long description; the root README citation metadata; + `implementations/python/packages/aces_mcp/server.py` for MCP discovery + instructions; `implementations/python/packages/aces_mcp/tools/reference.py` + for the emitted SDL overview; and `docs/conf.py` for generated Sphinx + project/title metadata. Do not add another package README or metadata + source. +- Verification: `noxfile.py`, `tools/check_repo_policy.py`, + `tools/check_requirement_governance.py`, `tools/verify_all.py`, + `tools/policy/requirement_order.yaml`, `.github/workflows/docs.yml`, and + `.github/workflows/ci.yml`. +- Policy implementation conventions: `tools.policy.common.PolicyFailure`, + `tools/policy/exceptions.yaml`, the pure evaluator/CLI split in + `tools/check_agent_guidance.py`, and its temporary-root tests in + `implementations/python/tests/test_agent_guidance_policy.py`. +- Existing adjacent claim gates: + `tools/check_behavioral_relation_claims.py` owns governed behavioral-relation + overclaim detection, and `tools/check_scientific_scenario_completeness.py` + owns scientific-completeness nonclaim coverage. GOV-884 must not duplicate or + weaken either gate. + +Normative specs or contracts may need a current-name correction when ADR-093 +requires it, but they must not be rewritten merely to broaden positioning. +No application schema, DTO, runtime validator, controller, service, repository, +or exception hierarchy is needed for this documentation issue. GOV-884 does +require one repository policy check; that check is tooling, not a new RAES +runtime validation layer. + +## Executable Positioning Guard + +Implement the GOV-884 check as one standalone repository-policy evaluator in +the existing `tools/check_*.py` family. Its pure evaluation entry point must +return `tools.policy.common.PolicyFailure` values, its CLI must use the existing +JSON/error rendering and exception mechanism, and `noxfile.py` must invoke it +inside `_run_policy`. Do not add another GitHub Actions job, shell wrapper, +pre-commit command, or verification command: `policy`, `verify`, +`verify-changed`, the pre-push hook, and CI already converge through nox. + +`tools/policy/requirement_order.yaml` does not currently map GOV-884. Reuse the +existing `project-identity-migration` phase established for GOV-866, because it +already owns the current project-description, docs, package-metadata, MCP, and +identity surfaces. Add GOV-884 to that phase and admit the exact new focused +policy-test path; do not create a parallel documentation-governance phase or +broaden the phase to unrelated implementation packages. Record IMPLEMENTS and +TESTS traceability for the checker and its focused test even though the current +governance filter exempts `tools/` from path-based code-link enforcement. + +The guard must use an explicit, small table of current primary positioning +surfaces and the obligation each surface carries. It must not recursively ban +words such as `cyber`, `range`, `deterministic`, `replay`, or `reproducible` +across the repository. Those words are valid in domain-specific examples, +historical records, normative contracts, negative capability statements, and +phase-bounded technical claims. At minimum, the evaluator must fail closed on +missing or unreadable registered surfaces and verify: + +- the principal entry points introduce Reproducible Agentic Environments System + (RAES), define an agentic environment, and describe the application list as + non-exhaustive; +- RAES, SDL, authored scenarios, and realized environments are not presented as + aliases; +- reproducibility language remains bounded to preserved intent, governed + variation, realization/apparatus context, participants, observations, + provenance, evidence, replay boundaries, and conformance; +- primary summaries do not make positive claims of complete domain coverage, + deterministic runtime outcomes, exact replay, or guaranteed reproducibility; + and +- cyber-specific lineage, examples, identifiers, and honest current backend + limitations remain permitted. + +Parse structured metadata at its owning shape. Use `tomllib` for +`[project].description`; use Python AST inspection for literal MCP instruction +and overview constants rather than importing or executing the MCP server; and +read Markdown as UTF-8 text. Do not create a second YAML/JSON positioning +schema or move prose into a generated registry merely to make the check easy. +Keep all registered paths repository-relative, containment-checked, size +bounded, deterministic, and free of network access. + +Focused tests must exercise the evaluator through temporary repository roots: +one conforming fixture; one failure per obligation; missing/unreadable and +malformed structured surfaces; explicit negative claims; allowed +cyber-specific passages; and exclusion of historical, research, generated, and +external material. Pin `REQUIREMENT_REF = "GOV-884"` in the checker test. Add +the focused test to the existing targeted policy-test set rather than creating +a separate test runner. + +## Cross-Cutting Layers + +### Authority and shape validation + +- Markdown and MyST content passes the existing Sphinx parser, toctree, autodoc, + and warning-as-error CI build. Internal links must resolve from the edited + document, and code snippets must use current import and CLI names. +- `docs/conf.py` is executable build configuration. Keep the installed `raes` + distribution metadata as the version source and the honest + `0.0.0+unknown` fallback; positioning changes do not add environment-driven + titles or version literals. +- `implementations/python/pyproject.toml` remains a valid PEP 621/Hatch shape. + Change only user-facing description metadata; do not hand-edit the + release-please-owned version or duplicate the dynamic README hook. +- `examples/library/catalog.yaml` passes its existing YAML shape, path, + requirement-reference, and parser/semantic-validation gate. Reframing its + description must not change catalog IDs, body validation, or authority. +- `tools/policy/requirement_order.yaml` passes the existing safe-YAML + requirement-governance loader. GOV-884 belongs in + `project-identity-migration`; its ownership change should name only the new + focused test because the phase already covers the intended governed + documentation, metadata, and MCP roots. +- The GOV-884 evaluator passes fixed, repository-contained inputs through + UTF-8 decoding, TOML parsing, Python AST shape checks, and bounded semantic + claim checks. It must not import application modules or execute docs, + metadata, examples, or MCP code while inspecting them. +- Repository-relative paths remain confined to their owning roots. Generated + Sphinx output and built package metadata are verified, not hand-edited. + +### Security and exposure + +- Runtime authentication and authorization surfaces are not touched: no HTTP + route, MCP tool, control-plane role, trusted-proxy header, or request-size + guard changes. Documentation must not imply that reframing changes those + controls. +- The secret boundary remains ADR-057 plus repository hygiene. Do not read or + publish operator credentials, tokens, private keys, environment dumps, + prompts, hidden answers, raw backend objects, or real host paths. Synthetic + scenario values remain distinct from operator secrets. +- Do not add environment variables or config aliases. The branch name + `884-reframe-raes-docs` does not contain a requirement UID, so local + governance runs must set `ACES_REQUIREMENT_UID=GOV-884` or pass + `--requirement-uid GOV-884`. Do not use the requirement-free + `--skip-requirement` lane for this work. +- Requirement governance must resolve GOV-884 through + `project-identity-migration`, enforce that phase's existing ownership roots, + and find the new TESTS/IMPLEMENTS links. A missing phase mapping is a policy + failure, not a reason to bypass governance. +- Shell examples use fixed current commands and repo-relative sample paths. + Tokens, credentials, evidence payloads, or secrets must not appear in process + argv. Examples that start MCP or runtime services must retain their current + non-execution and authentication boundaries. +- Error envelopes stay owned by their existing layers: SDL parse/validation + errors, processor `Diagnostic` values, Typer CLI errors, MCP structured JSON, + and bounded runtime HTTP errors. The rewrite must not promise a unified error + model, quote raw exception payloads, or introduce documentation-only error + terminology that conflicts with those incumbents. +- Logging, audit, and persistence behavior are unchanged. Provenance and + evidence contracts are portable artifacts, not proof that this repository + ships production storage, log collection, replay execution, or study + services. +- The policy checker has no auth, network, secret, environment-binding, or + persistence surface. Its only OS-visible argument may be a repository root or + JSON-output selector; it reports bounded rule id/path/message envelopes and + never file bodies, environment values, tracebacks, or parsed payloads. +- The canonical hygiene graph retains text/YAML/JSON checks, private-key + detection, and gitleaks. Do not weaken or bypass it for example prose. + +Remote GitHub repository/About metadata is not a checked-in authority and must +not become a network dependency of the hermetic policy check. If maintainers +choose to update that remote description, treat it as a separately authorized, +authenticated external action; do not pass a token in process arguments or +duplicate the remote value into a new repository registry. + +## Extension Boundary + +The extension seam is the existing profile-and-catalog boundary, not a new +top-level `domain` field or a closed application-domain enum. + +A future application area should add or reference its domain-owned examples, +controlled vocabularies, semantic profiles, reusable assets, backend profiles, +and evidence through their current authorities. The domain-neutral RAES +definition and authored/realized/evidence lifecycle should not need revision +merely because another application area is added. + +The parameter at that seam is the selected domain-specific profile or artifact +reference carried by the existing authoring, apparatus, concept-authority, and +example/catalog surfaces. Environments may span domains, so do not force one +global domain discriminator into SDL, runtime DTOs, contracts, or package +metadata. + +## Gotchas And Anti-Patterns + +Avoid: + +- replacing “cyber range” with “agentic environment” mechanically when the + sentence accurately describes a cyber-specific example, lineage source, + contract, or current backend boundary; +- claiming that RAES, SDL validity, a seed, canonical bytes, deterministic + planning, or preserved provenance guarantees reproducibility or exact replay; +- treating an authored scenario, instantiated snapshot, execution plan, + runtime snapshot, realized environment, experiment run, and study as aliases; +- implying complete current support for AI security, AI safety, testing, or any + other application area without the relevant examples, profiles, backends, and + evidence; +- describing cyber as an exhaustive boundary or, conversely, hiding that it is + the repository's strongest current example and lineage base; +- adding a `Domain`, `AgenticEnvironment`, `Reproducibility`, or `Replay` schema, + DTO, service, controller, persistence table, validator, or exception solely + to support positioning prose; +- duplicating glossary definitions, metadata sources, example catalogs, + verification commands, claim taxonomies, or scientific-completeness checks; +- implementing the guard as a repository-wide keyword ban, allowing a + hand-maintained exclusion list to grow around false positives, or treating a + negated limitation as a forbidden positive claim; +- importing `aces_mcp.server`, evaluating `docs/conf.py`, building the package, + or running examples merely to extract user-facing strings for the policy + check; +- adding a second CI workflow, test runner, result class, waiver format, or + failure renderer for GOV-884 instead of reusing nox and + `tools.policy.common.PolicyFailure`; +- bypassing `GOV-884` with `--skip-requirement`, adding an overbroad + requirement-order ownership root, or creating a duplicate governance phase + instead of extending `project-identity-migration`; +- editing accepted historical ADR text, external references, contract IDs, + profile IDs, package import paths, fixtures, generated schemas, generated + docs, `CHANGELOG.md`, or the package version as part of the rewrite; +- using normative `MUST`/`SHALL` language in explanatory positioning or + presenting architecture-level and draft contract surfaces as shipped + operational services; +- weakening warnings, negative capability statements, backend boundaries, or + evidence qualifications to make the opening copy read more broadly. + +## Non-Goals And Implementation Boundaries + +- No SDL semantic, schema, contract, runtime, backend, participant, conformance, + security, logging, persistence, replay, or exception behavior changes. +- No new domain taxonomy, application registry, project-description service, or + generated metadata pipeline. +- No claim that every domain has complete examples, vocabularies, profiles, + assets, backends, participant implementations, or scientific evidence. +- No removal of useful cyber examples or rewriting of historical/external + records solely to make the repository appear domain-neutral. +- No production backend, managed service, storage system, scheduler, study + manager, evidence collector, replay engine, or general agent framework. +- No implementation work in this preflight note. diff --git a/docs/explain/getting-started.md b/docs/explain/getting-started.md index feae5cbb2..d55224840 100644 --- a/docs/explain/getting-started.md +++ b/docs/explain/getting-started.md @@ -1,8 +1,29 @@ # Getting Started With RAES +Reproducible Agentic Environments System (RAES) supports the description, +realization, control, evaluation, and bounded reproduction of agentic +environments. An agentic environment is a declared and realized setting in +which participants receive observations, take actions, interact with resources +or other participants, and are evaluated under stated controls. + RAES currently provides a Scenario Description Language (SDL), a Python reference implementation, contracts, examples, tests, and explanatory -documentation. It is not a managed cyber range and does not include a +documentation. RAES is the overall system; RAES SDL records the authored +scenario and experiment intent that processors, backends, participant +implementations, and runtime choices turn into a realized environment. + +Cyber, AI security, AI safety, testing, research, and evaluation are +non-exhaustive application areas. The general model can support additional +domains through their own examples, controlled vocabularies, semantic profiles, +assets, backend profiles, and evidence requirements. + +RAES connects authored scenario intent, governed variation, realization inputs, +participant behavior, observations, apparatus identity, provenance, evidence, +replay boundaries, and conformance results for a bounded reproduction attempt. +It does not guarantee deterministic runtime behavior, equal outcomes, exact +replay, scientific validity, or reproducibility. + +The repository is not a managed environment service and does not include a production backend. Use this page to choose the smallest useful entrypoint for your task. @@ -11,6 +32,8 @@ Use this page to choose the smallest useful entrypoint for your task. RAES can currently support: +- describing agentic environments as authored scenarios and explicit apparatus + inputs - reading and authoring SDL scenario documents - parsing and validating SDL through the Python implementation - instantiating variables and compiling runtime models in the reference stack @@ -35,6 +58,7 @@ fixtures or schema authority. | Goal | Start with | Current check | Supported statement | |------|------------|---------------|---------------------| | Understand the repository | `README.md`, [`docs/index.md`](../index.md), [`docs/explain/reference/canonical-reference-map.md`](reference/canonical-reference-map.md) | Read the referenced docs | The repository layout and current boundaries are understood. | +| Understand the agentic-environment lifecycle | [`docs/explain/reference/glossary.md`](reference/glossary.md), [`docs/explain/sdl/runtime-architecture.md`](sdl/runtime-architecture.md) | Follow the authored scenario, realized environment, evidence, and conformance references | RAES system concepts are distinguished from SDL and backend behavior. | | Read a complete scenario | `examples/README.md`, `examples/scenarios/*.sdl.yaml` | `pytest tests/test_scenarios.py` | The checked examples load through the current parser boundary. | | Start from a reusable template or pattern | `examples/library/catalog.yaml`, `examples/library/templates/`, `examples/library/patterns/` | `python tools/check_example_library.py` | The catalog covers scenario, workflow, participant behavior, task, run, and study surfaces with parser-validated template bodies. | | Author a small SDL file | [`docs/explain/sdl/index.md`](sdl/index.md), [`docs/explain/sdl/sections.md`](sdl/sections.md), [`docs/explain/sdl/validation.md`](sdl/validation.md) | `parse_sdl_file()` or `load_scenario()` | The file is accepted by the current SDL model and semantic validator. | @@ -72,7 +96,7 @@ Parse and validate a scenario from Python: ```python from pathlib import Path -from aces_sdl import parse_sdl_file +from raes import parse_sdl_file scenario = parse_sdl_file( Path("../../examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml") diff --git a/docs/explain/reference/assessment-semantics.md b/docs/explain/reference/assessment-semantics.md index 9b0b45bf4..6ee2d1a09 100644 --- a/docs/explain/reference/assessment-semantics.md +++ b/docs/explain/reference/assessment-semantics.md @@ -52,7 +52,7 @@ evaluation outputs are an experiment/evaluator-plane concern, never authored SDL - **the backend Evaluator** ([ADR-069](../../decisions/adrs/adr-069-cage-2-replication-architecture.md) §3), which projects reward, objective, terminal-condition, and scoring facts - into ACES evaluation results, evidence records, and derived measures. + into RAES evaluation results, evidence records, and derived measures. The runtime evaluator-result and execution contracts (`EvaluationResultContract`, `EvaluationExecutionContract`, `validate_evaluation_result()`) remain the diff --git a/docs/explain/reference/backend-conformance.md b/docs/explain/reference/backend-conformance.md index ebb5c4925..cf40d53b5 100644 --- a/docs/explain/reference/backend-conformance.md +++ b/docs/explain/reference/backend-conformance.md @@ -131,7 +131,7 @@ mandatory and set-like. The standard terms are grounded in `specs/formal/participant-semantics/`: exercise roles map to the existing `white`/`green`/`red`/`blue` framing vocabulary; behavior terms map to the action, observation, state-transition, failure, temporal, attribution, and -outcome semantics already modeled in ACES; interaction terms map to the SEM-209 +outcome semantics already modeled in RAES; interaction terms map to the SEM-209 coordination, contention, interference, and shared-state classes. Standard terms are not accepted as prose-only promises: target conformance checks that the manifest also declares the published participant episode or behavior-history @@ -214,7 +214,7 @@ by issues #715-#717. The probe needs a scenario to exercise and defaults to a generic linux-vm scenario (`_DEFAULT_CONFORMANCE_SCENARIO`). A single hard-coded scenario wrongly assumes *every* backend can realize it. -Fixed-topology emulation backends (which map ACES nodes onto a pre-built +Fixed-topology emulation backends (which map RAES nodes onto a pre-built environment) and bounded simulation backends legitimately cannot realize an arbitrary scenario, yet still honor the provisioning contract. `run_target_conformance` therefore accepts an optional `reference_scenario` (issue #663): a backend or diff --git a/docs/explain/reference/canonical-reference-map.md b/docs/explain/reference/canonical-reference-map.md index 6e63b0fd8..12ef43274 100644 --- a/docs/explain/reference/canonical-reference-map.md +++ b/docs/explain/reference/canonical-reference-map.md @@ -1,12 +1,17 @@ # Canonical Reference Map -This page identifies the current repository locations for ACES SDL reference -material. It is an index, not a replacement for the linked artifacts. +This page identifies the current repository locations for Reproducible Agentic +Environments System (RAES) and RAES SDL reference material. RAES is the overall +system for agentic environments; SDL is its authored scenario language. This +page is an index, not a replacement for the linked artifacts. ## How To Use This Map - Scenario authors: start with the SDL guide, section reference, parser behavior, validation rules, and limitations. +- Agentic-environment users: start with the glossary, getting-started guide, + runtime architecture, realization semantics, and conformance notes to follow + the path from authored scenario to realized environment and evidence. - Backend implementers: start with the contract root, schema inventory, runtime architecture, and backend conformance notes. - Researchers: start with lineage, design precedents, formal specifications, @@ -14,6 +19,19 @@ material. It is an index, not a replacement for the linked artifacts. - Reviewers: use the authority boundary, ADRs, and documentation style guide to distinguish normative claims from explanatory prose. +## RAES Lifecycle And Boundaries + +| Surface | Current reference | +|---------|-------------------| +| RAES and agentic-environment terminology | [`glossary.md`](glossary.md) | +| Current system boundary and entrypoints | [`docs/explain/getting-started.md`](../getting-started.md) | +| Authored scenario language | [`docs/explain/sdl/index.md`](../sdl/index.md) | +| Instantiation, planning, and realization path | [`docs/explain/sdl/runtime-architecture.md`](../sdl/runtime-architecture.md) | +| Explicitness and realized-form semantics | [`explicitness-realization-semantics.md`](explicitness-realization-semantics.md), [`realization-envelopes.md`](realization-envelopes.md) | +| Variation and trial realization | [`scenario-variation-and-trial-realization.md`](scenario-variation-and-trial-realization.md) | +| Backend conformance | [`backend-conformance.md`](backend-conformance.md) | +| Evidence-bounded claim guidance | [`docs/explain/sdl/agent-guidance.md`](../sdl/agent-guidance.md), [`docs/explain/sdl/scientific-scenario-completeness.md`](../sdl/scientific-scenario-completeness.md) | + ## Repository Authority | Surface | Current reference | diff --git a/docs/explain/reference/coding-standards.md b/docs/explain/reference/coding-standards.md index 5c50719a6..045307aac 100644 --- a/docs/explain/reference/coding-standards.md +++ b/docs/explain/reference/coding-standards.md @@ -2,7 +2,7 @@ ## Semantic Engineering and Lightweight Formal Methods -ACES SDL uses lightweight formal methods for semantic and stateful subsystems, not +RAES SDL uses lightweight formal methods for semantic and stateful subsystems, not for all code. The goal is to make behavior precise where ambiguity, graph constraints, or execution-state semantics matter, while keeping ordinary structural work lightweight. diff --git a/docs/explain/reference/documentation-style-guide.md b/docs/explain/reference/documentation-style-guide.md index 5613e9106..e892d0161 100644 --- a/docs/explain/reference/documentation-style-guide.md +++ b/docs/explain/reference/documentation-style-guide.md @@ -15,7 +15,7 @@ repository state. It is not a product page, roadmap, or funding document. - Use present tense for current behavior. - Use normative language only for repository rules, specifications, contracts, and policies. -- Treat prior art as evidence or lineage, not as authority for ACES semantics. +- Treat prior art as evidence or lineage, not as authority for RAES semantics. ## Prohibited Content @@ -86,11 +86,11 @@ when a document cites several sources. ## Terminology -- Define terms at first use when they are ACES-specific or overloaded in the +- Define terms at first use when they are RAES-specific or overloaded in the literature. -- Use ACES terms consistently with the current specs, contracts, and code. +- Use RAES terms consistently with the current specs, contracts, and code. - Do not rename an external concept when citing a source. -- Do not import semantics from cited systems unless the ACES document states +- Do not import semantics from cited systems unless the RAES document states the adopted subset or difference. - Distinguish authored scenario meaning, processor behavior, backend behavior, runtime state, and evidence artifacts. @@ -110,5 +110,5 @@ when a document cites several sources. - Does the document describe current repository behavior? - Are external claims cited to primary sources? - Are limits and exclusions explicit? -- Are ACES terms used consistently with the specs, contracts, and code? +- Are RAES terms used consistently with the specs, contracts, and code? - Is all promotional or forward-looking language removed? diff --git a/docs/explain/reference/explicitness-realization-semantics.md b/docs/explain/reference/explicitness-realization-semantics.md index 385ef7f82..9f3ee6056 100644 --- a/docs/explain/reference/explicitness-realization-semantics.md +++ b/docs/explain/reference/explicitness-realization-semantics.md @@ -50,13 +50,13 @@ engineering risk is concept conflation: treating "not specified yet", Build on these existing surfaces before adding anything new: -- SDL parsing and closed models: `aces_sdl.parser`, `aces_sdl.SDLModel`, and +- SDL parsing and closed models: `raes.parser`, `raes.SDLModel`, and Pydantic `extra="forbid"` model boundaries -- scoped author intent: `aces_sdl.realization_designation`, plus the +- scoped author intent: `raes.realization_designation`, plus the designation records in expansion and instantiation provenance - static semantics: `SemanticValidator` and `SDLValidationError` - instantiation: `instantiate_scenario()` and `SDLInstantiationError` -- shared semantic helpers: `aces_sdl.semantics.*` and +- shared semantic helpers: `raes.semantics.*` and `aces_processor.semantics.*` - processor/backend declarations: `aces_processor.manifest`, `aces_processor.capabilities`, `aces_backend_protocols.capabilities`, and diff --git a/docs/explain/reference/fm-classification-ledger.yaml b/docs/explain/reference/fm-classification-ledger.yaml index 1e2593ab0..a294f9012 100644 --- a/docs/explain/reference/fm-classification-ledger.yaml +++ b/docs/explain/reference/fm-classification-ledger.yaml @@ -443,7 +443,7 @@ entries: - kind: unit_tests path: implementations/python/tests/test_sdl_identifiers.py - kind: typed_ir_or_contract_coverage - path: implementations/python/packages/aces_sdl/_declarations.py + path: implementations/python/packages/raes/_declarations.py - kind: property_based_or_differential_tests path: implementations/python/tests/test_sdl_identifiers.py waived_artifacts: [] @@ -456,7 +456,7 @@ entries: - kind: unit_tests path: implementations/python/tests/test_sdl_phase_contracts.py - kind: typed_ir_or_contract_coverage - path: implementations/python/packages/aces_sdl/phase_contracts.py + path: implementations/python/packages/raes/phase_contracts.py - kind: property_based_or_differential_tests path: implementations/python/tests/test_sdl_phase_contracts.py waived_artifacts: [] diff --git a/docs/explain/reference/glossary.md b/docs/explain/reference/glossary.md index 3a63b091e..ae0c27614 100644 --- a/docs/explain/reference/glossary.md +++ b/docs/explain/reference/glossary.md @@ -3,11 +3,41 @@ This glossary is a reference aid. Normative definitions remain in `specs/`, published schemas, source code, and ADRs. +## System And Environments + +**RAES** +: Reproducible Agentic Environments System, the overall system of + specifications, contracts, reference implementations, examples, and + assurance material in this repository. RAES is broader than its SDL, any one + backend, and any one application domain. + +**Agentic environment** +: A declared and realized setting in which one or more participants receive + observations, take actions, interact with resources or other participants, + and are evaluated under stated controls. Participants can include software + agents, policies, scripts, and human-control proxies. This explanatory term + does not introduce a new schema or runtime guarantee. + +**Reproducibility support** +: Preservation and connection of authored intent, deterministic or governed + variation, realization inputs, participant behavior and observations, + apparatus identity, provenance, evidence, replay boundaries, and conformance + results so a bounded reproduction attempt can be made and assessed. RAES does + not guarantee deterministic runtime behavior, equal outcomes, exact replay, + scientific validity, or reproducibility. + +**Realized environment** +: The concrete environment produced from an authored scenario by a selected + processor, backend, participant implementations, configuration, and runtime + choices. It is not identical to the authored scenario, and underspecified + choices require realized-form and apparatus disclosure where the applicable + contracts provide it. + ## Authoring And SDL -**ACES SDL** +**RAES SDL** : The YAML-based scenario description language implemented in this repository. - It starts from the Open Cyber Range SDL surface and adds ACES-specific + It starts from the Open Cyber Range SDL surface and adds RAES-specific sections and semantics. See [Open Cyber Range SDL](https://documentation.opencyberrange.ee/docs/sdl/). **SDL document** @@ -59,7 +89,7 @@ published schemas, source code, and ADRs. criteria. **Workflow** -: A control graph over objectives and workflow steps. ACES workflow semantics +: A control graph over objectives and workflow steps. RAES workflow semantics are owned by this repository; CACAO is prior art for playbook workflow structure. See [CACAO Security Playbooks v2.0](https://docs.oasis-open.org/cacao/security-playbooks/v2.0/security-playbooks-v2.0.pdf). @@ -161,10 +191,10 @@ published schemas, source code, and ADRs. **Backend conformance** : The contract and fixture discipline used to check that backend-facing - declarations and results satisfy published ACES contracts. + declarations and results satisfy published RAES contracts. **Surface** -: A named, bounded, contract-bearing scope of an ACES artifact or apparatus to +: A named, bounded, contract-bearing scope of an RAES artifact or apparatus to which governed vocabularies and concept bindings apply. The normative definition, including the one-surface-versus-two decision rule, lives in `specs/concept-authority/concept-authority.md`. diff --git a/docs/explain/reference/objective-semantics.md b/docs/explain/reference/objective-semantics.md index dd8879d99..c52cbac78 100644 --- a/docs/explain/reference/objective-semantics.md +++ b/docs/explain/reference/objective-semantics.md @@ -34,7 +34,7 @@ credentials, polling loops, or live control-plane behavior. ## Name-level source of truth -`aces_sdl.semantics.objective_semantics.analyze_objective_semantics(...)` is the +`raes.semantics.objective_semantics.analyze_objective_semantics(...)` is the single name-level analyzer. Given the name-keyed SDL constructs plus the targetable named-reference index (and an optional `is_unresolved` predicate so `${var}` placeholders are skipped and re-checked after instantiation), it @@ -107,7 +107,7 @@ itself is unit-tested in `implementations/python/tests/test_semantics_objectives ## Anti-patterns -- a second objective schema beside `aces_sdl.objectives`, or a second reference +- a second objective schema beside `raes.objectives`, or a second reference resolver beside `SemanticValidator`'s named-reference index / the compiler's canonical address helpers; - duplicating the window, dependency, or reference-resolution rules in compiler, diff --git a/docs/explain/reference/realization-envelopes.md b/docs/explain/reference/realization-envelopes.md index 9d2db6f76..e40e45445 100644 --- a/docs/explain/reference/realization-envelopes.md +++ b/docs/explain/reference/realization-envelopes.md @@ -1,6 +1,6 @@ # Realization Envelopes and Observation Strength -This page explains how ACES states, per backend configuration, **which scenario +This page explains how RAES states, per backend configuration, **which scenario concerns it can realize and how strongly it can prove each one**. It is non-normative explanation; the governing decision is [ADR-070](../../decisions/adrs/adr-070-realization-envelope-semantics.md) and the @@ -115,7 +115,7 @@ gate. Then: transport → initialization → concern probes → cleanup); a later stage never repairs an earlier one. Each concern becomes a `RealizationObservation` at `guest-observed` strength, compared to the requested realization. Failures are - distinct, stable, redacted `Diagnostic` codes naming the safe ACES address and + distinct, stable, redacted `Diagnostic` codes naming the safe RAES address and observation level — never raw XML, UUIDs, host paths, URIs, or credentials. 5. **Commit eligibility.** The provisioner cannot return success, changed addresses, or a committed snapshot until all required daemon **and** guest diff --git a/docs/explain/reference/reference-emulation-backend.md b/docs/explain/reference/reference-emulation-backend.md index 4af5742e7..797f817cc 100644 --- a/docs/explain/reference/reference-emulation-backend.md +++ b/docs/explain/reference/reference-emulation-backend.md @@ -12,7 +12,7 @@ contracts. Unlike the non-normative in-memory stub (`aces_backend_stubs`), the reference backend realizes provisioning plans against a pluggable deployment driver. The default driver is hermetic; an opt-in OCI driver realizes against a real -container runtime (docker/podman). Either way, only portable ACES facts reach +container runtime (docker/podman). Either way, only portable RAES facts reach snapshots, diagnostics, and conformance reports. ## Constructing and registering a target diff --git a/docs/explain/reference/scenario-variation-and-trial-realization.md b/docs/explain/reference/scenario-variation-and-trial-realization.md index b95b989b0..a4cda6b57 100644 --- a/docs/explain/reference/scenario-variation-and-trial-realization.md +++ b/docs/explain/reference/scenario-variation-and-trial-realization.md @@ -1,6 +1,6 @@ # Scenario Variation And Deterministic Trial Realization -This reference defines the cohesive ACES path from an authored scenario family +This reference defines the cohesive RAES path from an authored scenario family to archival experiment provenance. It applies ADR-084 to the package and artifact boundaries already established by ADR-036, ADR-053, ADR-055, ADR-065, ADR-068, ADR-074, and ADR-078. @@ -130,11 +130,11 @@ scheduler state, or backend refusal back into experiment selection. | Plane | Named authority | Input artifact | Immutable output artifact | Admission and identity rule | Provenance carried forward | | --- | --- | --- | --- | --- | --- | -| 1. Module composition | `aces_sdl.composition` and `module_registry` | Normalized root SDL, locked imports, trust policy, verified module bytes | Expanded scenario family | Resolve the complete declaration graph before selection; preserve qualified canonical symbols; selected values never influence module or declaration identity | Import preorder, namespace, requested and resolved source identities, versions, content/manifest/export digests, signer attribution, bindings | +| 1. Module composition | `raes.composition` and `module_registry` | Normalized root SDL, locked imports, trust policy, verified module bytes | Expanded scenario family | Resolve the complete declaration graph before selection; preserve qualified canonical symbols; selected values never influence module or declaration identity | Import preorder, namespace, requested and resolved source identities, versions, content/manifest/export digests, signer attribution, bindings | | 2. Scenario-family declaration | SDL models and `SemanticValidator` | Normalized/composed family with a keyed map of variation points | Semantically admitted expanded scenario family | Every point has a stable qualified id, a closed kind, a bounded domain, a typed target, and locally valid alternatives; the family is not experiment allocation | Family semantic digest, point/domain/profile versions, source locations, expansion evidence | | 3. Experiment design | `experiment-authoring-input-v1` and experiment-core validators | Task/family refs, factors, allocation, selection policies, stochastic controls, apparatus intent | Closed experiment specification | Policies target existing point ids; factors and conditions remain experiment concepts; refs/digests pin the family and task; descriptive legacy randomization fields cannot execute by convention | Spec identity/digest, task/family refs, factor and condition ids, policy/control ids and versions, randomness namespace, requested apparatus and capture refs | | 4. Trial-set compilation and admission | `aces_processor` using neutral DTOs from `aces_contracts` | Admitted experiment spec, exact family/task bytes, apparatus manifests/accepted envelopes, compiler/identity/RNG profiles | One canonical admitted trial plan | Pure deterministic function of admitted inputs; preallocate one archival `run_id` per logical coordinate; emit no plan if any selected entry is invalid, impossible, duplicate, or unrealizable | All input refs/digests, profiles, coordinates, run ids, selections, factor assignments, stochastic controls and stream addresses, apparatus bindings, bounded admission evidence | -| 5. SDL instantiation | Public `aces_sdl` selection/instantiation/admission APIs, orchestrated by `aces_processor` | One plan entry and the exact expanded family it pins | Admitted `InstantiatedScenario` and canonical snapshot | Apply only recorded selections/bindings; no new draw, import, query, fallback, or private binder; rerun whole-scenario semantic validation | Existing expansion/instantiation evidence plus point selections and trial-plan/run linkage | +| 5. SDL instantiation | Public `raes` selection/instantiation/admission APIs, orchestrated by `aces_processor` | One plan entry and the exact expanded family it pins | Admitted `InstantiatedScenario` and canonical snapshot | Apply only recorded selections/bindings; no new draw, import, query, fallback, or private binder; rerun whole-scenario semantic validation | Existing expansion/instantiation evidence plus point selections and trial-plan/run linkage | | 6. Runtime fact binding | `aces_runtime` over compiled slots and neutral fact DTOs | Admitted compiled plans, authorized observations and secret references | Run-local bound operation/action input and binding event evidence | Fill only a declared sink with matching type/source/scope/freshness/sensitivity; never mutate the plan, snapshot, factors, topology, choices, run id, or streams | Slot id, safe fact/source ref, scope, freshness, sensitivity, authorization/evidence refs, binding outcome; no raw secret | | 7. Backend realization | Existing planner, manifest, realization-envelope, and backend protocols | Admitted plans plus selected apparatus/envelope/manifests | Existing backend plans, operation receipts/status, runtime snapshots, and realized-form disclosures | Realize only within the selected envelope and capabilities; backend refusal is failure/deviation, never permission to resample | Manifest/envelope/configuration refs/digests, realized forms, transformations, omissions, operation ids, receipts | | 8. Orchestration and scheduling | External scheduler, including APTL for SCE-006 | Admitted plan entries and execution/isolation policy | Queue/placement state and dispatch decisions, outside scenario identity | May order, delay, pause, retry transport, and use bounded parallelism after isolation proof; cannot select, instantiate, randomize, compare, or score | Dispatch order, instance/lock/storage allocation, timeouts, clean-state/cleanup evidence, retry reason | diff --git a/docs/explain/reference/shared-concept-model.md b/docs/explain/reference/shared-concept-model.md index cacee7b36..2963a840f 100644 --- a/docs/explain/reference/shared-concept-model.md +++ b/docs/explain/reference/shared-concept-model.md @@ -9,7 +9,7 @@ next implementation pass aligned with the right architectural model. ## Goal -Make shared meaning real across ACES artifacts without turning the ontology +Make shared meaning real across RAES artifacts without turning the ontology into the SDL, the manifests, or the contract schema layout. The core problem is semantic drift: @@ -42,9 +42,9 @@ concept families such as: This layer is about semantic authority, not authoring syntax. -### 2. ACES concept layer +### 2. RAES concept layer -This layer defines the concepts ACES needs that are not naturally covered by +This layer defines the concepts RAES needs that are not naturally covered by the cyber-domain authority, including: - scenarios @@ -54,7 +54,7 @@ the cyber-domain authority, including: - provenance and evidence requirements - time, clocks, and apparatus concerns -These are ACES-native concepts, even when they relate to cyber-domain +These are RAES-native concepts, even when they relate to cyber-domain concepts. ### 3. Artifact binding layer @@ -73,7 +73,7 @@ The following constraints should shape any `GOV-917` implementation. Authors should not be required to write UCO directly. -ACES remains the authoring and ecosystem layer. Shared concept authority exists +RAES remains the authoring and ecosystem layer. Shared concept authority exists behind the authoring surface, not in place of it. ### Ontology structure is not contract structure @@ -84,17 +84,17 @@ mechanically. Concept authority answers "what does this declared thing mean?" It does not require every artifact to serialize in the same shape as the ontology. -### ACES-native concepts must be explicit +### RAES-native concepts must be explicit -If ACES needs concepts outside the chosen cyber-domain authority, those -concepts must be declared explicitly as ACES-native extensions. +If RAES needs concepts outside the chosen cyber-domain authority, those +concepts must be declared explicitly as RAES-native extensions. Do not create silent local forks of imported concepts and do not introduce new portable labels without saying whether they are: - adopted from the shared authority - adapted from the shared authority -- native to ACES +- native to RAES ### Bind concepts, not just labels @@ -125,7 +125,7 @@ ontology exercise. The first slice should enable the repo to say something stronger than "different artifacts happen to use similar words." -It should make it possible for ACES artifacts to state: +It should make it possible for RAES artifacts to state: - this SDL construct refers to a canonical concept - this manifest capability or declaration refers to the same concept @@ -172,7 +172,7 @@ artifact. ## External Knowledge Binding Effects (SEM-217) `SEM-217` fixes what an external knowledge binding is allowed to do to native -ACES meaning. The effect is explicit and surface-owned; it is never inferred +RAES meaning. The effect is explicit and surface-owned; it is never inferred from a label, a URL, or the fact that an external source uses similar words. The current effect vocabulary is closed: @@ -180,10 +180,10 @@ The current effect vocabulary is closed: - `annotates`: the external reference adds reviewable context or evidence and does not change native validation, planning, runtime, or conformance meaning by itself. -- `aligns`: the ACES concept family is adopted from the external authority with +- `aligns`: the RAES concept family is adopted from the external authority with equivalent meaning. For the current UCO slice, adopted families align and carry an empty divergence list. -- `refines`: the ACES concept family is adapted from the external authority. +- `refines`: the RAES concept family is adapted from the external authority. It preserves a reviewed correspondence while narrowing or diverging in an explicitly recorded way. - `constrains`: a governed profile, manifest, or vocabulary surface restricts @@ -202,14 +202,14 @@ Implementation guidance: - do not overload `ConceptBinding` into a general external term-mapping model; it remains the manifest vocabulary-to-family binding surface. -## ACES Extension Discipline (GOV-919) +## RAES Extension Discipline (GOV-919) -`GOV-919` implements the ACES concept layer by making native extension metadata +`GOV-919` implements the RAES concept layer by making native extension metadata normative in the concept-family catalog. Every `native` concept family declares: -- `extension_scope`, describing the ACES-specific concern covered by the family +- `extension_scope`, describing the RAES-specific concern covered by the family - `relation_rules`, describing how the native family may relate to adopted, adapted, or other native families - `non_ambiguity_constraints`, describing how the family avoids shadowing @@ -218,7 +218,7 @@ Every `native` concept family declares: This is intentionally stricter than treating native families as loose labels. If a field denotes a cyber-domain asset, identity, observable, relationship, action, event, tool, or artifact directly, it should bind to the adopted or -adapted family. Native families are for ACES experiment, runtime, apparatus, +adapted family. Native families are for RAES experiment, runtime, apparatus, provenance, and governance concerns that the shared authority does not naturally cover. @@ -351,7 +351,7 @@ The related requirements split the rest of the problem: - `GOV-918` Cross-artifact concept binding (implemented) - `GOV-919` - ACES extension discipline over the shared authority (implemented) + RAES extension discipline over the shared authority (implemented) - `GOV-920` shared semantic profiles (implemented) - `GOV-921` @@ -370,7 +370,7 @@ The first pass should not attempt to: - make every contract structurally identical to the ontology - define one universal super-model for every asset, identity, observable, action, event, relationship, and artifact occurrence in the ecosystem -- model all ACES concepts at once +- model all RAES concepts at once - turn every repeated field group into a portable reference model without evidence that it is reused across artifact families - solve all participant, provenance, evidence, and time/apparatus semantics in diff --git a/docs/explain/reference/shared-semantic-integrity.md b/docs/explain/reference/shared-semantic-integrity.md index 55b1bddbc..176cd50c6 100644 --- a/docs/explain/reference/shared-semantic-integrity.md +++ b/docs/explain/reference/shared-semantic-integrity.md @@ -53,14 +53,14 @@ construct by local convention. Use these existing surfaces before adding anything new: -- SDL shape and local parsing: `aces_sdl.SDLModel`, `sdl-yaml/v1` source-profile +- SDL shape and local parsing: `raes.SDLModel`, `sdl-yaml/v1` source-profile enforcement, explicit migration, variable-key rejection, and `SDLParseError` - static SDL validation: `SemanticValidator` and `SDLValidationError` - instantiation/admission: `instantiate_scenario()`, `admit_instantiated_scenario()`, `SDLInstantiationError`, and the published instantiated artifact/snapshot schemas -- shared SDL semantics: `aces_sdl.semantics.objectives` and - `aces_sdl.semantics.workflow` +- shared SDL semantics: `raes.semantics.objectives` and + `raes.semantics.workflow` - runtime graph semantics: `aces_processor.semantics.planner` - runtime diagnostics: `aces_processor.models.Diagnostic` - contract boundaries: `aces_contracts.contracts.ContractModel`, @@ -228,15 +228,15 @@ so they are tracked by their own requirements, not here. | Construct family | Owning requirement(s) | Phases covered | Realizing artifacts | Status | | --- | --- | --- | --- | --- | -| Fail-closed semantic validation (cross-cutting gate) | SEM-201 | validation, instantiation | `implementations/python/packages/aces_sdl/validator/__init__.py`, `implementations/python/packages/aces_sdl/instantiate.py`, `implementations/python/tests/test_sdl_validator.py` | active | -| Stable identifiers, parameterized values, and qualified references | DSL-101, DSL-102, SEM-205 | authoring, validation, instantiation, compilation, planning, execution, observation | `docs/decisions/adrs/adr-076-portable-sdl-identifiers-and-canonical-addresses.md`, `specs/sdl/document-model.md`, `specs/sdl/references.md`, `implementations/python/packages/aces_sdl/_identifiers.py`, `implementations/python/packages/aces_sdl/_declarations.py`, `implementations/python/packages/aces_sdl/parser.py`, `implementations/python/packages/aces_sdl/composition.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_runtime/backend_calls.py`, `implementations/python/packages/aces_runtime/control_plane.py`, `implementations/python/tests/test_sdl_identifiers.py` | active | -| Deterministic module composition and canonical-identity stability across expansion | DSL-103, SEM-205 | authoring, validation, compilation | `implementations/python/packages/aces_sdl/composition.py`, `implementations/python/packages/aces_sdl/module_registry.py`, `specs/formal/composition-readiness.md`, `implementations/python/tests/test_sdl_module_registry.py` | active | -| Instantiation, closed portable phase contracts, and revalidation of concrete scenarios | RUN-301 | instantiation, validation | `docs/decisions/adrs/adr-078-closed-sdl-phase-contracts-and-portable-derivation-evidence.md`, `specs/formal/sdl-phases/README.md`, `contracts/schemas/sdl/instantiated-scenario-v1.json`, `contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json`, `implementations/python/packages/aces_sdl/phase_contracts.py`, `implementations/python/packages/aces_sdl/instantiate.py`, `implementations/python/tests/test_sdl_phase_contracts.py`, `implementations/python/tests/test_instantiated_scenario_schema.py`, `implementations/python/tests/test_sdl_validator.py`, `implementations/python/tests/test_run_300_lifecycle.py` | active | -| Objective windows, referenced scopes, reachability, and refresh | SEM-202 | validation, compilation, planning | `implementations/python/packages/aces_sdl/semantics/objectives.py`, `specs/formal/objectives/README.md`, `specs/formal/objectives/window-consistency.md`, `implementations/python/tests/test_semantics_objectives.py`, `implementations/python/tests/test_fm2_semantics.py` | active | -| Declarative objective actor binding, target resolution, success interpretation, and dependency ordering | DSL-112, SEM-207 | authoring, validation, instantiation, compilation, planning | `implementations/python/packages/aces_sdl/objectives.py`, `implementations/python/packages/aces_sdl/semantics/objective_semantics.py`, `implementations/python/packages/aces_sdl/validator/__init__.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `specs/formal/objectives/README.md`, `specs/formal/objectives/declarative-objective-semantics.md`, `implementations/python/tests/test_semantics_objectives.py`, `implementations/python/tests/test_fm2_semantics.py`, `implementations/python/tests/test_sdl_validator.py` | active | -| Workflow control semantics (branching, joins, calling, retry, completion, history) | DSL-113, SEM-203 | authoring, validation, compilation, planning, execution, observation | `implementations/python/packages/aces_sdl/orchestration.py`, `implementations/python/packages/aces_sdl/semantics/workflow.py`, `specs/formal/workflows/README.md`, `specs/formal/workflows/state-machine.md`, `implementations/python/tests/test_sdl_validator.py`, `implementations/python/tests/test_runtime_models.py`, `implementations/python/tests/test_sdl_models.py` | active | -| Workflow compensation semantics (registration, triggering, ordering, observation) | SEM-204 | validation, compilation, execution, observation | `implementations/python/packages/aces_sdl/semantics/workflow.py`, `specs/formal/workflows/compensation.md`, `implementations/python/tests/test_sdl_validator.py`, `implementations/python/tests/test_runtime_manager.py` | partial | -| Backend-neutral proposition truth and assertion-composed objective success (probe conditions remain separate implementation bindings; SDL scoring pipeline removed per ADR-073) | DSL-110, SEM-206 | authoring, validation, compilation, planning, execution, observation | `implementations/python/packages/aces_sdl/propositions.py`, `implementations/python/packages/aces_sdl/conditions.py`, `implementations/python/packages/aces_sdl/semantics/propositions.py`, `implementations/python/packages/aces_sdl/semantics/objective_semantics.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `specs/formal/objectives/proposition-and-assertion-semantics.md`, `implementations/python/tests/test_proposition_semantics.py`, `implementations/python/tests/test_truth_result_contracts.py`, `implementations/python/tests/test_fm2_semantics.py` | active | +| Fail-closed semantic validation (cross-cutting gate) | SEM-201 | validation, instantiation | `implementations/python/packages/raes/validator/__init__.py`, `implementations/python/packages/raes/instantiate.py`, `implementations/python/tests/test_sdl_validator.py` | active | +| Stable identifiers, parameterized values, and qualified references | DSL-101, DSL-102, SEM-205 | authoring, validation, instantiation, compilation, planning, execution, observation | `docs/decisions/adrs/adr-076-portable-sdl-identifiers-and-canonical-addresses.md`, `specs/sdl/document-model.md`, `specs/sdl/references.md`, `implementations/python/packages/raes/_identifiers.py`, `implementations/python/packages/raes/_declarations.py`, `implementations/python/packages/raes/parser.py`, `implementations/python/packages/raes/composition.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_runtime/backend_calls.py`, `implementations/python/packages/aces_runtime/control_plane.py`, `implementations/python/tests/test_sdl_identifiers.py` | active | +| Deterministic module composition and canonical-identity stability across expansion | DSL-103, SEM-205 | authoring, validation, compilation | `implementations/python/packages/raes/composition.py`, `implementations/python/packages/raes/module_registry.py`, `specs/formal/composition-readiness.md`, `implementations/python/tests/test_sdl_module_registry.py` | active | +| Instantiation, closed portable phase contracts, and revalidation of concrete scenarios | RUN-301 | instantiation, validation | `docs/decisions/adrs/adr-078-closed-sdl-phase-contracts-and-portable-derivation-evidence.md`, `specs/formal/sdl-phases/README.md`, `contracts/schemas/sdl/instantiated-scenario-v1.json`, `contracts/schemas/sdl/instantiated-scenario-snapshot-v1.json`, `implementations/python/packages/raes/phase_contracts.py`, `implementations/python/packages/raes/instantiate.py`, `implementations/python/tests/test_sdl_phase_contracts.py`, `implementations/python/tests/test_instantiated_scenario_schema.py`, `implementations/python/tests/test_sdl_validator.py`, `implementations/python/tests/test_run_300_lifecycle.py` | active | +| Objective windows, referenced scopes, reachability, and refresh | SEM-202 | validation, compilation, planning | `implementations/python/packages/raes/semantics/objectives.py`, `specs/formal/objectives/README.md`, `specs/formal/objectives/window-consistency.md`, `implementations/python/tests/test_semantics_objectives.py`, `implementations/python/tests/test_fm2_semantics.py` | active | +| Declarative objective actor binding, target resolution, success interpretation, and dependency ordering | DSL-112, SEM-207 | authoring, validation, instantiation, compilation, planning | `implementations/python/packages/raes/objectives.py`, `implementations/python/packages/raes/semantics/objective_semantics.py`, `implementations/python/packages/raes/validator/__init__.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `specs/formal/objectives/README.md`, `specs/formal/objectives/declarative-objective-semantics.md`, `implementations/python/tests/test_semantics_objectives.py`, `implementations/python/tests/test_fm2_semantics.py`, `implementations/python/tests/test_sdl_validator.py` | active | +| Workflow control semantics (branching, joins, calling, retry, completion, history) | DSL-113, SEM-203 | authoring, validation, compilation, planning, execution, observation | `implementations/python/packages/raes/orchestration.py`, `implementations/python/packages/raes/semantics/workflow.py`, `specs/formal/workflows/README.md`, `specs/formal/workflows/state-machine.md`, `implementations/python/tests/test_sdl_validator.py`, `implementations/python/tests/test_runtime_models.py`, `implementations/python/tests/test_sdl_models.py` | active | +| Workflow compensation semantics (registration, triggering, ordering, observation) | SEM-204 | validation, compilation, execution, observation | `implementations/python/packages/raes/semantics/workflow.py`, `specs/formal/workflows/compensation.md`, `implementations/python/tests/test_sdl_validator.py`, `implementations/python/tests/test_runtime_manager.py` | partial | +| Backend-neutral proposition truth and assertion-composed objective success (probe conditions remain separate implementation bindings; SDL scoring pipeline removed per ADR-073) | DSL-110, SEM-206 | authoring, validation, compilation, planning, execution, observation | `implementations/python/packages/raes/propositions.py`, `implementations/python/packages/raes/conditions.py`, `implementations/python/packages/raes/semantics/propositions.py`, `implementations/python/packages/raes/semantics/objective_semantics.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `specs/formal/objectives/proposition-and-assertion-semantics.md`, `implementations/python/tests/test_proposition_semantics.py`, `implementations/python/tests/test_truth_result_contracts.py`, `implementations/python/tests/test_fm2_semantics.py` | active | | Runtime compiled representation and canonical addresses | RUN-302 | compilation | `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/tests/test_runtime_models.py`, `implementations/python/tests/test_fm2_semantics.py` | active | | Planner dependency, ordering, refresh, and applicability semantics | RUN-303 | planning | `implementations/python/packages/aces_processor/semantics/planner.py`, `implementations/python/packages/aces_processor/planner/__init__.py`, `specs/formal/planner/README.md`, `specs/formal/planner/dependency-ordering.md`, `implementations/python/tests/test_semantics_planner.py`, `implementations/python/tests/test_runtime_planner.py` | active | | Live execution state and lifecycle (snapshots, results, history) | RUN-304, API-402 | execution, observation | `implementations/python/packages/aces_runtime/manager.py`, `implementations/python/packages/aces_runtime/result_contracts.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/tests/test_runtime_manager.py`, `implementations/python/tests/test_runtime_models.py` | active | @@ -245,19 +245,19 @@ so they are tracked by their own requirements, not here. | Backend and processor identity, capability, and compatibility manifests | API-401, API-412 | planning, execution | `implementations/python/packages/aces_processor/manifest.py`, `implementations/python/packages/aces_processor/capabilities.py`, `implementations/python/packages/aces_contracts/apparatus.py`, `implementations/python/packages/aces_contracts/manifest_authority.py`, `implementations/python/tests/test_backend_manifest.py`, `implementations/python/tests/test_processor_manifest.py` | active | | Concept authority, controlled vocabularies, reference models, and semantic profiles (meta-layer) | GOV-920 | authoring, validation, compilation, planning, execution | `specs/concept-authority/concept-authority.md`, `specs/concept-authority/semantic-profiles.md`, `implementations/python/packages/aces_contracts/semantic_profiles.py`, `implementations/python/packages/aces_contracts/controlled_vocabularies.py`, `implementations/python/packages/aces_contracts/reference_models.py`, `docs/explain/reference/shared-concept-model.md`, `implementations/python/tests/test_concept_authority.py`, `implementations/python/tests/test_semantic_profiles.py` | active | | Participant episode lifecycle boundaries (initialization, reset, completion, timeout, truncation, interruption) | RUN-311, SEM-222 | execution, observation | `docs/decisions/adrs/adr-013-participant-episode-lifecycle-boundaries.md`, `implementations/python/tests/test_run_311_participant_episode_lifecycle.py` | partial | -| Declarative participant framing (identity, role, starting conditions, authority anchors, operating scope) | ACT-601 | authoring, validation | `implementations/python/packages/aces_sdl/agents.py`, `implementations/python/packages/aces_sdl/validator/__init__.py`, `docs/decisions/adrs/adr-020-declarative-participant-framing-boundaries.md`, `implementations/python/tests/test_sdl_models.py`, `implementations/python/tests/test_sdl_validator.py` | active | -| Participant behavior semantics (actions, observations, state transitions) | ACT-602, SEM-208 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/aces_sdl/participant_behavior.py`, `implementations/python/packages/aces_sdl/semantics/participant_behavior.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | -| Multi-participant interaction and participant-local histories | SEM-209 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/aces_sdl/participant_behavior.py`, `implementations/python/packages/aces_sdl/semantics/participant_behavior.py`, `implementations/python/packages/aces_sdl/validator/__init__.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_conformance/conformance/snapshot_semantics.py`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_runtime_conformance.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | -| Visibility and information-boundary semantics | SEM-210 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/aces_sdl/participant_behavior.py`, `implementations/python/packages/aces_sdl/semantics/participant_behavior.py`, `implementations/python/packages/aces_sdl/validator/__init__.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | active | -| Participant preconditions, effects, failure, causality, and attribution semantics | SEM-211, SEM-212 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/aces_sdl/participant_action_semantics.py`, `implementations/python/packages/aces_sdl/participant_attribution_semantics.py`, `implementations/python/packages/aces_sdl/participant_behavior.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_conformance/conformance/snapshot_semantics.py`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/tests/test_sem_211_participant_action_semantics.py`, `implementations/python/tests/test_sem_212_participant_attribution_semantics.py`, `implementations/python/tests/test_runtime_conformance.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | +| Declarative participant framing (identity, role, starting conditions, authority anchors, operating scope) | ACT-601 | authoring, validation | `implementations/python/packages/raes/agents.py`, `implementations/python/packages/raes/validator/__init__.py`, `docs/decisions/adrs/adr-020-declarative-participant-framing-boundaries.md`, `implementations/python/tests/test_sdl_models.py`, `implementations/python/tests/test_sdl_validator.py` | active | +| Participant behavior semantics (actions, observations, state transitions) | ACT-602, SEM-208 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/raes/participant_behavior.py`, `implementations/python/packages/raes/semantics/participant_behavior.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | +| Multi-participant interaction and participant-local histories | SEM-209 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/raes/participant_behavior.py`, `implementations/python/packages/raes/semantics/participant_behavior.py`, `implementations/python/packages/raes/validator/__init__.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_conformance/conformance/snapshot_semantics.py`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_runtime_conformance.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | +| Visibility and information-boundary semantics | SEM-210 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/raes/participant_behavior.py`, `implementations/python/packages/raes/semantics/participant_behavior.py`, `implementations/python/packages/raes/validator/__init__.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | active | +| Participant preconditions, effects, failure, causality, and attribution semantics | SEM-211, SEM-212 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/raes/participant_action_semantics.py`, `implementations/python/packages/raes/participant_attribution_semantics.py`, `implementations/python/packages/raes/participant_behavior.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_conformance/conformance/snapshot_semantics.py`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/tests/test_sem_211_participant_action_semantics.py`, `implementations/python/tests/test_sem_212_participant_attribution_semantics.py`, `implementations/python/tests/test_runtime_conformance.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | | Participant temporal semantics | SEM-213 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | -| Participant tool/affordance, decision-surface, and exposure/visibility-boundary semantics | SEM-219, SEM-220, SEM-226 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-083-participant-tool-decision-surface-and-exposure-semantics.md`, `docs/decisions/issue-119-sem-219-220-226-participant-decision-surface-preflight.md`, `docs/decisions/issue-294-sem-219-participant-tool-affordance-preflight.md`, `implementations/python/packages/aces_sdl/participant_behavior_specification.py`, `implementations/python/packages/aces_sdl/semantics/participant_behavior.py`, `implementations/python/packages/aces_processor/compiler/participant_behaviors.py`, `implementations/python/packages/aces_processor/models/behavior_resources.py`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | +| Participant tool/affordance, decision-surface, and exposure/visibility-boundary semantics | SEM-219, SEM-220, SEM-226 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-083-participant-tool-decision-surface-and-exposure-semantics.md`, `docs/decisions/issue-119-sem-219-220-226-participant-decision-surface-preflight.md`, `docs/decisions/issue-294-sem-219-participant-tool-affordance-preflight.md`, `implementations/python/packages/raes/participant_behavior_specification.py`, `implementations/python/packages/raes/semantics/participant_behavior.py`, `implementations/python/packages/aces_processor/compiler/participant_behaviors.py`, `implementations/python/packages/aces_processor/models/behavior_resources.py`, `implementations/python/tests/test_sem_208_participant_behavior.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | partial | | Participant reference trajectories, demonstrations, budgets, and quota/exhaustion semantics | SEM-221, SEM-223 | — | — | planned | -| Participant outcome interpretation | SEM-215 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/aces_sdl/participant_outcome_semantics.py`, `implementations/python/packages/aces_sdl/semantics/participant_outcome.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/tests/test_sem_215_participant_outcome_interpretation.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | active | +| Participant outcome interpretation | SEM-215 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/adrs/adr-022-participant-behavior-and-interaction-semantics.md`, `implementations/python/packages/raes/participant_outcome_semantics.py`, `implementations/python/packages/raes/semantics/participant_outcome.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/tests/test_sem_215_participant_outcome_interpretation.py`, `implementations/python/tests/test_participant_semantics_invariant_oracle.py` | active | | Derived operational context views (portable meaning and comparability) | SEM-214 | execution, observation | `specs/formal/participant-semantics/README.md`, `specs/formal/runtime-contracts/participant-backend-contracts.md`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/packages/aces_runtime/participant_retrieval.py`, `implementations/python/packages/aces_runtime/control_plane_api_participant_retrieval.py`, `contracts/schemas/control-plane/participant-context-view-v1.json`, `implementations/python/tests/test_participant_backend_contracts.py`, `implementations/python/tests/test_runtime_control_plane.py`, `implementations/python/tests/test_runtime_control_plane_api.py` | active | | Boundary semantics for runtime-observable state, captured evidence, derived evaluations, analysis outputs, and audience-specific views | SEM-216 | execution, observation | `specs/formal/participant-semantics/README.md`, `docs/decisions/issue-248-sem-216-boundary-semantics-preflight.md`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `contracts/schemas/control-plane/participant-context-view-v1.json`, `contracts/schemas/experiment-core/experiment-evidence-record-v1.json`, `implementations/python/tests/test_sem_216_boundary_semantics.py`, `implementations/python/tests/test_participant_backend_contracts.py`, `implementations/python/tests/test_runtime_contracts.py` | active | | Evidence, evaluation, view-boundary, and observability-plane semantics | SEM-224, SEM-225, DSL-123, DSL-124 | authoring, validation, execution, observation | `docs/decisions/adrs/adr-066-observability-evidence-plane-separation.md`, `specs/formal/observability-evidence-plane.md`, `specs/sdl/observability-and-evidence.md` | partial | | External knowledge bindings semantics | SEM-217 | validation, execution | `specs/formal/participant-semantics/README.md`, `docs/explain/reference/shared-concept-model.md`, `implementations/python/packages/aces_contracts/semantic_binding_effects.py`, `implementations/python/tests/test_sem_217_knowledge_bindings.py` | active | -| Explicitness and realization semantics (binding declarations vs processor/backend realization) | SEM-218 | authoring, validation, instantiation, compilation, planning, execution, observation | `specs/formal/realization/explicitness-and-realization.md`, `specs/formal/realization/README.md`, `docs/explain/reference/explicitness-realization-semantics.md`, `implementations/python/packages/aces_sdl/explicitness.py`, `implementations/python/packages/aces_sdl/realization_designation.py`, `implementations/python/packages/aces_sdl/phase_contracts.py`, `implementations/python/packages/aces_sdl/validator/__init__.py`, `implementations/python/packages/aces_sdl/instantiate.py`, `implementations/python/packages/aces_contracts/apparatus.py`, `implementations/python/packages/aces_contracts/vocabulary.py`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/packages/aces_contracts/runtime_state.py`, `implementations/python/packages/aces_backend_protocols/manifest.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_processor/planner/__init__.py`, `implementations/python/packages/aces_processor/semantics/realization.py`, `implementations/python/packages/aces_runtime/backend_calls.py`, `implementations/python/packages/aces_runtime/manager.py`, `implementations/python/packages/aces_runtime/control_plane_store.py`, `implementations/python/packages/aces_runtime/control_plane_api_models.py`, `implementations/python/tests/test_sem_218_explicitness.py`, `implementations/python/tests/test_sem_218_realization.py`, `implementations/python/tests/test_sem_218_realization_designation.py`, `implementations/python/tests/test_sem_218_runtime_realization.py`, `implementations/python/tests/test_runtime_planner.py`, `implementations/python/tests/test_backend_manifest.py`, `implementations/python/tests/test_processor_manifest.py`, `implementations/python/tests/test_runtime_contracts.py` | active | +| Explicitness and realization semantics (binding declarations vs processor/backend realization) | SEM-218 | authoring, validation, instantiation, compilation, planning, execution, observation | `specs/formal/realization/explicitness-and-realization.md`, `specs/formal/realization/README.md`, `docs/explain/reference/explicitness-realization-semantics.md`, `implementations/python/packages/raes/explicitness.py`, `implementations/python/packages/raes/realization_designation.py`, `implementations/python/packages/raes/phase_contracts.py`, `implementations/python/packages/raes/validator/__init__.py`, `implementations/python/packages/raes/instantiate.py`, `implementations/python/packages/aces_contracts/apparatus.py`, `implementations/python/packages/aces_contracts/vocabulary.py`, `implementations/python/packages/aces_contracts/contracts/__init__.py`, `implementations/python/packages/aces_contracts/runtime_state.py`, `implementations/python/packages/aces_backend_protocols/manifest.py`, `implementations/python/packages/aces_processor/compiler/__init__.py`, `implementations/python/packages/aces_processor/models/`, `implementations/python/packages/aces_processor/planner/__init__.py`, `implementations/python/packages/aces_processor/semantics/realization.py`, `implementations/python/packages/aces_runtime/backend_calls.py`, `implementations/python/packages/aces_runtime/manager.py`, `implementations/python/packages/aces_runtime/control_plane_store.py`, `implementations/python/packages/aces_runtime/control_plane_api_models.py`, `implementations/python/tests/test_sem_218_explicitness.py`, `implementations/python/tests/test_sem_218_realization.py`, `implementations/python/tests/test_sem_218_realization_designation.py`, `implementations/python/tests/test_sem_218_runtime_realization.py`, `implementations/python/tests/test_runtime_planner.py`, `implementations/python/tests/test_backend_manifest.py`, `implementations/python/tests/test_processor_manifest.py`, `implementations/python/tests/test_runtime_contracts.py` | active | | Clock, time-domain, advancement/pacing/synchronization, and temporal ordering/causality semantics | SEM-227, SEM-228, SEM-229, API-421, ASR-528, EXP-734 | authoring, validation, compilation, planning, execution, observation | `specs/formal/time-model/README.md`, `docs/decisions/adrs/adr-090-shared-time-domain-clock-and-progression-authority.md`, `docs/decisions/adrs/adr-091-portable-time-capability-control-and-provenance-contracts.md`, `implementations/python/packages/aces_contracts/contracts/time_model.py`, `implementations/python/packages/aces_backend_protocols/capability_admission.py`, `implementations/python/packages/aces_runtime/time_coordinator.py`, `implementations/python/packages/aces_conformance/time_semantics.py`, `implementations/python/tests/test_sem_227_shared_time_model.py`, `implementations/python/tests/test_api_421_time_contracts.py` | active | -| Deterministic benign participant execution under shared time | DSL-437 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/autonomous-execution.md`, `docs/decisions/adrs/adr-092-autonomous-benign-participants-under-shared-time.md`, `implementations/python/packages/aces_sdl/participant_execution.py`, `implementations/python/packages/aces_sdl/semantics/participant_behavior.py`, `implementations/python/packages/aces_backend_protocols/capability_admission.py`, `implementations/python/packages/aces_runtime/participant_scheduler.py`, `implementations/python/packages/aces_runtime/participant_clock_driver.py`, `implementations/python/packages/aces_backend_protocols/participant_runtime_base.py`, `implementations/python/packages/aces_contracts/participant_autonomous_state.py`, `implementations/python/tests/test_dsl_437_benign_participant_execution.py`, `implementations/python/tests/test_dsl_437_evaluation_authority.py`, `implementations/python/tests/test_dsl_437_snapshot_durability_conformance.py` | active | +| Deterministic benign participant execution under shared time | DSL-437 | authoring, validation, compilation, planning, execution, observation | `specs/formal/participant-semantics/autonomous-execution.md`, `docs/decisions/adrs/adr-092-autonomous-benign-participants-under-shared-time.md`, `implementations/python/packages/raes/participant_execution.py`, `implementations/python/packages/raes/semantics/participant_behavior.py`, `implementations/python/packages/aces_backend_protocols/capability_admission.py`, `implementations/python/packages/aces_runtime/participant_scheduler.py`, `implementations/python/packages/aces_runtime/participant_clock_driver.py`, `implementations/python/packages/aces_backend_protocols/participant_runtime_base.py`, `implementations/python/packages/aces_contracts/participant_autonomous_state.py`, `implementations/python/tests/test_dsl_437_benign_participant_execution.py`, `implementations/python/tests/test_dsl_437_evaluation_authority.py`, `implementations/python/tests/test_dsl_437_snapshot_durability_conformance.py` | active | diff --git a/docs/explain/sdl/index.md b/docs/explain/sdl/index.md index e422d41d8..52809c048 100644 --- a/docs/explain/sdl/index.md +++ b/docs/explain/sdl/index.md @@ -1,10 +1,22 @@ # Scenario Description Language (SDL) Reference -RAES SDL is a YAML-based specification language for describing cyber range scenarios and experiments. It starts from the [Open Cyber Range SDL](https://github.com/Open-Cyber-Range/SDL-parser) surface, preserves coverage across the OCR-derived sections, and extends that base with additional scenario concepts such as content, accounts, relationships, agents, objectives, workflows, and variables. It is intentionally its own SDL rather than a clone-level derivative. +RAES SDL is the YAML-based authored scenario language within Reproducible +Agentic Environments System. It describes declared intent for agentic +environments: settings in which participants can receive observations, take +actions, interact, and be evaluated under stated controls. The SDL is +domain-neutral, while its strongest current examples and lineage are in cyber. + +The language starts from the +[Open Cyber Range SDL](https://github.com/Open-Cyber-Range/SDL-parser) surface, +preserves coverage across the OCR-derived sections, and extends that base with +content, accounts, relationships, agents, objectives, workflows, variables, +and other scenario concepts. It is intentionally its own SDL rather than a +clone-level derivative. The SDL describes *what the scenario and experiment mean*; it is not a direct -deployment recipe. Backend implementations realize SDL specifications through -runtime contracts. The repository includes SDL-native instantiation, +deployment recipe. Backend implementations realize SDL specifications as +concrete agentic environments through runtime contracts. The repository +includes SDL-native instantiation, compilation, planning, contracts, backend stubs, conformance checks, and a reference control-plane surface. It does not include a production backend. diff --git a/docs/explain/sdl/language-service.md b/docs/explain/sdl/language-service.md index c8edc0455..063019e20 100644 --- a/docs/explain/sdl/language-service.md +++ b/docs/explain/sdl/language-service.md @@ -188,7 +188,7 @@ be JSON strings: The Python helper receives the already-decoded `value`: ```python -from aces_sdl.language_service import apply_structured_edit +from raes.language_service import apply_structured_edit result = apply_structured_edit( sdl_content, @@ -204,10 +204,10 @@ sequence of small edits and validate after each meaningful step. ## Python Helpers The MCP tools wrap the editor-agnostic helpers in -`aces_sdl.language_service`: +`raes.language_service`: ```python -from aces_sdl.language_service import ( +from raes.language_service import ( apply_structured_edit, language_completions, language_diagnostics, diff --git a/docs/explain/sdl/limitations.md b/docs/explain/sdl/limitations.md index d1c21fb99..add50ce60 100644 --- a/docs/explain/sdl/limitations.md +++ b/docs/explain/sdl/limitations.md @@ -190,14 +190,14 @@ Additionally, a 28-node enterprise lab topology (4 networks, 17 health checks, 1 The directory/domain identity surface was added after the older Enterprise AD and AD trust/federation corpus entries. It is now covered by targeted parser and model tests plus the hospital ransomware scenario's AD/ADFS -`runtime.identity_authorities` example. That coverage validates ACES's neutral -reference and redaction mechanics; it is not a claim that ACES mirrors full +`runtime.identity_authorities` example. That coverage validates RAES's neutral +reference and redaction mechanics; it is not a claim that RAES mirrors full AD DS, LDAP, Kerberos, SCIM, SAML, OIDC, cloud IAM, or BloodHound schemas. The DNS runtime surface is covered by targeted parser, model, validator, and -module-composition tests. That coverage validates ACES's neutral RRset, +module-composition tests. That coverage validates RAES's neutral RRset, resolver-policy, evidence-ref, and reference mechanics; it is not a claim that -ACES mirrors full BIND, CoreDNS, PowerDNS, NSD, Knot, provider API, passive +RAES mirrors full BIND, CoreDNS, PowerDNS, NSD, Knot, provider API, passive DNS, or telemetry schemas. Property-based fuzz testing (Hypothesis) has run 1,050+ random inputs through the parser with zero unhandled crashes. diff --git a/docs/explain/sdl/lineage.md b/docs/explain/sdl/lineage.md index e70e77e8a..fc0ac7d85 100644 --- a/docs/explain/sdl/lineage.md +++ b/docs/explain/sdl/lineage.md @@ -1,6 +1,6 @@ # Lineage and Prior Work -ACES is not designed as a clean-room language. It is a consolidation layer over +RAES is not designed as a clean-room language. It is a consolidation layer over cyber range SDLs, adversary emulation formats, agent-evaluation environments, runtime architectures, and security event schemas that solve adjacent parts of the same problem. @@ -8,7 +8,7 @@ the same problem. This page is a short map of the main influences. It is not a provenance or compatibility claim, and it is not an exhaustive bibliography. For design rationale, see [Design Precedents](precedents.md). For a dimension-by-dimension -comparison against precedent systems, including where those systems lead ACES, see +comparison against precedent systems, including where those systems lead RAES, see [Related-Work Comparison](related-work-comparison.md). The normative audit record is @@ -16,15 +16,15 @@ The normative audit record is It distinguishes intellectual lineage from artifact/code derivation and from implementation examples, pins source revisions and bibliographic identities, and records directional compatibility and notice disposition. An influence -listed on this page is not, by itself, a claim that ACES adopted syntax, +listed on this page is not, by itself, a claim that RAES adopted syntax, semantics, examples, or code from that source. ## Specification Surface - [Open Cyber Range SDL](https://documentation.opencyberrange.ee/docs/sdl/reference/) - is the closest direct SDL precedent. ACES starts from its author-facing + is the closest direct SDL precedent. RAES starts from its author-facing section surface, including logical nodes, infrastructure, features, - conditions, entities, injects, events, scripts, and stories. ACES keeps the + conditions, entities, injects, events, scripts, and stories. RAES keeps the logical scenario surface separate from backend realization instead of treating the SDL as a deployment format, and per [ADR-073](../../decisions/adrs/adr-073-scoring-reward-language-scope.md) it @@ -45,7 +45,7 @@ semantics, examples, or code from that source. informs variables, objective composition, workflow graph structure, and the distinction between authored playbook intent and concrete execution. - [STIX 2.1](https://docs.oasis-open.org/cti/stix/v2.1/stix-v2.1.html) - informs typed directed relationships and cross-object references. ACES adapts + informs typed directed relationships and cross-object references. RAES adapts that pattern for scenario elements rather than threat-intelligence objects. - CyRIS, KYPO, OCR, VSDL, and CRACK are prior scenario-definition systems. Their strongest shared lesson is that scenario meaning must be more than a @@ -53,7 +53,7 @@ semantics, examples, or code from that source. - SBOM standards such as [CycloneDX](https://cyclonedx.org/specification/overview/) and [SPDX](https://spdx.dev/use/specifications/) inform the runtime software component identity vocabulary: component type, version, purl/CPE, hashes, and - package or manifest lineage are useful portable facts. ACES adapts those + package or manifest lineage are useful portable facts. RAES adapts those identity concepts under `Node.runtime.software_components`; it does not import raw SBOM documents, scanner output, or invocation/capability semantics into the SDL schema. @@ -76,14 +76,14 @@ observed gap in APTL's TechVault AD inventory. It is not a clean-room invention, but it also is not a clone of any one directory or attack-graph format. -ACES relies on prior work in four different ways: +RAES relies on prior work in four different ways: - **Scenario-language precedents:** top-level `accounts` keeps the CyRIS account placement lineage. CyRIS implements `add_account`/`modify_account` as host/user management operations in code ([modules.py](https://github.com/crond-jaist/cyris/blob/8b65a30581cdd8e126c7b1fa26db2a4b770b7f17/main/modules.py)), - so ACES continues to treat `accounts` as curated scenario/provisioning - resources. ACES does not infer a full directory service from those accounts. + so RAES continues to treat `accounts` as curated scenario/provisioning + resources. RAES does not infer a full directory service from those accounts. - **Primary industry standards:** LDAP/X.500 ([RFC 4510](https://www.rfc-editor.org/rfc/rfc4510), [RFC 4512](https://www.rfc-editor.org/rfc/rfc4512)), Kerberos ([RFC 4120](https://www.rfc-editor.org/rfc/rfc4120)), SCIM @@ -98,19 +98,19 @@ ACES relies on prior work in four different ways: terminology for authorities, naming contexts, realms, issuers, tenants, subjects, groups, attributes, policy inputs, federation boundaries, attribute-based authorization, and zero-trust identity/resource boundaries. - ACES adapts their shared concepts, not their full protocol objects. + RAES adapts their shared concepts, not their full protocol objects. - **Primary access-control literature:** Lampson's [access matrix](https://doi.org/10.1145/775265.775268), Saltzer and Schroeder's [protection principles](https://doi.org/10.1109/PROC.1975.9939), Ferraiolo/Kuhn [RBAC](https://www.nist.gov/publications/role-based-access-controls), Sandhu et al.'s [RBAC96 model](https://doi.org/10.1109/2.485845), and NIST ABAC support the separation among subject, attribute, policy, relationship, - and authority boundary. That is why ACES models policies and + and authority boundary. That is why RAES models policies and membership/trust/federation edges as first-class records instead of storing them only as prose or untyped relationship properties. - **Downstream/evidence precedents:** BloodHound/OpenGraph validates the usefulness of node/edge identity graphs for attack-path analysis, while OCSF, - UCO, and CASE are evidence and concept-authority influences. ACES does not + UCO, and CASE are evidence and concept-authority influences. RAES does not make any of them the canonical runtime inventory schema: BloodHound graphs are downstream analysis overlays, OCSF is telemetry/event-oriented, and UCO/CASE are concept/evidence vocabularies broader than the SDL authoring @@ -129,10 +129,10 @@ private, the Garg et al. preprint citation is also snapshotted in-repo under so the reference is verifiable from the repository alone. The design deliberately keeps provider-stable identifiers as data rather than -as ACES reference identity. AD SIDs/objectGUIDs, LDAP DNs/entryUUIDs, SCIM +as RAES reference identity. AD SIDs/objectGUIDs, LDAP DNs/entryUUIDs, SCIM `id`/`externalId`, SAML NameIDs, and OIDC `iss` + `sub` values are preserved in specific fields or bounded attributes when needed for translation/evidence, but -the portable ACES references are stable `*_id` symbols scoped by the scenario +the portable RAES references are stable `*_id` symbols scoped by the scenario and authority. Within one authority those ids share a single local namespace, so an id cannot be reused across service, subject, policy, relationship, and authority records. This matches the verification/validation posture in the @@ -164,32 +164,32 @@ authority. [forest-root guidance](https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/selecting-the-forest-root-domain) also makes the root an explicit, durable member of the forest. These are the product precedents for explicit forest membership, root identity, and typed - trust edges. ACES does not clone AD DS schemas, automatic intra-forest trust, + trust edges. RAES does not clone AD DS schemas, automatic intra-forest trust, administrative groups, sites, or replication behavior. - **Federation lineage:** OpenID Connect, SAML, SCIM, and NIST SP 800-63C-4, already cited for identity-authority semantics, motivate separating a directory authority from the facade that exposes a federation protocol. - ACES preserves portable direction, mapping intent, and claim ownership while + RAES preserves portable direction, mapping intent, and claim ownership while leaving clients, credentials, provider mapper documents, and realized issuer state to deployment and evidence surfaces. - **Placement lineage:** TOSCA's [`HostedOn` relationship](https://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.1/TOSCA-Simple-Profile-YAML-v1.1.html) is the direct topology precedent for preserving a logical node while - expressing placement on a distinct host. ACES narrows that idea to an + expressing placement on a distinct host. RAES narrows that idea to an explicit carrier relation and kernel-boundary intent. It does not adopt TOSCA lifecycle operations or imply container namespace sharing. - **Multi-tenancy lineage:** Kubernetes [multi-tenancy guidance](https://kubernetes.io/docs/concepts/security/multi-tenancy/) distinguishes tenant identity, control-plane and data-plane isolation, default-deny network policy, node isolation, workload identity, persistent - storage boundaries, and deliberately shared services. ACES uses those + storage boundaries, and deliberately shared services. RAES uses those distinctions to keep cell membership, cross-tenant posture, authentication, mutable-state ownership, and reset ownership separate. A deployment cell is not a Kubernetes namespace, cluster, cloud project, subnet, quota boundary, or proof that isolation was realized. The resulting forest, facade, tenant, cell, endpoint-persona, and shared-service -vocabularies are ACES-native authoring contracts. The cited systems are +vocabularies are RAES-native authoring contracts. The cited systems are intellectual and implementation precedents, not schema authorities or compatibility targets. Provider adapters still own allocation and materialization; realized-form disclosures and evidence still own claims that @@ -203,13 +203,13 @@ gap for DNS authoritative and recursive runtime inventory. It is not a clone of any one DNS server configuration language, provider API, or DNS telemetry format. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model scenario topology, deployable services/features, and validation or deployment concerns. They do not expose a portable first-class DNS zone, - RRset, resolver-policy, or DNSSEC-posture inventory that ACES could reuse - directly, so ACES introduces a typed node-scoped runtime surface rather than + RRset, resolver-policy, or DNSSEC-posture inventory that RAES could reuse + directly, so RAES introduces a typed node-scoped runtime surface rather than encoding the state inside `Node.services`, `runtime.applications`, `runtime.network`, or raw content files. - **Primary DNS standards:** DNS concepts and record wire semantics come from @@ -225,22 +225,22 @@ ACES relies on prior work in four ways: follows [RFC 2136](https://www.rfc-editor.org/rfc/rfc2136), and extension types are bounded by the [IANA DNS Parameters](https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml) - registry. ACES adapts shared protocol concepts rather than importing raw + registry. RAES adapts shared protocol concepts rather than importing raw zone-file syntax. - **Server and configuration precedents:** BIND, NSD, Knot DNS, PowerDNS, CoreDNS, Terraform DNS providers, DNSControl, octoDNS, Kubernetes DNS, and - Consul DNS show the recurring implementation facts ACES must preserve: + Consul DNS show the recurring implementation facts RAES must preserve: authoritative zones, RRsets, forwarders, recursion controls, transfer policy, dynamic updates, DNSSEC validation/signing posture, and evidence sources. These references are implementation lineage, not schema authority. - **Evidence and downstream consumers:** OCSF/ECS DNS fields, Zeek DNS logs, STIX domain-name objects, passive DNS, provider APIs, AXFR/IXFR captures, and backend inspect payloads remain evidence or downstream translation - concerns. ACES records bounded runtime inventory and evidence refs; it does + concerns. RAES records bounded runtime inventory and evidence refs; it does not make query telemetry or raw server config the SDL model. Observed DNS names are preserved as data and are not case-folded. Portable -ACES references are stable `dns_service_id`, `zone_id`, and `rrset_id` symbols. +RAES references are stable `dns_service_id`, `zone_id`, and `rrset_id` symbols. This follows the same validation posture used elsewhere in SDL: the model states which protocol facts it can preserve, and it leaves server-specific syntax as evidence rather than smuggling that syntax into untyped fields. @@ -251,40 +251,40 @@ The `runtime.security_monitoring_managers` surface is issue #428's response to an observed gap for SIEM and security-monitoring manager inventory. It is not a clone of Wazuh, Splunk, Elastic Security, Security Onion, Microsoft Sentinel, or any one event schema. It is a portable node-scoped runtime inventory for the -manager facts that surrounding ACES surfaces cannot own. +manager facts that surrounding RAES surfaces cannot own. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, tasks, validation, and deployment concerns. None expose a portable first-class security-monitoring - manager inventory. ACES therefore adds a typed `Node.runtime` surface rather + manager inventory. RAES therefore adds a typed `Node.runtime` surface rather than encoding manager state inside `Node.services`, `runtime.processes`, `runtime.service_manager_units`, `runtime.filesystem_inventory`, or raw content files. - **Log-management and security-monitoring literature:** NIST SP 800-92 frames computer security log management as infrastructure and processes for - collection, analysis, storage, maintenance, and operational use. ACES adapts + collection, analysis, storage, maintenance, and operational use. RAES adapts that infrastructure/process split by recording manager identity, listeners, modules, agents, groups, content corpora, settings, and evidence refs without making log telemetry itself the SDL runtime inventory. - **Implementation precedents:** Wazuh demonstrates the recurring manager - concepts ACES must preserve: a central manager/server, agent connection and + concepts RAES must preserve: a central manager/server, agent connection and enrollment services, an analysis engine, manager API, agent groups and shared configuration, rules, decoders, queues, integrations, and manager components. These are implementation lineage and evidence sources, not schema authority. - **Event and detection-content precedents:** OCSF is vendor-neutral event schema lineage, and Sigma is portable detection-rule lineage. They justify a - product-neutral posture for content and telemetry vocabulary. ACES records a + product-neutral posture for content and telemetry vocabulary. RAES records a bounded parsed detection-definition manifest for loaded definitions, but it does not import OCSF events, raw Sigma rule bodies, Wazuh XML, SIEM queries, or alert records into SDL as first-class runtime records. -Portable ACES references are stable `security_monitoring_manager_id`, `listener_id`, +Portable RAES references are stable `security_monitoring_manager_id`, `listener_id`, `component_id`, `agent_id`, `group_id`, `content_id`, `definition_id`, and `setting_id` symbols. Native manager identifiers, daemon names, file names, ruleset ids, rule ids, decoder names, agent labels, and API ids are preserved -as observed data or evidence when needed, but they are not automatically ACES +as observed data or evidence when needed, but they are not automatically RAES reference identity. Manager settings such as passwords, enrollment secrets, API tokens, shared keys, keytabs, or private keys may be scenario values; explicit `redacted`/`operator_secret` classifications omit raw values when the author @@ -305,12 +305,12 @@ inventories, or scanner output. It is the bounded node-scoped place for generic observed listener facts: bind endpoint, port, transport, address family, listener scope, owner, readiness evidence, and provenance. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, tasks, validation, and deployment concerns. They do not expose a portable first-class observed - listener inventory with bind-address/interface semantics. ACES therefore + listener inventory with bind-address/interface semantics. RAES therefore adds a typed `Node.runtime` surface instead of hiding bind state in `Node.services`, `runtime.network.published_ports`, `runtime.applications`, or free-text descriptions. @@ -320,7 +320,7 @@ ACES relies on prior work in four ways: units such as [`ListenStream=` and `ListenDatagram=`](https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html) show the operational split between a socket endpoint and the service it can - activate. ACES adapts that separation through `service`, `process_ref`, and + activate. RAES adapts that separation through `service`, `process_ref`, and listener endpoint fields without importing systemd unit syntax. - **Container and orchestrator precedents:** Docker [port publishing](https://docs.docker.com/get-started/docker-concepts/running-containers/publishing-ports/) @@ -329,7 +329,7 @@ ACES relies on prior work in four ways: [EndpointSlices](https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/), and readiness/liveness/startup [probes](https://kubernetes.io/docs/concepts/configuration/liveness-readiness-startup-probes/). - ACES keeps in-node listener state, host publication, and readiness evidence + RAES keeps in-node listener state, host publication, and readiness evidence as adjacent but distinct runtime facts. - **Evidence and telemetry precedents:** Nmap [XML output](https://nmap.org/book/output-formats-xml-output.html) can @@ -340,7 +340,7 @@ ACES relies on prior work in four ways: product-neutral checks for endpoint terminology. They remain evidence and downstream translation lineage rather than SDL schema authority. -Portable ACES references are stable listener ids under +Portable RAES references are stable listener ids under `nodes..runtime.service_listeners.`. Native process names, PIDs, scanner table names, service-manager unit names, and probe strings remain observed data or evidence unless the author explicitly uses them in bounded ref @@ -357,21 +357,21 @@ enabled app-layer parser families, loaded rule-source inventories, network zoning/address-set variables, bounded output streams, reload/control channels, and evidence refs. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, tasks, validation, and deployment concerns. None expose a portable first-class detection-engine - inventory. ACES therefore adds a typed `Node.runtime` surface rather than + inventory. RAES therefore adds a typed `Node.runtime` surface rather than encoding engine state inside `Node.services`, `runtime.network_sensors`, `runtime.filesystem_inventory`, `runtime.software_components`, or prose relationships. - **IDS/NDR tooling:** Suricata, Snort, Zeek, Security Onion, and NDR products - show recurring engine facts ACES must preserve: parser coverage, rule or IOC + show recurring engine facts RAES must preserve: parser coverage, rule or IOC sources, address sets, output streams, reload controls, and evidence refs. These references are implementation lineage, not schema authority. - **Telemetry and rule-content precedents:** OCSF, ECS, STIX, Sigma, YARA, and - vendor rule formats inform vocabulary boundaries. ACES does not replace + vendor rule formats inform vocabulary boundaries. RAES does not replace those schemas or inline their events, rules, packets, or IOC payloads. - **Evidence discipline:** raw rules, alerts, packet captures, IOC exports, config files, and backend inspect payloads remain evidence artifacts or @@ -388,12 +388,12 @@ GRANT surface (that stays `runtime.database_services`). Its defining addition is the resource-scoped permission grant — role → actions → resource pattern — that neither adjacent surface can own. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class application-internal RBAC store, - so ACES adds a typed node-scoped seam rather than overloading + so RAES adds a typed node-scoped seam rather than overloading `runtime.identity_authorities`, `runtime.database_services`, or `runtime.applications`. - **Primary RBAC and ABAC standards:** Ferraiolo and Kuhn's @@ -410,7 +410,7 @@ ACES relies on prior work in four ways: the authorization, not declared on the model. - **Product RBAC precedents:** OpenSearch Security, Elasticsearch security, Cassandra `system_auth`, Redis ACLs, Kibana/OpenSearch Dashboards roles, - MISP/TheHive/Cortex role catalogs, and Shuffle RBAC show recurring facts ACES + MISP/TheHive/Cortex role catalogs, and Shuffle RBAC show recurring facts RAES must preserve: principals with reserved/hidden flags, named roles, resource-scoped grants, role mappings, and tenants. These are implementation lineage, not schema authority. @@ -429,12 +429,12 @@ cadence plus run-state only; inputs, outputs, and trigger targets belong to the referencing forwarding agent, and an event-triggered task is a trigger relationship rather than a recurrence. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class product-neutral scheduled-job - cadence, so ACES adds a typed node-scoped seam rather than overloading + cadence, so RAES adds a typed node-scoped seam rather than overloading `runtime.service_manager_units` (systemd-scoped) or the forwarding agent. - **Primary recurrence standards:** POSIX.1-2017 [crontab](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html) @@ -445,7 +445,7 @@ ACES relies on prior work in four ways: [`systemd.timer`](https://www.freedesktop.org/software/systemd/man/systemd.timer.html) and Kubernetes [CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) - show recurring scheduler facts ACES must preserve as cadence and run-state. + show recurring scheduler facts RAES must preserve as cadence and run-state. These are implementation lineage, not schema authority. - **Run-state observability:** NIST [SP 800-92](https://csrc.nist.gov/publications/detail/sp/800-92/final) @@ -469,12 +469,12 @@ optional. Search-index mappings and templates are captured as bounded manifests with counts, summaries, digests, refs, and evidence pointers rather than as raw backend JSON bodies. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class non-relational datastore logical - state, so ACES adds a typed node-scoped seam rather than overloading + state, so RAES adds a typed node-scoped seam rather than overloading `runtime.database_services` (irreducibly relational), `Node.services` (transport), or `runtime.software_components` (component identity). - **Primary data-model and consensus standards:** Codd's relational model @@ -493,7 +493,7 @@ ACES relies on prior work in four ways: [RESP3](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md) / [ACL](https://redis.io/docs/management/security/acl/) / [persistence](https://redis.io/docs/management/persistence/) show recurring - facts ACES must preserve: keyspaces with replication strategy/factor, search + facts RAES must preserve: keyspaces with replication strategy/factor, search shard/replica geometry, and RDB/AOF/eviction persistence. These are implementation lineage, not schema authority. - **Hardening and transport discipline:** NIST @@ -517,7 +517,7 @@ client/peer endpoint inventory. The Elasticsearch/OpenSearch [Nodes Info API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html) reports each of these per node; the client/peer listener split is structural across the search-cluster tech class (OpenSearch http/transport, Cassandra -native/internode, Redis client/cluster-bus), which is why ACES types an +native/internode, Redis client/cluster-bus), which is why RAES types an engine-neutral `role` taxonomy rather than engine-named address fields. ## Security-Platform Application Semantics @@ -530,12 +530,12 @@ management, and analytics dashboards. Its defining addition is the open guard, plus content objects modeled as bounded parsed manifests (typed kind + bounded attributes + typed references) rather than raw object bodies. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class security-platform application - inventory, so ACES adds a typed node-scoped seam rather than overloading + inventory, so RAES adds a typed node-scoped seam rather than overloading `runtime.applications` (HTTP routes) or `runtime.software_components` (component identity). - **Primary content and intelligence-sharing standards:** RDF 1.1 @@ -557,7 +557,7 @@ ACES relies on prior work in four ways: [CACAO v2.0](https://docs.oasis-open.org/cacao/security-playbooks/v2.0/security-playbooks-v2.0.html) and [OpenC2](https://docs.oasis-open.org/openc2/oc2ls/v1.0/oc2ls-v1.0.html) frame the SOAR/analyzer execution profile with the boundary stated explicitly: - ACES records the workflow/analyzer *inventory* and execution policy, not + RAES records the workflow/analyzer *inventory* and execution policy, not playbook execution semantics. NIST [SP 800-92](https://csrc.nist.gov/publications/detail/sp/800-92/final) and [ISO/IEC/IEEE 42010](https://www.iso.org/standard/74393.html) frame the @@ -581,12 +581,12 @@ addition is the open `agent_kind` discriminator paired with a `require_profile_for_agent_kind` guard that makes each member's defining shipping profile executable rather than optional. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class forwarding-agent shipping - inventory, so ACES adds typed node-scoped and scenario-level seams rather than + inventory, so RAES adds typed node-scoped and scenario-level seams rather than overloading the manager surface, the detection-engine surface, or `runtime.scheduled_jobs` (cadence-only). - **Primary log-transport standards:** The syslog family — @@ -610,7 +610,7 @@ ACES relies on prior work in four ways: - **Forwarder implementation lineage:** Elastic [Beats](https://www.elastic.co/beats/) and the [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) show the - recurring source/transform/ship/buffer facts ACES preserves (tailed inputs, + recurring source/transform/ship/buffer facts RAES preserves (tailed inputs, pipelines, exporters, back-pressure queues). These are implementation lineage, not schema authority; enrollment identities carry only their closed classification lattice, while forwarding settings use explicit redaction @@ -627,12 +627,12 @@ the spawn contract (engine, scope, spawn templates, lifecycle policy, realized children) referencing that shell, paired with a `require_profile_for_privilege_class` guard that makes the host-root privilege-escalation fact executable. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class container-spawn authority - inventory, so ACES adds a typed node-scoped seam referencing the existing + inventory, so RAES adds a typed node-scoped seam referencing the existing `runtime.local_control_interfaces` shell rather than duplicating it. - **Primary runtime and orchestration standards:** The OCI [Runtime Spec](https://github.com/opencontainers/runtime-spec) and @@ -652,7 +652,7 @@ ACES relies on prior work in four ways: adversary relevance the `host_root_equivalent` profile makes executable. - **Engine API lineage:** The [Docker Engine API](https://docs.docker.com/engine/api/) shows the spawn / - lifecycle surface (container create/start/stop, image references) ACES records + lifecycle surface (container create/start/stop, image references) RAES records as inventory. This is implementation lineage, not schema authority; the spawn contract is referenced through `control_interface_ref`, never duplicating the control-interface shell. @@ -665,13 +665,13 @@ a clone of any one file-sharing protocol or ACL vocabulary, and the expected-but-absent extension to `runtime.filesystem_inventory` follows the same posture. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model scenario topology, deployable services/features, and validation/deployment concerns. None expose a portable first-class - share-permission/passdb inventory that ACES could reuse directly, which - is why ACES introduces a typed node-scoped seam rather than encoding the + share-permission/passdb inventory that RAES could reuse directly, which + is why RAES introduces a typed node-scoped seam rather than encoding the state inside `Node.services` or `runtime.applications`. - **Primary protocol and filesystem-permission standards:** Microsoft's [MS-SMB2](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/5606ad47-5ee0-437a-817e-70c366052962), @@ -687,7 +687,7 @@ ACES relies on prior work in four ways: and [NFSv4.1 (RFC 8881)](https://www.rfc-editor.org/rfc/rfc8881) supply terminology for shares/exports, share-level access modes, passdb semantics, anonymous and guest subjects, POSIX vs. Windows ACL - families, and NFSv4 ACEs. ACES adapts their shared concepts (subject, resource, + families, and NFSv4 ACEs. RAES adapts their shared concepts (subject, resource, action, effect, basis) rather than importing any single vendor ACL algebra. The access-control literature already cited above (Lampson, Saltzer/Schroeder, RBAC96, NIST ABAC) justifies that @@ -695,9 +695,9 @@ ACES relies on prior work in four ways: - **Resource-relation modeling:** Pang et al.'s [Zanzibar: Google's Consistent, Global Authorization System](https://research.google/pubs/zanzibar-googles-consistent-global-authorization-system/) (USENIX ATC 2019) is design input for portable relationship-tuple - authorization. ACES uses it as a cross-check that bounded + authorization. RAES uses it as a cross-check that bounded subject/relation/resource records are workable at scale; it is not - forced into the SDL as a global authorization framework, and ACES does + forced into the SDL as a global authorization framework, and RAES does not encode share access only as relationship edges. - **Evidence and downstream consumers:** OCSF, UCO, CASE, STIX, and SBOM standards remain evidence/event/concept influences (already discussed @@ -719,21 +719,21 @@ The `runtime.mail_services` surface is issue #420's response to a gap observed while encoding the APTL TechVault mailserver container. It is not a clone of Postfix, Dovecot, Docker Mailserver, or an RFC object tree. It is a portable node-scoped runtime inventory for mail-service logical facts that surrounding -ACES surfaces cannot own. +RAES surfaces cannot own. -ACES relies on prior work in four ways: +RAES relies on prior work in four ways: - **Scenario-language precedents:** Open Cyber Range SDL, CyRIS, KYPO, VSDL, and CRACK model topology, deployable services/features, accounts, tasks, and validation/deployment concerns. None expose a portable first-class - mail-server logical-state inventory, which is why ACES adds a typed + mail-server logical-state inventory, which is why RAES adds a typed `Node.runtime` surface rather than encoding SMTP/IMAP state inside `Node.services`, `runtime.applications`, filesystem entries, content, or generic accounts. - **Protocol and service concepts:** SMTP transport/delivery, message submission, IMAP access, POP3/LMTP/Sieve extension points, TLS/STARTTLS posture, mailboxes, aliases, domains, queues, and MTA/MDA configuration - supply terminology. ACES adapts these as provider-neutral fields for + supply terminology. RAES adapts these as provider-neutral fields for listeners, capabilities, auth mechanisms, mailbox state, routing, queues, and settings. - **Evidence and redaction lineage:** Mailserver discovery output, `postconf` @@ -762,7 +762,7 @@ ACES relies on prior work in four ways: validator (see validation.md). The result preserves the same V&V posture as database and file-service runtime -surfaces: ACES states which mail concepts are stable enough to compare and +surfaces: RAES states which mail concepts are stable enough to compare and which dynamic queue/log/config details remain evidence or bounded settings. ## Participant Semantics @@ -776,11 +776,11 @@ which dynamic queue/log/config details remain evidence or bounded settings. - POMDP, Dec-POMDP, POSG, and Markov-game literature — with [Bernstein, Givan, Immerman, and Zilberstein's complexity result](https://doi.org/10.1287/moor.27.4.819.297) and [Oliehoek and Amato's Dec-POMDP monograph](https://doi.org/10.1007/978-3-319-28929-8) - as anchors — is the theoretical lineage behind ACES's insistence that + as anchors — is the theoretical lineage behind RAES's insistence that participant-visible observations are not world truth, and that multi-participant behavior cannot be reduced to a single centralized state stream. [Mean-field game theory](https://doi.org/10.1007/s11537-007-0657-8) - covers the population-limit regime ACES records as mean-field nodes. + covers the population-limit regime RAES records as mean-field nodes. - Interpreted systems ([Fagin, Halpern, Moses, Vardi](https://mitpress.mit.edu/9780262562003/reasoning-about-knowledge/)), [dynamic epistemic logic](https://doi.org/10.1007/978-1-4020-5839-4), and @@ -790,7 +790,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. [Goguen-Meseguer noninterference](https://doi.org/10.1109/SP.1982.10014) and [Sabelfeld-Sands declassification](https://doi.org/10.3233/JCS-2009-0352) ground the hidden-truth boundary and disclosure-rule semantics. -- SEM-230 adopts that lineage through ACES-native artifacts rather than source +- SEM-230 adopts that lineage through RAES-native artifacts rather than source syntax or wire compatibility. The normative participant-policy model is `specs/formal/participant-semantics/information-flow-control.md`; the machine-readable relation is `policy-noninterference` in behavioral taxonomy @@ -798,7 +798,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. `participant-information-flow-policy`. Existing `W`, `V`, qualified `H`, `X`, participant action/admission, visibility transition, ordering, marking, controller, authority, evidence, and provenance objects remain the mapped - ACES carriers. No generic participant-message or policy payload is derived + RAES carriers. No generic participant-message or policy payload is derived from either publication. - The derivation is deliberately compositional. Fagin, Halpern, Moses, and Vardi supply participant-local information-state/indistinguishability @@ -807,9 +807,9 @@ which dynamic queue/log/config details remain evidence or bounded settings. supply labelled-transition, hidden-action, and relation-separation discipline. Lamport happened-before, Winskel event structures, and Mazurkiewicz trace theory enter indirectly through the already governed - ADR-054 visible-order model. ACES extends those sources only with the + ADR-054 visible-order model. RAES extends those sources only with the participant/audience, policy-revision/effective-order, controller/authority, - marking, and evidence/provenance coordinates needed to bind existing ACES + marking, and evidence/provenance coordinates needed to bind existing RAES carriers. It does not fork their settled definitions. - Delivery status is definition-complete, catalogued, policy-checked, and bounded-tested. Evidence is the SEM-230 formal specification, @@ -823,7 +823,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. security, or probabilistic security. - ACT-617 applies the already adopted SEM-230/ADR-085 control and ordering lineage to authored mixed-control behavior without introducing another - external derivation. The exact ACES mapping is + external derivation. The exact RAES mapping is `ParticipantBehaviorSpecification.mixed_control` for the revisioned policy, keyed typed controller states for participant/controller, authority, scope, validity, revocation, and evidence coordinates, keyed typed control @@ -851,7 +851,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. episodes, and multi-agent interaction. ADR-090's reviewed ROS 2, FMI, HLA, TENA, and OpenSCENARIO sources remain the precedent for shared clock authority, progression, lifecycle, and scheduler coordination. - `ParticipantBehaviorSpecification.autonomous_execution` is ACES-native: it + `ParticipantBehaviorSpecification.autonomous_execution` is RAES-native: it binds ordinary participant/action/observation declarations to those existing shared-time declarations and participant implementation provenance. - The exact DSL-437 authority is ADR-092 and @@ -864,16 +864,16 @@ which dynamic queue/log/config details remain evidence or bounded settings. driving for runtime-authority clocks, manifest-admitted transactional clock/participant reset, lifecycle reporting, and durable/API/conformance clock/episode/scheduler consistency on both save and load. Externally paced - autonomous policies remain rejected until ACES governs a portable + autonomous policies remain rejected until RAES governs a portable backend-to-runtime transition driver. The focused evidence is in `test_dsl_437_benign_participant_execution.py`, `test_dsl_437_evaluation_authority.py`, and `test_dsl_437_snapshot_durability_conformance.py`. The ledger records exact semantic source boundaries for the participant-interface and shared-time - concerns. The coordinated reset method is an ACES backend transaction + concerns. The coordinated reset method is an RAES backend transaction obligation, not a claim that replacing a local snapshot reverses native backend effects. - ACES does not claim CybORG, Gymnasium, PettingZoo, OpenSpiel, ROS, FMI, HLA, + RAES does not claim CybORG, Gymnasium, PettingZoo, OpenSpiel, ROS, FMI, HLA, TENA, or OpenSCENARIO compatibility and does not derive a source wire schema. Historical files remain ordinary initial service state; injects remain exercise orchestration; stochastic participant implementations remain @@ -896,18 +896,18 @@ which dynamic queue/log/config details remain evidence or bounded settings. [unified emulation-simulation training environment](https://arxiv.org/abs/2304.01244) are the cyber-agent environment precedents. They show the value of explicit action/observation/reward/episode interfaces, and also expose the - sim-to-emulation gap that ACES must record through realization disclosure and + sim-to-emulation gap that RAES must record through realization disclosure and evidence provenance. - The participant interactive-access declaration has a narrower, revision-pinned lineage. CyRIS 1.2 explicitly marks an entry guest but infers SSH/RDP realization from OS family; CybORG v3.0 places explicit - host/user/session-type bindings under an agent. ACES adapts explicit + host/user/session-type bindings under an agent. RAES adapts explicit participant-local binding while rejecting OS inference, established-session state, locators, ports, and raw credentials. Exact source boundaries and divergences are recorded in the lineage ledger and participant interactive-access research note. - SEM-219's executable tool-affordance binding adopts no new external syntax. - It maps the existing ACES `scenario-content` reference model + It maps the existing RAES `scenario-content` reference model (`tools-and-artifacts`) to optional tool identity, existing participant action contracts to affordance meaning and complete SEM-211 constraints, `agents.*` plus behavior-specification refs to participant-local authored @@ -925,7 +925,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. external derivation or compatibility claim. - SEM-220's executable participant decision surface adopts the existing action/observation-interface lineage above without importing a UI, prompt, - command, or backend-native parameter language. ACES maps one participant, + command, or backend-native parameter language. RAES maps one participant, episode, and behavior-history order point to `ParticipantDecisionSurfaceModel`; maps the three portable selection forms to its discriminated open-ended, constrained-form, and candidate-set @@ -953,7 +953,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. or compatibility claim. - SEM-226 specializes that delivered decision-surface projection without adopting another visibility taxonomy, policy language, or participant I/O - envelope. ACES maps the participant/episode/audience/order coordinates to + envelope. RAES maps the participant/episode/audience/order coordinates to `ParticipantDecisionSurfaceExposureBindingModel`; maps `V_p,o` to the existing `participant_observation_effective_relation()` selector; maps the revisioned SEM-230 `Effective(rho,o)` coordinate to an authoritative @@ -990,7 +990,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. derivation or compatibility claim. - API-409 adopts the existing participant-runtime, ACT-617 mixed-control, and SEM-220 decision-surface authorities without introducing a generic external - message or policy language. ACES maps one proposal, approval, denial, + message or policy language. RAES maps one proposal, approval, denial, external direction, intervention, handoff, override, or cancellation fact to the closed `participant-control-occurrence-v1` carrier; preserves the unchanged `ParticipantRuntimeBaseEnvelopeModel`; and binds each occurrence @@ -1029,13 +1029,13 @@ which dynamic queue/log/config details remain evidence or bounded settings. ## Benchmark And Experiment Lineage - [Cybench](https://arxiv.org/abs/2408.08926) and - [AutoPenBench](https://arxiv.org/abs/2410.03225) inform ACES's treatment of + [AutoPenBench](https://arxiv.org/abs/2410.03225) inform RAES's treatment of task descriptions, starter files, evaluators, subtasks, gold steps, milestones, human assistance, and repeated runs as experiment artifacts. - ACES does not adopt flag capture or milestone completion as the complete + RAES does not adopt flag capture or milestone completion as the complete outcome model; those are inputs to explicit interpretation rules. - [CAIBench](https://arxiv.org/abs/2510.24317) motivates integrated offensive, - defensive, privacy, and cyber-physical evaluation surfaces. ACES adapts this + defensive, privacy, and cyber-physical evaluation surfaces. RAES adapts this as role-neutral multi-participant semantics and privacy/redaction disclosure, not as a bundled meta-benchmark score. - General agent-evaluation critiques such as @@ -1043,7 +1043,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. [Benchmarking Practices in LLM-driven Offensive Security](https://arxiv.org/abs/2504.10112) motivate holdout discipline, anti-contamination controls, scaffold disclosure, baseline disclosure, cost/resource traces, and standardized run - records. ACES records these as provenance and information-boundary concerns + records. RAES records these as provenance and information-boundary concerns so downstream studies can audit what a participant actually could observe. ## DSL Evaluation Lineage @@ -1053,7 +1053,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. ["When and How to Develop Domain-Specific Languages"](https://doi.org/10.1145/1118890.1118892), and Kosar, Bohra, and Mernik's ["Domain-Specific Languages: A Systematic Mapping Study"](https://doi.org/10.1016/j.infsof.2015.11.001) - inform ACES's treatment of language adequacy as an evidence claim. A language + inform RAES's treatment of language adequacy as an evidence claim. A language can be domain-aware and formally specified while still failing on ambiguity, usability, effectiveness, maintainability, or domain-expert reviewability. - Issue #346 tracks this as a dedicated evidence gate. It is related to @@ -1069,7 +1069,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. - [SISO Cyber DEM](https://cdn.ymaws.com/www.sisostandards.org/resource/resmgr/standards_products/siso-std-025-2023_cyberdem.pdf) and Cyber FOM are cyber-specific simulation-interoperability precedents. - Lamport logical clocks, HLA time management, Time Warp, DEVS, SimPy, ROS 2 - time, ns-3 realtime mode, and FMI inform ACES's separation of timestamp, + time, ns-3 realtime mode, and FMI inform RAES's separation of timestamp, ordering, clock authority, pacing, synchronization, and causality. - [Fidge](https://doi.org/10.1109/ICDCS.1988.12501)/[Mattern](https://www.vs.inf.ethz.ch/publ/papers/VirtTimeGlobStates.pdf) vector time and the @@ -1087,7 +1087,7 @@ which dynamic queue/log/config details remain evidence or bounded settings. - [Berenson et al.'s ANSI SQL isolation critique](https://doi.org/10.1145/223784.223785) and [Adya's generalized isolation theory](https://hdl.handle.net/1721.1/8703) anchor the shared-state isolation-guarantee vocabulary. -- Halpern-Pearl structural causality informs ACES's treatment of attribution: +- Halpern-Pearl structural causality informs RAES's treatment of attribution: a participant action followed by an alert is not automatically a causal explanation without an evidence basis. [Chockler-Halpern responsibility and blame](https://doi.org/10.1613/jair.1391) @@ -1106,18 +1106,18 @@ federation object model derived from it. - **Adopted as precedent.** Cyber DEM's typed cyber-object and directed relationship vocabulary, and its attack/defend/recon effect taxonomy, are - precedent for ACES treating typed relationships + precedent for RAES treating typed relationships ([ADR-052](../../decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md)) - and observed runtime objects as first-class. ACES adopts the *concept* of a + and observed runtime objects as first-class. RAES adopts the *concept* of a typed cyber-object vocabulary, not the Cyber DEM object set or its identifiers. -- **Out of scope.** ACES does not adopt Cyber DEM as its scenario model or the +- **Out of scope.** RAES does not adopt Cyber DEM as its scenario model or the Cyber FOM as its backend contract. Cyber DEM is consumed at runtime by - federates; ACES keeps an authored scenario surface separate from any runtime + federates; RAES keeps an authored scenario surface separate from any runtime exchange model, and does not treat HLA federation conformance as equivalent to - ACES backend conformance. -- **Where it leads ACES.** Because the Cyber FOM inherits IEEE 1516 HLA time - management and multi-vendor federation, it is more mature than ACES on - federated time and standardized interoperability. ACES's time-authoring + RAES backend conformance. +- **Where it leads RAES.** Because the Cyber FOM inherits IEEE 1516 HLA time + management and multi-vendor federation, it is more mature than RAES on + federated time and standardized interoperability. RAES's time-authoring surface is partial and explicitly incomplete. This is detailed in the [Related-Work Comparison](related-work-comparison.md). @@ -1125,19 +1125,19 @@ federation object model derived from it. - [MITRE ATT&CK](https://www.mitre.org/news-insights/publication/mitre-attck-design-and-philosophy), MITRE CALDERA, Atomic Red Team, and OpenC2 are adversary-emulation and - command/response precedents. ACES treats them as behavior and execution + command/response precedents. RAES treats them as behavior and execution sources that scenarios may bind to, not as replacements for the SDL. - From OpenC2 specifically, ACES borrows the command/response principle — an + From OpenC2 specifically, RAES borrows the command/response principle — an action requested against a target with a status-bearing response — but does not adopt OpenC2's action/target/argument payload structures as SDL or runtime-contract schema. - OCSF is the preferred lineage for normalized security event and finding - structure. ACES uses that style for observations and evidence without making + structure. RAES uses that style for observations and evidence without making raw telemetry equal to participant-visible state. -## What ACES Adds +## What RAES Adds -ACES separates authored scenario meaning, processor/runtime contracts, backend +RAES separates authored scenario meaning, processor/runtime contracts, backend realization, participant implementations, live state, and archival evidence/provenance. The participant-semantics design extends that separation: actions, observations, visibility, causality, temporal behavior, and outcomes @@ -1146,7 +1146,7 @@ participants without collapsing into any one backend or learning API. ### Shared Time Authority -The ACES shared time model has explicit external lineage but is not a translated +The RAES shared time model has explicit external lineage but is not a translated copy of any one framework: - ROS 2 contributes the separation of system, steady/monotonic, and externally @@ -1160,7 +1160,7 @@ copy of any one framework: - OpenSCENARIO contributes the separation of lifecycle, triggers, actions, and simulation-time predicates. -ACES adds backend-neutral authored declarations, exact rational mappings, +RAES adds backend-neutral authored declarations, exact rational mappings, ordinary SDL subject references, canonical compilation, and segment-preserving runtime control. It does not claim ROS, FMI, HLA, TENA, or OpenSCENARIO conformance through those generic declarations. diff --git a/docs/explain/sdl/parser.md b/docs/explain/sdl/parser.md index 963527deb..e1e43b70f 100644 --- a/docs/explain/sdl/parser.md +++ b/docs/explain/sdl/parser.md @@ -149,7 +149,7 @@ import json from pathlib import Path from aces.core.sdl import parse_sdl, parse_sdl_file -from aces_sdl import ( +from raes import ( SDLMigrationPolicy, admit_instantiated_scenario, canonical_instantiated_sdl_digest, diff --git a/docs/explain/sdl/precedents.md b/docs/explain/sdl/precedents.md index 3e636eae6..a920d9435 100644 --- a/docs/explain/sdl/precedents.md +++ b/docs/explain/sdl/precedents.md @@ -1,12 +1,12 @@ # SDL Design Precedents -ACES combines externally influenced and ACES-native language families. This +RAES combines externally influenced and RAES-native language families. This document summarizes design influences and comparisons; the revision-pinned, machine-readable provenance record is [`contracts/provenance/sdl-lineage-ledger-v1.json`](../../../contracts/provenance/sdl-lineage-ledger-v1.json). Only the ledger classifies provenance, artifact/code derivation, compatibility, and notice obligations. A source named here may explain a design concern -without being a source from which ACES adopted syntax, semantics, or code. +without being a source from which RAES adopted syntax, semantics, or code. The SDL does not borrow every concern from the same place. In practice: @@ -37,8 +37,8 @@ The "Deliberate Omissions" table carries no influence-plane column. The base sections have syntax and translated-model ancestry in [OCR SDL v0.21.2](https://github.com/Open-Cyber-Range/SDL-parser/tree/fe83e8281fc4b954967fbaa5a0d099007ddcb06c), pinned to revision `fe83e8281fc4b954967fbaa5a0d099007ddcb06c`. -The ledger names exact Rust and ACES artifact boundaries and records partial -syntax compatibility only. ACES does not claim drop-in parser, schema, +The ledger names exact Rust and RAES artifact boundaries and records partial +syntax compatibility only. RAES does not claim drop-in parser, schema, validation, or runtime compatibility. Per ADR-073, the OCR scoring pipeline (metrics/evaluations/TLOs/goals) was removed from authored SDL and lives in the experiment/evaluator plane. OCR SDL was developed by CR14 / the Norwegian @@ -56,8 +56,8 @@ Cyber Range. | Condition | `Condition` | Both | Added `timeout`, `retries`, `start_period` | | Vulnerability | `Vulnerability` | Syntax | OCR-adapted syntax and translated model structure; partial syntax compatibility at the pinned revision | | Metric/Evaluation/TLO/Goal | OCR scoring pipeline | Not adopted | Removed from the SDL per ADR-073; graded scoring/reward lives in the experiment/evaluator plane (ADR-055/064/069) | -| Entity | `Entity` + OCR entity surface | Both | OCR-adapted syntax and translated model structure, including fact-map ancestry; current semantics are ACES-governed | -| Inject/Event/Script/Story | OCR orchestration | Both | OCR-adapted syntax and translated model structure; current orchestration semantics are ACES-governed | +| Entity | `Entity` + OCR entity surface | Both | OCR-adapted syntax and translated model structure, including fact-map ancestry; current semantics are RAES-governed | +| Inject/Event/Script/Story | OCR orchestration | Both | OCR-adapted syntax and translated model structure; current orchestration semantics are RAES-governed | | Source | `Source` (name + version) | Syntax | Made provider-neutral | @@ -74,7 +74,7 @@ Cyber Range. | `AssetValue` | `ConfidentialityValue`, `AvailabilityValue` | Semantics | Extended to CIA triad | | `ACLRule` | `Subnets.NACLs` | Both | Simplified from nested dict to flat rule list | | `Objective.agent/actions` | Agent identity + action space | Semantics | Objective actor binding and optional action subset validation | -| `Agent.interactive_access` | `Agents.*.starting_sessions[]` in CybORG v3.0 | Semantics | Adapted participant-local explicit host/channel association; ACES uses stable authored ids and references, not established simulator sessions, usernames, or copied syntax | +| `Agent.interactive_access` | `Agents.*.starting_sessions[]` in CybORG v3.0 | Semantics | Adapted participant-local explicit host/channel association; RAES uses stable authored ids and references, not established simulator sessions, usernames, or copied syntax | ### From Newer Participant And Benchmark Ecosystems @@ -98,7 +98,7 @@ full shape directly. Issue #71 adds a formal participant-semantics design in `specs/formal/participant-semantics/` and ADR-022. These precedents inform that -design without becoming the ACES runtime API or authoring syntax. +design without becoming the RAES runtime API or authoring syntax. | Concern | Primary Sources | Influence plane | What We Adapted | | ------- | --------------- | --- | --------------- | @@ -114,7 +114,7 @@ design without becoming the ACES runtime API or authoring syntax. | Benchmark validity and overfitting controls | [AI Agents That Matter](https://arxiv.org/abs/2407.01502), [Benchmarking Practices in LLM-driven Offensive Security](https://arxiv.org/abs/2504.10112) | Semantics | Run/study provenance, holdout discipline, scaffold disclosure, hidden assets, baselines, and cost/resource traces are experimental-instrumentation concerns | | DSL language adequacy and evaluation | [Do Software Languages Engineers Evaluate their Languages?](https://arxiv.org/abs/1109.6794), [When and How to Develop Domain-Specific Languages](https://doi.org/10.1145/1118890.1118892), [Domain-Specific Languages: A Systematic Mapping Study](https://doi.org/10.1016/j.infsof.2015.11.001) | Semantics | Issue #346 treats expressiveness, usability, effectiveness, maintainability, ambiguity, and domain-expert reviewability as evidence-gated language claims | -For the `SEM-209` implementation slice, ACES represents framework-neutral +For the `SEM-209` implementation slice, RAES represents framework-neutral joint-action declarations and realized-order provenance. PettingZoo/OpenSpiel inform participant-local histories and joint behavior, Lamport informs ordering without causal overclaim, and cyber-agent systems motivate explicit target and @@ -127,7 +127,7 @@ shared-state references without making framework/tool APIs the SDL authority. | SDL Element | CyRIS Source | Influence plane | What We Adapted | | ----------- | ----------------------------------------- | --- | ------------------------------------------------- | | `Content` | `copy_content`, `emulate_traffic_capture` | Semantics | Generalized to file/dataset/directory types | -| `Account` | `add_account`, `modify_account` | Semantics | Preserved host account-placement lineage; ACES-specific account metadata such as groups, password strength, SPN, and auth method are extensions, not CyRIS-derived directory semantics | +| `Account` | `add_account`, `modify_account` | Semantics | Preserved host account-placement lineage; RAES-specific account metadata such as groups, password strength, SPN, and auth method are extensions, not CyRIS-derived directory semantics | | `Agent.interactive_access` | `guest_settings[].entry_point` and tunnel selection in CyRIS 1.2 | Semantics | Adapted explicit entry-host eligibility but rejected OS-to-channel inference, tunnel/port mechanics, and generated credentials | @@ -139,9 +139,9 @@ one provider schema as the SDL schema. | SDL Element | Source Class | Influence plane | What We Adapted | | ----------- | ------------ | --- | --------------- | -| `RuntimeIdentityAuthority` | LDAP/X.500 naming contexts, Kerberos realms, SAML/OIDC issuers, SCIM/IAM tenants, NIST SP 800-63C-4 federation guidance | Semantics | An authority boundary with stable ACES id plus observed namespace facts such as domain, realm, issuer, tenant, and base DN; all authority-local stable ids share one namespace | +| `RuntimeIdentityAuthority` | LDAP/X.500 naming contexts, Kerberos realms, SAML/OIDC issuers, SCIM/IAM tenants, NIST SP 800-63C-4 federation guidance | Semantics | An authority boundary with stable RAES id plus observed namespace facts such as domain, realm, issuer, tenant, and base DN; all authority-local stable ids share one namespace | | `RuntimeIdentityService` | LDAP/Kerberos/SAML/OIDC/SCIM/IAM protocol endpoints and same-node `Node.services` transport bindings | Semantics | Protocol/API endpoint inventory without treating the endpoint as the directory contents | -| `RuntimeIdentitySubject` | LDAP entries, SCIM Users/Groups, AD users/groups/computers/service principals, SAML/OIDC subjects/clients, IAM roles/applications | Semantics | Identity-bearing subjects with stable ACES ids, observed names/principals, provider identifiers as data, and bounded attributes | +| `RuntimeIdentitySubject` | LDAP entries, SCIM Users/Groups, AD users/groups/computers/service principals, SAML/OIDC subjects/clients, IAM roles/applications | Semantics | Identity-bearing subjects with stable RAES ids, observed names/principals, provider identifiers as data, and bounded attributes | | `RuntimeIdentityPolicy` | NIST SP 800-162 ABAC, RBAC, group policy, Kerberos/domain policy, conditional-access/MFA policy concepts | Semantics | Portable policy records with `applies_to_refs` rather than provider-specific policy-object cloning | | `RuntimeIdentityRelationship` | Access matrix/RBAC relationship concepts, directory membership, trust/federation/delegation/sync/ownership relations, BloodHound/OpenGraph node-edge analysis | Semantics | Typed local authority edges with stable ids, usable by top-level relationship/objective refs and later attack-graph translation | | Attribute and setting value classification | OCSF/UCO sensitivity/evidence posture, repository runtime sensitivity vocabulary | Semantics | Secret-bearing identity values are redacted/classified rather than copied into SDL fixtures or diagnostics | @@ -159,7 +159,7 @@ directory above and from database engine GRANTs. | SDL Element | Source Class | Influence plane | What We Adapted | | ----------- | ------------ | --- | --------------- | -| `RuntimeAppAuthorization` | Ferraiolo/Kuhn RBAC, Sandhu et al. RBAC96, ANSI INCITS 359 | Semantics | An application-internal authorization store with a stable ACES id and an open `resource_vocabulary` spine discriminator; tier placement is derived from the referencing spine, not declared | +| `RuntimeAppAuthorization` | Ferraiolo/Kuhn RBAC, Sandhu et al. RBAC96, ANSI INCITS 359 | Semantics | An application-internal authorization store with a stable RAES id and an open `resource_vocabulary` spine discriminator; tier placement is derived from the referencing spine, not declared | | `RuntimeAppAuthorizationPrincipal` | OpenSearch/Elasticsearch security users, Cassandra `system_auth`, Redis ACL users, dashboard/platform accounts | Semantics | Users, service accounts, API keys, and backend roles with reserved/hidden flags and a `credential_classification` only — no raw bcrypt hash, API key, or password | | `RuntimeAppAuthorizationGrant` | RBAC96 / ANSI INCITS 359 permission-assignment, NIST SP 800-162 ABAC resource-scoping | Semantics | The defining resource-scoped grant: role reference → actions → resource patterns with an allow/deny effect and a `resource_kind` that is the single author-settable resource vocabulary | | `RuntimeAppAuthorizationRoleMapping` | OpenSearch backend-role mappings, directory-to-local role bindings | Semantics | Bindings of backend roles, users, or hosts onto a local role | @@ -221,7 +221,7 @@ surface. ### From Time, Simulation, and Co-Simulation Systems These sources inform the emerging time-model requirements. They are not a -claim that ACES adopts one simulator's worldview wholesale. They are precedents +claim that RAES adopts one simulator's worldview wholesale. They are precedents for the recurring architectural concerns that show up once scenarios must run honestly across simulation, emulation, and live infrastructure. @@ -267,13 +267,13 @@ host kernel, container runtime, backend adapter, control plane, build executor, and host-local machinery that creates or controls the range. See [ADR-033](../../decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md). -This table is checked against the current ACES runtime/source models and the +This table is checked against the current RAES runtime/source models and the downstream [Brad-Edwards/aptl#339](https://github.com/Brad-Edwards/aptl/issues/339) Kali inventory evidence class: Compose service slices, Docker inspect output, runtime mount/network/capability observations, and image provenance are evidence to classify, not schema authority. The APTL inventory is motivating downstream -evidence; it is not a claim that all APTL artifacts already satisfy the ACES -redaction contract. The table is a current ACES disposition, not a complete +evidence; it is not a claim that all APTL artifacts already satisfy the RAES +redaction contract. The table is a current RAES disposition, not a complete taxonomy of container, orchestrator, or host-security concerns. @@ -283,7 +283,7 @@ taxonomy of container, orchestrator, or host-security concerns. | Generic process listener bind state (address/interface, protocol, port, scope, owner, readiness evidence) | Observed in-node runtime state, distinct from authored service identity and host publication | `Node.runtime.service_listeners` when observed; same-node service refs remain in `Node.services`, host bindings remain in `runtime.network.published_ports`; see ADR-043 | | Volume mounts | Guest-visible filesystem attachments are runtime node state; host source paths and orchestration choices remain delivery/evidence concerns | `Node.runtime.mounts` and `runtime.filesystem_inventory` when observed; authored file placement remains `Content`; mount `source` and `options` carry sensitivity classification, and `redacted` / `operator_secret` values omit raw host-local details | | Linux capabilities (NET_RAW, SYS_ADMIN) | Participant-relevant capability posture is runtime node security state, not a raw Compose security field | `Node.runtime.linux_capabilities`, including scoped `process_overrides`; see ADR-030 | -| Docker Compose profiles | Backend packaging/selection groups are delivery mechanics unless promoted to an ACES scenario/profile composition surface | Backend implementation layer today; realized node set is represented by SDL `nodes`, not raw Compose profile labels | +| Docker Compose profiles | Backend packaging/selection groups are delivery mechanics unless promoted to an RAES scenario/profile composition surface | Backend implementation layer today; realized node set is represented by SDL `nodes`, not raw Compose profile labels | | Dockerfile/build execution | Build executor mechanics are delivery/packaging; observable image/source provenance is an artifact-boundary fact | Backend implementation layer for execution mechanics; `Source.build` provenance when observed; see ADR-023 | | Observable container image build provenance | Artifact provenance, not deployment authoring | SDL source-artifact surface; see ADR-023 | | Runtime-effective container entrypoints | Backend/runtime state | `Node.runtime.container` when observed | diff --git a/docs/explain/sdl/related-work-comparison.md b/docs/explain/sdl/related-work-comparison.md index c5f6fd0ce..995ad95ac 100644 --- a/docs/explain/sdl/related-work-comparison.md +++ b/docs/explain/sdl/related-work-comparison.md @@ -1,6 +1,6 @@ # Related-Work Comparison -The frozen comparison supports no overall winner. ACES has the strongest +The frozen comparison supports no overall winner. RAES has the strongest expressive-breadth result inside the scenario-authoring stratum, while VSDL and CRACK have stronger formal-analysis evidence, OCR SDL has stronger deployed authoring maturity evidence, CybORG has stronger executed participant-modeling @@ -9,7 +9,7 @@ respective scopes. This result is a reproducible research snapshot, not a marketing ranking. It distinguishes breadth from quality, implementation maturity, standardization, -and community governance. It also retains ACES features that are partial, +and community governance. It also retains RAES features that are partial, missing, external to SDL, or deliberately excluded. ## Reproduction Bundle @@ -42,7 +42,7 @@ Frozen snapshot: `snapshot-2026-07-13` under protocol `protocol-v1`. Scores are axis-specific ordinal evidence levels: 0 absent, 1 limited, 2 substantial, 3 strong; `oos` means the axis is outside the system's declared scope and is never treated as zero. -| Axis | ACES | OCR SDL | CybORG | CACAO 2.0 | Cyber DEM | Cyber FOM | CRACK | VSDL | +| Axis | RAES | OCR SDL | CybORG | CACAO 2.0 | Cyber DEM | Cyber FOM | CRACK | VSDL | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Expressive breadth | 3 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | | Semantic precision | 3 | 1 | 2 | 3 | 3 | 3 | 3 | 3 | @@ -60,20 +60,20 @@ Scores are axis-specific ordinal evidence levels: 0 absent, 1 limited, 2 substan ### Evidence-bounded findings - **No Overall Winner.** Evidence status: `partial`. No overall winner is supported: the four declared scope strata are analyzed separately, and the scenario-authoring first-ranked system changes across the four declared weight profiles. -- **Scope Qualified Breadth.** Evidence status: `partial`. Within the four-system scenario-authoring stratum and this frozen rubric, ACES is the sole expressive-breadth leader at level 3. This is the broadest combined surface observed in this corpus; `highest quality` is not supported, and standardization or maturity do not follow from breadth. -- **Maturity Governance.** Evidence status: `partial`. Against ACES's recorded level 1, CACAO 2.0 and Cyber FOM each record level 3 for governance and community, while CybORG records level 3 and OCR SDL level 2 for implementation maturity. These are axis-specific evidence comparisons, not cross-scope overall rankings or adoption claims. -- **Sensitivity.** Evidence status: `partial`. Across the declared scenario-authoring profiles, breadth and composition ranks ACES first, formal rigor ranks VSDL first, and maturity and governance ranks OCR SDL first; this observed reversal prohibits a weight-independent winner claim. +- **Scope Qualified Breadth.** Evidence status: `partial`. Within the four-system scenario-authoring stratum and this frozen rubric, RAES is the sole expressive-breadth leader at level 3. This is the broadest combined surface observed in this corpus; `highest quality` is not supported, and standardization or maturity do not follow from breadth. +- **Maturity Governance.** Evidence status: `partial`. Against RAES's recorded level 1, CACAO 2.0 and Cyber FOM each record level 3 for governance and community, while CybORG records level 3 and OCR SDL level 2 for implementation maturity. These are axis-specific evidence comparisons, not cross-scope overall rankings or adoption claims. +- **Sensitivity.** Evidence status: `partial`. Across the declared scenario-authoring profiles, breadth and composition ranks RAES first, formal rigor ranks VSDL first, and maturity and governance ranks OCR SDL first; this observed reversal prohibits a weight-independent winner claim. ### Sensitivity of scenario-authoring rankings | Weight profile | First-ranked system | Recorded totals | | --- | --- | --- | -| `equal-evidence` | ACES | ACES=25, VSDL=16, CRACK=15, OCR SDL=15 | -| `breadth-and-composition` | ACES | ACES=42, OCR SDL=21, VSDL=21, CRACK=18 | -| `formal-rigor` | VSDL | VSDL=39, CRACK=37, ACES=32, OCR SDL=12 | -| `maturity-and-governance` | OCR SDL | OCR SDL=26, ACES=22, CRACK=10, VSDL=10 | +| `equal-evidence` | RAES | RAES=25, VSDL=16, CRACK=15, OCR SDL=15 | +| `breadth-and-composition` | RAES | RAES=42, OCR SDL=21, VSDL=21, CRACK=18 | +| `formal-rigor` | VSDL | VSDL=39, CRACK=37, RAES=32, OCR SDL=12 | +| `maturity-and-governance` | OCR SDL | OCR SDL=26, RAES=22, CRACK=10, VSDL=10 | -### ACES delivery limits retained in the matrix +### RAES delivery limits retained in the matrix - **Formal analyzability (1).** Full solver-backed whole-scenario verification remains outside the current implementation. - **Experiment design (2).** Controlled allocation and factor/study concerns live in experiment contracts, and several delivery rows remain external or incomplete. @@ -97,7 +97,7 @@ study with disclosed population, effort, completion, and error measurements. The sensitivity table deliberately shows reversals. Weighting formal rigor places VSDL first; weighting maturity and governance places OCR SDL first; -weighting breadth and composition places ACES first. Selecting a weighting +weighting breadth and composition places RAES first. Selecting a weighting after seeing those results would violate the protocol. The source walkthroughs do not execute third-party code. Normal verification @@ -120,7 +120,7 @@ records the frozen source set and retrieval decisions. ## Related Material -- [Design Precedents](precedents.md) maps individual ACES concepts to lineage. +- [Design Precedents](precedents.md) maps individual RAES concepts to lineage. - [Lineage and Prior Work](lineage.md) gives the narrative source map. - [Scientific Scenario Completeness](scientific-scenario-completeness.md) separates intended-use profiles from current delivery status. diff --git a/docs/explain/sdl/runtime-architecture.md b/docs/explain/sdl/runtime-architecture.md index a16ab07c5..076dc98c2 100644 --- a/docs/explain/sdl/runtime-architecture.md +++ b/docs/explain/sdl/runtime-architecture.md @@ -1,8 +1,11 @@ # Runtime Architecture: SDL -> Processor -> Runtime -> Backend This document describes the processor and runtime path that turns authored SDL -into executable backend operations. It is an SDL-native architecture built for -the SDL itself and its backend contracts. See +into executable backend operations for a realized agentic environment. The +authored scenario, compiled plans, backend realization, participant execution, +observations, and evidence remain distinct phases; a realized environment is +not identical to its SDL document. This is an SDL-native architecture built +for the SDL itself and its backend contracts. See [ADR-004](../../decisions/adrs/adr-004-sdl-runtime-layer.md) and [ADR-036](../../decisions/adrs/adr-036-sdl-processor-runtime-module-boundaries.md) for the decision records. @@ -50,7 +53,7 @@ here come from mature workflow and distributed-runtime systems: ## Package Boundary ```text -aces_sdl -> parse + instantiate + SDL-language semantics +raes -> parse + instantiate + SDL-language semantics aces_processor -> compile + plan + support/contract semantics aces_runtime -> live control + manager + control-plane APIs aces_backend_protocols -> backend capability/protocol declarations diff --git a/docs/explain/sdl/scenario-delivery-drift-audit.md b/docs/explain/sdl/scenario-delivery-drift-audit.md index 56a713b0b..038f48512 100644 --- a/docs/explain/sdl/scenario-delivery-drift-audit.md +++ b/docs/explain/sdl/scenario-delivery-drift-audit.md @@ -1,6 +1,6 @@ # Scenario/Delivery Classification Drift Audit and Remediation -Issue #400 audits and repairs ACES design surfaces for residue from the earlier +Issue #400 audits and repairs RAES design surfaces for residue from the earlier scenario-vs-delivery classification error: treating a fact as outside SDL scope because it resembles Docker, Compose, SSH, seccomp, init, network, or process configuration vocabulary, instead of asking whether the fact exists on @@ -23,7 +23,7 @@ harness, or an inspector exposed the evidence. Delivery mechanics remain the orchestrator, host kernel, container runtime, backend adapter, control plane, build executor, and host-local operator state. -The external/source basis is the existing ACES lineage set rather than a new +The external/source basis is the existing RAES lineage set rather than a new taxonomy: - [Open Cyber Range SDL](https://documentation.opencyberrange.ee/docs/sdl/reference/) @@ -92,7 +92,7 @@ Status vocabulary: | precedents.md | `docs/explain/sdl/precedents.md` | already-corrected baseline plus principled retention | | specs/ | `specs/formal/participant-semantics/`, `specs/formal/runtime-contracts/`, `specs/formal/realization/` | no-drift-found | | contracts/ | `contracts/README.md`, `contracts/concept-authority/`, `contracts/schemas/` | no-drift-found | -| implementations/python/packages/aces_sdl/ | runtime models, parser, validator, and tests for runtime surfaces | aligned with corrected boundary | +| implementations/python/packages/raes/ | runtime models, parser, validator, and tests for runtime surfaces | aligned with corrected boundary | ## Findings @@ -157,8 +157,8 @@ places container network realization facts under `Node.runtime`, and `docs/decisions/adrs/adr-025-container-network-realization-surface.md:63` separates host publication from services and image exposed ports. Implementation evidence appears in -`implementations/python/packages/aces_sdl/runtime_network.py` and validator -references around `implementations/python/packages/aces_sdl/validator/`. +`implementations/python/packages/raes/runtime_network.py` and validator +references around `implementations/python/packages/raes/validator/`. **Suspect exclusion or scope language:** Host port bindings, aliases, endpoint IDs, DNS names, and backend driver/IPAM details can look like Docker or @@ -183,8 +183,8 @@ puts seccomp and backend-native security options under runtime container configuration; `docs/decisions/adrs/adr-030-process-scoped-linux-capability-policy.md:35` keeps process-scoped Linux capability facts under `Node.runtime.linux_capabilities`. Implementation evidence appears in -`implementations/python/packages/aces_sdl/runtime_container.py` and -`implementations/python/packages/aces_sdl/runtime_capabilities.py`. +`implementations/python/packages/raes/runtime_container.py` and +`implementations/python/packages/raes/runtime_capabilities.py`. **Suspect exclusion or scope language:** `init: true`, `security_opt`, and `cap_add`/`cap_drop` are backend-looking configuration terms. @@ -207,8 +207,8 @@ puts SSH server configuration under node runtime; lines around `docs/decisions/adrs/adr-031-ssh-server-configuration-surface.md:47` identify `AcceptEnv`, `ForceCommand`, and `Match` rules as participant-observable sshd policy. Implementation evidence appears in -`implementations/python/packages/aces_sdl/runtime_ssh_server.py` and -`implementations/python/packages/aces_sdl/validator/`. +`implementations/python/packages/raes/runtime_ssh_server.py` and +`implementations/python/packages/raes/validator/`. **Suspect exclusion or scope language:** `sshd_config`, wrapper commands, and accepted environment names can look like backend or process implementation @@ -232,15 +232,15 @@ puts database logical-state observations under `Node.runtime`; `docs/decisions/a does the same for directory and domain identity observations. Generated schema descriptions in `contracts/schemas/sdl/sdl-authoring-input-v1.json` and `contracts/schemas/sdl/instantiated-scenario-v1.json` carry those surfaces, -and model evidence appears in `implementations/python/packages/aces_sdl/runtime_database.py` -and `implementations/python/packages/aces_sdl/runtime_directory_identity.py`. +and model evidence appears in `implementations/python/packages/raes/runtime_database.py` +and `implementations/python/packages/raes/runtime_directory_identity.py`. **Suspect exclusion or scope language:** Database catalogs, database roles, LDAP/AD/SCIM/OIDC/SAML/IAM authority facts, and provider identifiers can look like product-specific backend payloads. **Boundary analysis:** The current decisions keep vendor/provider identifiers -as data and preserve neutral stable ACES ids. They separate runtime logical +as data and preserve neutral stable RAES ids. They separate runtime logical state from top-level authored accounts, `Node.services`, local identity, application routes, raw catalog dumps, and downstream attack-graph or telemetry schemas. @@ -259,9 +259,9 @@ enumerate the participant-observable fields (manager kind, native unit name, load/enable/active/sub state, result/exit code, main PID, unit-file path, redactable `ExecStart`, optional same-node service ref). Implementation evidence appears in -`implementations/python/packages/aces_sdl/runtime_service_units.py` and the +`implementations/python/packages/raes/runtime_service_units.py` and the new validator hook in -`implementations/python/packages/aces_sdl/validator/`. +`implementations/python/packages/raes/validator/`. **Suspect exclusion or scope language:** `systemctl` output, unit-file text, journal excerpts, and Docker/container-host configuration adjacency can look @@ -336,7 +336,7 @@ owners. **Surface:** `docs/explain/sdl/precedents.md`, ADR-033, contracts, and specs. **Citation:** `docs/explain/sdl/precedents.md:243` keeps Docker Compose -profiles in the backend implementation layer unless promoted to an ACES +profiles in the backend implementation layer unless promoted to an RAES scenario/profile composition surface; `docs/decisions/adrs/adr-033-scenario-delivery-boundary-for-runtime-node-state.md:77` defines delivery machinery as orchestrators, host kernels, container runtimes, backend adapters, control planes, build executors, and host-local operator @@ -349,7 +349,7 @@ selection, and backend execution plans look adjacent to scenario composition. **Boundary analysis:** No participant-interactable range-node state is lost by not importing Compose profile labels as SDL. The realized node set is already represented by SDL nodes and runtime observations; backend packaging and -selection machinery remains delivery unless a future ACES composition surface +selection machinery remains delivery unless a future RAES composition surface is explicitly designed. **Disposition:** principled-retention. No current drift found. @@ -410,7 +410,7 @@ replicating the old Docker/Compose vocabulary error. **Surface:** `lineage.md`, `validation.md`, `limitations.md`, and `runtime-architecture.md`. -**Citation:** `docs/explain/sdl/lineage.md:14` says ACES keeps the logical +**Citation:** `docs/explain/sdl/lineage.md:14` says RAES keeps the logical scenario surface separate from backend realization, and `docs/explain/sdl/lineage.md:200` separates authored scenario meaning, processor/runtime contracts, backend realization, participant implementations, @@ -440,14 +440,14 @@ vocabulary. ### R-007 Actual code matches the corrected typed-surface boundary -**Surface:** `implementations/python/packages/aces_sdl/` +**Surface:** `implementations/python/packages/raes/` -**Citation:** `implementations/python/packages/aces_sdl/runtime_configuration.py` +**Citation:** `implementations/python/packages/raes/runtime_configuration.py` owns `mounts`, `filesystem_inventory`, `container`, `network`, `linux_capabilities`, `local_identity`, `identity_authorities`, `applications`, `database_services`, `ssh_servers`, and `software_components`; -`implementations/python/packages/aces_sdl/validator/` adds runtime +`implementations/python/packages/raes/validator/` adds runtime application, database, identity authority, SSH, network, and capability cross-checks; tests in `implementations/python/tests/test_sdl_models.py`, `test_runtime_models.py`, `test_sdl_parser.py`, `test_sdl_validator.py`, and diff --git a/docs/explain/sdl/sections.md b/docs/explain/sdl/sections.md index 1de9f105c..56996feec 100644 --- a/docs/explain/sdl/sections.md +++ b/docs/explain/sdl/sections.md @@ -40,25 +40,25 @@ plane (ADR-055/064/069). Declarative `conditions` remain. | `scripts` | `dict[str, Script]` | Timed event sequences with human-readable durations | | `stories` | `dict[str, Story]` | Top-level exercise orchestration grouping scripts | -### ACES extensions +### RAES extensions | Section | Type | Purpose | Adapted From | |---------|------|---------|--------------| | `content` | `dict[str, Content]` | Data placed into systems (files, datasets, emails) | CyRIS `copy_content` | | `accounts` | `dict[str, Account]` | Curated scenario/provisioning accounts on nodes, not full runtime identity inventory | CyRIS `add_account` | -| `identity_domains` | `dict[str, IdentityDomain]` | Authored domain identity and authority for controller/join realization | ACES ADR-082 | +| `identity_domains` | `dict[str, IdentityDomain]` | Authored domain identity and authority for controller/join realization | RAES ADR-082 | | `relationships` | `dict[str, Relationship]` | Typed edges between elements (auth, trust, federation) | STIX Relationship SRO | -| `forwarding_agents` | `list[RuntimeForwardingAgent]` | Scenario-level forwarding and shipping agents with element-carried identity | ACES ADR-050 | -| `agents` | `dict[str, Agent]` | Autonomous participants (actions, knowledge, scope) | CybORG Agents, extended by ACES | -| `action_contracts` | `dict[str, ParticipantActionContract]` | Preconditions, effects, failures, interactions, and fidelity claims for participant actions | ACES participant model | -| `observation_boundaries` | `dict[str, ParticipantObservationBoundary]` | Participant-visible, hidden, discovered, and evidence-bearing information projections | ACES participant model | -| `outcome_interpretation_rules` | `dict[str, OutcomeInterpretationRule]` | Rules connecting action observations and evidence to scenario-local outcomes | ACES participant model | -| `behavior_specifications` | `dict[str, ParticipantBehaviorSpecification]` | Versioned aggregates over participant action, observation, outcome, authority, and mode surfaces | ACES ACT-606 | -| `evidence_requirements` | `dict[str, EvidenceRequirement]` | Portable authored capture obligations, distinct from captured evidence | ACES DSL-124, ADR-066 | +| `forwarding_agents` | `list[RuntimeForwardingAgent]` | Scenario-level forwarding and shipping agents with element-carried identity | RAES ADR-050 | +| `agents` | `dict[str, Agent]` | Autonomous participants (actions, knowledge, scope) | CybORG Agents, extended by RAES | +| `action_contracts` | `dict[str, ParticipantActionContract]` | Preconditions, effects, failures, interactions, and fidelity claims for participant actions | RAES participant model | +| `observation_boundaries` | `dict[str, ParticipantObservationBoundary]` | Participant-visible, hidden, discovered, and evidence-bearing information projections | RAES participant model | +| `outcome_interpretation_rules` | `dict[str, OutcomeInterpretationRule]` | Rules connecting action observations and evidence to scenario-local outcomes | RAES participant model | +| `behavior_specifications` | `dict[str, ParticipantBehaviorSpecification]` | Versioned aggregates over participant action, observation, outcome, authority, and mode surfaces | RAES ACT-606 | +| `evidence_requirements` | `dict[str, EvidenceRequirement]` | Portable authored capture obligations, distinct from captured evidence | RAES DSL-124, ADR-066 | | `objectives` | `dict[str, Objective]` | Scenario-local objectives binding actors, targets, windows, and success (against observable `conditions`); not EXP task records | CACAO action/target/agent | | `workflows` | `dict[str, Workflow]` | Branching and parallel control graphs over declared objectives | CACAO workflow graph patterns; semantics tightened using Step Functions / Argo / SCXML style control-flow rules | | `variables` | `dict[str, Variable]` | Parameterization (types, defaults, substitution) | CACAO playbook_variables | -| `variation_points` | `dict[str, VariationPoint]` | Named bounded scenario-family domains and typed targets | ACES ADR-084 | +| `variation_points` | `dict[str, VariationPoint]` | Named bounded scenario-family domains and typed targets | RAES ADR-084 | --- @@ -754,7 +754,7 @@ propagation, stability, whether a backend may generate the source, and sensitivity classifications for the source and option strings. Mount sources or options classified as `redacted` or `operator_secret` must omit the raw value. This sensitivity -vocabulary is an ACES runtime contract, not an adopted taxonomy from Docker, +vocabulary is an RAES runtime contract, not an adopted taxonomy from Docker, Compose, or the cited scenario-language precedents. `filesystem_inventory` records runtime-observed filesystem entries with absolute path, entry type, ownership, UID/GID, mode, size, digest algorithm/value pairs, source-package path, @@ -776,7 +776,7 @@ such as `seccomp:unconfined` or `no-new-privileges`); a seccomp posture is a distinct security control from `privileged`, so it is recorded separately (see [ADR-028](../../decisions/adrs/adr-028-container-seccomp-security-options-surface.md)); `packages` records package-manager rows; `software_components` records -node-local software identity at component granularity with stable ACES ids, +node-local software identity at component granularity with stable RAES ids, component type, version, purl/CPE/hash identifiers, package or manifest lineage, and runtime paths when required; and `dependency_manifests` records required manifest files. Software components are required final state, not @@ -798,7 +798,7 @@ become top-level authored `vulnerabilities`. `runtime.service_manager_units` records observed service-manager unit lifecycle state — what `systemctl` exposes from inside a realized range node. -Each entry carries a stable ACES `unit_id`, a `manager_kind` (initially +Each entry carries a stable RAES `unit_id`, a `manager_kind` (initially `systemd`, with `other` reserved), the native `unit_name` such as `sshd.service`, a `unit_type` (`service`/`socket`/`target`/`timer`/`path`/ `mount`/`automount`/`swap`/`device`/`slice`/`scope`/`other`), and the @@ -1044,7 +1044,7 @@ SCIM, SAML, OIDC, or IAM schema clone. Each authority has a stable same-node `Node.services[].name` transport bindings; identity-bearing subjects; policies; and typed relationships for membership, trust, federation, delegation, ownership, synchronization, and association. Stable -ACES ids (`identity_authority_id`, `service_id`, `subject_id`, `policy_id`, and +RAES ids (`identity_authority_id`, `service_id`, `subject_id`, `policy_id`, and `relationship_id`) are the portable reference surface and must be unique across the owning authority's local namespace. Provider-stable object identifiers remain observed data: use the specific field when one exists diff --git a/docs/explain/sdl/validation.md b/docs/explain/sdl/validation.md index 588c21f6f..076120c05 100644 --- a/docs/explain/sdl/validation.md +++ b/docs/explain/sdl/validation.md @@ -18,7 +18,7 @@ becoming a validator-only interpretation of the SDL. These checks have translated algorithmic ancestry in OCR v0.21.2 `Scenario::formalize()` at revision `fe83e8281fc4b954967fbaa5a0d099007ddcb06c`; current behavior is governed by -ACES validators and is not claimed compatible with the OCR implementation. +RAES validators and is not claimed compatible with the OCR implementation. | Pass | What It Checks | |------|----------------| @@ -265,7 +265,7 @@ roles, node-endpoint roles, persistence eviction policies, replication strategies, transport-security modes, and setting scope/provenance/classification are normalized from bounded enums while allowing full-value variables. Native cluster/index UUIDs are observed datastore facts, not SDL reference identities; -references continue to target the stable ACES ids. Count and byte fields on +references continue to target the stable RAES ids. Count and byte fields on clusters and partitions accept only non-negative integers or full-value variables, keeping document cardinality and byte-normalized store size distinct from `datatype_census`. Node engine provenance is observed inventory: heap byte @@ -419,7 +419,7 @@ enum fields cannot drift on accepted spellings. The shared behavior is covered b ## Runtime enum sentinel convention -Runtime service-family enums (every `Enum` defined in an `aces_sdl` module whose +Runtime service-family enums (every `Enum` defined in an `raes` module whose name starts with `runtime_`, including the `*_vocab` and `*_definitions` modules) follow a single, executable sentinel convention: diff --git a/docs/index.md b/docs/index.md index 9830611c3..b504291a1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,21 +1,35 @@ -# RAES SDL Documentation - -**A backend-agnostic cyber range scenario description language and reference -implementation.** - -`raes` provides the RAES Python implementation for describing cyber -range scenarios and experiments, validating their authored meaning, compiling -runtime models, and checking published backend contracts. - -The repository is not a managed cyber range and does not ship production -backend implementations. It is a working codebase for testing language, -semantic, runtime, and assurance claims against source code, schemas, examples, -and tests. +# Reproducible Agentic Environments System + +Reproducible Agentic Environments System (RAES) describes, realizes, controls, +evaluates, and supports bounded reproduction of agentic environments. An +agentic environment is a declared and realized setting in which participants +receive observations, take actions, interact with resources or other +participants, and are evaluated under stated controls. + +Cyber, AI security, AI safety, testing, research, and evaluation are +non-exhaustive application areas. Additional domains can use the same +authored-intent, realization, participant, observation, evidence, provenance, +and conformance boundaries through their own profiles, assets, examples, and +backends. + +The current `raes` distribution provides RAES SDL, a Python reference +implementation, published contracts, examples, and assurance material. RAES +names the overall system; RAES SDL is the authored scenario language. The +reference implementation can validate authored meaning, instantiate and +compile runtime models, plan against backend manifests, and check published +backend contracts. + +The repository is not a managed environment service and does not ship +production backend implementations. It is a working codebase for evaluating +language, semantic, runtime, and assurance claims against source code, schemas, +examples, and tests. Its reproducibility surfaces support a bounded +reproduction attempt; they do not guarantee deterministic runtime behavior, +equal outcomes, exact replay, or reproducibility. ## Quick Start ```python -from aces_sdl import parse_sdl, parse_sdl_file +from raes import parse_sdl, parse_sdl_file # Parse from a string scenario = parse_sdl(yaml_string) @@ -43,6 +57,9 @@ for advisory in scenario.advisories: - New users can start with the getting-started guide to choose the smallest current entrypoint for their task and rigor level. +- Agentic-environment users can start with the glossary and reference map to + distinguish authored scenarios, realized environments, apparatus, evidence, + and conformance. - Scenario authors usually start with the SDL guide, sections reference, parser behavior, validation rules, and limitations. - Backend implementers usually start with runtime architecture, contract diff --git a/docs/lessons/README.md b/docs/lessons/README.md index ab5709ad8..7b2dd3aae 100644 --- a/docs/lessons/README.md +++ b/docs/lessons/README.md @@ -1,12 +1,12 @@ # Integration Lessons -This directory records integration findings from co-evolving ACES with -sibling research projects that consume the ACES contract surface as +This directory records integration findings from co-evolving RAES with +sibling research projects that consume the RAES contract surface as backends. The first consumer is APTL (`Brad-Edwards/aptl`, sibling repo at `../aptl`). It is not a decision log. ADRs continue to record decisions; this directory -records the **post-decision evidence** that emerges when ACES's published +records the **post-decision evidence** that emerges when RAES's published contracts, profiles, fixtures, and runtime model meet a real-world backend. Findings here can produce follow-up issues, amendments to existing ADRs, or new ADRs. The finding entry stays as the historical record. @@ -46,7 +46,7 @@ Each entry's frontmatter: ```markdown --- date: 2026-05-19 -side: ACES | APTL | both +side: RAES | APTL | both sibling_entry: follow_ups: - # — one-line description @@ -72,7 +72,7 @@ Body sections (use the ones that apply, omit the rest): `fix-in-backend`, `cross-repo-coordination`, `accept`, `escalate`. Do not use `defer` — record a `follow_ups` issue instead. - **Why this side** — when fix could have landed on either repo, why we - chose the one we did. ACES's bias should be toward fixing the contract + chose the one we did. RAES's bias should be toward fixing the contract surface (not papering over it in the backend), but evidence from the first backend integration is exactly the moment to question that bias. - **Follow-ups** — issues opened on each side, with cross-references. @@ -103,6 +103,6 @@ embodies them. `aces_backend_stubs` is the reference Python backend. When the same finding applies to both the reference stub and a real backend, prefer recording it -on the ACES side with `contract_impact` / `profile_impact` populated, and +on the RAES side with `contract_impact` / `profile_impact` populated, and cross-link the backend repo's entry only when the backend-specific adaptation cost is itself the lesson. diff --git a/docs/migration/raes-rename.md b/docs/migration/raes-rename.md index 67686954a..8d1e39d32 100644 --- a/docs/migration/raes-rename.md +++ b/docs/migration/raes-rename.md @@ -17,8 +17,8 @@ package distribution metadata, or guidance profile identifiers. Keep ACES only when the identifier is one of these surfaces: -- Python source package or import namespace that this issue does not rename, - such as `aces`, `aces_sdl`, `aces_mcp`, `aces_runtime`, or `aces_contracts` +- an internal owning package outside the SDL import cut, such as `aces_mcp`, + `aces_runtime`, or `aces_contracts` - governed SDL, schema, profile, fixture, provenance, or wire identifier whose rename requires a separate versioned contract migration - retained documentation path or asset-inventory reference that still has @@ -35,7 +35,8 @@ Keep ACES only when the identifier is one of these surfaces: | Documentation links | `Brad-Edwards/aces` current README/docs links | `RAESystem/rae` | Current README and docs config | Migrated for current user-facing links | Docs build | | Documentation paths | `docs/aces/` | `docs/aces/` | Documentation tree | Retained path/reference area, not a command alias | Docs build and existing path tests | | Python distribution | `aces-sdl` | `raes` | `implementations/python/pyproject.toml` | Renamed for new PyPI publication | Version and corpus packaging tests | -| Python import packages | `aces`, `aces_sdl`, `aces_mcp`, `aces_runtime`, `aces_contracts`, other `aces_*` packages | Retained source package names | Python package owners | Not renamed by issue #866 | Existing import, module-boundary, and package tests | +| Canonical Python SDL import | `aces_sdl` | `raes` | SDL package owner | Hard cut by #884; no alias or shim | Source import tests plus isolated wheel/sdist tests | +| Other internal Python packages | `aces_mcp`, `aces_runtime`, `aces_contracts`, other owning `aces_*` packages | Retained internal owner names | Python package owners | Outside #884 | Existing module-boundary and package tests | | CLI command | `aces` | `raes` | `aces_cli` | Old console script removed | CLI version/help and installed-wheel tests | | MCP server command | `aces-mcp` | `raes-mcp` | `aces_mcp` | Old console script removed | Packaging and MCP construction tests | | MCP server id | `aces-sdl` | `raes` | `aces_mcp.server` | Migrated emitted server name | MCP server construction tests | @@ -61,12 +62,20 @@ New MCP clients should start with `raes_tool_surface`, then call `aces_tool_surface`, `aces_agent_guidance`, `aces_intended_use_profiles`, and `aces_reference_manifests`; those tools are no longer registered. -Use `raes` for new PyPI publication and downstream package pins. The -source import packages remain `aces_*` in this issue's implementation, so Python -examples keep imports such as `from aces_sdl import parse_sdl_file` until a -separate module-namespace migration changes that API. +Use `raes` for PyPI publication, downstream package pins, and the canonical SDL +import: -Do not rename SDL fields, schema ids, wire discriminators, source import -packages, or published contract identifiers as part of ordinary prose cleanup. -Those surfaces require separate contract or module-boundary migrations with -their own fixtures, compatibility analysis, and verification evidence. +```python +from raes import parse_sdl_file +``` + +The old `aces_sdl` namespace is not installed and has no compatibility alias, +shim, fallback import, or namespace-package residue. Code using that import must +change before upgrading. This package-boundary cut is released as version +1.0.0. + +Do not rename SDL fields, schema ids, wire discriminators, other internal +owning packages, or published contract identifiers as part of ordinary prose +cleanup. Those surfaces require separate contract or module-boundary +migrations with their own fixtures, compatibility analysis, and verification +evidence. diff --git a/docs/research/participant-io-control/current-state-assessment.md b/docs/research/participant-io-control/current-state-assessment.md index 7c9b21131..30ab7a711 100644 --- a/docs/research/participant-io-control/current-state-assessment.md +++ b/docs/research/participant-io-control/current-state-assessment.md @@ -79,9 +79,9 @@ section-per-UID implementation mappings. Implementation exists in: -- `implementations/python/packages/aces_sdl/participant_behavior.py` and +- `implementations/python/packages/raes/participant_behavior.py` and `participant_action_semantics.py`; -- `implementations/python/packages/aces_sdl/semantics/participant_behavior.py`; +- `implementations/python/packages/raes/semantics/participant_behavior.py`; - `implementations/python/packages/aces_processor/compiler/` and `aces_processor/models/`; - `implementations/python/packages/aces_contracts/contracts/`; and @@ -206,7 +206,7 @@ capability booleans are added. ### Orchestration injects: DSL-111 -`aces_sdl/orchestration.py` defines `Inject`; scenario, composition, validation, +`raes/orchestration.py` defines `Inject`; scenario, composition, validation, planning, compilation, published schemas, and tests preserve inject/event/ script/story identity and schedule. These are orchestration resources. They do not bind a participant addressee, observation boundary, authorization, diff --git a/docs/research/scoring-scope/scoring-surface-inventory.md b/docs/research/scoring-scope/scoring-surface-inventory.md index 589f53bcb..fa18800b5 100644 --- a/docs/research/scoring-scope/scoring-surface-inventory.md +++ b/docs/research/scoring-scope/scoring-surface-inventory.md @@ -37,8 +37,8 @@ chain. - **Schema**: `contracts/schemas/sdl/sdl-authoring-input-v1.json` (`$defs.Metric`, `$defs.MetricType` = `manual` | `conditional`, `$defs.MinScore`), mirrored in `instantiated-scenario-v1.json`. -- **Model**: `implementations/python/packages/aces_sdl/scoring.py` (`Metric`), - container `aces_sdl/scenario.py`. Cross-field validator forbids `condition` +- **Model**: `implementations/python/packages/raes/scoring.py` (`Metric`), + container `raes/scenario.py`. Cross-field validator forbids `condition` on manual metrics and requires it on conditional metrics. - **Meaning**: a scored quantity — `max_score`, plus either a human-graded `artifact` (manual) or a `condition` reference (conditional). A metric is a @@ -48,7 +48,7 @@ chain. - **Schema**: `$defs.Evaluation` in `sdl-authoring-input-v1.json` (`metrics` list, `min_score`). -- **Model**: `aces_sdl/scoring.py` (`Evaluation`, `MinScore` with exclusive +- **Model**: `raes/scoring.py` (`Evaluation`, `MinScore` with exclusive `absolute` / `percentage`). - **Meaning**: a pass/fail threshold over a group of metrics. This is a grading rule applied to accumulated scores. @@ -57,7 +57,7 @@ chain. - **Schema**: `$defs.TLO` in `sdl-authoring-input-v1.json` (`evaluation` reference, required). -- **Model**: `aces_sdl/scoring.py` (`TLO`); docstring defines TLO as +- **Model**: `raes/scoring.py` (`TLO`); docstring defines TLO as "Training Learning Objective." (Note: the term is *training* learning objective, an exercise-grading construct, not "terminal" learning objective.) - **Meaning**: a training-exercise learning objective linked to one @@ -66,7 +66,7 @@ chain. ### 4. `goals` - **Schema**: `$defs.Goal` in `sdl-authoring-input-v1.json` (`tlos` list). -- **Model**: `aces_sdl/scoring.py` (`Goal`). +- **Model**: `raes/scoring.py` (`Goal`). - **Meaning**: a high-level exercise goal composed of TLOs. The top of the grading tree. @@ -74,9 +74,9 @@ chain. - **Schema**: `$defs.Agent.reward_calculator` — a plain string with default `""`, no `$ref`. -- **Model**: `aces_sdl/agents.py` (`Agent.reward_calculator: str = ""`). This +- **Model**: `raes/agents.py` (`Agent.reward_calculator: str = ""`). This is the **only** occurrence, and there is **no cross-reference validator** for - it anywhere under `aces_sdl/validator/` — unlike every other surface in this + it anywhere under `raes/validator/` — unlike every other surface in this inventory, it is an unresolved free-text label. - **Meaning**: names a CybORG reward-calculator class (e.g. `HybridImpactPwn`, `SupplyChainImpact`). It selects training/scoring @@ -88,7 +88,7 @@ chain. ### The bridge: `objectives.success` `objectives` is an in-horizon surface (ADR-002), but its success model -(`$defs.ObjectiveSuccess`, `aces_sdl/objectives.py`) currently lets an objective +(`$defs.ObjectiveSuccess`, `raes/objectives.py`) currently lets an objective succeed on **either** observable state (`conditions`) **or** the score-shaped surfaces (`metrics` / `evaluations` / `tlos` / `goals`). This is the seam where the scoring pipeline reaches into the participant-facing surface. The validator @@ -99,7 +99,7 @@ a scenario can express objective success purely in grading terms. - **Schema**: `$defs.Condition` in `sdl-authoring-input-v1.json` (command + interval form, or `source` form). -- **Model**: `aces_sdl/conditions.py` (`Condition`). +- **Model**: `raes/conditions.py` (`Condition`). - **Meaning**: an observable state fact about the run ("web-alive", "OTService available"). This is exactly the class of signal the discriminator keeps in scope: it describes the state of the environment that participants diff --git a/docs/research/specification-coverage/analysis-v1.1.json b/docs/research/specification-coverage/analysis-v1.1.json index 1f2a6126c..d68c2ebd9 100644 --- a/docs/research/specification-coverage/analysis-v1.1.json +++ b/docs/research/specification-coverage/analysis-v1.1.json @@ -2,7 +2,7 @@ "analysis_id": "aces-standardized-specification-coverage-analysis-v1.1", "protocol_revision": "1.0.0", "snapshot_id": "aces-standardized-specification-coverage-9347f64-v1", - "snapshot_sha256": "98ec0acf2d2e65a5afdb763806b0b51bdad3cad83099bbdad6cc2cfffb4c7c56", + "snapshot_sha256": "6c8551e4341abcbb26408ba5898fda26a1c7a4c096d0c5433f44818c10c29045", "generated_at": "2026-07-19", "execution_status": "complete", "classification_counts": { diff --git a/docs/research/specification-coverage/analysis-v1.json b/docs/research/specification-coverage/analysis-v1.json index 76d04044a..741623595 100644 --- a/docs/research/specification-coverage/analysis-v1.json +++ b/docs/research/specification-coverage/analysis-v1.json @@ -2,7 +2,7 @@ "analysis_id": "aces-standardized-specification-coverage-analysis-v1", "protocol_revision": "1.0.0", "snapshot_id": "aces-standardized-specification-coverage-8bf12ee-v1", - "snapshot_sha256": "bb14803a09677ee34eb3696fdf1b2ca8edbdf9a7043c5ab90df6cd95005077bd", + "snapshot_sha256": "c055119e33a6825fe953fc7130a298dc610dc7eb9d17420c2006c5495d95b749", "generated_at": "2026-07-17", "execution_status": "complete", "classification_counts": { diff --git a/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-8bf12ee-v1.json b/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-8bf12ee-v1.json index c330fe477..03fca0059 100644 --- a/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-8bf12ee-v1.json +++ b/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-8bf12ee-v1.json @@ -4,7 +4,7 @@ "protocol_path": "docs/research/specification-coverage/protocol-v1.json", "protocol_sha256": "e97a19e643e94c9e589dca823a63c6ce49d3329fe2a3cb888ab630838ed93125", "snapshot_path": "docs/research/specification-coverage/execution-snapshot-v1.json", - "snapshot_sha256": "5ac50ae21b8a7c78fb8ea032e351f2af02792452f327f5864dd97d8bf867e3a7", + "snapshot_sha256": "e88617c6b378b4c11e63bcc23039fa81d0e0fd1a2211180c6dfa6b902159f8aa", "analysis_path": "docs/research/specification-coverage/analysis-v1.json", - "analysis_sha256": "913e6b361e365cae127e089e79bc3827c6bff84f63c98dd5e77fd335704b345f" + "analysis_sha256": "c4c2308607e12741e1dc43f518f9313095b7882849b5fdd5c408b54f86a0032b" } diff --git a/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-9347f64-v1.json b/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-9347f64-v1.json index 4034e5427..315cf677f 100644 --- a/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-9347f64-v1.json +++ b/docs/research/specification-coverage/bundles/aces-standardized-specification-coverage-9347f64-v1.json @@ -4,7 +4,7 @@ "protocol_path": "docs/research/specification-coverage/protocol-v1.json", "protocol_sha256": "e97a19e643e94c9e589dca823a63c6ce49d3329fe2a3cb888ab630838ed93125", "snapshot_path": "docs/research/specification-coverage/execution-snapshot-v1.1.json", - "snapshot_sha256": "7053646bc8eabe558ecf984e76740e2869eb18ce22c46066d50614fe3b27d137", + "snapshot_sha256": "5f8e060dc651021350dcee3e0e8bf03d2d5a25849c1fe6f760255ef286712119", "analysis_path": "docs/research/specification-coverage/analysis-v1.1.json", - "analysis_sha256": "299ff4cd378e9f01cb22c94fd8ac92d41a006025b79cff676cc564e2fb51e5d6" + "analysis_sha256": "c3cd8dd7faeb7d7ea69164e6fb9e9069b1e7c3cc3e28989b70a9a1fe56b86114" } diff --git a/docs/research/specification-coverage/execution-snapshot-v1.1.json b/docs/research/specification-coverage/execution-snapshot-v1.1.json index 69686a92d..ab031d801 100644 --- a/docs/research/specification-coverage/execution-snapshot-v1.1.json +++ b/docs/research/specification-coverage/execution-snapshot-v1.1.json @@ -28,7 +28,7 @@ "artifact_id": "enterprise-participant-sdl", "kind": "sdl", "path": "examples/scenarios/enterprise-participant-evidence-loop.sdl.yaml", - "sha256": "a9bb41af8acaece9d467faf80c7542c98369f064c61c0312fa8bd57bb527050b", + "sha256": "54ba1a60220e27a55da9cd2a407d7d3ab836fa54460d0b0c6cad87c2e744ddbb", "validator": "aces_sdl parse, semantic, instantiation/admission, and compiler pipeline" }, { @@ -63,7 +63,7 @@ "artifact_id": "known-limitations", "kind": "documentation", "path": "docs/explain/sdl/limitations.md", - "sha256": "8fd72ead4371fbb42da564587d8edf8f1815d99c81e8b7632ad9bfc8a41e32a4", + "sha256": "4a673316b341fd5beca10e3dd87aa35ba762e4668d78d1b48cb706074f0c720c", "validator": "documentation evidence only" } ], diff --git a/docs/research/specification-coverage/execution-snapshot-v1.json b/docs/research/specification-coverage/execution-snapshot-v1.json index 29c279600..32a64088a 100644 --- a/docs/research/specification-coverage/execution-snapshot-v1.json +++ b/docs/research/specification-coverage/execution-snapshot-v1.json @@ -28,7 +28,7 @@ "artifact_id": "enterprise-participant-sdl", "kind": "sdl", "path": "examples/scenarios/enterprise-participant-evidence-loop.sdl.yaml", - "sha256": "a9bb41af8acaece9d467faf80c7542c98369f064c61c0312fa8bd57bb527050b", + "sha256": "54ba1a60220e27a55da9cd2a407d7d3ab836fa54460d0b0c6cad87c2e744ddbb", "validator": "aces_sdl parse, semantic, instantiation/admission, and compiler pipeline" }, { @@ -63,7 +63,7 @@ "artifact_id": "known-limitations", "kind": "documentation", "path": "docs/explain/sdl/limitations.md", - "sha256": "8fd72ead4371fbb42da564587d8edf8f1815d99c81e8b7632ad9bfc8a41e32a4", + "sha256": "4a673316b341fd5beca10e3dd87aa35ba762e4668d78d1b48cb706074f0c720c", "validator": "documentation evidence only" } ], diff --git a/docs/specs/formal.md b/docs/specs/formal.md index 765c6e7cd..10f43051b 100644 --- a/docs/specs/formal.md +++ b/docs/specs/formal.md @@ -1,6 +1,6 @@ # Formal Specifications -Optional formal artifacts for ACES SDL semantic and stateful subsystems. +Optional formal artifacts for RAES SDL semantic and stateful subsystems. These specifications live under `specs/formal//` in the repository and cover the formally-verified properties of key subsystems. See diff --git a/examples/README.md b/examples/README.md index 29821c3a4..5d3ac6c0b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,9 +1,16 @@ # RAES Examples This directory contains non-normative worked examples, templates, and reusable -patterns. They are useful for reading, testing, and adapting current SDL -behavior. They are not conformance fixtures, schemas, deployment recipes, or -backend guarantees. +patterns for authoring agentic environments with RAES SDL. They are useful for +reading, testing, and adapting current SDL behavior. They are not conformance +fixtures, schemas, deployment recipes, or backend guarantees. + +The current corpus is strongest in cyber and infrastructure scenarios. Those +examples demonstrate the domain-neutral authored-scenario model; they do not +limit RAES to cyber or prove complete support for AI security, AI safety, +testing, research, evaluation, or any additional domain. Future application +areas extend through their own examples, vocabularies, profiles, assets, +backends, and evidence requirements. ## Current Corpus @@ -54,7 +61,7 @@ For one file, use the parser boundary directly: ```python from pathlib import Path -from aces_sdl import parse_sdl_file +from raes import parse_sdl_file scenario = parse_sdl_file( Path("../../examples/scenarios/port-authority-surge-response.sdl.yaml") diff --git a/examples/library/catalog.yaml b/examples/library/catalog.yaml index 12fb5ea82..dc296bb3d 100644 --- a/examples/library/catalog.yaml +++ b/examples/library/catalog.yaml @@ -6,9 +6,12 @@ source_refs: - docs/explain/getting-started.md - docs/explain/reference/canonical-reference-map.md description: > - Non-normative, validated authoring library for current ACES examples, - templates, and reusable patterns. Template bodies use current SDL so they can - be parsed and semantically validated by the Python reference implementation. + Domain-neutral RAES agentic-environment authoring library for non-normative, + validated examples, templates, and reusable patterns. Current examples are + strongest in cyber; additional domains extend through their own profiles, + assets, backends, and evidence requirements. Template bodies use current SDL + so they can be parsed and semantically validated by the Python reference + implementation. surfaces: scenario: summary: Complete scenario authoring from topology through objective flow. diff --git a/examples/scenarios/enterprise-participant-evidence-loop.README.md b/examples/scenarios/enterprise-participant-evidence-loop.README.md index 35d094990..d6bcde026 100644 --- a/examples/scenarios/enterprise-participant-evidence-loop.README.md +++ b/examples/scenarios/enterprise-participant-evidence-loop.README.md @@ -1,6 +1,6 @@ # Enterprise Participant Evidence Loop -`enterprise-participant-evidence-loop.sdl.yaml` is the ACES reference scenario for the +`enterprise-participant-evidence-loop.sdl.yaml` is the RAES reference scenario for the authored SDL -> processor -> runtime -> backend handoff. It is a generic enterprise slice: a red participant workbench, a DMZ customer portal, an internal database, a Wazuh evidence surface, and optional participant policy @@ -93,7 +93,7 @@ a new backend manifest shape, or APTL-private keys inside the scenario body. libvirt evidence validate`) produces a stable, validated evaluator-evidence run artifact for this scenario — `aces.libvirt.scenario-evidence-run/v1`, written to `runs//scenario-evidence/libvirt-scenario-evidence-run.json`. It composes the -existing ACES surfaces (libvirt deterministic participant runtime #614, native +existing RAES surfaces (libvirt deterministic participant runtime #614, native substrate realization #601, backend manifest/capability contracts, and the experiment/evaluation contracts) into one artifact carrying scenario+compiled identity, backend manifest/capability profile and realization provenance, the @@ -141,7 +141,7 @@ appliances — and its participant runtime is deterministic (#614), so: - the **participant action proof** is structural (deterministic domain adapter), disclosed as such. -The claim is narrow: ACES can compile the same authored scenario and execute its +The claim is narrow: RAES can compile the same authored scenario and execute its deterministic participant contract while honestly disclosing that the full guest/application provisioning plane is not realized by the libvirt TechVault mode. A separate bounded scenario demonstrates an independent VM/network @@ -152,16 +152,16 @@ semantic equivalence. ## Downstream Links -- ACES issue: Brad-Edwards/aces#598 +- RAES issue: Brad-Edwards/aces#598 - Participant implementation binding: Brad-Edwards/aces#599 -- ACES n=2 backend proof: Brad-Edwards/aces#600 +- RAES n=2 backend proof: Brad-Edwards/aces#600 (corpus: `examples/corpus/reference-demonstration/`) - Libvirt participant runtime: Brad-Edwards/aces#614 - Libvirt evaluator/Wazuh evidence readback: Brad-Edwards/aces#615 - APTL realization and proof: Brad-Edwards/aptl#556, Brad-Edwards/aptl#557, Brad-Edwards/aptl#558 -This ACES scenario supplies the authored scenario that downstream APTL and +This RAES scenario supplies the authored scenario that downstream APTL and libvirt proof issues can consume. ## Limitations diff --git a/examples/scenarios/enterprise-participant-evidence-loop.sdl.yaml b/examples/scenarios/enterprise-participant-evidence-loop.sdl.yaml index 499bda883..8211b506b 100644 --- a/examples/scenarios/enterprise-participant-evidence-loop.sdl.yaml +++ b/examples/scenarios/enterprise-participant-evidence-loop.sdl.yaml @@ -497,7 +497,7 @@ outcome_interpretation_rules: target_layer: scenario_meaning ref: reference-demonstration relation: > - Shows that ACES can represent participant, target, internal + Shows that RAES can represent participant, target, internal dependency, OSS defender evidence, policy provenance, evaluator evidence, and observation boundaries in one focused enterprise slice. evidence_refs: diff --git a/examples/scenarios/techvault-operational.sdl.yaml b/examples/scenarios/techvault-operational.sdl.yaml index 16970d133..39c9fa895 100644 --- a/examples/scenarios/techvault-operational.sdl.yaml +++ b/examples/scenarios/techvault-operational.sdl.yaml @@ -1,6 +1,6 @@ name: techvault description: > - Operational ACES projection for the TechVault range. This SDL is the public + Operational RAES projection for the TechVault range. This SDL is the public startup contract: it names the steady-state services and networks that the full live TechVault smoke realizes without carrying the deep per-asset inventory encoded in examples/scenarios/techvault.sdl.yaml. diff --git a/examples/scenarios/techvault.sdl.yaml b/examples/scenarios/techvault.sdl.yaml index 1d1cad285..5639989d8 100644 --- a/examples/scenarios/techvault.sdl.yaml +++ b/examples/scenarios/techvault.sdl.yaml @@ -1,5 +1,5 @@ name: techvault-runtime-parity -description: TechVault webapp runtime facts used to exercise ACES SDL runtime inventory +description: TechVault webapp runtime facts used to exercise RAES SDL runtime inventory parity. nodes: techvault-webapp: diff --git a/implementations/python/packages/aces_cli/processor.py b/implementations/python/packages/aces_cli/processor.py index a7246b61b..e12026894 100644 --- a/implementations/python/packages/aces_cli/processor.py +++ b/implementations/python/packages/aces_cli/processor.py @@ -36,8 +36,8 @@ SatisfiabilityOperationalError, analyze_scenario_file, ) -from aces_sdl import SDLError, SDLInstantiationError, SDLParseError, SDLValidationError from pydantic import ValidationError +from raes import SDLError, SDLInstantiationError, SDLParseError, SDLValidationError app = typer.Typer(help="Processor declarations and compatibility surfaces.") diff --git a/implementations/python/packages/aces_cli/sdl.py b/implementations/python/packages/aces_cli/sdl.py index cd0bd4b95..87f6072ee 100644 --- a/implementations/python/packages/aces_cli/sdl.py +++ b/implementations/python/packages/aces_cli/sdl.py @@ -6,14 +6,14 @@ from pathlib import Path import typer -from aces_sdl import SDLParseError, format_sdl_source -from aces_sdl.module_registry import ( +from raes import SDLParseError, format_sdl_source +from raes.module_registry import ( LOCKFILE_NAME, load_lockfile, publish_module_to_oci_layout, resolve_lock_records, ) -from aces_sdl.parser import parse_sdl_file +from raes.parser import parse_sdl_file app = typer.Typer(help="SDL composition and packaging.") diff --git a/implementations/python/packages/aces_conformance/realization.py b/implementations/python/packages/aces_conformance/realization.py index f8583dc95..3fe0f618e 100644 --- a/implementations/python/packages/aces_conformance/realization.py +++ b/implementations/python/packages/aces_conformance/realization.py @@ -10,13 +10,13 @@ from aces_contracts.realization_envelope import BackendRealizationEnvelopeModel from aces_processor.reference import run_reference_processor from aces_runtime.registry import RuntimeTarget -from aces_sdl.realization_envelope import ( +from raes.realization_envelope import ( NegativeProbe, PositiveProbe, generate_negative_probes, generate_positive_probes, ) -from aces_sdl.scenario import Scenario +from raes.scenario import Scenario from ._realization_models import ( ExecutionBasis, diff --git a/implementations/python/packages/aces_contracts/associated_artifacts.py b/implementations/python/packages/aces_contracts/associated_artifacts.py index f575bade9..4e5a23581 100644 --- a/implementations/python/packages/aces_contracts/associated_artifacts.py +++ b/implementations/python/packages/aces_contracts/associated_artifacts.py @@ -9,9 +9,9 @@ from typing import BinaryIO, cast import rfc8785 -from aces_sdl import canonical_sdl_digest -from aces_sdl.scenario import Scenario from blake3 import blake3 +from raes import canonical_sdl_digest +from raes.scenario import Scenario from .contracts import ( AssociatedArtifactManifestModel, diff --git a/implementations/python/packages/aces_contracts/contracts/bundle.py b/implementations/python/packages/aces_contracts/contracts/bundle.py index 90de1b960..3962e4791 100644 --- a/implementations/python/packages/aces_contracts/contracts/bundle.py +++ b/implementations/python/packages/aces_contracts/contracts/bundle.py @@ -6,8 +6,8 @@ from functools import cache from typing import Any -from aces_sdl.canonical import InstantiatedScenarioSnapshot -from aces_sdl.scenario import InstantiatedScenario, Scenario +from raes.canonical import InstantiatedScenarioSnapshot +from raes.scenario import InstantiatedScenario, Scenario from .associated_artifacts import AssociatedArtifactManifestModel from .catalogs import ( diff --git a/implementations/python/packages/aces_contracts/contracts/participant_control.py b/implementations/python/packages/aces_contracts/contracts/participant_control.py index 5c9b1da38..f6d883092 100644 --- a/implementations/python/packages/aces_contracts/contracts/participant_control.py +++ b/implementations/python/packages/aces_contracts/contracts/participant_control.py @@ -5,10 +5,10 @@ from enum import Enum from typing import Annotated, Literal -from aces_sdl.participant_behavior_specification import MixedControlTransitionKind from pydantic import Field, GetJsonSchemaHandler, field_validator, model_validator from pydantic.json_schema import JsonSchemaValue from pydantic_core import CoreSchema +from raes.participant_behavior_specification import MixedControlTransitionKind from .base import ( ContractModel, diff --git a/implementations/python/packages/aces_contracts/contracts/participant_runtime.py b/implementations/python/packages/aces_contracts/contracts/participant_runtime.py index 3f69a990a..43ba220fc 100644 --- a/implementations/python/packages/aces_contracts/contracts/participant_runtime.py +++ b/implementations/python/packages/aces_contracts/contracts/participant_runtime.py @@ -4,26 +4,26 @@ from typing import Any, Literal -from aces_sdl.participant_attribution_semantics import ( +from pydantic import Field, StrictInt, model_validator +from raes.participant_attribution_semantics import ( ParticipantAttributionCandidateKind, ParticipantAttributionOrderingBasisKind, ParticipantAttributionSupportClass, ) -from aces_sdl.participant_behavior import ( +from raes.participant_behavior import ( ParticipantEffectClass, ParticipantFailureClass, ParticipantInteractionClass, ParticipantPreconditionClass, ) -from aces_sdl.participant_outcome_semantics import ( +from raes.participant_outcome_semantics import ( OutcomeInterpretationSourceLayer, OutcomeInterpretationTargetLayer, ) -from aces_sdl.participant_temporal_semantics import ( +from raes.participant_temporal_semantics import ( ParticipantTemporalEventPoint, ParticipantTimeDomain, ) -from pydantic import Field, StrictInt, model_validator from ..participant_behavior import ( ParticipantAdmissionDisposition, diff --git a/implementations/python/packages/aces_contracts/contracts/participant_views.py b/implementations/python/packages/aces_contracts/contracts/participant_views.py index 47e8bf1c4..272d3e37f 100644 --- a/implementations/python/packages/aces_contracts/contracts/participant_views.py +++ b/implementations/python/packages/aces_contracts/contracts/participant_views.py @@ -4,10 +4,10 @@ from typing import Any, Literal -from aces_sdl.participant_behavior import ParticipantInteractionClass from pydantic import Field, GetJsonSchemaHandler, StrictInt, model_validator from pydantic.json_schema import JsonSchemaValue from pydantic_core import CoreSchema +from raes.participant_behavior import ParticipantInteractionClass from ..participant_behavior import ( ParticipantAdmissionDisposition, diff --git a/implementations/python/packages/aces_contracts/contracts/random_stream.py b/implementations/python/packages/aces_contracts/contracts/random_stream.py index 29aea26af..01dd3ed0d 100644 --- a/implementations/python/packages/aces_contracts/contracts/random_stream.py +++ b/implementations/python/packages/aces_contracts/contracts/random_stream.py @@ -25,10 +25,10 @@ from typing import Annotated, Literal -from aces_sdl.identifiers import PortableIdentifier from pydantic import Field, GetJsonSchemaHandler, model_validator from pydantic.json_schema import JsonSchemaValue from pydantic_core import CoreSchema +from raes.identifiers import PortableIdentifier from ..versions import RANDOM_STREAM_PROFILE_SCHEMA_VERSION, RANDOM_STREAM_VECTOR_SCHEMA_VERSION from .base import ContractModel, NonEmptyString, NonNegativeInteger, PositiveInteger, SemanticProfileId diff --git a/implementations/python/packages/aces_contracts/contracts/realization_plans.py b/implementations/python/packages/aces_contracts/contracts/realization_plans.py index b028b4a10..ebf6a1676 100644 --- a/implementations/python/packages/aces_contracts/contracts/realization_plans.py +++ b/implementations/python/packages/aces_contracts/contracts/realization_plans.py @@ -4,8 +4,8 @@ from typing import Annotated, Any, Literal -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance from pydantic import Field, model_validator +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance from ..addressing import CompiledAddress from ..planning import RuntimeDomain, require_plan_operation_identity diff --git a/implementations/python/packages/aces_contracts/contracts/schema_constraints.py b/implementations/python/packages/aces_contracts/contracts/schema_constraints.py index ee9476d28..5839770b2 100644 --- a/implementations/python/packages/aces_contracts/contracts/schema_constraints.py +++ b/implementations/python/packages/aces_contracts/contracts/schema_constraints.py @@ -7,15 +7,15 @@ from functools import cache from typing import Any, Literal -from aces_sdl import VARIABLE_TOKEN_PATTERN -from aces_sdl.identifiers import PORTABLE_IDENTIFIER_JSON_SCHEMA, QUALIFIED_IDENTIFIER_MAX_LENGTH -from aces_sdl.schema_catalogs import ( +from pydantic import Field +from raes import VARIABLE_TOKEN_PATTERN +from raes.identifiers import PORTABLE_IDENTIFIER_JSON_SCHEMA, QUALIFIED_IDENTIFIER_MAX_LENGTH +from raes.schema_catalogs import ( HASHMAP_SECTIONS, RUNTIME_SERVICE_FAMILIES, RuntimeReferenceChild, ) -from aces_sdl.value_parsing import VARIABLE_REFERENCE_SCHEMA_MARKER -from pydantic import Field +from raes.value_parsing import VARIABLE_REFERENCE_SCHEMA_MARKER from ..addressing import COMPILED_ADDRESS_JSON_SCHEMA from ..planning import PLAN_ADDRESS_ROOT_BY_DOMAIN, PLAN_RESOURCE_TYPES_BY_DOMAIN, RuntimeDomain diff --git a/implementations/python/packages/aces_contracts/contracts/schema_invariants.py b/implementations/python/packages/aces_contracts/contracts/schema_invariants.py index 5a195f697..ede1102f2 100644 --- a/implementations/python/packages/aces_contracts/contracts/schema_invariants.py +++ b/implementations/python/packages/aces_contracts/contracts/schema_invariants.py @@ -4,8 +4,8 @@ from typing import Any -from aces_sdl.observability_plane_semantics import classify_contract_plane from pydantic.json_schema import JsonSchemaValue +from raes.observability_plane_semantics import classify_contract_plane from .base import _ACES_SEMANTIC_INVARIANT_PROFILE_URI @@ -44,7 +44,7 @@ def _add_aces_plane(json_schema: JsonSchemaValue, contract_id: str) -> None: Plane ownership is sourced from the carrier-oriented classifier so the portable ``x-aces-plane`` annotation cannot drift from - ``aces_sdl.observability_plane_semantics`` (ADR-066 / SEM-224). + ``raes.observability_plane_semantics`` (ADR-066 / SEM-224). """ json_schema["x-aces-plane"] = classify_contract_plane(contract_id).value @@ -141,7 +141,7 @@ def _attach_stateful_resource_invariants(contract_id: str, json_schema: dict[str "stateful-generated-artifact-semantics", "Generated artifact output names and paths, consumers, and dependency entries must be unique, and " "generated artifact consumers must be read-only.", - validator="aces_sdl.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers", + validator="raes.stateful_resources.GeneratedArtifact._unique_outputs_and_consumers", inputs=input_contract, ) _add_aces_invariant( @@ -149,7 +149,7 @@ def _attach_stateful_resource_invariants(contract_id: str, json_schema: dict[str "stateful-persistent-volume-semantics", "Persistent volume consumers and dependency entries must be unique and access cardinality must match " "the declared portable access mode.", - validator="aces_sdl.stateful_resources.PersistentVolume._unique_consumers", + validator="raes.stateful_resources.PersistentVolume._unique_consumers", inputs=input_contract, ) _add_aces_invariant( @@ -157,7 +157,7 @@ def _attach_stateful_resource_invariants(contract_id: str, json_schema: dict[str "stateful-cross-resource-semantics", "Stateful resource consumers and dependencies must resolve unambiguously, use the POSIX v1 path dialect, " "and must not collide on a consumer node mount destination.", - validator="aces_sdl._stateful_resource_references.stateful_resource_reference_errors", + validator="raes._stateful_resource_references.stateful_resource_reference_errors", inputs=input_contract, ) @@ -196,7 +196,7 @@ def _attach_initial_service_state_invariants(contract_id: str, json_schema: dict "initial-service-state-semantics", "Service-target content must resolve to one named service, retain exact tenant/reset ownership and " "content ordering, and bind observed-state postconditions to participant observation boundaries.", - validator="aces_sdl.validator.SemanticValidator._verify_service_materialization", + validator="raes.validator.SemanticValidator._verify_service_materialization", inputs=[{"contract_id": contract_id, "instance_path": "#"}], ) diff --git a/implementations/python/packages/aces_contracts/exploit_path.py b/implementations/python/packages/aces_contracts/exploit_path.py index 4443ccb30..3630e9ece 100644 --- a/implementations/python/packages/aces_contracts/exploit_path.py +++ b/implementations/python/packages/aces_contracts/exploit_path.py @@ -7,11 +7,11 @@ from typing import Annotated, Literal import rfc8785 -from aces_sdl.canonical import InstantiatedScenarioSnapshot, canonical_instantiated_sdl_digest -from aces_sdl.phase_contracts import SemanticDigest from pydantic import Field, GetJsonSchemaHandler, model_validator from pydantic.json_schema import JsonSchemaValue from pydantic_core import CoreSchema +from raes.canonical import InstantiatedScenarioSnapshot, canonical_instantiated_sdl_digest +from raes.phase_contracts import SemanticDigest from .contracts.base import ContractModel, PrefixedDigestString from .contracts.schema_invariants import _add_aces_invariant diff --git a/implementations/python/packages/aces_contracts/random_stream_engine.py b/implementations/python/packages/aces_contracts/random_stream_engine.py index deba797bd..56c005ed5 100644 --- a/implementations/python/packages/aces_contracts/random_stream_engine.py +++ b/implementations/python/packages/aces_contracts/random_stream_engine.py @@ -14,7 +14,7 @@ pair; pure function, no shared state. (This binding's Python API exposes the same key-derivation mode via ``blake3.blake3(derive_key_context=...)``.) * ``address_bytes = canonical_jcs_bytes(StreamAddressModel)`` via the RFC - 8785/JCS canonical-bytes pattern (``aces_sdl/canonical.py``). + 8785/JCS canonical-bytes pattern (``raes/canonical.py``). * ``block = blake3.blake3(address_bytes, key=stream_key).digest(length=BLOCK_BYTES, seek=local_coordinate * BLOCK_BYTES)``. * Bounded-integer transforms consume the block via rejection sampling diff --git a/implementations/python/packages/aces_contracts/random_stream_profiles.py b/implementations/python/packages/aces_contracts/random_stream_profiles.py index ee8b261a0..cb7037eb0 100644 --- a/implementations/python/packages/aces_contracts/random_stream_profiles.py +++ b/implementations/python/packages/aces_contracts/random_stream_profiles.py @@ -3,7 +3,7 @@ Random-stream profiles live under ``contracts/profiles/random-stream/*.json`` (ADR-009/019/061 normative corpus). Mirrors ``semantic_profiles.py``, but hardened per the EXP-718 preflight's "Normative profile and corpus gate": -the profile id is validated against ``aces_sdl``'s portable-identifier +the profile id is validated against ``raes``'s portable-identifier grammar *before* any path is constructed, and unsupported ids are rejected explicitly rather than allowed to 404 (or path-traverse) through the corpus loader. @@ -15,7 +15,7 @@ from functools import cache from pathlib import Path -from aces_sdl.identifiers import is_portable_identifier +from raes.identifiers import is_portable_identifier from .contracts import RandomStreamProfileModel from .corpus import PROFILES, corpus_family_root diff --git a/implementations/python/packages/aces_contracts/realization_envelope.py b/implementations/python/packages/aces_contracts/realization_envelope.py index eb1548e8d..94fa0b1a2 100644 --- a/implementations/python/packages/aces_contracts/realization_envelope.py +++ b/implementations/python/packages/aces_contracts/realization_envelope.py @@ -4,7 +4,7 @@ SDL scenario instances. The same expression is used in both directions: an author describes an acceptable scenario family, and a backend describes the family it can realize. The membership / subsumption / witness / negative-probe relation over -this contract lives in :mod:`aces_sdl.realization_envelope`. +this contract lives in :mod:`raes.realization_envelope`. The model is deliberately *closed* (``extra="forbid"`` plus a finite discriminated union of domain kinds). That closedness is the portability guarantee of diff --git a/implementations/python/packages/aces_contracts/runtime_state.py b/implementations/python/packages/aces_contracts/runtime_state.py index c46a799f9..d127e01d0 100644 --- a/implementations/python/packages/aces_contracts/runtime_state.py +++ b/implementations/python/packages/aces_contracts/runtime_state.py @@ -7,7 +7,7 @@ from enum import Enum from typing import TYPE_CHECKING, Any -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance from aces_contracts.addressing import require_compiled_address from aces_contracts.diagnostics import Diagnostic diff --git a/implementations/python/packages/aces_contracts/satisfiability.py b/implementations/python/packages/aces_contracts/satisfiability.py index 289eea1c2..c51f58bb7 100644 --- a/implementations/python/packages/aces_contracts/satisfiability.py +++ b/implementations/python/packages/aces_contracts/satisfiability.py @@ -8,13 +8,13 @@ from typing import Annotated, Literal import rfc8785 -from aces_sdl.canonical import ( +from pydantic import Field, model_validator +from raes.canonical import ( INSTANTIATED_SNAPSHOT_PROFILE, InstantiatedScenarioSnapshot, canonical_instantiated_sdl_digest, ) -from aces_sdl.phase_contracts import ResolvedImportProvenance, SemanticDigest -from pydantic import Field, model_validator +from raes.phase_contracts import ResolvedImportProvenance, SemanticDigest from .contracts.base import ContractModel, PrefixedDigestString from .diagnostics import DiagnosticModel diff --git a/implementations/python/packages/aces_contracts/workflow.py b/implementations/python/packages/aces_contracts/workflow.py index e501afbc6..ffe5429ea 100644 --- a/implementations/python/packages/aces_contracts/workflow.py +++ b/implementations/python/packages/aces_contracts/workflow.py @@ -7,8 +7,8 @@ from enum import Enum from typing import Any -from aces_sdl.semantics.workflow import WorkflowStepSemanticContract -from aces_sdl.semantics.workflow import validate_workflow_step_result as _validate_workflow_step_result +from raes.semantics.workflow import WorkflowStepSemanticContract +from raes.semantics.workflow import validate_workflow_step_result as _validate_workflow_step_result from aces_contracts._validation import ( enum_value, diff --git a/implementations/python/packages/aces_mcp/server.py b/implementations/python/packages/aces_mcp/server.py index a818035a3..79a6feedc 100644 --- a/implementations/python/packages/aces_mcp/server.py +++ b/implementations/python/packages/aces_mcp/server.py @@ -19,9 +19,11 @@ from aces_mcp.tools.reference import register as register_reference_tools _INSTRUCTIONS = """\ -You are connected to the RAES SDL (Scenario Description Language) server. +You are connected to the Reproducible Agentic Environments System (RAES) +authoring server. RAES supports agentic environments; RAES SDL is its authored scenario +language. -The SDL is a YAML-based language for specifying cyber-range scenarios — \ +The SDL is a YAML-based language for specifying scenarios — \ who (entities, accounts, agents), what (nodes, features, vulnerabilities, \ content), when (scripts, stories, events), and declarative experiment \ semantics (objectives, scoring, conditions, relationships, workflows, \ diff --git a/implementations/python/packages/aces_mcp/tools/authoring.py b/implementations/python/packages/aces_mcp/tools/authoring.py index 45f55d71d..47fda5e3b 100644 --- a/implementations/python/packages/aces_mcp/tools/authoring.py +++ b/implementations/python/packages/aces_mcp/tools/authoring.py @@ -41,7 +41,7 @@ def sdl_validate( if len(sdl_content.encode("utf-8", errors="replace")) > _MAX_INPUT_BYTES: return f"INPUT TOO LARGE — limit is {_MAX_INPUT_BYTES} bytes." - from aces_sdl import ( + from raes import ( SDLMigrationPolicy, SDLParseError, SDLValidationError, @@ -123,7 +123,7 @@ def sdl_validate_section( return f"INPUT TOO LARGE — limit is {_MAX_INPUT_BYTES} bytes." import yaml as _yaml - from aces_sdl import SDLParseError, SDLValidationError, load_sdl_fragment, parse_sdl + from raes import SDLParseError, SDLValidationError, load_sdl_fragment, parse_sdl section = section.strip().lower().replace("-", "_") valid_sections = { @@ -239,7 +239,7 @@ def sdl_instantiate( import json - from aces_sdl import ( + from raes import ( SDLInstantiationError, SDLParseError, SDLValidationError, diff --git a/implementations/python/packages/aces_mcp/tools/inspection.py b/implementations/python/packages/aces_mcp/tools/inspection.py index 2f9b6b0a4..fd2b13b22 100644 --- a/implementations/python/packages/aces_mcp/tools/inspection.py +++ b/implementations/python/packages/aces_mcp/tools/inspection.py @@ -134,7 +134,7 @@ def _parse_or_error(sdl_content: str): if len(sdl_content.encode("utf-8", errors="replace")) > _MAX_INPUT_BYTES: return f"INPUT TOO LARGE — limit is {_MAX_INPUT_BYTES} bytes." - from aces_sdl import SDLParseError, SDLValidationError, parse_sdl + from raes import SDLParseError, SDLValidationError, parse_sdl try: return parse_sdl(sdl_content, skip_semantic_validation=True) @@ -148,7 +148,7 @@ def _parse_or_error(sdl_content: str): def _build_summary(scenario) -> str: """Build a human-readable summary of a scenario.""" - from aces_sdl.nodes import NodeType + from raes.nodes import NodeType lines = [ f"Scenario: {scenario.name}", @@ -232,7 +232,7 @@ def _format_entities(entities: dict, lines: list[str], indent: int, depth: int = def _list_elements(scenario, section_filter: str) -> str: """List named elements, optionally filtered by section.""" - from aces_sdl.entities import flatten_entities + from raes.entities import flatten_entities lines: list[str] = [] for field in _SECTION_FIELDS: @@ -287,7 +287,7 @@ def _get_element_detail(scenario, name: str) -> str: if not matches: # Try nested entity names - from aces_sdl.entities import flatten_entities + from raes.entities import flatten_entities if scenario.entities: flat = flatten_entities(scenario.entities) @@ -527,7 +527,7 @@ def _build_reference_map(scenario) -> dict[tuple[str, str], list[str]]: def _build_diagram(scenario) -> str: """Build an ASCII topology diagram.""" - from aces_sdl.nodes import NodeType + from raes.nodes import NodeType lines = [f"Topology: {scenario.name}", "=" * 40] diff --git a/implementations/python/packages/aces_mcp/tools/language_service.py b/implementations/python/packages/aces_mcp/tools/language_service.py index eeddca661..44c1fb1a3 100644 --- a/implementations/python/packages/aces_mcp/tools/language_service.py +++ b/implementations/python/packages/aces_mcp/tools/language_service.py @@ -4,14 +4,14 @@ import json -from aces_sdl.language_service import ( +from mcp.server.fastmcp import FastMCP +from raes.language_service import ( apply_structured_edit, language_completions, language_diagnostics, language_format, language_references, ) -from mcp.server.fastmcp import FastMCP from aces_mcp.tools.operation_support import json_response diff --git a/implementations/python/packages/aces_mcp/tools/operation_support.py b/implementations/python/packages/aces_mcp/tools/operation_support.py index fea9bd6bd..99e873fca 100644 --- a/implementations/python/packages/aces_mcp/tools/operation_support.py +++ b/implementations/python/packages/aces_mcp/tools/operation_support.py @@ -42,7 +42,7 @@ def compile_pipeline( return {"error": json.loads(size_error), "stages": [], "scenario": None, "model": None} from aces_processor.compiler import compile_runtime_model - from aces_sdl import ( + from raes import ( SDLInstantiationError, SDLMigrationPolicy, SDLParseError, diff --git a/implementations/python/packages/aces_mcp/tools/operations.py b/implementations/python/packages/aces_mcp/tools/operations.py index d761c69a0..a156ab97a 100644 --- a/implementations/python/packages/aces_mcp/tools/operations.py +++ b/implementations/python/packages/aces_mcp/tools/operations.py @@ -150,7 +150,7 @@ def raes_tool_surface() -> str: ), ) def raes_agent_guidance(audience: str = "all") -> str: - from aces_sdl.agent_guidance import agent_guidance + from raes.agent_guidance import agent_guidance return json_response(agent_guidance(audience=audience)) @@ -173,7 +173,7 @@ def sdl_parse( if size_error is not None: return size_error - from aces_sdl import SDLMigrationPolicy, SDLParseError, SDLValidationError, parse_sdl + from raes import SDLMigrationPolicy, SDLParseError, SDLValidationError, parse_sdl try: scenario = parse_sdl( diff --git a/implementations/python/packages/aces_mcp/tools/reference.py b/implementations/python/packages/aces_mcp/tools/reference.py index 1c1c60375..f76acf6ac 100644 --- a/implementations/python/packages/aces_mcp/tools/reference.py +++ b/implementations/python/packages/aces_mcp/tools/reference.py @@ -342,10 +342,11 @@ def sdl_validation_reference() -> str: ## What is the SDL? -RAES SDL is a **YAML-based, backend-agnostic specification language** for \ -describing cyber range scenarios and experiments. It defines *what a scenario \ -means* — not how to deploy it. Backend implementations realize SDL \ -specifications through runtime contracts. +Reproducible Agentic Environments System (RAES) supports agentic environments \ +across non-exhaustive application areas. RAES SDL is the **YAML-based, \ +backend-agnostic authored scenario language** within that system. It defines \ +what authored scenarios mean — not how to deploy them. Backend implementations \ +produce realized environments through runtime contracts. Its topology and exercise-narrative core descends from the Open Cyber Range (OCR) SDL. RAES adds composition, participant, evidence, objective, workflow, @@ -471,7 +472,7 @@ def sdl_validation_reference() -> str: ## Python API ```python -from aces_sdl import parse_sdl, parse_sdl_file, instantiate_scenario +from raes import parse_sdl, parse_sdl_file, instantiate_scenario # Parse from string or file scenario = parse_sdl(yaml_string) diff --git a/implementations/python/packages/aces_operations/_evidence_run_artifact.py b/implementations/python/packages/aces_operations/_evidence_run_artifact.py index 177ad978a..cbb4f5076 100644 --- a/implementations/python/packages/aces_operations/_evidence_run_artifact.py +++ b/implementations/python/packages/aces_operations/_evidence_run_artifact.py @@ -148,7 +148,7 @@ def _backend_section( def _scenario_section(scenario_path: Path, model: CompiledModel) -> dict[str, Any]: - from aces_sdl.parser import parse_sdl_file + from raes.parser import parse_sdl_file content = scenario_path.read_bytes() version: str | None = None diff --git a/implementations/python/packages/aces_operations/libvirt_evidence_run.py b/implementations/python/packages/aces_operations/libvirt_evidence_run.py index 941b9ac09..ae00bbe3d 100644 --- a/implementations/python/packages/aces_operations/libvirt_evidence_run.py +++ b/implementations/python/packages/aces_operations/libvirt_evidence_run.py @@ -11,7 +11,7 @@ ADR-036 module boundary: ``aces_operations`` orchestrates the libvirt backend only through ``aces_backend_libvirt.target`` / ``aces_backend_libvirt.techvault_native``, -the ``aces_runtime`` control plane / manager, ``aces_sdl.parser``, and +the ``aces_runtime`` control plane / manager, ``raes.parser``, and ``aces_contracts``. It never imports the processor or backend internals; the compiled runtime model is read from ``ExecutionPlan.model`` (a runtime-layer output). Deep processor-iterator validation of the participant proof is performed @@ -45,7 +45,7 @@ from aces_backend_libvirt.techvault_native import TechVaultNativeLibvirtDriver from aces_runtime.control_plane import RuntimeControlPlane from aces_runtime.manager import RuntimeManager -from aces_sdl.parser import parse_sdl_file +from raes.parser import parse_sdl_file from aces_operations._evidence_run_artifact import EVIDENCE_RUN_SCHEMA, assemble_artifact from aces_operations._evidence_run_native import _default_native_driver_factory, _run_native_mode diff --git a/implementations/python/packages/aces_operations/techvault_live.py b/implementations/python/packages/aces_operations/techvault_live.py index 43fa6e82c..0a45c2063 100644 --- a/implementations/python/packages/aces_operations/techvault_live.py +++ b/implementations/python/packages/aces_operations/techvault_live.py @@ -15,7 +15,7 @@ from aces_backend_libvirt.techvault_native import TechVaultNativeLibvirtDriver, expected_surface from aces_runtime.control_plane import RuntimeControlPlane from aces_runtime.manager import RuntimeManager -from aces_sdl.parser import parse_sdl_file +from raes.parser import parse_sdl_file from aces_operations._evidence_run_validation import redaction_violations from aces_operations._techvault_cleanup import cleanup_native_snapshot diff --git a/implementations/python/packages/aces_processor/compiler/_mixed_control.py b/implementations/python/packages/aces_processor/compiler/_mixed_control.py index 3d58f5b40..b5c814574 100644 --- a/implementations/python/packages/aces_processor/compiler/_mixed_control.py +++ b/implementations/python/packages/aces_processor/compiler/_mixed_control.py @@ -1,6 +1,6 @@ """Mixed-control participant behavior compilation helpers.""" -from aces_sdl.participant_behavior_specification import ( +from raes.participant_behavior_specification import ( MixedControlDispositionRules, MixedControlParticipantOperation, ParticipantBehaviorSpecification, diff --git a/implementations/python/packages/aces_processor/compiler/addresses.py b/implementations/python/packages/aces_processor/compiler/addresses.py index 4c3fef0b6..a0380417a 100644 --- a/implementations/python/packages/aces_processor/compiler/addresses.py +++ b/implementations/python/packages/aces_processor/compiler/addresses.py @@ -3,9 +3,9 @@ from collections.abc import Mapping from aces_backend_protocols.domain_topology import DomainTopologyBinding -from aces_sdl.nodes import NodeType -from aces_sdl.scenario import InstantiatedScenario, Scenario -from aces_sdl.semantics.domain_topology import ( +from raes.nodes import NodeType +from raes.scenario import InstantiatedScenario, Scenario +from raes.semantics.domain_topology import ( DomainNodeBinding, ) diff --git a/implementations/python/packages/aces_processor/compiler/alias_index.py b/implementations/python/packages/aces_processor/compiler/alias_index.py index 7effe8176..6af5035db 100644 --- a/implementations/python/packages/aces_processor/compiler/alias_index.py +++ b/implementations/python/packages/aces_processor/compiler/alias_index.py @@ -2,8 +2,8 @@ from collections.abc import Callable, Iterable -from aces_sdl.nodes import NodeType -from aces_sdl.scenario import InstantiatedScenario +from raes.nodes import NodeType +from raes.scenario import InstantiatedScenario from .addresses import ( _account_address, diff --git a/implementations/python/packages/aces_processor/compiler/evaluation.py b/implementations/python/packages/aces_processor/compiler/evaluation.py index 1767f64eb..50cf9f4a5 100644 --- a/implementations/python/packages/aces_processor/compiler/evaluation.py +++ b/implementations/python/packages/aces_processor/compiler/evaluation.py @@ -1,7 +1,7 @@ """Evaluation-domain compilation: propositions, assertions, condition bindings.""" -from aces_sdl.nodes import NodeType -from aces_sdl.scenario import InstantiatedScenario +from raes.nodes import NodeType +from raes.scenario import InstantiatedScenario from ..models import ( AssertionRuntime, diff --git a/implementations/python/packages/aces_processor/compiler/objectives.py b/implementations/python/packages/aces_processor/compiler/objectives.py index e4a5c7990..cd8cb077e 100644 --- a/implementations/python/packages/aces_processor/compiler/objectives.py +++ b/implementations/python/packages/aces_processor/compiler/objectives.py @@ -2,13 +2,13 @@ from dataclasses import dataclass -from aces_sdl.objectives import Objective -from aces_sdl.scenario import InstantiatedScenario -from aces_sdl.semantics.objective_semantics import ( +from raes.objectives import Objective +from raes.scenario import InstantiatedScenario +from raes.semantics.objective_semantics import ( OBJECTIVE_WINDOW_DEPENDENCY_ROLES, partition_objective_dependencies, ) -from aces_sdl.semantics.objectives import ObjectiveWindowIssue, analyze_objective_window +from raes.semantics.objectives import ObjectiveWindowIssue, analyze_objective_window from ..models import ( AssertionRuntime, diff --git a/implementations/python/packages/aces_processor/compiler/orchestration.py b/implementations/python/packages/aces_processor/compiler/orchestration.py index ebd35b186..aeb8c05c7 100644 --- a/implementations/python/packages/aces_processor/compiler/orchestration.py +++ b/implementations/python/packages/aces_processor/compiler/orchestration.py @@ -1,7 +1,7 @@ """Orchestration-domain compilation: injects, events, scripts, stories.""" -from aces_sdl.nodes import NodeType -from aces_sdl.scenario import InstantiatedScenario +from raes.nodes import NodeType +from raes.scenario import InstantiatedScenario from ..models import ( AssertionRuntime, diff --git a/implementations/python/packages/aces_processor/compiler/participant_behaviors.py b/implementations/python/packages/aces_processor/compiler/participant_behaviors.py index 31cb6f7dc..1e5c182a7 100644 --- a/implementations/python/packages/aces_processor/compiler/participant_behaviors.py +++ b/implementations/python/packages/aces_processor/compiler/participant_behaviors.py @@ -2,7 +2,7 @@ from collections.abc import Callable, Mapping -from aces_sdl.scenario import InstantiatedScenario +from raes.scenario import InstantiatedScenario from ..models import ( Diagnostic, diff --git a/implementations/python/packages/aces_processor/compiler/participant_contracts.py b/implementations/python/packages/aces_processor/compiler/participant_contracts.py index da9c3350f..d2a472ac0 100644 --- a/implementations/python/packages/aces_processor/compiler/participant_contracts.py +++ b/implementations/python/packages/aces_processor/compiler/participant_contracts.py @@ -2,11 +2,11 @@ from collections.abc import Callable -from aces_sdl.participant_outcome_semantics import ( +from raes.participant_outcome_semantics import ( OutcomeInterpretationSourceLayer, OutcomeInterpretationTargetLayer, ) -from aces_sdl.scenario import InstantiatedScenario +from raes.scenario import InstantiatedScenario from ..models import ( ParticipantActionContractRuntime, diff --git a/implementations/python/packages/aces_processor/compiler/pipeline.py b/implementations/python/packages/aces_processor/compiler/pipeline.py index e60e3bf14..cf0f141ae 100644 --- a/implementations/python/packages/aces_processor/compiler/pipeline.py +++ b/implementations/python/packages/aces_processor/compiler/pipeline.py @@ -2,13 +2,13 @@ from collections.abc import Mapping -from aces_sdl import build_declaration_index -from aces_sdl.instantiate import admit_instantiated_scenario, instantiate_scenario -from aces_sdl.scenario import ExpandedScenario, InstantiatedScenario, Scenario -from aces_sdl.semantics.domain_topology import ( +from raes import build_declaration_index +from raes.instantiate import admit_instantiated_scenario, instantiate_scenario +from raes.scenario import ExpandedScenario, InstantiatedScenario, Scenario +from raes.semantics.domain_topology import ( analyze_domain_topology, ) -from aces_sdl.value_parsing import is_variable_ref +from raes.value_parsing import is_variable_ref from ..models import ( Diagnostic, diff --git a/implementations/python/packages/aces_processor/compiler/placement.py b/implementations/python/packages/aces_processor/compiler/placement.py index f3139c6a8..479c17b62 100644 --- a/implementations/python/packages/aces_processor/compiler/placement.py +++ b/implementations/python/packages/aces_processor/compiler/placement.py @@ -3,10 +3,10 @@ import hashlib import json -from aces_sdl.content import Content -from aces_sdl.nodes import NodeType -from aces_sdl.scenario import InstantiatedScenario -from aces_sdl.semantics.domain_topology import ( +from raes.content import Content +from raes.nodes import NodeType +from raes.scenario import InstantiatedScenario +from raes.semantics.domain_topology import ( DomainNodeRole, DomainTopologyAnalysis, ) diff --git a/implementations/python/packages/aces_processor/compiler/provisioning.py b/implementations/python/packages/aces_processor/compiler/provisioning.py index 8a6e146ad..bf518f848 100644 --- a/implementations/python/packages/aces_processor/compiler/provisioning.py +++ b/implementations/python/packages/aces_processor/compiler/provisioning.py @@ -4,11 +4,11 @@ from typing import Any from aces_backend_protocols.domain_topology import DomainTopologyBinding -from aces_sdl.entities import flatten_entities -from aces_sdl.features import Feature -from aces_sdl.nodes import Node, NodeType -from aces_sdl.scenario import InstantiatedScenario -from aces_sdl.semantics.domain_topology import ( +from raes.entities import flatten_entities +from raes.features import Feature +from raes.nodes import Node, NodeType +from raes.scenario import InstantiatedScenario +from raes.semantics.domain_topology import ( DomainNodeRole, DomainTopologyAnalysis, ) diff --git a/implementations/python/packages/aces_processor/compiler/realization_requirements.py b/implementations/python/packages/aces_processor/compiler/realization_requirements.py index c1df8c216..1d74f1042 100644 --- a/implementations/python/packages/aces_processor/compiler/realization_requirements.py +++ b/implementations/python/packages/aces_processor/compiler/realization_requirements.py @@ -1,11 +1,11 @@ """Realization-requirement compilation (SEM-218).""" -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance -from aces_sdl.identifiers import QualifiedName -from aces_sdl.nodes import NodeType -from aces_sdl.realization_designation import resolve_realization_designation -from aces_sdl.scenario import InstantiatedScenario -from aces_sdl.semantics.domain_topology import ( +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.identifiers import QualifiedName +from raes.nodes import NodeType +from raes.realization_designation import resolve_realization_designation +from raes.scenario import InstantiatedScenario +from raes.semantics.domain_topology import ( DomainTopologyAnalysis, ) diff --git a/implementations/python/packages/aces_processor/compiler/ref_resolution.py b/implementations/python/packages/aces_processor/compiler/ref_resolution.py index 9f9aa85cd..0bf83fd13 100644 --- a/implementations/python/packages/aces_processor/compiler/ref_resolution.py +++ b/implementations/python/packages/aces_processor/compiler/ref_resolution.py @@ -3,8 +3,8 @@ from collections.abc import Callable from typing import Any -from aces_sdl.nodes import NodeType -from aces_sdl.scenario import InstantiatedScenario, Scenario +from raes.nodes import NodeType +from raes.scenario import InstantiatedScenario, Scenario from ..models import ( Diagnostic, diff --git a/implementations/python/packages/aces_processor/compiler/stateful_resources.py b/implementations/python/packages/aces_processor/compiler/stateful_resources.py index e14617a52..27dcc06dd 100644 --- a/implementations/python/packages/aces_processor/compiler/stateful_resources.py +++ b/implementations/python/packages/aces_processor/compiler/stateful_resources.py @@ -2,7 +2,7 @@ from typing import Any -from aces_sdl.scenario import InstantiatedScenario +from raes.scenario import InstantiatedScenario from ..models import GeneratedArtifactRuntime, PersistentVolumeRuntime from .addresses import ( diff --git a/implementations/python/packages/aces_processor/compiler/time_model.py b/implementations/python/packages/aces_processor/compiler/time_model.py index d307bb146..58c757d5d 100644 --- a/implementations/python/packages/aces_processor/compiler/time_model.py +++ b/implementations/python/packages/aces_processor/compiler/time_model.py @@ -11,7 +11,7 @@ TimeModelDeclarationModel, TimeProgressionPolicyDeclarationModel, ) -from aces_sdl.scenario import InstantiatedScenario +from raes.scenario import InstantiatedScenario from ..models.time_model import ( CompiledClock, diff --git a/implementations/python/packages/aces_processor/compiler/workflow_steps.py b/implementations/python/packages/aces_processor/compiler/workflow_steps.py index 5da81f3cb..f1d71add7 100644 --- a/implementations/python/packages/aces_processor/compiler/workflow_steps.py +++ b/implementations/python/packages/aces_processor/compiler/workflow_steps.py @@ -6,15 +6,15 @@ WorkflowFeature, WorkflowStatePredicateFeature, ) -from aces_sdl.orchestration import ( +from raes.orchestration import ( Workflow, WorkflowPredicate, WorkflowStep, WorkflowStepExecutionMode, WorkflowStepType, ) -from aces_sdl.scenario import InstantiatedScenario -from aces_sdl.semantics.workflow import ( +from raes.scenario import InstantiatedScenario +from raes.semantics.workflow import ( workflow_step_semantic_contract, ) diff --git a/implementations/python/packages/aces_processor/compiler/workflows.py b/implementations/python/packages/aces_processor/compiler/workflows.py index dbb4e6054..5958c741f 100644 --- a/implementations/python/packages/aces_processor/compiler/workflows.py +++ b/implementations/python/packages/aces_processor/compiler/workflows.py @@ -3,8 +3,8 @@ from typing import Any from aces_contracts.versions import WORKFLOW_STATE_SCHEMA_VERSION -from aces_sdl.orchestration import Workflow, WorkflowStepType -from aces_sdl.scenario import InstantiatedScenario +from raes.orchestration import Workflow, WorkflowStepType +from raes.scenario import InstantiatedScenario from ..models import ( AssertionRuntime, diff --git a/implementations/python/packages/aces_processor/models/__init__.py b/implementations/python/packages/aces_processor/models/__init__.py index e79334856..9c61e34e6 100644 --- a/implementations/python/packages/aces_processor/models/__init__.py +++ b/implementations/python/packages/aces_processor/models/__init__.py @@ -85,7 +85,7 @@ from aces_contracts.workflow import WorkflowStepLifecycle as WorkflowStepLifecycle from aces_contracts.workflow import WorkflowStepOutcome as WorkflowStepOutcome from aces_contracts.workflow import validate_workflow_step_result_contract as validate_workflow_step_result_contract -from aces_sdl.participant_temporal_semantics import ParticipantTemporalState as ParticipantTemporalState +from raes.participant_temporal_semantics import ParticipantTemporalState as ParticipantTemporalState from aces_processor.semantics.realization import CompiledRealizationRequirement as CompiledRealizationRequirement diff --git a/implementations/python/packages/aces_processor/models/action_results.py b/implementations/python/packages/aces_processor/models/action_results.py index b40865ac7..0d777baed 100644 --- a/implementations/python/packages/aces_processor/models/action_results.py +++ b/implementations/python/packages/aces_processor/models/action_results.py @@ -5,7 +5,7 @@ from typing import Any from aces_contracts.participant_behavior import ParticipantActionPreconditionStatus, ParticipantActionResultStatus -from aces_sdl.participant_behavior import ParticipantEffectClass, ParticipantFailureClass, ParticipantPreconditionClass +from raes.participant_behavior import ParticipantEffectClass, ParticipantFailureClass, ParticipantPreconditionClass from .behavior_resources import ( _observation_point_matches_action_instance, diff --git a/implementations/python/packages/aces_processor/models/attribution.py b/implementations/python/packages/aces_processor/models/attribution.py index dac79bb45..8822f3e9e 100644 --- a/implementations/python/packages/aces_processor/models/attribution.py +++ b/implementations/python/packages/aces_processor/models/attribution.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Any -from aces_sdl.participant_attribution_semantics import ( +from raes.participant_attribution_semantics import ( OUTCOME_ATTRIBUTION_CANDIDATE_KINDS, STRONG_ATTRIBUTION_SUPPORT_CLASSES, ParticipantAttributionCandidateKind, diff --git a/implementations/python/packages/aces_processor/models/behavior_grounding_checks.py b/implementations/python/packages/aces_processor/models/behavior_grounding_checks.py index 5179db17d..3711e0642 100644 --- a/implementations/python/packages/aces_processor/models/behavior_grounding_checks.py +++ b/implementations/python/packages/aces_processor/models/behavior_grounding_checks.py @@ -4,7 +4,7 @@ from aces_contracts.participant_behavior import ParticipantBehaviorHistoryEventType from aces_contracts.participant_episode import ParticipantEpisodeHistoryEvent -from aces_sdl.participant_outcome_semantics import OutcomeInterpretationSourceLayer +from raes.participant_outcome_semantics import OutcomeInterpretationSourceLayer from .behavior_ref_checks import ( _participant_behavior_attribution_candidate_ref_violations, diff --git a/implementations/python/packages/aces_processor/models/behavior_ref_checks.py b/implementations/python/packages/aces_processor/models/behavior_ref_checks.py index 3e3bb94a0..e2ce5c245 100644 --- a/implementations/python/packages/aces_processor/models/behavior_ref_checks.py +++ b/implementations/python/packages/aces_processor/models/behavior_ref_checks.py @@ -4,7 +4,7 @@ from typing import Any from aces_contracts.participant_behavior import ParticipantBehaviorHistoryEventType -from aces_sdl.participant_attribution_semantics import ParticipantAttributionCandidateKind +from raes.participant_attribution_semantics import ParticipantAttributionCandidateKind from .attribution import ParticipantAttributionCandidate, ParticipantAttributionEdge from .behavior_resources import ( diff --git a/implementations/python/packages/aces_processor/models/behavior_resources.py b/implementations/python/packages/aces_processor/models/behavior_resources.py index fda317467..095ecdfe2 100644 --- a/implementations/python/packages/aces_processor/models/behavior_resources.py +++ b/implementations/python/packages/aces_processor/models/behavior_resources.py @@ -8,7 +8,7 @@ from aces_contracts.participant_behavior import ParticipantObservationStatus from aces_contracts.versions import WORKFLOW_STATE_SCHEMA_VERSION from aces_contracts.workflow import WorkflowExecutionContract, WorkflowResultContract, WorkflowStepOutcome -from aces_sdl.semantics.workflow import WorkflowStepSemanticContract +from raes.semantics.workflow import WorkflowStepSemanticContract from .resources import ResolvedResource diff --git a/implementations/python/packages/aces_processor/models/history_event.py b/implementations/python/packages/aces_processor/models/history_event.py index 20349f97e..f6d7346ae 100644 --- a/implementations/python/packages/aces_processor/models/history_event.py +++ b/implementations/python/packages/aces_processor/models/history_event.py @@ -14,11 +14,11 @@ ParticipantRuntimeLifecyclePhase, participant_lifecycle_field_violation_messages, ) -from aces_sdl.participant_attribution_semantics import ( +from raes.participant_attribution_semantics import ( OUTCOME_ATTRIBUTION_CANDIDATE_KINDS, ParticipantAttributionCandidateKind, ) -from aces_sdl.participant_behavior import ParticipantInteractionClass +from raes.participant_behavior import ParticipantInteractionClass from .action_results import ParticipantActionResult from .attribution import ParticipantAttributionEdge diff --git a/implementations/python/packages/aces_processor/models/history_event_payloads.py b/implementations/python/packages/aces_processor/models/history_event_payloads.py index fec1fd34f..5935f3594 100644 --- a/implementations/python/packages/aces_processor/models/history_event_payloads.py +++ b/implementations/python/packages/aces_processor/models/history_event_payloads.py @@ -10,7 +10,7 @@ ParticipantPhaseRealization, ParticipantRuntimeLifecyclePhase, ) -from aces_sdl.participant_behavior import ParticipantInteractionClass +from raes.participant_behavior import ParticipantInteractionClass from .action_results import ParticipantActionResult from .attribution import ParticipantAttributionEdge diff --git a/implementations/python/packages/aces_processor/models/outcome.py b/implementations/python/packages/aces_processor/models/outcome.py index ac79b1140..157ce0f7d 100644 --- a/implementations/python/packages/aces_processor/models/outcome.py +++ b/implementations/python/packages/aces_processor/models/outcome.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Any -from aces_sdl.participant_outcome_semantics import OutcomeInterpretationSourceLayer, OutcomeInterpretationTargetLayer +from raes.participant_outcome_semantics import OutcomeInterpretationSourceLayer, OutcomeInterpretationTargetLayer from .behavior_resources import ( _optional_payload_string, diff --git a/implementations/python/packages/aces_processor/models/outcome_interpretation_validation.py b/implementations/python/packages/aces_processor/models/outcome_interpretation_validation.py index 456fd3643..08925d955 100644 --- a/implementations/python/packages/aces_processor/models/outcome_interpretation_validation.py +++ b/implementations/python/packages/aces_processor/models/outcome_interpretation_validation.py @@ -2,7 +2,7 @@ from collections.abc import Iterable, Mapping -from aces_sdl.participant_outcome_semantics import ( +from raes.participant_outcome_semantics import ( PROVENANCE_REQUIRED_OUTCOME_SOURCE_LAYERS, OutcomeInterpretationSourceLayer, ) diff --git a/implementations/python/packages/aces_processor/models/resources.py b/implementations/python/packages/aces_processor/models/resources.py index 495008a96..599e1c0c3 100644 --- a/implementations/python/packages/aces_processor/models/resources.py +++ b/implementations/python/packages/aces_processor/models/resources.py @@ -9,7 +9,7 @@ from aces_contracts.diagnostics import Diagnostic from aces_contracts.evaluation import EvaluationExecutionContract, EvaluationResultContract from aces_contracts.participant_episode import PARTICIPANT_EPISODE_CONTROL_EVENTS, PARTICIPANT_EPISODE_TERMINAL_EVENTS -from aces_sdl.participant_behavior import ParticipantFailureClass +from raes.participant_behavior import ParticipantFailureClass if TYPE_CHECKING: # Forward reference only: ParticipantActionResult is defined in the later diff --git a/implementations/python/packages/aces_processor/models/runtime_model.py b/implementations/python/packages/aces_processor/models/runtime_model.py index 012c53c19..ae8e8518a 100644 --- a/implementations/python/packages/aces_processor/models/runtime_model.py +++ b/implementations/python/packages/aces_processor/models/runtime_model.py @@ -9,7 +9,7 @@ from aces_contracts.evaluation import EvaluationExecutionContract, EvaluationResultContract from aces_contracts.planning import EvaluationPlan, OrchestrationPlan, ProvisioningPlan from aces_contracts.runtime_state import RuntimeSnapshot -from aces_sdl.scenario import InstantiatedScenario +from raes.scenario import InstantiatedScenario from aces_processor.semantics.realization import CompiledRealizationRequirement diff --git a/implementations/python/packages/aces_processor/models/temporal.py b/implementations/python/packages/aces_processor/models/temporal.py index 91d8e6237..bb22998f9 100644 --- a/implementations/python/packages/aces_processor/models/temporal.py +++ b/implementations/python/packages/aces_processor/models/temporal.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from typing import Any -from aces_sdl.participant_temporal_semantics import ( +from raes.participant_temporal_semantics import ( ParticipantTemporalEventPoint, ParticipantTemporalState, ParticipantTimeDomain, diff --git a/implementations/python/packages/aces_processor/planner/capability_domains.py b/implementations/python/packages/aces_processor/planner/capability_domains.py index 88d690ebc..fbc953e7d 100644 --- a/implementations/python/packages/aces_processor/planner/capability_domains.py +++ b/implementations/python/packages/aces_processor/planner/capability_domains.py @@ -1,9 +1,9 @@ """Finite-variable capability-domain validation for provisioner gates.""" from aces_backend_protocols.account_features import provisioner_account_features -from aces_sdl.infrastructure import MINIMUM_NODE_COUNT -from aces_sdl.nodes import OSFamily -from aces_sdl.value_parsing import extract_variable_name, parse_enum_or_var, parse_int_or_var +from raes.infrastructure import MINIMUM_NODE_COUNT +from raes.nodes import OSFamily +from raes.value_parsing import extract_variable_name, parse_enum_or_var, parse_int_or_var from ..models import CompiledCapabilityConstraint, Diagnostic, NodeRuntime, ResolvedResource, RuntimeModel diff --git a/implementations/python/packages/aces_processor/planner/core.py b/implementations/python/packages/aces_processor/planner/core.py index e56d00ee3..f8c388b0c 100644 --- a/implementations/python/packages/aces_processor/planner/core.py +++ b/implementations/python/packages/aces_processor/planner/core.py @@ -10,7 +10,7 @@ from aces_backend_protocols.domain_topology import domain_topology_plan_diagnostics from aces_backend_protocols.service_materialization import service_materialization_plan_diagnostics from aces_contracts.diagnostics import Diagnostic -from aces_sdl.realization_envelope import member +from raes.realization_envelope import member from ..compiler.time_model import time_model_contract_model from ..models import ExecutionPlan, RuntimeModel, RuntimeSnapshot diff --git a/implementations/python/packages/aces_processor/reference.py b/implementations/python/packages/aces_processor/reference.py index 6b919123f..842a83b0f 100644 --- a/implementations/python/packages/aces_processor/reference.py +++ b/implementations/python/packages/aces_processor/reference.py @@ -23,8 +23,8 @@ from aces_backend_protocols.capabilities import BackendManifest from aces_contracts.diagnostics import Diagnostic -from aces_sdl.parser import parse_sdl, parse_sdl_file -from aces_sdl.scenario import ExpandedScenario, InstantiatedScenario, Scenario +from raes.parser import parse_sdl, parse_sdl_file +from raes.scenario import ExpandedScenario, InstantiatedScenario, Scenario from aces_processor.compiler import compile_scenario_runtime_model from aces_processor.manifest import ( diff --git a/implementations/python/packages/aces_processor/satisfiability/_service.py b/implementations/python/packages/aces_processor/satisfiability/_service.py index 5437aa46c..5354eb7e8 100644 --- a/implementations/python/packages/aces_processor/satisfiability/_service.py +++ b/implementations/python/packages/aces_processor/satisfiability/_service.py @@ -17,14 +17,14 @@ UnsupportedAnalysisModel, canonical_contract_digest, ) -from aces_sdl.canonical import ( +from raes.canonical import ( INSTANTIATED_SNAPSHOT_PROFILE, InstantiatedScenarioSnapshot, canonical_instantiated_sdl_digest, ) -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.parser import parse_sdl, read_sdl_source -from aces_sdl.scenario import ExpandedScenario +from raes.instantiate import instantiate_scenario +from raes.parser import parse_sdl, read_sdl_source +from raes.scenario import ExpandedScenario from ._solver import SolverOperationalError, solve_model from ._translation import translate_scenario diff --git a/implementations/python/packages/aces_processor/satisfiability/_translation.py b/implementations/python/packages/aces_processor/satisfiability/_translation.py index d091b87fe..44bdd193b 100644 --- a/implementations/python/packages/aces_processor/satisfiability/_translation.py +++ b/implementations/python/packages/aces_processor/satisfiability/_translation.py @@ -16,12 +16,12 @@ ConstraintSymbolModel, NormalizedConstraintModel, ) -from aces_sdl.canonical import canonical_sdl_digest -from aces_sdl.infrastructure import ACLAction -from aces_sdl.nodes import OSFamily -from aces_sdl.scenario import ExpandedScenario, Scenario -from aces_sdl.value_parsing import extract_variable_name, normalize_enum_value, variable_names_in_value -from aces_sdl.variables import Variable, VariableType +from raes.canonical import canonical_sdl_digest +from raes.infrastructure import ACLAction +from raes.nodes import OSFamily +from raes.scenario import ExpandedScenario, Scenario +from raes.value_parsing import extract_variable_name, normalize_enum_value, variable_names_in_value +from raes.variables import Variable, VariableType _MAX_SYMBOLS = 128 _MAX_CLAUSES = 512 diff --git a/implementations/python/packages/aces_processor/semantics/__init__.py b/implementations/python/packages/aces_processor/semantics/__init__.py index 4d0067fc5..a1706b689 100644 --- a/implementations/python/packages/aces_processor/semantics/__init__.py +++ b/implementations/python/packages/aces_processor/semantics/__init__.py @@ -2,7 +2,7 @@ Per ADR-015, the SDL-language semantic helpers — objective-window analysis, the workflow step-type contract, ``branch_closure``, and the (pure) workflow -step-result validator — live in ``aces_sdl.semantics``. ``planner`` stays +step-result validator — live in ``raes.semantics``. ``planner`` stays here: it reconciles compiled resources against runtime snapshots, which is processor-runtime logic over a processor artifact, not SDL-language semantics. """ diff --git a/implementations/python/packages/aces_processor/semantics/realization.py b/implementations/python/packages/aces_processor/semantics/realization.py index d0361d216..cc0a0aa70 100644 --- a/implementations/python/packages/aces_processor/semantics/realization.py +++ b/implementations/python/packages/aces_processor/semantics/realization.py @@ -26,8 +26,8 @@ ) from aces_contracts.runtime_state import RealizationProvenanceEntry, RuntimeSnapshot from aces_contracts.vocabulary import Closure, RealizationSupportMode -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance -from aces_sdl.realization_envelope import effective_constraints, subsumes, tokenize_path +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.realization_envelope import effective_constraints, subsumes, tokenize_path __all__ = [ "CONCERN_PAYLOAD_PATH", diff --git a/implementations/python/packages/aces_sdl/__init__.py b/implementations/python/packages/raes/__init__.py similarity index 75% rename from implementations/python/packages/aces_sdl/__init__.py rename to implementations/python/packages/raes/__init__.py index db407b9a9..a1898f32c 100644 --- a/implementations/python/packages/aces_sdl/__init__.py +++ b/implementations/python/packages/raes/__init__.py @@ -1,16 +1,23 @@ -"""ACES Scenario Description Language (SDL). +"""RAES Scenario Description Language (SDL). A backend-agnostic scenario specification language with revision-pinned syntax -and translated-model ancestry in Open Cyber Range SDL plus ACES-native +and translated-model ancestry in Open Cyber Range SDL plus RAES-native extensions. The normative derivation boundary is recorded in ``contracts/provenance/sdl-lineage-ledger-v1.json``; this module does not claim drop-in compatibility. """ from importlib import import_module +from importlib.metadata import PackageNotFoundError, version + +try: + __version__ = version("raes") +except PackageNotFoundError: + __version__ = "0.0.0+unknown" __all__ = [ "admit_instantiated_scenario", + "__version__", "canonical_instantiated_sdl_bytes", "canonical_instantiated_sdl_digest", "canonical_sdl_bytes", @@ -52,7 +59,7 @@ def __getattr__(name: str): "SDLSourceRange", "SDLValidationError", }: - module = import_module("aces_sdl._errors") + module = import_module("raes._errors") elif name in { "canonical_instantiated_sdl_bytes", "canonical_instantiated_sdl_digest", @@ -62,26 +69,26 @@ def __getattr__(name: str): "InstantiatedScenarioSnapshot", "SDLCanonicalDigest", }: - module = import_module("aces_sdl.canonical") + module = import_module("raes.canonical") elif name in {"format_sdl_source", "SDLFormatResult"}: - module = import_module("aces_sdl.formatting") + module = import_module("raes.formatting") elif name in { "SDL_CANONICAL_PROFILE", "SDLMigrationPolicy", "SDLParserLimits", "SDL_SOURCE_FORMAT", }: - module = import_module("aces_sdl._source_profile") + module = import_module("raes._source_profile") elif name == "VARIABLE_TOKEN_PATTERN": - module = import_module("aces_sdl._base") + module = import_module("raes._base") elif name == "build_declaration_index": - module = import_module("aces_sdl._declarations") + module = import_module("raes._declarations") elif name in {"admit_instantiated_scenario", "instantiate_scenario"}: - module = import_module("aces_sdl.instantiate") + module = import_module("raes.instantiate") elif name in {"load_sdl_fragment", "parse_sdl", "parse_sdl_file"}: - module = import_module("aces_sdl.parser") + module = import_module("raes.parser") elif name in {"InstantiatedScenario", "Scenario"}: - module = import_module("aces_sdl.scenario") + module = import_module("raes.scenario") else: raise AttributeError(f"module {__name__!r} has no attribute {name!r}") return getattr(module, name) diff --git a/implementations/python/packages/aces_sdl/_base.py b/implementations/python/packages/raes/_base.py similarity index 100% rename from implementations/python/packages/aces_sdl/_base.py rename to implementations/python/packages/raes/_base.py diff --git a/implementations/python/packages/aces_sdl/_composition_budget.py b/implementations/python/packages/raes/_composition_budget.py similarity index 100% rename from implementations/python/packages/aces_sdl/_composition_budget.py rename to implementations/python/packages/raes/_composition_budget.py diff --git a/implementations/python/packages/aces_sdl/_composition_provenance.py b/implementations/python/packages/raes/_composition_provenance.py similarity index 100% rename from implementations/python/packages/aces_sdl/_composition_provenance.py rename to implementations/python/packages/raes/_composition_provenance.py diff --git a/implementations/python/packages/aces_sdl/_declarations.py b/implementations/python/packages/raes/_declarations.py similarity index 100% rename from implementations/python/packages/aces_sdl/_declarations.py rename to implementations/python/packages/raes/_declarations.py diff --git a/implementations/python/packages/aces_sdl/_errors.py b/implementations/python/packages/raes/_errors.py similarity index 100% rename from implementations/python/packages/aces_sdl/_errors.py rename to implementations/python/packages/raes/_errors.py diff --git a/implementations/python/packages/aces_sdl/_identifiers.py b/implementations/python/packages/raes/_identifiers.py similarity index 100% rename from implementations/python/packages/aces_sdl/_identifiers.py rename to implementations/python/packages/raes/_identifiers.py diff --git a/implementations/python/packages/aces_sdl/_language_diagnostics.py b/implementations/python/packages/raes/_language_diagnostics.py similarity index 100% rename from implementations/python/packages/aces_sdl/_language_diagnostics.py rename to implementations/python/packages/raes/_language_diagnostics.py diff --git a/implementations/python/packages/aces_sdl/_language_edit.py b/implementations/python/packages/raes/_language_edit.py similarity index 100% rename from implementations/python/packages/aces_sdl/_language_edit.py rename to implementations/python/packages/raes/_language_edit.py diff --git a/implementations/python/packages/aces_sdl/_language_metadata.py b/implementations/python/packages/raes/_language_metadata.py similarity index 100% rename from implementations/python/packages/aces_sdl/_language_metadata.py rename to implementations/python/packages/raes/_language_metadata.py diff --git a/implementations/python/packages/aces_sdl/_language_references.py b/implementations/python/packages/raes/_language_references.py similarity index 100% rename from implementations/python/packages/aces_sdl/_language_references.py rename to implementations/python/packages/raes/_language_references.py diff --git a/implementations/python/packages/aces_sdl/_mapping_key_analyzer.py b/implementations/python/packages/raes/_mapping_key_analyzer.py similarity index 99% rename from implementations/python/packages/aces_sdl/_mapping_key_analyzer.py rename to implementations/python/packages/raes/_mapping_key_analyzer.py index a44234354..b7a88a738 100644 --- a/implementations/python/packages/aces_sdl/_mapping_key_analyzer.py +++ b/implementations/python/packages/raes/_mapping_key_analyzer.py @@ -2,7 +2,7 @@ Walks a composed YAML node graph and emits source-anchored diagnostics for non-canonical fields/merges, duplicate/conflicting keys, invalid identifiers, and -alias cycles. Split from :mod:`aces_sdl._yaml_loader` to keep each module under the +alias cycles. Split from :mod:`raes._yaml_loader` to keep each module under the ADR-015 source-size cap; the loaders there drive ``_MappingAnalyzer`` via ``_validate_mapping_keys``. """ diff --git a/implementations/python/packages/aces_sdl/_mapping_scopes.py b/implementations/python/packages/raes/_mapping_scopes.py similarity index 100% rename from implementations/python/packages/aces_sdl/_mapping_scopes.py rename to implementations/python/packages/raes/_mapping_scopes.py diff --git a/implementations/python/packages/aces_sdl/_model_diagnostics.py b/implementations/python/packages/raes/_model_diagnostics.py similarity index 95% rename from implementations/python/packages/aces_sdl/_model_diagnostics.py rename to implementations/python/packages/raes/_model_diagnostics.py index 989150d72..15d52f4df 100644 --- a/implementations/python/packages/aces_sdl/_model_diagnostics.py +++ b/implementations/python/packages/raes/_model_diagnostics.py @@ -1,9 +1,9 @@ """Pydantic-error → SDL-diagnostic rendering for the SDL parser. Converts a Pydantic :class:`ValidationError` into bounded, source-anchored -:class:`SDLParseError` diagnostics. Kept separate from :mod:`aces_sdl.parser` +:class:`SDLParseError` diagnostics. Kept separate from :mod:`raes.parser` so the parser module stays focused on loading/normalization; ``parser`` re-imports -these helpers so ``from aces_sdl.parser import ...`` call sites remain stable. +these helpers so ``from raes.parser import ...`` call sites remain stable. """ from __future__ import annotations diff --git a/implementations/python/packages/aces_sdl/_module_runtime_aliases.py b/implementations/python/packages/raes/_module_runtime_aliases.py similarity index 100% rename from implementations/python/packages/aces_sdl/_module_runtime_aliases.py rename to implementations/python/packages/raes/_module_runtime_aliases.py diff --git a/implementations/python/packages/aces_sdl/_module_symbols.py b/implementations/python/packages/raes/_module_symbols.py similarity index 100% rename from implementations/python/packages/aces_sdl/_module_symbols.py rename to implementations/python/packages/raes/_module_symbols.py diff --git a/implementations/python/packages/aces_sdl/_realization_envelope_domains.py b/implementations/python/packages/raes/_realization_envelope_domains.py similarity index 100% rename from implementations/python/packages/aces_sdl/_realization_envelope_domains.py rename to implementations/python/packages/raes/_realization_envelope_domains.py diff --git a/implementations/python/packages/aces_sdl/_realization_envelope_engine.py b/implementations/python/packages/raes/_realization_envelope_engine.py similarity index 98% rename from implementations/python/packages/aces_sdl/_realization_envelope_engine.py rename to implementations/python/packages/raes/_realization_envelope_engine.py index 5c336d578..75c74519f 100644 --- a/implementations/python/packages/aces_sdl/_realization_envelope_engine.py +++ b/implementations/python/packages/raes/_realization_envelope_engine.py @@ -2,8 +2,8 @@ SDL-path navigation, most-specific-wins constraint flattening (R2), and closure bookkeeping shared by the four relation kinds in -:mod:`aces_sdl.realization_envelope`. Domain-kind dispatch (subset, witness, -variation) lives in :mod:`aces_sdl._realization_envelope_domains`. Kept separate +:mod:`raes.realization_envelope`. Domain-kind dispatch (subset, witness, +variation) lives in :mod:`raes._realization_envelope_domains`. Kept separate from the public relation module so neither file exceeds the repo source-size cap. This module has no diagnostic, parser, or validator dependency; those live in the public module. diff --git a/implementations/python/packages/aces_sdl/_realization_envelope_probe_payloads.py b/implementations/python/packages/raes/_realization_envelope_probe_payloads.py similarity index 100% rename from implementations/python/packages/aces_sdl/_realization_envelope_probe_payloads.py rename to implementations/python/packages/raes/_realization_envelope_probe_payloads.py diff --git a/implementations/python/packages/aces_sdl/_reference_targetability.py b/implementations/python/packages/raes/_reference_targetability.py similarity index 100% rename from implementations/python/packages/aces_sdl/_reference_targetability.py rename to implementations/python/packages/raes/_reference_targetability.py diff --git a/implementations/python/packages/aces_sdl/_runtime_datastore_support.py b/implementations/python/packages/raes/_runtime_datastore_support.py similarity index 100% rename from implementations/python/packages/aces_sdl/_runtime_datastore_support.py rename to implementations/python/packages/raes/_runtime_datastore_support.py diff --git a/implementations/python/packages/aces_sdl/_runtime_service_families.py b/implementations/python/packages/raes/_runtime_service_families.py similarity index 100% rename from implementations/python/packages/aces_sdl/_runtime_service_families.py rename to implementations/python/packages/raes/_runtime_service_families.py diff --git a/implementations/python/packages/aces_sdl/_runtime_service_family_registry.py b/implementations/python/packages/raes/_runtime_service_family_registry.py similarity index 99% rename from implementations/python/packages/aces_sdl/_runtime_service_family_registry.py rename to implementations/python/packages/raes/_runtime_service_family_registry.py index d0801a9c8..a9bd16f66 100644 --- a/implementations/python/packages/aces_sdl/_runtime_service_family_registry.py +++ b/implementations/python/packages/raes/_runtime_service_family_registry.py @@ -3,7 +3,7 @@ This module holds the pure registration data — the :class:`RuntimeServiceFamily` and :class:`RuntimeReferenceChild` dataclasses plus the canonical ``RUNTIME_SERVICE_FAMILIES`` table. The traversal/alias logic that consumes the -registry lives in :mod:`aces_sdl._runtime_service_families`, which re-exports +registry lives in :mod:`raes._runtime_service_families`, which re-exports these names so existing import paths remain stable. """ diff --git a/implementations/python/packages/aces_sdl/_scenario_instantiation.py b/implementations/python/packages/raes/_scenario_instantiation.py similarity index 100% rename from implementations/python/packages/aces_sdl/_scenario_instantiation.py rename to implementations/python/packages/raes/_scenario_instantiation.py diff --git a/implementations/python/packages/aces_sdl/_source.py b/implementations/python/packages/raes/_source.py similarity index 100% rename from implementations/python/packages/aces_sdl/_source.py rename to implementations/python/packages/raes/_source.py diff --git a/implementations/python/packages/aces_sdl/_source_identifier_paths.py b/implementations/python/packages/raes/_source_identifier_paths.py similarity index 100% rename from implementations/python/packages/aces_sdl/_source_identifier_paths.py rename to implementations/python/packages/raes/_source_identifier_paths.py diff --git a/implementations/python/packages/aces_sdl/_source_profile.py b/implementations/python/packages/raes/_source_profile.py similarity index 100% rename from implementations/python/packages/aces_sdl/_source_profile.py rename to implementations/python/packages/raes/_source_profile.py diff --git a/implementations/python/packages/aces_sdl/_source_validation.py b/implementations/python/packages/raes/_source_validation.py similarity index 100% rename from implementations/python/packages/aces_sdl/_source_validation.py rename to implementations/python/packages/raes/_source_validation.py diff --git a/implementations/python/packages/aces_sdl/_stateful_resource_references.py b/implementations/python/packages/raes/_stateful_resource_references.py similarity index 100% rename from implementations/python/packages/aces_sdl/_stateful_resource_references.py rename to implementations/python/packages/raes/_stateful_resource_references.py diff --git a/implementations/python/packages/aces_sdl/_yaml_loader.py b/implementations/python/packages/raes/_yaml_loader.py similarity index 100% rename from implementations/python/packages/aces_sdl/_yaml_loader.py rename to implementations/python/packages/raes/_yaml_loader.py diff --git a/implementations/python/packages/aces_sdl/accounts.py b/implementations/python/packages/raes/accounts.py similarity index 100% rename from implementations/python/packages/aces_sdl/accounts.py rename to implementations/python/packages/raes/accounts.py diff --git a/implementations/python/packages/aces_sdl/agent_guidance.py b/implementations/python/packages/raes/agent_guidance.py similarity index 100% rename from implementations/python/packages/aces_sdl/agent_guidance.py rename to implementations/python/packages/raes/agent_guidance.py diff --git a/implementations/python/packages/aces_sdl/agents.py b/implementations/python/packages/raes/agents.py similarity index 100% rename from implementations/python/packages/aces_sdl/agents.py rename to implementations/python/packages/raes/agents.py diff --git a/implementations/python/packages/aces_sdl/canonical.py b/implementations/python/packages/raes/canonical.py similarity index 100% rename from implementations/python/packages/aces_sdl/canonical.py rename to implementations/python/packages/raes/canonical.py diff --git a/implementations/python/packages/aces_sdl/composition.py b/implementations/python/packages/raes/composition.py similarity index 100% rename from implementations/python/packages/aces_sdl/composition.py rename to implementations/python/packages/raes/composition.py diff --git a/implementations/python/packages/aces_sdl/conditions.py b/implementations/python/packages/raes/conditions.py similarity index 100% rename from implementations/python/packages/aces_sdl/conditions.py rename to implementations/python/packages/raes/conditions.py diff --git a/implementations/python/packages/aces_sdl/content.py b/implementations/python/packages/raes/content.py similarity index 100% rename from implementations/python/packages/aces_sdl/content.py rename to implementations/python/packages/raes/content.py diff --git a/implementations/python/packages/aces_sdl/deployment_tenancy.py b/implementations/python/packages/raes/deployment_tenancy.py similarity index 100% rename from implementations/python/packages/aces_sdl/deployment_tenancy.py rename to implementations/python/packages/raes/deployment_tenancy.py diff --git a/implementations/python/packages/aces_sdl/enterprise_identity.py b/implementations/python/packages/raes/enterprise_identity.py similarity index 100% rename from implementations/python/packages/aces_sdl/enterprise_identity.py rename to implementations/python/packages/raes/enterprise_identity.py diff --git a/implementations/python/packages/aces_sdl/entities.py b/implementations/python/packages/raes/entities.py similarity index 100% rename from implementations/python/packages/aces_sdl/entities.py rename to implementations/python/packages/raes/entities.py diff --git a/implementations/python/packages/aces_sdl/evidence_requirements.py b/implementations/python/packages/raes/evidence_requirements.py similarity index 100% rename from implementations/python/packages/aces_sdl/evidence_requirements.py rename to implementations/python/packages/raes/evidence_requirements.py diff --git a/implementations/python/packages/aces_sdl/explicitness.py b/implementations/python/packages/raes/explicitness.py similarity index 100% rename from implementations/python/packages/aces_sdl/explicitness.py rename to implementations/python/packages/raes/explicitness.py diff --git a/implementations/python/packages/aces_sdl/features.py b/implementations/python/packages/raes/features.py similarity index 100% rename from implementations/python/packages/aces_sdl/features.py rename to implementations/python/packages/raes/features.py diff --git a/implementations/python/packages/aces_sdl/formatting.py b/implementations/python/packages/raes/formatting.py similarity index 100% rename from implementations/python/packages/aces_sdl/formatting.py rename to implementations/python/packages/raes/formatting.py diff --git a/implementations/python/packages/aces_sdl/identifiers.py b/implementations/python/packages/raes/identifiers.py similarity index 100% rename from implementations/python/packages/aces_sdl/identifiers.py rename to implementations/python/packages/raes/identifiers.py diff --git a/implementations/python/packages/aces_sdl/identity_domains.py b/implementations/python/packages/raes/identity_domains.py similarity index 97% rename from implementations/python/packages/aces_sdl/identity_domains.py rename to implementations/python/packages/raes/identity_domains.py index 0f3908299..62c91f22d 100644 --- a/implementations/python/packages/aces_sdl/identity_domains.py +++ b/implementations/python/packages/raes/identity_domains.py @@ -1,7 +1,7 @@ """Authored identity-domain declarations and typed topology details. This authoring surface is realization intent. It is intentionally separate -from :mod:`aces_sdl.runtime_directory_identity`, which records runtime +from :mod:`raes.runtime_directory_identity`, which records runtime inventory observed on a node. """ diff --git a/implementations/python/packages/aces_sdl/image_provenance.py b/implementations/python/packages/raes/image_provenance.py similarity index 100% rename from implementations/python/packages/aces_sdl/image_provenance.py rename to implementations/python/packages/raes/image_provenance.py diff --git a/implementations/python/packages/aces_sdl/infrastructure.py b/implementations/python/packages/raes/infrastructure.py similarity index 100% rename from implementations/python/packages/aces_sdl/infrastructure.py rename to implementations/python/packages/raes/infrastructure.py diff --git a/implementations/python/packages/aces_sdl/instantiate.py b/implementations/python/packages/raes/instantiate.py similarity index 100% rename from implementations/python/packages/aces_sdl/instantiate.py rename to implementations/python/packages/raes/instantiate.py diff --git a/implementations/python/packages/aces_sdl/language_service.py b/implementations/python/packages/raes/language_service.py similarity index 100% rename from implementations/python/packages/aces_sdl/language_service.py rename to implementations/python/packages/raes/language_service.py diff --git a/implementations/python/packages/aces_sdl/module_registry.py b/implementations/python/packages/raes/module_registry.py similarity index 100% rename from implementations/python/packages/aces_sdl/module_registry.py rename to implementations/python/packages/raes/module_registry.py diff --git a/implementations/python/packages/aces_sdl/nodes.py b/implementations/python/packages/raes/nodes.py similarity index 100% rename from implementations/python/packages/aces_sdl/nodes.py rename to implementations/python/packages/raes/nodes.py diff --git a/implementations/python/packages/aces_sdl/objectives.py b/implementations/python/packages/raes/objectives.py similarity index 100% rename from implementations/python/packages/aces_sdl/objectives.py rename to implementations/python/packages/raes/objectives.py diff --git a/implementations/python/packages/aces_sdl/observability_plane_semantics.py b/implementations/python/packages/raes/observability_plane_semantics.py similarity index 100% rename from implementations/python/packages/aces_sdl/observability_plane_semantics.py rename to implementations/python/packages/raes/observability_plane_semantics.py diff --git a/implementations/python/packages/aces_sdl/orchestration.py b/implementations/python/packages/raes/orchestration.py similarity index 100% rename from implementations/python/packages/aces_sdl/orchestration.py rename to implementations/python/packages/raes/orchestration.py diff --git a/implementations/python/packages/aces_sdl/parser.py b/implementations/python/packages/raes/parser.py similarity index 100% rename from implementations/python/packages/aces_sdl/parser.py rename to implementations/python/packages/raes/parser.py diff --git a/implementations/python/packages/aces_sdl/participant_action_semantics.py b/implementations/python/packages/raes/participant_action_semantics.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_action_semantics.py rename to implementations/python/packages/raes/participant_action_semantics.py diff --git a/implementations/python/packages/aces_sdl/participant_attribution_semantics.py b/implementations/python/packages/raes/participant_attribution_semantics.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_attribution_semantics.py rename to implementations/python/packages/raes/participant_attribution_semantics.py diff --git a/implementations/python/packages/aces_sdl/participant_behavior.py b/implementations/python/packages/raes/participant_behavior.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_behavior.py rename to implementations/python/packages/raes/participant_behavior.py diff --git a/implementations/python/packages/aces_sdl/participant_behavior_specification.py b/implementations/python/packages/raes/participant_behavior_specification.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_behavior_specification.py rename to implementations/python/packages/raes/participant_behavior_specification.py diff --git a/implementations/python/packages/aces_sdl/participant_execution.py b/implementations/python/packages/raes/participant_execution.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_execution.py rename to implementations/python/packages/raes/participant_execution.py diff --git a/implementations/python/packages/aces_sdl/participant_outcome_semantics.py b/implementations/python/packages/raes/participant_outcome_semantics.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_outcome_semantics.py rename to implementations/python/packages/raes/participant_outcome_semantics.py diff --git a/implementations/python/packages/aces_sdl/participant_temporal_semantics.py b/implementations/python/packages/raes/participant_temporal_semantics.py similarity index 100% rename from implementations/python/packages/aces_sdl/participant_temporal_semantics.py rename to implementations/python/packages/raes/participant_temporal_semantics.py diff --git a/implementations/python/packages/aces_sdl/phase_contracts.py b/implementations/python/packages/raes/phase_contracts.py similarity index 100% rename from implementations/python/packages/aces_sdl/phase_contracts.py rename to implementations/python/packages/raes/phase_contracts.py diff --git a/implementations/python/packages/aces_sdl/propositions.py b/implementations/python/packages/raes/propositions.py similarity index 100% rename from implementations/python/packages/aces_sdl/propositions.py rename to implementations/python/packages/raes/propositions.py diff --git a/implementations/python/packages/aces_sdl/realization_designation.py b/implementations/python/packages/raes/realization_designation.py similarity index 100% rename from implementations/python/packages/aces_sdl/realization_designation.py rename to implementations/python/packages/raes/realization_designation.py diff --git a/implementations/python/packages/aces_sdl/realization_envelope.py b/implementations/python/packages/raes/realization_envelope.py similarity index 99% rename from implementations/python/packages/aces_sdl/realization_envelope.py rename to implementations/python/packages/raes/realization_envelope.py index 5ad00b845..161358a82 100644 --- a/implementations/python/packages/aces_sdl/realization_envelope.py +++ b/implementations/python/packages/raes/realization_envelope.py @@ -3,8 +3,8 @@ One deterministic semantic relation over :class:`RealizationEnvelopeModel` and validated SDL instances (ADR-070 §2, ``specs/formal/realization/envelope-semantics.md`` R1-R8). Membership, subsumption, witness generation, and negative-probe generation -share a single flattening/closure engine (:mod:`aces_sdl._realization_envelope_engine`) -and domain-kind dispatch (:mod:`aces_sdl._realization_envelope_domains`) — there are +share a single flattening/closure engine (:mod:`raes._realization_envelope_engine`) +and domain-kind dispatch (:mod:`raes._realization_envelope_domains`) — there are no separate author-side, backend-side, or conformance-side interpretations. Guarantees: diff --git a/implementations/python/packages/aces_sdl/relationships.py b/implementations/python/packages/raes/relationships.py similarity index 100% rename from implementations/python/packages/aces_sdl/relationships.py rename to implementations/python/packages/raes/relationships.py diff --git a/implementations/python/packages/aces_sdl/runtime_app_authorization.py b/implementations/python/packages/raes/runtime_app_authorization.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_app_authorization.py rename to implementations/python/packages/raes/runtime_app_authorization.py diff --git a/implementations/python/packages/aces_sdl/runtime_application.py b/implementations/python/packages/raes/runtime_application.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_application.py rename to implementations/python/packages/raes/runtime_application.py diff --git a/implementations/python/packages/aces_sdl/runtime_capabilities.py b/implementations/python/packages/raes/runtime_capabilities.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_capabilities.py rename to implementations/python/packages/raes/runtime_capabilities.py diff --git a/implementations/python/packages/aces_sdl/runtime_configuration.py b/implementations/python/packages/raes/runtime_configuration.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_configuration.py rename to implementations/python/packages/raes/runtime_configuration.py diff --git a/implementations/python/packages/aces_sdl/runtime_container.py b/implementations/python/packages/raes/runtime_container.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_container.py rename to implementations/python/packages/raes/runtime_container.py diff --git a/implementations/python/packages/aces_sdl/runtime_database.py b/implementations/python/packages/raes/runtime_database.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_database.py rename to implementations/python/packages/raes/runtime_database.py diff --git a/implementations/python/packages/aces_sdl/runtime_database_vocab.py b/implementations/python/packages/raes/runtime_database_vocab.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_database_vocab.py rename to implementations/python/packages/raes/runtime_database_vocab.py diff --git a/implementations/python/packages/aces_sdl/runtime_datastore.py b/implementations/python/packages/raes/runtime_datastore.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_datastore.py rename to implementations/python/packages/raes/runtime_datastore.py diff --git a/implementations/python/packages/aces_sdl/runtime_datastore_nodes.py b/implementations/python/packages/raes/runtime_datastore_nodes.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_datastore_nodes.py rename to implementations/python/packages/raes/runtime_datastore_nodes.py diff --git a/implementations/python/packages/aces_sdl/runtime_datastore_partitions.py b/implementations/python/packages/raes/runtime_datastore_partitions.py similarity index 99% rename from implementations/python/packages/aces_sdl/runtime_datastore_partitions.py rename to implementations/python/packages/raes/runtime_datastore_partitions.py index e950c3803..7cf48d52f 100644 --- a/implementations/python/packages/aces_sdl/runtime_datastore_partitions.py +++ b/implementations/python/packages/raes/runtime_datastore_partitions.py @@ -3,7 +3,7 @@ Split out of ``runtime_datastore.py`` so no single source file exceeds the ADR-015 600-line cap. These typed children compose into -:class:`~aces_sdl.runtime_datastore.RuntimeDatastoreService`; the top spine and +:class:`~raes.runtime_datastore.RuntimeDatastoreService`; the top spine and its ``require_profile_for_data_model`` guard live in ``runtime_datastore.py``. Every typed child carries a ``_id`` validated by ``require_symbol``. diff --git a/implementations/python/packages/aces_sdl/runtime_datastore_vocab.py b/implementations/python/packages/raes/runtime_datastore_vocab.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_datastore_vocab.py rename to implementations/python/packages/raes/runtime_datastore_vocab.py diff --git a/implementations/python/packages/aces_sdl/runtime_directory_identity.py b/implementations/python/packages/raes/runtime_directory_identity.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_directory_identity.py rename to implementations/python/packages/raes/runtime_directory_identity.py diff --git a/implementations/python/packages/aces_sdl/runtime_dns.py b/implementations/python/packages/raes/runtime_dns.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_dns.py rename to implementations/python/packages/raes/runtime_dns.py diff --git a/implementations/python/packages/aces_sdl/runtime_dns_records.py b/implementations/python/packages/raes/runtime_dns_records.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_dns_records.py rename to implementations/python/packages/raes/runtime_dns_records.py diff --git a/implementations/python/packages/aces_sdl/runtime_dns_vocab.py b/implementations/python/packages/raes/runtime_dns_vocab.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_dns_vocab.py rename to implementations/python/packages/raes/runtime_dns_vocab.py diff --git a/implementations/python/packages/aces_sdl/runtime_file_service.py b/implementations/python/packages/raes/runtime_file_service.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_file_service.py rename to implementations/python/packages/raes/runtime_file_service.py diff --git a/implementations/python/packages/aces_sdl/runtime_filesystem.py b/implementations/python/packages/raes/runtime_filesystem.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_filesystem.py rename to implementations/python/packages/raes/runtime_filesystem.py diff --git a/implementations/python/packages/aces_sdl/runtime_forwarding_agent.py b/implementations/python/packages/raes/runtime_forwarding_agent.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_forwarding_agent.py rename to implementations/python/packages/raes/runtime_forwarding_agent.py diff --git a/implementations/python/packages/aces_sdl/runtime_forwarding_agent_vocab.py b/implementations/python/packages/raes/runtime_forwarding_agent_vocab.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_forwarding_agent_vocab.py rename to implementations/python/packages/raes/runtime_forwarding_agent_vocab.py diff --git a/implementations/python/packages/aces_sdl/runtime_identity.py b/implementations/python/packages/raes/runtime_identity.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_identity.py rename to implementations/python/packages/raes/runtime_identity.py diff --git a/implementations/python/packages/aces_sdl/runtime_listeners.py b/implementations/python/packages/raes/runtime_listeners.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_listeners.py rename to implementations/python/packages/raes/runtime_listeners.py diff --git a/implementations/python/packages/aces_sdl/runtime_mail_service.py b/implementations/python/packages/raes/runtime_mail_service.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_mail_service.py rename to implementations/python/packages/raes/runtime_mail_service.py diff --git a/implementations/python/packages/aces_sdl/runtime_mail_vocab.py b/implementations/python/packages/raes/runtime_mail_vocab.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_mail_vocab.py rename to implementations/python/packages/raes/runtime_mail_vocab.py diff --git a/implementations/python/packages/aces_sdl/runtime_mounts.py b/implementations/python/packages/raes/runtime_mounts.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_mounts.py rename to implementations/python/packages/raes/runtime_mounts.py diff --git a/implementations/python/packages/aces_sdl/runtime_network.py b/implementations/python/packages/raes/runtime_network.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_network.py rename to implementations/python/packages/raes/runtime_network.py diff --git a/implementations/python/packages/aces_sdl/runtime_network_detection.py b/implementations/python/packages/raes/runtime_network_detection.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_network_detection.py rename to implementations/python/packages/raes/runtime_network_detection.py diff --git a/implementations/python/packages/aces_sdl/runtime_network_sensor.py b/implementations/python/packages/raes/runtime_network_sensor.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_network_sensor.py rename to implementations/python/packages/raes/runtime_network_sensor.py diff --git a/implementations/python/packages/aces_sdl/runtime_orchestration.py b/implementations/python/packages/raes/runtime_orchestration.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_orchestration.py rename to implementations/python/packages/raes/runtime_orchestration.py diff --git a/implementations/python/packages/aces_sdl/runtime_platform_application.py b/implementations/python/packages/raes/runtime_platform_application.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_platform_application.py rename to implementations/python/packages/raes/runtime_platform_application.py diff --git a/implementations/python/packages/aces_sdl/runtime_platform_application_content.py b/implementations/python/packages/raes/runtime_platform_application_content.py similarity index 99% rename from implementations/python/packages/aces_sdl/runtime_platform_application_content.py rename to implementations/python/packages/raes/runtime_platform_application_content.py index 3af28fdc5..17b600c71 100644 --- a/implementations/python/packages/aces_sdl/runtime_platform_application_content.py +++ b/implementations/python/packages/raes/runtime_platform_application_content.py @@ -1,7 +1,7 @@ """Typed child models for the platform-applications runtime family. These are the bounded, typed sub-collections held by -:class:`~aces_sdl.runtime_platform_application.RuntimePlatformApplication`: +:class:`~raes.runtime_platform_application.RuntimePlatformApplication`: content objects (bounded parsed manifests — never raw bodies), releasability markings, organizations, tenants, outbound upstream bindings, connectors, the optional execution policy, and provenance-bearing settings. diff --git a/implementations/python/packages/aces_sdl/runtime_platform_application_vocab.py b/implementations/python/packages/raes/runtime_platform_application_vocab.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_platform_application_vocab.py rename to implementations/python/packages/raes/runtime_platform_application_vocab.py diff --git a/implementations/python/packages/aces_sdl/runtime_scheduled_job.py b/implementations/python/packages/raes/runtime_scheduled_job.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_scheduled_job.py rename to implementations/python/packages/raes/runtime_scheduled_job.py diff --git a/implementations/python/packages/aces_sdl/runtime_security_monitoring.py b/implementations/python/packages/raes/runtime_security_monitoring.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_security_monitoring.py rename to implementations/python/packages/raes/runtime_security_monitoring.py diff --git a/implementations/python/packages/aces_sdl/runtime_security_monitoring_definitions.py b/implementations/python/packages/raes/runtime_security_monitoring_definitions.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_security_monitoring_definitions.py rename to implementations/python/packages/raes/runtime_security_monitoring_definitions.py diff --git a/implementations/python/packages/aces_sdl/runtime_service_units.py b/implementations/python/packages/raes/runtime_service_units.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_service_units.py rename to implementations/python/packages/raes/runtime_service_units.py diff --git a/implementations/python/packages/aces_sdl/runtime_software.py b/implementations/python/packages/raes/runtime_software.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_software.py rename to implementations/python/packages/raes/runtime_software.py diff --git a/implementations/python/packages/aces_sdl/runtime_ssh_server.py b/implementations/python/packages/raes/runtime_ssh_server.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_ssh_server.py rename to implementations/python/packages/raes/runtime_ssh_server.py diff --git a/implementations/python/packages/aces_sdl/runtime_values.py b/implementations/python/packages/raes/runtime_values.py similarity index 100% rename from implementations/python/packages/aces_sdl/runtime_values.py rename to implementations/python/packages/raes/runtime_values.py diff --git a/implementations/python/packages/aces_sdl/scenario.py b/implementations/python/packages/raes/scenario.py similarity index 100% rename from implementations/python/packages/aces_sdl/scenario.py rename to implementations/python/packages/raes/scenario.py diff --git a/implementations/python/packages/aces_sdl/scenarios.py b/implementations/python/packages/raes/scenarios.py similarity index 100% rename from implementations/python/packages/aces_sdl/scenarios.py rename to implementations/python/packages/raes/scenarios.py diff --git a/implementations/python/packages/aces_sdl/schema_catalogs.py b/implementations/python/packages/raes/schema_catalogs.py similarity index 100% rename from implementations/python/packages/aces_sdl/schema_catalogs.py rename to implementations/python/packages/raes/schema_catalogs.py diff --git a/implementations/python/packages/aces_sdl/semantics/__init__.py b/implementations/python/packages/raes/semantics/__init__.py similarity index 74% rename from implementations/python/packages/aces_sdl/semantics/__init__.py rename to implementations/python/packages/raes/semantics/__init__.py index 52777d4c4..56a24919e 100644 --- a/implementations/python/packages/aces_sdl/semantics/__init__.py +++ b/implementations/python/packages/raes/semantics/__init__.py @@ -1,6 +1,6 @@ """SDL-language semantic rules (objective windows, workflow step contracts). -Per ADR-015, these helpers live with the SDL package: the ``aces_sdl.validator`` +Per ADR-015, these helpers live with the SDL package: the ``raes.validator`` package uses them, and they have no processor-runtime dependencies. The processor's own reconciliation helpers stay at ``aces_processor.semantics.planner``. """ diff --git a/implementations/python/packages/aces_sdl/semantics/_deployment_shared_services.py b/implementations/python/packages/raes/semantics/_deployment_shared_services.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/_deployment_shared_services.py rename to implementations/python/packages/raes/semantics/_deployment_shared_services.py diff --git a/implementations/python/packages/aces_sdl/semantics/_deployment_tenancy_types.py b/implementations/python/packages/raes/semantics/_deployment_tenancy_types.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/_deployment_tenancy_types.py rename to implementations/python/packages/raes/semantics/_deployment_tenancy_types.py diff --git a/implementations/python/packages/aces_sdl/semantics/_domain_topology_bindings.py b/implementations/python/packages/raes/semantics/_domain_topology_bindings.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/_domain_topology_bindings.py rename to implementations/python/packages/raes/semantics/_domain_topology_bindings.py diff --git a/implementations/python/packages/aces_sdl/semantics/_domain_topology_types.py b/implementations/python/packages/raes/semantics/_domain_topology_types.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/_domain_topology_types.py rename to implementations/python/packages/raes/semantics/_domain_topology_types.py diff --git a/implementations/python/packages/aces_sdl/semantics/assessment.py b/implementations/python/packages/raes/semantics/assessment.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/assessment.py rename to implementations/python/packages/raes/semantics/assessment.py diff --git a/implementations/python/packages/aces_sdl/semantics/deployment_tenancy.py b/implementations/python/packages/raes/semantics/deployment_tenancy.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/deployment_tenancy.py rename to implementations/python/packages/raes/semantics/deployment_tenancy.py diff --git a/implementations/python/packages/aces_sdl/semantics/domain_topology.py b/implementations/python/packages/raes/semantics/domain_topology.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/domain_topology.py rename to implementations/python/packages/raes/semantics/domain_topology.py diff --git a/implementations/python/packages/aces_sdl/semantics/enterprise_identity.py b/implementations/python/packages/raes/semantics/enterprise_identity.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/enterprise_identity.py rename to implementations/python/packages/raes/semantics/enterprise_identity.py diff --git a/implementations/python/packages/aces_sdl/semantics/objective_semantics.py b/implementations/python/packages/raes/semantics/objective_semantics.py similarity index 99% rename from implementations/python/packages/aces_sdl/semantics/objective_semantics.py rename to implementations/python/packages/raes/semantics/objective_semantics.py index b4da3f5d3..c7b574880 100644 --- a/implementations/python/packages/aces_sdl/semantics/objective_semantics.py +++ b/implementations/python/packages/raes/semantics/objective_semantics.py @@ -3,10 +3,10 @@ :func:`analyze_objective_semantics` is the single name-level source of truth for the SDL declarative-objective construct — actor binding, target resolution, success interpretation over backend-neutral assertions, the -optional window (delegated to :func:`aces_sdl.semantics.objectives.analyze_objective_window`), +optional window (delegated to :func:`raes.semantics.objectives.analyze_objective_window`), and the acyclic ``depends_on`` ordering relation. It returns normalized references with their dependency-role tags, the per-objective ordering/refresh -dependency names, and a fail-closed issue list that ``aces_sdl.validator`` +dependency names, and a fail-closed issue list that ``raes.validator`` renders as authoring errors. ``aces_processor.compiler`` reuses the ordering/refresh role decision (:func:`partition_objective_dependencies`) when it maps a compiled ``evaluation.objective.*`` resource onto its dependency diff --git a/implementations/python/packages/aces_sdl/semantics/objectives.py b/implementations/python/packages/raes/semantics/objectives.py similarity index 99% rename from implementations/python/packages/aces_sdl/semantics/objectives.py rename to implementations/python/packages/raes/semantics/objectives.py index 1d6be272a..4740fb764 100644 --- a/implementations/python/packages/aces_sdl/semantics/objectives.py +++ b/implementations/python/packages/raes/semantics/objectives.py @@ -25,7 +25,7 @@ class ObjectiveDependencyRole(str, Enum): ``ORDERING`` constrains evaluation order (the dependent is computed after its inputs); ``REFRESH`` propagates change (the dependent is recomputed when an input changes). Window references carry only ``REFRESH``; success and - ``depends_on`` references (see :mod:`aces_sdl.semantics.objective_semantics`) + ``depends_on`` references (see :mod:`raes.semantics.objective_semantics`) carry both. """ diff --git a/implementations/python/packages/aces_sdl/semantics/participant_behavior.py b/implementations/python/packages/raes/semantics/participant_behavior.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/participant_behavior.py rename to implementations/python/packages/raes/semantics/participant_behavior.py diff --git a/implementations/python/packages/aces_sdl/semantics/participant_interactive_access.py b/implementations/python/packages/raes/semantics/participant_interactive_access.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/participant_interactive_access.py rename to implementations/python/packages/raes/semantics/participant_interactive_access.py diff --git a/implementations/python/packages/aces_sdl/semantics/participant_outcome.py b/implementations/python/packages/raes/semantics/participant_outcome.py similarity index 99% rename from implementations/python/packages/aces_sdl/semantics/participant_outcome.py rename to implementations/python/packages/raes/semantics/participant_outcome.py index f31050135..53a2ad765 100644 --- a/implementations/python/packages/aces_sdl/semantics/participant_outcome.py +++ b/implementations/python/packages/raes/semantics/participant_outcome.py @@ -5,7 +5,7 @@ from collections.abc import Callable, Mapping from dataclasses import dataclass -from aces_sdl.participant_outcome_semantics import ( +from raes.participant_outcome_semantics import ( OutcomeInterpretationSourceLayer, OutcomeInterpretationTargetLayer, ) diff --git a/implementations/python/packages/aces_sdl/semantics/propositions.py b/implementations/python/packages/raes/semantics/propositions.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/propositions.py rename to implementations/python/packages/raes/semantics/propositions.py diff --git a/implementations/python/packages/aces_sdl/semantics/workflow.py b/implementations/python/packages/raes/semantics/workflow.py similarity index 100% rename from implementations/python/packages/aces_sdl/semantics/workflow.py rename to implementations/python/packages/raes/semantics/workflow.py diff --git a/implementations/python/packages/aces_sdl/stateful_resources.py b/implementations/python/packages/raes/stateful_resources.py similarity index 100% rename from implementations/python/packages/aces_sdl/stateful_resources.py rename to implementations/python/packages/raes/stateful_resources.py diff --git a/implementations/python/packages/aces_sdl/time_model.py b/implementations/python/packages/raes/time_model.py similarity index 100% rename from implementations/python/packages/aces_sdl/time_model.py rename to implementations/python/packages/raes/time_model.py diff --git a/implementations/python/packages/aces_sdl/validator/__init__.py b/implementations/python/packages/raes/validator/__init__.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/__init__.py rename to implementations/python/packages/raes/validator/__init__.py diff --git a/implementations/python/packages/aces_sdl/validator/_content_objectives.py b/implementations/python/packages/raes/validator/_content_objectives.py similarity index 99% rename from implementations/python/packages/aces_sdl/validator/_content_objectives.py rename to implementations/python/packages/raes/validator/_content_objectives.py index 5228afbd9..947be21ac 100644 --- a/implementations/python/packages/aces_sdl/validator/_content_objectives.py +++ b/implementations/python/packages/raes/validator/_content_objectives.py @@ -24,7 +24,7 @@ from ._participant_execution_renderers import AUTONOMOUS_PARTICIPANT_ISSUE_RENDERERS # Renders an objective-semantics issue (machine-readable code from -# ``aces_sdl.semantics.objective_semantics``) into the authoring-error string +# ``raes.semantics.objective_semantics``) into the authoring-error string # the SDL surface has always used. Keyed by issue code so a new code is a new # line here rather than a new branch in a growing conditional. _OBJECTIVE_ISSUE_RENDERERS = { @@ -443,7 +443,7 @@ def _verify_objectives(self) -> None: # Declarative-objective semantics — actor binding, target resolution, # success interpretation, windows, and dependency ordering (SEM-207). # The name-level reference graph, ordering/refresh-role model, and - # fail-closed issue set live in ``aces_sdl.semantics.objective_semantics``; + # fail-closed issue set live in ``raes.semantics.objective_semantics``; # this pass renders the machine-readable issues it reports as authoring # errors. analysis = analyze_objective_semantics( diff --git a/implementations/python/packages/aces_sdl/validator/_core.py b/implementations/python/packages/raes/validator/_core.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_core.py rename to implementations/python/packages/raes/validator/_core.py diff --git a/implementations/python/packages/aces_sdl/validator/_deployment_tenancy.py b/implementations/python/packages/raes/validator/_deployment_tenancy.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_deployment_tenancy.py rename to implementations/python/packages/raes/validator/_deployment_tenancy.py diff --git a/implementations/python/packages/aces_sdl/validator/_domain_topology.py b/implementations/python/packages/raes/validator/_domain_topology.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_domain_topology.py rename to implementations/python/packages/raes/validator/_domain_topology.py diff --git a/implementations/python/packages/aces_sdl/validator/_enterprise_identity.py b/implementations/python/packages/raes/validator/_enterprise_identity.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_enterprise_identity.py rename to implementations/python/packages/raes/validator/_enterprise_identity.py diff --git a/implementations/python/packages/aces_sdl/validator/_evidence_requirements.py b/implementations/python/packages/raes/validator/_evidence_requirements.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_evidence_requirements.py rename to implementations/python/packages/raes/validator/_evidence_requirements.py diff --git a/implementations/python/packages/aces_sdl/validator/_mixed_control.py b/implementations/python/packages/raes/validator/_mixed_control.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_mixed_control.py rename to implementations/python/packages/raes/validator/_mixed_control.py diff --git a/implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py b/implementations/python/packages/raes/validator/_nodes_infra_network.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py rename to implementations/python/packages/raes/validator/_nodes_infra_network.py diff --git a/implementations/python/packages/aces_sdl/validator/_participant_execution_renderers.py b/implementations/python/packages/raes/validator/_participant_execution_renderers.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_participant_execution_renderers.py rename to implementations/python/packages/raes/validator/_participant_execution_renderers.py diff --git a/implementations/python/packages/aces_sdl/validator/_participant_tool_affordances.py b/implementations/python/packages/raes/validator/_participant_tool_affordances.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_participant_tool_affordances.py rename to implementations/python/packages/raes/validator/_participant_tool_affordances.py diff --git a/implementations/python/packages/aces_sdl/validator/_propositions.py b/implementations/python/packages/raes/validator/_propositions.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_propositions.py rename to implementations/python/packages/raes/validator/_propositions.py diff --git a/implementations/python/packages/aces_sdl/validator/_relationships.py b/implementations/python/packages/raes/validator/_relationships.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_relationships.py rename to implementations/python/packages/raes/validator/_relationships.py diff --git a/implementations/python/packages/aces_sdl/validator/_relationships_proxy.py b/implementations/python/packages/raes/validator/_relationships_proxy.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_relationships_proxy.py rename to implementations/python/packages/raes/validator/_relationships_proxy.py diff --git a/implementations/python/packages/aces_sdl/validator/_runtime_identity_data.py b/implementations/python/packages/raes/validator/_runtime_identity_data.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_runtime_identity_data.py rename to implementations/python/packages/raes/validator/_runtime_identity_data.py diff --git a/implementations/python/packages/aces_sdl/validator/_runtime_mail.py b/implementations/python/packages/raes/validator/_runtime_mail.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_runtime_mail.py rename to implementations/python/packages/raes/validator/_runtime_mail.py diff --git a/implementations/python/packages/aces_sdl/validator/_runtime_orchestration.py b/implementations/python/packages/raes/validator/_runtime_orchestration.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_runtime_orchestration.py rename to implementations/python/packages/raes/validator/_runtime_orchestration.py diff --git a/implementations/python/packages/aces_sdl/validator/_runtime_platform.py b/implementations/python/packages/raes/validator/_runtime_platform.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_runtime_platform.py rename to implementations/python/packages/raes/validator/_runtime_platform.py diff --git a/implementations/python/packages/aces_sdl/validator/_runtime_services.py b/implementations/python/packages/raes/validator/_runtime_services.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_runtime_services.py rename to implementations/python/packages/raes/validator/_runtime_services.py diff --git a/implementations/python/packages/aces_sdl/validator/_sections.py b/implementations/python/packages/raes/validator/_sections.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_sections.py rename to implementations/python/packages/raes/validator/_sections.py diff --git a/implementations/python/packages/aces_sdl/validator/_service_materialization.py b/implementations/python/packages/raes/validator/_service_materialization.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_service_materialization.py rename to implementations/python/packages/raes/validator/_service_materialization.py diff --git a/implementations/python/packages/aces_sdl/validator/_support.py b/implementations/python/packages/raes/validator/_support.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_support.py rename to implementations/python/packages/raes/validator/_support.py diff --git a/implementations/python/packages/aces_sdl/validator/_time_model.py b/implementations/python/packages/raes/validator/_time_model.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_time_model.py rename to implementations/python/packages/raes/validator/_time_model.py diff --git a/implementations/python/packages/aces_sdl/validator/_variation.py b/implementations/python/packages/raes/validator/_variation.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_variation.py rename to implementations/python/packages/raes/validator/_variation.py diff --git a/implementations/python/packages/aces_sdl/validator/_variation_satisfiability.py b/implementations/python/packages/raes/validator/_variation_satisfiability.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_variation_satisfiability.py rename to implementations/python/packages/raes/validator/_variation_satisfiability.py diff --git a/implementations/python/packages/aces_sdl/validator/_workflows_analysis.py b/implementations/python/packages/raes/validator/_workflows_analysis.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_workflows_analysis.py rename to implementations/python/packages/raes/validator/_workflows_analysis.py diff --git a/implementations/python/packages/aces_sdl/validator/_workflows_verify.py b/implementations/python/packages/raes/validator/_workflows_verify.py similarity index 100% rename from implementations/python/packages/aces_sdl/validator/_workflows_verify.py rename to implementations/python/packages/raes/validator/_workflows_verify.py diff --git a/implementations/python/packages/aces_sdl/value_parsing.py b/implementations/python/packages/raes/value_parsing.py similarity index 100% rename from implementations/python/packages/aces_sdl/value_parsing.py rename to implementations/python/packages/raes/value_parsing.py diff --git a/implementations/python/packages/aces_sdl/variables.py b/implementations/python/packages/raes/variables.py similarity index 100% rename from implementations/python/packages/aces_sdl/variables.py rename to implementations/python/packages/raes/variables.py diff --git a/implementations/python/packages/aces_sdl/variation.py b/implementations/python/packages/raes/variation.py similarity index 100% rename from implementations/python/packages/aces_sdl/variation.py rename to implementations/python/packages/raes/variation.py diff --git a/implementations/python/packages/aces_sdl/vulnerabilities.py b/implementations/python/packages/raes/vulnerabilities.py similarity index 100% rename from implementations/python/packages/aces_sdl/vulnerabilities.py rename to implementations/python/packages/raes/vulnerabilities.py diff --git a/implementations/python/pyproject.toml b/implementations/python/pyproject.toml index e917a729d..3ee640e72 100644 --- a/implementations/python/pyproject.toml +++ b/implementations/python/pyproject.toml @@ -4,8 +4,8 @@ build-backend = "hatchling.build" [project] name = "raes" -version = "0.24.0" -description = "Backend-agnostic cyber range scenario description language and runtime." +version = "0.25.0" +description = "Contracts and reference tooling for reproducible agentic environments." dynamic = ["readme"] requires-python = ">=3.11" dependencies = [ @@ -78,7 +78,7 @@ packages = [ "packages/aces_mcp", "packages/aces_processor", "packages/aces_runtime", - "packages/aces_sdl", + "packages/raes", ] # Ship the published contract corpus (the ADR-009 normative authority at the @@ -125,7 +125,7 @@ source = [ "aces_mcp", "aces_processor", "aces_runtime", - "aces_sdl", + "raes", ] [tool.coverage.report] @@ -169,5 +169,5 @@ ignore = [ "packages/aces_cli/**" = ["B008"] # typer requires function calls in defaults "packages/aces_runtime/control_plane_api.py" = ["B008"] # fastapi Depends() pattern "packages/aces_runtime/control_plane.py" = ["S112"] # intentional exception suppression -"packages/aces_sdl/module_registry.py" = ["S310", "S202"] # explicit OCI URL fetch and tarball extract +"packages/raes/module_registry.py" = ["S310", "S202"] # explicit OCI URL fetch and tarball extract "packages/aces_contracts/realization_envelope.py" = ["E402"] # late import breaks a carrier dependency cycle diff --git a/implementations/python/src/aces/core/scenarios.py b/implementations/python/src/aces/core/scenarios.py index 3d46f4de8..bbab7bb26 100644 --- a/implementations/python/src/aces/core/scenarios.py +++ b/implementations/python/src/aces/core/scenarios.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.scenarios") +_reexport(globals(), "raes.scenarios") del _reexport diff --git a/implementations/python/src/aces/core/sdl/__init__.py b/implementations/python/src/aces/core/sdl/__init__.py index bf7f712f1..ce80b6248 100644 --- a/implementations/python/src/aces/core/sdl/__init__.py +++ b/implementations/python/src/aces/core/sdl/__init__.py @@ -2,6 +2,6 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl") +_reexport(globals(), "raes") del _reexport diff --git a/implementations/python/src/aces/core/sdl/_base.py b/implementations/python/src/aces/core/sdl/_base.py index d9f091029..5fe3c8c05 100644 --- a/implementations/python/src/aces/core/sdl/_base.py +++ b/implementations/python/src/aces/core/sdl/_base.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl._base") +_reexport(globals(), "raes._base") del _reexport diff --git a/implementations/python/src/aces/core/sdl/_errors.py b/implementations/python/src/aces/core/sdl/_errors.py index 8687c1324..bcfd557eb 100644 --- a/implementations/python/src/aces/core/sdl/_errors.py +++ b/implementations/python/src/aces/core/sdl/_errors.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl._errors") +_reexport(globals(), "raes._errors") del _reexport diff --git a/implementations/python/src/aces/core/sdl/_source.py b/implementations/python/src/aces/core/sdl/_source.py index ba18ae5aa..57ff5e365 100644 --- a/implementations/python/src/aces/core/sdl/_source.py +++ b/implementations/python/src/aces/core/sdl/_source.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl._source") +_reexport(globals(), "raes._source") del _reexport diff --git a/implementations/python/src/aces/core/sdl/accounts.py b/implementations/python/src/aces/core/sdl/accounts.py index 9438dd3e6..23284f608 100644 --- a/implementations/python/src/aces/core/sdl/accounts.py +++ b/implementations/python/src/aces/core/sdl/accounts.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.accounts") +_reexport(globals(), "raes.accounts") del _reexport diff --git a/implementations/python/src/aces/core/sdl/agents.py b/implementations/python/src/aces/core/sdl/agents.py index f7054b841..7a210309c 100644 --- a/implementations/python/src/aces/core/sdl/agents.py +++ b/implementations/python/src/aces/core/sdl/agents.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.agents") +_reexport(globals(), "raes.agents") del _reexport diff --git a/implementations/python/src/aces/core/sdl/composition.py b/implementations/python/src/aces/core/sdl/composition.py index 5eda1ef3d..1c63d86b5 100644 --- a/implementations/python/src/aces/core/sdl/composition.py +++ b/implementations/python/src/aces/core/sdl/composition.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.composition") +_reexport(globals(), "raes.composition") del _reexport diff --git a/implementations/python/src/aces/core/sdl/conditions.py b/implementations/python/src/aces/core/sdl/conditions.py index 474df9183..4fc08f13f 100644 --- a/implementations/python/src/aces/core/sdl/conditions.py +++ b/implementations/python/src/aces/core/sdl/conditions.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.conditions") +_reexport(globals(), "raes.conditions") del _reexport diff --git a/implementations/python/src/aces/core/sdl/content.py b/implementations/python/src/aces/core/sdl/content.py index 2edffce8b..fb1bf0311 100644 --- a/implementations/python/src/aces/core/sdl/content.py +++ b/implementations/python/src/aces/core/sdl/content.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.content") +_reexport(globals(), "raes.content") del _reexport diff --git a/implementations/python/src/aces/core/sdl/entities.py b/implementations/python/src/aces/core/sdl/entities.py index 0a326287d..0e2cd191e 100644 --- a/implementations/python/src/aces/core/sdl/entities.py +++ b/implementations/python/src/aces/core/sdl/entities.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.entities") +_reexport(globals(), "raes.entities") del _reexport diff --git a/implementations/python/src/aces/core/sdl/features.py b/implementations/python/src/aces/core/sdl/features.py index 9bede7217..b64573270 100644 --- a/implementations/python/src/aces/core/sdl/features.py +++ b/implementations/python/src/aces/core/sdl/features.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.features") +_reexport(globals(), "raes.features") del _reexport diff --git a/implementations/python/src/aces/core/sdl/infrastructure.py b/implementations/python/src/aces/core/sdl/infrastructure.py index d922e159b..2515dfd82 100644 --- a/implementations/python/src/aces/core/sdl/infrastructure.py +++ b/implementations/python/src/aces/core/sdl/infrastructure.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.infrastructure") +_reexport(globals(), "raes.infrastructure") del _reexport diff --git a/implementations/python/src/aces/core/sdl/instantiate.py b/implementations/python/src/aces/core/sdl/instantiate.py index 2b4562e7e..e3fa2bf90 100644 --- a/implementations/python/src/aces/core/sdl/instantiate.py +++ b/implementations/python/src/aces/core/sdl/instantiate.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.instantiate") +_reexport(globals(), "raes.instantiate") del _reexport diff --git a/implementations/python/src/aces/core/sdl/module_registry.py b/implementations/python/src/aces/core/sdl/module_registry.py index 471b48b8e..35a85f02d 100644 --- a/implementations/python/src/aces/core/sdl/module_registry.py +++ b/implementations/python/src/aces/core/sdl/module_registry.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.module_registry") +_reexport(globals(), "raes.module_registry") del _reexport diff --git a/implementations/python/src/aces/core/sdl/nodes.py b/implementations/python/src/aces/core/sdl/nodes.py index f8472a427..53026fb65 100644 --- a/implementations/python/src/aces/core/sdl/nodes.py +++ b/implementations/python/src/aces/core/sdl/nodes.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.nodes") +_reexport(globals(), "raes.nodes") del _reexport diff --git a/implementations/python/src/aces/core/sdl/objectives.py b/implementations/python/src/aces/core/sdl/objectives.py index 00debc20c..27e7d6a0f 100644 --- a/implementations/python/src/aces/core/sdl/objectives.py +++ b/implementations/python/src/aces/core/sdl/objectives.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.objectives") +_reexport(globals(), "raes.objectives") del _reexport diff --git a/implementations/python/src/aces/core/sdl/orchestration.py b/implementations/python/src/aces/core/sdl/orchestration.py index 44ef49012..6100af24c 100644 --- a/implementations/python/src/aces/core/sdl/orchestration.py +++ b/implementations/python/src/aces/core/sdl/orchestration.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.orchestration") +_reexport(globals(), "raes.orchestration") del _reexport diff --git a/implementations/python/src/aces/core/sdl/parser.py b/implementations/python/src/aces/core/sdl/parser.py index 45e464e33..89d7787bf 100644 --- a/implementations/python/src/aces/core/sdl/parser.py +++ b/implementations/python/src/aces/core/sdl/parser.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.parser") +_reexport(globals(), "raes.parser") del _reexport diff --git a/implementations/python/src/aces/core/sdl/relationships.py b/implementations/python/src/aces/core/sdl/relationships.py index 2736c18e4..d3b06baf9 100644 --- a/implementations/python/src/aces/core/sdl/relationships.py +++ b/implementations/python/src/aces/core/sdl/relationships.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.relationships") +_reexport(globals(), "raes.relationships") del _reexport diff --git a/implementations/python/src/aces/core/sdl/scenario.py b/implementations/python/src/aces/core/sdl/scenario.py index 10c4f2ded..a81a8ee8e 100644 --- a/implementations/python/src/aces/core/sdl/scenario.py +++ b/implementations/python/src/aces/core/sdl/scenario.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.scenario") +_reexport(globals(), "raes.scenario") del _reexport diff --git a/implementations/python/src/aces/core/sdl/validator.py b/implementations/python/src/aces/core/sdl/validator.py index c32ca60b9..44ef7333d 100644 --- a/implementations/python/src/aces/core/sdl/validator.py +++ b/implementations/python/src/aces/core/sdl/validator.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.validator") +_reexport(globals(), "raes.validator") del _reexport diff --git a/implementations/python/src/aces/core/sdl/variables.py b/implementations/python/src/aces/core/sdl/variables.py index 8954aaeb7..de4d70007 100644 --- a/implementations/python/src/aces/core/sdl/variables.py +++ b/implementations/python/src/aces/core/sdl/variables.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.variables") +_reexport(globals(), "raes.variables") del _reexport diff --git a/implementations/python/src/aces/core/sdl/vulnerabilities.py b/implementations/python/src/aces/core/sdl/vulnerabilities.py index 503dc9de6..b76bb684a 100644 --- a/implementations/python/src/aces/core/sdl/vulnerabilities.py +++ b/implementations/python/src/aces/core/sdl/vulnerabilities.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.vulnerabilities") +_reexport(globals(), "raes.vulnerabilities") del _reexport diff --git a/implementations/python/src/aces/core/semantics/assessment.py b/implementations/python/src/aces/core/semantics/assessment.py index 1787f4cdf..67715ae94 100644 --- a/implementations/python/src/aces/core/semantics/assessment.py +++ b/implementations/python/src/aces/core/semantics/assessment.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.semantics.assessment") +_reexport(globals(), "raes.semantics.assessment") del _reexport diff --git a/implementations/python/src/aces/core/semantics/objective_semantics.py b/implementations/python/src/aces/core/semantics/objective_semantics.py index b81feafe2..31d68bab7 100644 --- a/implementations/python/src/aces/core/semantics/objective_semantics.py +++ b/implementations/python/src/aces/core/semantics/objective_semantics.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.semantics.objective_semantics") +_reexport(globals(), "raes.semantics.objective_semantics") del _reexport diff --git a/implementations/python/src/aces/core/semantics/objectives.py b/implementations/python/src/aces/core/semantics/objectives.py index a0ced2d14..b1cc4e300 100644 --- a/implementations/python/src/aces/core/semantics/objectives.py +++ b/implementations/python/src/aces/core/semantics/objectives.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.semantics.objectives") +_reexport(globals(), "raes.semantics.objectives") del _reexport diff --git a/implementations/python/src/aces/core/semantics/workflow.py b/implementations/python/src/aces/core/semantics/workflow.py index 67ecb5401..123da19eb 100644 --- a/implementations/python/src/aces/core/semantics/workflow.py +++ b/implementations/python/src/aces/core/semantics/workflow.py @@ -1,5 +1,5 @@ from aces._compat import reexport as _reexport -_reexport(globals(), "aces_sdl.semantics.workflow") +_reexport(globals(), "raes.semantics.workflow") del _reexport diff --git a/implementations/python/tests/libvirt_participant_proof.py b/implementations/python/tests/libvirt_participant_proof.py index 22745048f..0aed8416b 100644 --- a/implementations/python/tests/libvirt_participant_proof.py +++ b/implementations/python/tests/libvirt_participant_proof.py @@ -33,8 +33,8 @@ ) from aces_runtime.control_plane import RuntimeControlPlane from aces_runtime.registry import RuntimeTarget -from aces_sdl.parser import parse_sdl from libvirt_participant_fixtures import NullLibvirtDriver +from raes.parser import parse_sdl @dataclass(frozen=True) diff --git a/implementations/python/tests/test_act_617_mixed_control.py b/implementations/python/tests/test_act_617_mixed_control.py index 8d18e34d5..53622f274 100644 --- a/implementations/python/tests/test_act_617_mixed_control.py +++ b/implementations/python/tests/test_act_617_mixed_control.py @@ -8,10 +8,10 @@ import pytest from aces_processor.compiler import compile_runtime_model -from aces_sdl._errors import SDLParseError, SDLValidationError -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.parser import parse_sdl, parse_sdl_file -from aces_sdl.participant_behavior_specification import MixedControlTransitionKind +from raes._errors import SDLParseError, SDLValidationError +from raes.instantiate import instantiate_scenario +from raes.parser import parse_sdl, parse_sdl_file +from raes.participant_behavior_specification import MixedControlTransitionKind REPO_ROOT = Path(__file__).resolve().parents[3] diff --git a/implementations/python/tests/test_agent_guidance.py b/implementations/python/tests/test_agent_guidance.py index 8280e8383..fe724cb87 100644 --- a/implementations/python/tests/test_agent_guidance.py +++ b/implementations/python/tests/test_agent_guidance.py @@ -1,6 +1,6 @@ from __future__ import annotations -from aces_sdl.agent_guidance import agent_guidance +from raes.agent_guidance import agent_guidance def test_agent_guidance_exposes_required_categories() -> None: diff --git a/implementations/python/tests/test_api_421_time_contracts.py b/implementations/python/tests/test_api_421_time_contracts.py index 37624e2bf..848509145 100644 --- a/implementations/python/tests/test_api_421_time_contracts.py +++ b/implementations/python/tests/test_api_421_time_contracts.py @@ -22,7 +22,7 @@ time_model_contract_model, ) from aces_runtime import RuntimeManager -from aces_sdl.parser import parse_sdl +from raes.parser import parse_sdl REPO_ROOT = Path(__file__).resolve().parents[3] FIXTURE_ROOT = REPO_ROOT / "contracts" / "fixtures" / "time" diff --git a/implementations/python/tests/test_associated_artifact_manifests.py b/implementations/python/tests/test_associated_artifact_manifests.py index 838895df9..7a10fa6ad 100644 --- a/implementations/python/tests/test_associated_artifact_manifests.py +++ b/implementations/python/tests/test_associated_artifact_manifests.py @@ -26,8 +26,8 @@ schema_bundle, ) from aces_contracts.versions import ASSOCIATED_ARTIFACT_MANIFEST_SCHEMA_VERSION -from aces_sdl import canonical_sdl_digest, parse_sdl from pydantic import ValidationError +from raes import canonical_sdl_digest, parse_sdl PAYLOAD = b"operator guide\n" PAYLOAD_SHA256 = hashlib.sha256(PAYLOAD).hexdigest() diff --git a/implementations/python/tests/test_authored_domain_topology.py b/implementations/python/tests/test_authored_domain_topology.py index 1a3d0f948..8b79e63d6 100644 --- a/implementations/python/tests/test_authored_domain_topology.py +++ b/implementations/python/tests/test_authored_domain_topology.py @@ -23,9 +23,9 @@ from aces_processor.semantics.realization import realization_disclosure from aces_reference_backend import create_reference_backend_manifest from aces_runtime.control_plane import RuntimeControlPlane -from aces_sdl import SDLParseError, SDLValidationError, parse_sdl, parse_sdl_file -from aces_sdl.language_service import language_completions from jsonschema import Draft202012Validator +from raes import SDLParseError, SDLValidationError, parse_sdl, parse_sdl_file +from raes.language_service import language_completions _INSTANTIATION_PROVENANCE = { "authored_digest": { diff --git a/implementations/python/tests/test_corpus_packaging.py b/implementations/python/tests/test_corpus_packaging.py index c83e6c223..cd66d5da3 100644 --- a/implementations/python/tests/test_corpus_packaging.py +++ b/implementations/python/tests/test_corpus_packaging.py @@ -110,6 +110,24 @@ def test_built_wheel_includes_third_party_notice(built_wheel: Path): assert "fe83e8281fc4b954967fbaa5a0d099007ddcb06c" in notice +@requires_uv +def test_installed_wheel_hard_cuts_sdl_import_namespace(installed_python: Path, tmp_path: Path): + """The wheel exposes ``raes`` and contains no importable ``aces_sdl`` residue.""" + + script = ( + "import importlib.util\n" + "import raes\n" + "assert raes.parse_sdl\n" + "assert importlib.util.find_spec('aces_sdl') is None\n" + ) + result = _run( + [str(installed_python), "-c", script], + cwd=tmp_path, + env=_sanitized_runtime_env(tmp_path), + ) + assert result.returncode == 0, f"namespace hard cut failed:\n{result.stdout}\n{result.stderr}" + + @requires_uv def test_corpus_discoverable_via_importlib_resources_from_installed_wheel(installed_python: Path, tmp_path: Path): """Acceptance: the corpus is discoverable via ``importlib.resources`` from diff --git a/implementations/python/tests/test_design_drift_audit.py b/implementations/python/tests/test_design_drift_audit.py index d0523e038..2fd1d7dae 100644 --- a/implementations/python/tests/test_design_drift_audit.py +++ b/implementations/python/tests/test_design_drift_audit.py @@ -30,7 +30,7 @@ "precedents.md", "specs/", "contracts/", - "implementations/python/packages/aces_sdl/", + "implementations/python/packages/raes/", ) REQUIRED_FINDING_FIELDS = ( diff --git a/implementations/python/tests/test_domain_controller_placement.py b/implementations/python/tests/test_domain_controller_placement.py index f3b0b31d1..889cbde54 100644 --- a/implementations/python/tests/test_domain_controller_placement.py +++ b/implementations/python/tests/test_domain_controller_placement.py @@ -36,8 +36,8 @@ from aces_processor.planner import plan from aces_processor.semantics.realization import realization_disclosure from aces_reference_backend import interpret_provisioning_plan as interpret_reference_plan -from aces_sdl import parse_sdl from jsonschema import Draft202012Validator +from raes import parse_sdl _RESOURCE_TYPE = "domain-controller-placement" diff --git a/implementations/python/tests/test_dsl_115_authoring_specificity.py b/implementations/python/tests/test_dsl_115_authoring_specificity.py index 62da683ce..e3fbc6310 100644 --- a/implementations/python/tests/test_dsl_115_authoring_specificity.py +++ b/implementations/python/tests/test_dsl_115_authoring_specificity.py @@ -5,8 +5,8 @@ import textwrap from aces_contracts.contracts import ExperimentReferenceModel -from aces_sdl import parse_sdl -from aces_sdl.explicitness import ExplicitnessClass, classify_authoring_specificity +from raes import parse_sdl +from raes.explicitness import ExplicitnessClass, classify_authoring_specificity def _scenario_with_specificity_levels(): diff --git a/implementations/python/tests/test_dsl_123_scenario_native_observability.py b/implementations/python/tests/test_dsl_123_scenario_native_observability.py index 43603637b..c6ddd6f8a 100644 --- a/implementations/python/tests/test_dsl_123_scenario_native_observability.py +++ b/implementations/python/tests/test_dsl_123_scenario_native_observability.py @@ -3,16 +3,16 @@ from __future__ import annotations import pytest -from aces_sdl._errors import SDLValidationError -from aces_sdl._runtime_service_families import RUNTIME_SERVICE_FAMILIES, collect_qualified_runtime_family_refs -from aces_sdl.observability_plane_semantics import ( +from raes._errors import SDLValidationError +from raes._runtime_service_families import RUNTIME_SERVICE_FAMILIES, collect_qualified_runtime_family_refs +from raes.observability_plane_semantics import ( SCENARIO_NATIVE_OBSERVABILITY_FAMILIES, ObservabilityEvidencePlane, classify_runtime_family, collect_scenario_native_observability_refs, ) -from aces_sdl.scenario import Scenario -from aces_sdl.validator import SemanticValidator +from raes.scenario import Scenario +from raes.validator import SemanticValidator OBSERVABILITY_REF = "nodes.siem.runtime.service_listeners.siem-http" NON_OBSERVABILITY_REF = "nodes.siem.runtime.applications.admin-ui" diff --git a/implementations/python/tests/test_dsl_124_authored_evidence_requirements.py b/implementations/python/tests/test_dsl_124_authored_evidence_requirements.py index 816a4d14e..663784b13 100644 --- a/implementations/python/tests/test_dsl_124_authored_evidence_requirements.py +++ b/implementations/python/tests/test_dsl_124_authored_evidence_requirements.py @@ -3,13 +3,13 @@ from __future__ import annotations import pytest -from aces_sdl._errors import SDLParseError, SDLValidationError -from aces_sdl.observability_plane_semantics import ( +from raes._errors import SDLParseError, SDLValidationError +from raes.observability_plane_semantics import ( ObservabilityEvidencePlane, classify_sdl_section_plane, collect_scenario_native_observability_refs, ) -from aces_sdl.parser import parse_sdl +from raes.parser import parse_sdl OBSERVABILITY_REF = "nodes.siem.runtime.service_listeners.siem-http" diff --git a/implementations/python/tests/test_dsl_437_benign_participant_execution.py b/implementations/python/tests/test_dsl_437_benign_participant_execution.py index e42bfc788..258db1ce6 100644 --- a/implementations/python/tests/test_dsl_437_benign_participant_execution.py +++ b/implementations/python/tests/test_dsl_437_benign_participant_execution.py @@ -38,9 +38,9 @@ from aces_runtime.participant_clock_driver import ParticipantClockDriver from aces_runtime.participant_scheduler import ParticipantScheduler from aces_runtime.time_coordinator import ReferenceTimeRuntime, TimeCoordinator -from aces_sdl._errors import SDLValidationError -from aces_sdl.parser import parse_sdl -from aces_sdl.participant_behavior import ParticipantFailureClass +from raes._errors import SDLValidationError +from raes.parser import parse_sdl +from raes.participant_behavior import ParticipantFailureClass REPO_ROOT = Path(__file__).resolve().parents[3] EXAMPLE = REPO_ROOT / "examples" / "scenarios" / "enterprise-participant-evidence-loop.sdl.yaml" diff --git a/implementations/python/tests/test_dsl_437_evaluation_authority.py b/implementations/python/tests/test_dsl_437_evaluation_authority.py index 7da6ba1da..e6fbc96ab 100644 --- a/implementations/python/tests/test_dsl_437_evaluation_authority.py +++ b/implementations/python/tests/test_dsl_437_evaluation_authority.py @@ -5,8 +5,8 @@ import pytest import yaml from aces_processor.compiler import compile_runtime_model -from aces_sdl._errors import SDLValidationError -from aces_sdl.parser import parse_sdl +from raes._errors import SDLValidationError +from raes.parser import parse_sdl from test_dsl_437_benign_participant_execution import _scenario_yaml diff --git a/implementations/python/tests/test_enterprise_deployment_tenancy.py b/implementations/python/tests/test_enterprise_deployment_tenancy.py index 9110cc7c2..7f1276826 100644 --- a/implementations/python/tests/test_enterprise_deployment_tenancy.py +++ b/implementations/python/tests/test_enterprise_deployment_tenancy.py @@ -10,8 +10,8 @@ import yaml from aces_contracts.contracts import schema_bundle from aces_processor.compiler import compile_runtime_model -from aces_sdl import SDLParseError, SDLValidationError, parse_sdl, parse_sdl_file from jsonschema import Draft202012Validator +from raes import SDLParseError, SDLValidationError, parse_sdl, parse_sdl_file _INSTANTIATION_PROVENANCE = { "authored_digest": { diff --git a/implementations/python/tests/test_example_schema_conformance.py b/implementations/python/tests/test_example_schema_conformance.py index ea1794e99..9d2a76acd 100644 --- a/implementations/python/tests/test_example_schema_conformance.py +++ b/implementations/python/tests/test_example_schema_conformance.py @@ -29,10 +29,10 @@ import pytest from aces_contracts.corpus import corpus_family_root from aces_contracts.experiment_spec import load_experiment_spec -from aces_sdl import load_sdl_fragment -from aces_sdl.scenarios import load_scenario from jsonschema import Draft202012Validator from paths import EXAMPLES_DIR, EXPERIMENTS_DIR +from raes import load_sdl_fragment +from raes.scenarios import load_scenario class SupportsModelDump(Protocol): diff --git a/implementations/python/tests/test_exploit_path_analysis.py b/implementations/python/tests/test_exploit_path_analysis.py index 42451ce82..d1aa98b7d 100644 --- a/implementations/python/tests/test_exploit_path_analysis.py +++ b/implementations/python/tests/test_exploit_path_analysis.py @@ -17,15 +17,15 @@ analyze_exploit_path_file, replay_exploit_path_evidence, ) -from aces_sdl.canonical import ( +from jsonschema import Draft202012Validator +from pydantic import ValidationError +from raes.canonical import ( INSTANTIATED_SNAPSHOT_PROFILE, InstantiatedScenarioSnapshot, canonical_instantiated_sdl_digest, ) -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.parser import parse_sdl -from jsonschema import Draft202012Validator -from pydantic import ValidationError +from raes.instantiate import instantiate_scenario +from raes.parser import parse_sdl _SDL = """\ name: exploit-path-control diff --git a/implementations/python/tests/test_initial_service_state.py b/implementations/python/tests/test_initial_service_state.py index 71afd58ce..8f64329d2 100644 --- a/implementations/python/tests/test_initial_service_state.py +++ b/implementations/python/tests/test_initial_service_state.py @@ -17,7 +17,7 @@ from aces_processor.semantics.realization import realization_disclosure from aces_runtime.control_plane import RuntimeControlPlane from aces_runtime.registry import RuntimeTarget -from aces_sdl import SDLValidationError, parse_sdl, parse_sdl_file +from raes import SDLValidationError, parse_sdl, parse_sdl_file from aces.backends.stubs import create_stub_manifest, create_stub_target diff --git a/implementations/python/tests/test_instantiated_scenario_schema.py b/implementations/python/tests/test_instantiated_scenario_schema.py index 525d4194a..410df1040 100644 --- a/implementations/python/tests/test_instantiated_scenario_schema.py +++ b/implementations/python/tests/test_instantiated_scenario_schema.py @@ -14,10 +14,10 @@ import pytest from aces_contracts.contracts import schema_bundle -from aces_sdl._base import VARIABLE_TOKEN_PATTERN -from aces_sdl.scenario import InstantiatedScenario, Scenario from jsonschema import Draft202012Validator from pydantic import ValidationError +from raes._base import VARIABLE_TOKEN_PATTERN +from raes.scenario import InstantiatedScenario, Scenario REPO_ROOT = Path(__file__).resolve().parents[3] SDL_SCHEMA_DIR = REPO_ROOT / "contracts" / "schemas" / "sdl" diff --git a/implementations/python/tests/test_language_service.py b/implementations/python/tests/test_language_service.py index 11590fb06..89eefab5a 100644 --- a/implementations/python/tests/test_language_service.py +++ b/implementations/python/tests/test_language_service.py @@ -3,7 +3,7 @@ from __future__ import annotations import pytest -from aces_sdl.language_service import ( +from raes.language_service import ( apply_structured_edit, language_completions, language_diagnostics, diff --git a/implementations/python/tests/test_libvirt_backend_envelopes.py b/implementations/python/tests/test_libvirt_backend_envelopes.py index 110185cd6..290a1dbc4 100644 --- a/implementations/python/tests/test_libvirt_backend_envelopes.py +++ b/implementations/python/tests/test_libvirt_backend_envelopes.py @@ -15,8 +15,8 @@ from aces_backend_protocols.manifest import backend_manifest_payload from aces_contracts.realization_envelope import BackendRealizationEnvelopeModel, realization_envelope_digest from aces_processor.reference import run_reference_processor -from aces_sdl.parser import parse_sdl from libvirt_conformance_fixtures import RecordingLibvirtDriver +from raes.parser import parse_sdl def test_default_libvirt_manifest_selects_generic_envelope(): diff --git a/implementations/python/tests/test_libvirt_backend_guest_certified.py b/implementations/python/tests/test_libvirt_backend_guest_certified.py index 75c18581b..879321158 100644 --- a/implementations/python/tests/test_libvirt_backend_guest_certified.py +++ b/implementations/python/tests/test_libvirt_backend_guest_certified.py @@ -408,7 +408,7 @@ def _guest_matrix(scenario: Path): from aces_backend_libvirt.manifest import create_libvirt_manifest from aces_backend_libvirt.realization import interpret_provisioning_plan from aces_backend_libvirt.techvault_matrix import native_matrix - from aces_sdl.parser import parse_sdl_file + from raes.parser import parse_sdl_file from aces.core.runtime.manager import RuntimeManager diff --git a/implementations/python/tests/test_libvirt_conformance.py b/implementations/python/tests/test_libvirt_conformance.py index 82b06efa1..fc36d1d44 100644 --- a/implementations/python/tests/test_libvirt_conformance.py +++ b/implementations/python/tests/test_libvirt_conformance.py @@ -31,9 +31,9 @@ from aces_contracts.planning import RuntimeDomain from aces_processor.reference import run_reference_processor from aces_runtime.control_plane import RuntimeControlPlane -from aces_sdl.parser import parse_sdl from libvirt_conformance_fixtures import RecordingLibvirtDriver from libvirt_participant_fixtures import NullLibvirtDriver +from raes.parser import parse_sdl REPO_ROOT = Path(__file__).resolve().parents[3] COMMITTED_REPORT = REPO_ROOT / "docs" / "conformance" / "libvirt-qemu.provisioning-only.report.json" diff --git a/implementations/python/tests/test_mcp_server.py b/implementations/python/tests/test_mcp_server.py index e6269c895..7ce01dec0 100644 --- a/implementations/python/tests/test_mcp_server.py +++ b/implementations/python/tests/test_mcp_server.py @@ -207,6 +207,8 @@ def _json_call(server, tool: str, args: dict | None = None) -> dict: class TestReferenceTools: def test_sdl_overview_returns_content(self, server): text = _call(server, "sdl_overview") + assert "agentic environments" in text + assert "authored scenarios" in text assert "SDL" in text assert "authoring sections" in text.lower() assert "17 sections" not in text.lower() @@ -921,6 +923,8 @@ def test_server_has_instructions(self): server = create_server() assert server.instructions assert "SDL" in server.instructions + assert "agentic environments" in server.instructions + assert "authored scenario" in server.instructions # --------------------------------------------------------------------------- diff --git a/implementations/python/tests/test_network_namespace_sharing.py b/implementations/python/tests/test_network_namespace_sharing.py index 8199d7de5..68bed7a8d 100644 --- a/implementations/python/tests/test_network_namespace_sharing.py +++ b/implementations/python/tests/test_network_namespace_sharing.py @@ -6,7 +6,7 @@ from pathlib import Path import pytest -from aces_sdl.nodes import RuntimeNetworkNamespace +from raes.nodes import RuntimeNetworkNamespace from aces.backends.stubs import create_stub_manifest from aces.core.runtime.compiler import compile_runtime_model diff --git a/implementations/python/tests/test_participant_interactive_access.py b/implementations/python/tests/test_participant_interactive_access.py index 22fef9a61..f902da3e7 100644 --- a/implementations/python/tests/test_participant_interactive_access.py +++ b/implementations/python/tests/test_participant_interactive_access.py @@ -9,7 +9,7 @@ import pytest from aces_contracts.contracts import schema_bundle from aces_processor.compiler import compile_runtime_model -from aces_sdl import ( +from raes import ( SDLInstantiationError, SDLParseError, SDLValidationError, @@ -17,7 +17,7 @@ parse_sdl, parse_sdl_file, ) -from aces_sdl.language_service import language_completions, language_references +from raes.language_service import language_completions, language_references REPO_ROOT = Path(__file__).resolve().parents[3] diff --git a/implementations/python/tests/test_pipeline_determinism.py b/implementations/python/tests/test_pipeline_determinism.py index da4d548b3..7a7821581 100644 --- a/implementations/python/tests/test_pipeline_determinism.py +++ b/implementations/python/tests/test_pipeline_determinism.py @@ -37,7 +37,7 @@ ``parse -> instantiate -> compile`` path injects no wall-clock / uuid / random values, so the compiled ``RuntimeModel`` carries no per-run fields (verified: no ``datetime.now`` / ``time.time`` / ``uuid4`` / ``random`` / ``secrets`` in - ``aces_sdl`` or ``aces_processor``). Author-provided time-typed values + ``raes`` or ``aces_processor``). Author-provided time-typed values (``start_time``, OCR durations, script ``time``) are deterministic functions of the input and need no exclusion. The strip mechanism is retained and check (1) is the tripwire: a future generated timestamp would differ between diff --git a/implementations/python/tests/test_plan_inspection_cli.py b/implementations/python/tests/test_plan_inspection_cli.py index cf455d956..e246665a6 100644 --- a/implementations/python/tests/test_plan_inspection_cli.py +++ b/implementations/python/tests/test_plan_inspection_cli.py @@ -14,7 +14,8 @@ OrchestrationPlanModel, ProvisioningPlanModel, ) -from aces_sdl._errors import ( +from paths import EXAMPLES_DIR +from raes._errors import ( SDLInstantiationError, SDLParseDiagnostic, SDLParseError, @@ -22,7 +23,6 @@ SDLSourceRange, SDLValidationError, ) -from paths import EXAMPLES_DIR from typer.testing import CliRunner _SCENARIO = EXAMPLES_DIR / "techvault-defensive-min.sdl.yaml" diff --git a/implementations/python/tests/test_project_positioning.py b/implementations/python/tests/test_project_positioning.py new file mode 100644 index 000000000..71d9df212 --- /dev/null +++ b/implementations/python/tests/test_project_positioning.py @@ -0,0 +1,240 @@ +from __future__ import annotations + +from pathlib import Path + +import pytest +from tools.check_project_positioning import MAX_SURFACE_BYTES, validate_project_positioning + +REPO_ROOT = Path(__file__).resolve().parents[3] + + +def _write(path: Path, content: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + + +def _seed_positioning_surfaces(repo_root: Path) -> None: + primary_copy = """ +Reproducible Agentic Environments System (RAES) supports reproducible agentic +environments. An agentic environment is a declared and realized setting in +which participants receive observations, take actions, interact, and are +evaluated under stated controls. + +Cyber, AI security, AI safety, testing, research, and evaluation are +non-exhaustive application areas. The general model can support additional +domains through domain-specific profiles and catalogs. + +RAES preserves authored scenario intent, governed variation, realized +environment details, participant behavior, observations, evidence, provenance, +replay boundaries, and conformance results for a bounded reproduction attempt. +It does not guarantee deterministic runtime behavior, equal outcomes, exact +replay, or reproducibility. +""" + for relative_path in ( + "README.md", + "docs/index.md", + "docs/explain/getting-started.md", + "docs/explain/reference/canonical-reference-map.md", + "docs/explain/sdl/index.md", + "docs/explain/sdl/runtime-architecture.md", + "examples/README.md", + ): + _write(repo_root / relative_path, primary_copy) + + _write( + repo_root / "docs/explain/reference/glossary.md", + primary_copy + + "\n**RAES**\n: The overall system.\n" + + "\n**Agentic environment**\n: A declared and realized setting.\n" + + "\n**Reproducibility support**\n: Support for a bounded reproduction attempt.\n", + ) + _write( + repo_root / "examples/library/catalog.yaml", + "description: >\n" + " Domain-neutral RAES agentic-environment authoring library for examples,\n" + " templates, and reusable patterns.\n", + ) + _write( + repo_root / "implementations/python/pyproject.toml", + '[project]\ndescription = "Contracts and reference tooling for reproducible agentic environments."\n', + ) + _write( + repo_root / "docs/conf.py", + 'project = "Reproducible Agentic Environments System"\nhtml_title = "RAES Documentation"\n', + ) + _write( + repo_root / "implementations/python/packages/aces_mcp/server.py", + '_INSTRUCTIONS = """Reproducible Agentic Environments System (RAES) ' + "supports agentic environments. RAES SDL is the authored scenario " + 'language."""\n', + ) + _write( + repo_root / "implementations/python/packages/aces_mcp/tools/reference.py", + '_OVERVIEW_TEXT = """RAES supports reproducible agentic environments. ' + "RAES SDL describes authored scenarios; backends produce realized " + 'environments for bounded reproduction attempts."""\n', + ) + + +def test_current_repository_satisfies_project_positioning_contract() -> None: + assert validate_project_positioning(REPO_ROOT) == [] + + +def test_positioning_check_reports_missing_domain_neutral_metadata(tmp_path: Path) -> None: + _seed_positioning_surfaces(tmp_path) + _write( + tmp_path / "implementations/python/pyproject.toml", + '[project]\ndescription = "Backend-agnostic cyber range scenario language."\n', + ) + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-metadata" and failure.path == "implementations/python/pyproject.toml" + for failure in failures + ) + + +def test_positioning_check_reports_missing_claim_boundary(tmp_path: Path) -> None: + _seed_positioning_surfaces(tmp_path) + _write( + tmp_path / "docs/explain/getting-started.md", + "Reproducible Agentic Environments System guarantees exact replay.\n", + ) + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-claim-boundary" and failure.path == "docs/explain/getting-started.md" + for failure in failures + ) + + +@pytest.mark.parametrize( + ("relative_path", "replacement"), + ( + ("README.md", None), + ("docs/index.md", "x" * (MAX_SURFACE_BYTES + 1)), + ), +) +def test_positioning_check_reports_invalid_required_surface( + tmp_path: Path, + relative_path: str, + replacement: str | None, +) -> None: + _seed_positioning_surfaces(tmp_path) + surface = tmp_path / relative_path + if replacement is None: + surface.unlink() + else: + _write(surface, replacement) + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-surface" and failure.path == relative_path for failure in failures + ) + + +@pytest.mark.parametrize( + "relative_path", + ( + "README.md", + "docs/explain/reference/canonical-reference-map.md", + ), +) +def test_positioning_check_reports_missing_entrypoint_framing( + tmp_path: Path, + relative_path: str, +) -> None: + _seed_positioning_surfaces(tmp_path) + _write(tmp_path / relative_path, "This surface no longer identifies its subject.\n") + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-framing" and failure.path == relative_path for failure in failures + ) + + +def test_positioning_check_reports_incomplete_glossary_framing(tmp_path: Path) -> None: + _seed_positioning_surfaces(tmp_path) + _write( + tmp_path / "docs/explain/reference/glossary.md", + "Agentic environments are declared and realized settings.\n", + ) + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-framing" and failure.path == "docs/explain/reference/glossary.md" + for failure in failures + ) + + +def test_positioning_check_reports_incomplete_application_areas(tmp_path: Path) -> None: + _seed_positioning_surfaces(tmp_path) + readme = (tmp_path / "README.md").read_text(encoding="utf-8") + _write(tmp_path / "README.md", readme.replace(", and evaluation", "")) + + failures = validate_project_positioning(tmp_path) + + assert any(failure.rule_id == "project-positioning-domains" and failure.path == "README.md" for failure in failures) + + +@pytest.mark.parametrize( + ("relative_path", "replacement"), + ( + ( + "docs/conf.py", + 'project = "RAES"\nhtml_title = "Documentation"\n', + ), + ( + "examples/library/catalog.yaml", + "description: Cyber scenario examples.\n", + ), + ), +) +def test_positioning_check_reports_invalid_structured_metadata( + tmp_path: Path, + relative_path: str, + replacement: str, +) -> None: + _seed_positioning_surfaces(tmp_path) + _write(tmp_path / relative_path, replacement) + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-metadata" and failure.path == relative_path for failure in failures + ) + + +@pytest.mark.parametrize( + ("relative_path", "assignment"), + ( + ("implementations/python/packages/aces_mcp/server.py", "_INSTRUCTIONS"), + ( + "implementations/python/packages/aces_mcp/tools/reference.py", + "_OVERVIEW_TEXT", + ), + ), +) +def test_positioning_check_reports_invalid_mcp_metadata( + tmp_path: Path, + relative_path: str, + assignment: str, +) -> None: + _seed_positioning_surfaces(tmp_path) + _write(tmp_path / relative_path, f'{assignment} = "Scenario authoring tools."\n') + + failures = validate_project_positioning(tmp_path) + + assert any( + failure.rule_id == "project-positioning-metadata" and failure.path == relative_path for failure in failures + ) + + +def test_positioning_check_is_registered_in_canonical_policy_graph() -> None: + noxfile_source = (REPO_ROOT / "noxfile.py").read_text(encoding="utf-8") + assert '"tools/check_project_positioning.py"' in noxfile_source diff --git a/implementations/python/tests/test_proposition_semantics.py b/implementations/python/tests/test_proposition_semantics.py index 2457ed277..d1472b4b5 100644 --- a/implementations/python/tests/test_proposition_semantics.py +++ b/implementations/python/tests/test_proposition_semantics.py @@ -4,9 +4,10 @@ import pytest from aces_processor.compiler import compile_runtime_model -from aces_sdl._errors import SDLParseError, SDLValidationError -from aces_sdl.parser import parse_sdl -from aces_sdl.propositions import ( +from pydantic import ValidationError +from raes._errors import SDLParseError, SDLValidationError +from raes.parser import parse_sdl +from raes.propositions import ( Assertion, AssertionPolarity, AssertionRole, @@ -18,14 +19,13 @@ SubjectQuantifier, TruthCompositionMode, ) -from aces_sdl.semantics.propositions import ( +from raes.semantics.propositions import ( TruthValue, compose_truth, evaluate_assertion_polarity, negate_truth, quantify_subject_truth, ) -from pydantic import ValidationError def test_proposition_is_inspectable_without_probe_execution() -> None: diff --git a/implementations/python/tests/test_realization_envelope_relation.py b/implementations/python/tests/test_realization_envelope_relation.py index 36efba7d3..7d6b88105 100644 --- a/implementations/python/tests/test_realization_envelope_relation.py +++ b/implementations/python/tests/test_realization_envelope_relation.py @@ -30,19 +30,19 @@ RecordDomain, WitnessPolicy, ) -from aces_sdl import ( +from hypothesis import given, settings +from hypothesis import strategies as st +from pydantic import ValidationError +from raes import ( SDLInstantiationError, SDLValidationError, instantiate_scenario, parse_sdl, ) -from aces_sdl._realization_envelope_domains import _MISSING, default_witness_value, out_of_domain_value -from aces_sdl._realization_envelope_engine import effective_constraints -from aces_sdl.realization_envelope import generate_negative_probes, generate_positive_probes, member, subsumes, witness -from aces_sdl.scenario import InstantiatedScenario, Scenario -from hypothesis import given, settings -from hypothesis import strategies as st -from pydantic import ValidationError +from raes._realization_envelope_domains import _MISSING, default_witness_value, out_of_domain_value +from raes._realization_envelope_engine import effective_constraints +from raes.realization_envelope import generate_negative_probes, generate_positive_probes, member, subsumes, witness +from raes.scenario import InstantiatedScenario, Scenario _DATA = Path(__file__).parent / "data" / "realization_envelope" diff --git a/implementations/python/tests/test_reference_backend_provenance.py b/implementations/python/tests/test_reference_backend_provenance.py index cb272e083..b80e4f187 100644 --- a/implementations/python/tests/test_reference_backend_provenance.py +++ b/implementations/python/tests/test_reference_backend_provenance.py @@ -5,7 +5,7 @@ import textwrap from aces_reference_backend import create_reference_backend_target -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance from aces.core.runtime.manager import RuntimeManager from aces.core.sdl import parse_sdl diff --git a/implementations/python/tests/test_reference_processor.py b/implementations/python/tests/test_reference_processor.py index 440195f20..86813e598 100644 --- a/implementations/python/tests/test_reference_processor.py +++ b/implementations/python/tests/test_reference_processor.py @@ -34,7 +34,7 @@ from aces_runtime import RuntimeControlPlane from aces_runtime.control_plane_api import _receipt_response from aces_runtime.control_plane_api_models import _operation_status_model, _snapshot_model -from aces_sdl import parse_sdl +from raes import parse_sdl WORKFLOW_ADDRESS = "orchestration.workflow.response" diff --git a/implementations/python/tests/test_repo_policy_tools.py b/implementations/python/tests/test_repo_policy_tools.py index 05126f4d5..d6f313e8e 100644 --- a/implementations/python/tests/test_repo_policy_tools.py +++ b/implementations/python/tests/test_repo_policy_tools.py @@ -183,7 +183,7 @@ def setup_policy_repo(tmp_path: Path) -> Path: "What are the positive, negative, and risk trade-offs?\n", ) for package in ( - "aces_sdl", + "raes", "aces_processor", "aces_runtime", "aces_backend_protocols", @@ -420,8 +420,8 @@ def test_adr_template_requires_alternatives_considered(tmp_path: Path) -> None: def _aces_sdl_file(repo_root: Path, name: str, content: str) -> str: - """Write a synthetic file under aces_sdl/ and return its repo-relative path.""" - rel = f"implementations/python/packages/aces_sdl/{name}" + """Write a synthetic file under raes/ and return its repo-relative path.""" + rel = f"implementations/python/packages/raes/{name}" write_text(repo_root / rel, content) return rel @@ -462,7 +462,7 @@ def test_layering_rule_allows_aces_sdl_importing_other_packages(tmp_path: Path) rel = _aces_sdl_file( repo_root, "_normal.py", - "from aces_contracts.contracts import Scenario\nfrom aces_sdl.semantics.objectives import analyze_objective_window\n", + "from aces_contracts.contracts import Scenario\nfrom raes.semantics.objectives import analyze_objective_window\n", ) failures = evaluate_repo_policy(repo_root, [rel], check_set="file-local", structural_runner=structural_runner_stub) @@ -472,7 +472,7 @@ def test_layering_rule_allows_aces_sdl_importing_other_packages(tmp_path: Path) def test_layering_rule_does_not_check_files_outside_scope(tmp_path: Path) -> None: """An `import aces_processor` inside aces_processor itself (or any - package other than aces_sdl) is not a layering violation.""" + package other than raes) is not a layering violation.""" repo_root = setup_policy_repo(tmp_path) rel = "implementations/python/packages/aces_processor/internal.py" write_text(repo_root / rel, "import aces_processor.models\n") @@ -541,7 +541,7 @@ def test_module_boundaries_reject_runtime_using_non_public_processor_module(tmp_ def test_module_boundaries_reject_sdl_importing_runtime(tmp_path: Path) -> None: repo_root = setup_policy_repo(tmp_path) install_module_boundary_policy(repo_root) - rel = "implementations/python/packages/aces_sdl/uses_runtime.py" + rel = "implementations/python/packages/raes/uses_runtime.py" write_text(repo_root / rel, "import aces_runtime\n") failures = evaluate_repo_policy(repo_root, [rel], check_set="file-local", structural_runner=structural_runner_stub) @@ -671,7 +671,7 @@ def test_module_boundaries_full_check_scans_all_module_sources(tmp_path: Path) - def test_module_boundaries_reject_runtime_importing_sdl_semantics(tmp_path: Path) -> None: repo_root = setup_policy_repo(tmp_path) rel = "implementations/python/packages/aces_runtime/uses_sdl_workflow_semantics.py" - write_text(repo_root / rel, "from aces_sdl.semantics.workflow import validate_workflow_step_result\n") + write_text(repo_root / rel, "from raes.semantics.workflow import validate_workflow_step_result\n") failures = evaluate_repo_policy( repo_root, @@ -1025,8 +1025,8 @@ def test_unsafe_changed_path_is_rejected(tmp_path: Path) -> None: repo_root = setup_policy_repo(tmp_path) outside = tmp_path.parent / "outside_secret.py" write_text(outside, "import aces_processor\n") - link_rel = "implementations/python/packages/aces_sdl/_link.py" - (repo_root / "implementations" / "python" / "packages" / "aces_sdl").mkdir(parents=True, exist_ok=True) + link_rel = "implementations/python/packages/raes/_link.py" + (repo_root / "implementations" / "python" / "packages" / "raes").mkdir(parents=True, exist_ok=True) (repo_root / link_rel).symlink_to(outside) failures = evaluate_repo_policy( @@ -1184,9 +1184,9 @@ def _published_schema(properties: dict[str, Any], *, required: list[str] | None def test_should_run_full_validation_for_schema_driver_paths() -> None: assert should_run_full_validation(["tools/generate_contract_schemas.py"]) is True assert should_run_full_validation(["implementations/python/packages/aces_contracts/contracts.py"]) is True - # aces_sdl supplies the Scenario Pydantic model exposed by schema_bundle(); + # raes supplies the Scenario Pydantic model exposed by schema_bundle(); # a change there must trigger full schema validation just like aces_contracts. - assert should_run_full_validation(["implementations/python/packages/aces_sdl/agents.py"]) is True + assert should_run_full_validation(["implementations/python/packages/raes/agents.py"]) is True assert should_run_full_validation(["contracts/concept-authority/concept-families-v1.json"]) is False diff --git a/implementations/python/tests/test_requirement_governance.py b/implementations/python/tests/test_requirement_governance.py index 441caaa38..acd1c1818 100644 --- a/implementations/python/tests/test_requirement_governance.py +++ b/implementations/python/tests/test_requirement_governance.py @@ -157,13 +157,13 @@ def test_ownership_mismatch_is_reported(tmp_path: Path) -> None: repo_root = setup_policy_repo(tmp_path) client = make_client() write_text( - repo_root / "implementations" / "python" / "packages" / "aces_sdl" / "parser.py", + repo_root / "implementations" / "python" / "packages" / "raes" / "parser.py", "VALUE = 1\n", ) failures = evaluate_requirement_governance( repo_root, - ["implementations/python/packages/aces_sdl/parser.py"], + ["implementations/python/packages/raes/parser.py"], client=client, requirement_uid="GOV-918", ) diff --git a/implementations/python/tests/test_runtime_app_authorization.py b/implementations/python/tests/test_runtime_app_authorization.py index 60d1b27aa..a20ac4e07 100644 --- a/implementations/python/tests/test_runtime_app_authorization.py +++ b/implementations/python/tests/test_runtime_app_authorization.py @@ -3,7 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl.runtime_app_authorization import ( +from pydantic import ValidationError +from raes.runtime_app_authorization import ( RuntimeAppAuthorization, RuntimeAppAuthorizationCredentialClassification, RuntimeAppAuthorizationGrant, @@ -15,7 +16,6 @@ RuntimeAppAuthorizationRoleMapping, RuntimeAppAuthorizationTenant, ) -from pydantic import ValidationError def _opensearch_authorization(**overrides) -> dict: diff --git a/implementations/python/tests/test_runtime_datastore.py b/implementations/python/tests/test_runtime_datastore.py index 595d655c1..dde4a3300 100644 --- a/implementations/python/tests/test_runtime_datastore.py +++ b/implementations/python/tests/test_runtime_datastore.py @@ -12,9 +12,11 @@ import json import pytest -from aces_sdl import VARIABLE_TOKEN_PATTERN -from aces_sdl._runtime_service_families import collect_qualified_runtime_family_refs -from aces_sdl.runtime_datastore import ( +from paths import REPO_ROOT +from pydantic import ValidationError +from raes import VARIABLE_TOKEN_PATTERN +from raes._runtime_service_families import collect_qualified_runtime_family_refs +from raes.runtime_datastore import ( RuntimeDatastoreCluster, RuntimeDatastoreDataModel, RuntimeDatastoreEngine, @@ -29,7 +31,7 @@ RuntimeDatastoreTemplate, RuntimeDatastoreTransportSecurity, ) -from aces_sdl.runtime_datastore_vocab import ( +from raes.runtime_datastore_vocab import ( RuntimeDatastoreEvictionPolicy, RuntimeDatastoreNodeEndpointRole, RuntimeDatastoreNodeRole, @@ -38,8 +40,6 @@ RuntimeDatastoreSettingScope, RuntimeDatastoreTransportSecurityMode, ) -from paths import REPO_ROOT -from pydantic import ValidationError from aces.core.sdl.scenario import Scenario diff --git a/implementations/python/tests/test_runtime_family_invariants.py b/implementations/python/tests/test_runtime_family_invariants.py index 5e9525f37..d19350f59 100644 --- a/implementations/python/tests/test_runtime_family_invariants.py +++ b/implementations/python/tests/test_runtime_family_invariants.py @@ -26,13 +26,13 @@ import typing from pathlib import Path -import aces_sdl -from aces_sdl import _runtime_service_families as rsf -from aces_sdl._base import SDLModel, parse_enum_or_var -from aces_sdl.runtime_configuration import RuntimeConfiguration -from aces_sdl.runtime_directory_identity import RuntimeIdentityRelationshipKind -from aces_sdl.runtime_values import parse_runtime_enum_or_var +import raes from pydantic import Field +from raes import _runtime_service_families as rsf +from raes._base import SDLModel, parse_enum_or_var +from raes.runtime_configuration import RuntimeConfiguration +from raes.runtime_directory_identity import RuntimeIdentityRelationshipKind +from raes.runtime_values import parse_runtime_enum_or_var def _singularize(plural: str) -> str: @@ -322,7 +322,7 @@ def test_required_profile_lint_rejects_guardless_discriminated_family() -> None: def test_runtime_modules_do_not_redeclare_shared_validation_helpers() -> None: """Runtime families import shared helper policy instead of shadowing it.""" - package_dir = Path(aces_sdl.__file__).resolve().parent + package_dir = Path(raes.__file__).resolve().parent offenders: list[str] = [] for path in sorted(package_dir.glob("runtime_*.py")): if path.name == "runtime_values.py": @@ -362,7 +362,7 @@ def test_primary_id_field_exists_on_model() -> None: def _runtime_family_enums() -> dict[str, type[enum.Enum]]: """Collect every Enum subclass *defined in* a runtime-family module. - A runtime-family module is any ``aces_sdl`` submodule whose name starts + A runtime-family module is any ``raes`` submodule whose name starts with ``runtime_`` (this includes the ``*_vocab`` and ``*_definitions`` modules). Only enums whose ``__module__`` is that module are returned, so enums merely re-exported or imported from another module are not @@ -370,11 +370,11 @@ def _runtime_family_enums() -> dict[str, type[enum.Enum]]: """ found: dict[str, type[enum.Enum]] = {} - for module_info in pkgutil.iter_modules(aces_sdl.__path__): + for module_info in pkgutil.iter_modules(raes.__path__): name = module_info.name if not name.startswith("runtime_"): continue - qualified = f"aces_sdl.{name}" + qualified = f"raes.{name}" module = importlib.import_module(qualified) for value in vars(module).values(): if ( diff --git a/implementations/python/tests/test_runtime_forwarding_agent.py b/implementations/python/tests/test_runtime_forwarding_agent.py index f46774271..2b27e46f4 100644 --- a/implementations/python/tests/test_runtime_forwarding_agent.py +++ b/implementations/python/tests/test_runtime_forwarding_agent.py @@ -10,7 +10,8 @@ from __future__ import annotations import pytest -from aces_sdl.runtime_forwarding_agent import ( +from pydantic import ValidationError +from raes.runtime_forwarding_agent import ( RelationshipForwardingEdge, RuntimeForwardingAgent, RuntimeForwardingAgentImplementation, @@ -29,8 +30,7 @@ RuntimeForwardingTransform, RuntimeForwardingTransformKind, ) -from aces_sdl.runtime_security_monitoring import RuntimeSecurityMonitoringListenerRole -from pydantic import ValidationError +from raes.runtime_security_monitoring import RuntimeSecurityMonitoringListenerRole from aces.core.sdl._errors import SDLValidationError from aces.core.sdl.scenario import Scenario diff --git a/implementations/python/tests/test_runtime_mail_service.py b/implementations/python/tests/test_runtime_mail_service.py index f4c9fa554..443b17a72 100644 --- a/implementations/python/tests/test_runtime_mail_service.py +++ b/implementations/python/tests/test_runtime_mail_service.py @@ -3,8 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl._module_symbols import symbol_index from pydantic import ValidationError +from raes._module_symbols import symbol_index from aces.core.sdl import parse_sdl from aces.core.sdl._errors import SDLValidationError diff --git a/implementations/python/tests/test_runtime_network_detection.py b/implementations/python/tests/test_runtime_network_detection.py index 261c6c1d3..b9d6d44e9 100644 --- a/implementations/python/tests/test_runtime_network_detection.py +++ b/implementations/python/tests/test_runtime_network_detection.py @@ -3,8 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl._module_symbols import symbol_index from pydantic import ValidationError +from raes._module_symbols import symbol_index from aces.core.sdl import parse_sdl from aces.core.sdl._errors import SDLValidationError diff --git a/implementations/python/tests/test_runtime_network_sensor.py b/implementations/python/tests/test_runtime_network_sensor.py index c83f4fca5..4ce34e317 100644 --- a/implementations/python/tests/test_runtime_network_sensor.py +++ b/implementations/python/tests/test_runtime_network_sensor.py @@ -3,8 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl._module_symbols import symbol_index from pydantic import ValidationError +from raes._module_symbols import symbol_index from aces.core.sdl import parse_sdl from aces.core.sdl._errors import SDLValidationError diff --git a/implementations/python/tests/test_runtime_observed_values.py b/implementations/python/tests/test_runtime_observed_values.py index 6a74a0ce6..ced77d6a5 100644 --- a/implementations/python/tests/test_runtime_observed_values.py +++ b/implementations/python/tests/test_runtime_observed_values.py @@ -6,19 +6,19 @@ from typing import Any import pytest -from aces_sdl.image_provenance import ImageBuildArg, ImageEnvironmentDefault -from aces_sdl.runtime_app_authorization import RuntimeAppAuthorizationPrincipal -from aces_sdl.runtime_application import RuntimeApplicationExposedField -from aces_sdl.runtime_configuration import RuntimeEnvironmentValueClassification, RuntimeEnvironmentVariable -from aces_sdl.runtime_database import DatabaseSetting -from aces_sdl.runtime_datastore import RuntimeDatastoreSetting -from aces_sdl.runtime_directory_identity import RuntimeIdentityAttribute -from aces_sdl.runtime_dns import DnsRuntimeSetting -from aces_sdl.runtime_forwarding_agent import RuntimeForwardingSetting, RuntimeForwardingShipTarget -from aces_sdl.runtime_mail_service import RuntimeMailSetting -from aces_sdl.runtime_platform_application import RuntimePlatformApplicationConnector, RuntimePlatformApplicationSetting -from aces_sdl.runtime_security_monitoring import RuntimeSecurityMonitoringSetting from pydantic import ValidationError +from raes.image_provenance import ImageBuildArg, ImageEnvironmentDefault +from raes.runtime_app_authorization import RuntimeAppAuthorizationPrincipal +from raes.runtime_application import RuntimeApplicationExposedField +from raes.runtime_configuration import RuntimeEnvironmentValueClassification, RuntimeEnvironmentVariable +from raes.runtime_database import DatabaseSetting +from raes.runtime_datastore import RuntimeDatastoreSetting +from raes.runtime_directory_identity import RuntimeIdentityAttribute +from raes.runtime_dns import DnsRuntimeSetting +from raes.runtime_forwarding_agent import RuntimeForwardingSetting, RuntimeForwardingShipTarget +from raes.runtime_mail_service import RuntimeMailSetting +from raes.runtime_platform_application import RuntimePlatformApplicationConnector, RuntimePlatformApplicationSetting +from raes.runtime_security_monitoring import RuntimeSecurityMonitoringSetting SecretValueFactory = Callable[[], object] SecretValueReader = Callable[[object], Any] diff --git a/implementations/python/tests/test_runtime_orchestration.py b/implementations/python/tests/test_runtime_orchestration.py index ebee83710..cc16845d8 100644 --- a/implementations/python/tests/test_runtime_orchestration.py +++ b/implementations/python/tests/test_runtime_orchestration.py @@ -3,7 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl.runtime_orchestration import ( +from pydantic import ValidationError +from raes.runtime_orchestration import ( RuntimeOrchestrationAuthority, RuntimeOrchestrationEngine, RuntimeOrchestrationLifecyclePolicy, @@ -12,7 +13,6 @@ RuntimeOrchestrationScope, RuntimeOrchestrationSpawnTemplate, ) -from pydantic import ValidationError from aces.core.sdl._errors import SDLValidationError from aces.core.sdl.scenario import Scenario diff --git a/implementations/python/tests/test_runtime_planner.py b/implementations/python/tests/test_runtime_planner.py index ede40d475..8da2dba57 100644 --- a/implementations/python/tests/test_runtime_planner.py +++ b/implementations/python/tests/test_runtime_planner.py @@ -1413,7 +1413,7 @@ def test_variable_backed_os_allowed_values_fail_when_pre_instantiated(self): ), ) - from aces_sdl.instantiate import instantiate_scenario + from raes.instantiate import instantiate_scenario instantiated = instantiate_scenario( _scenario(""" diff --git a/implementations/python/tests/test_runtime_platform_application.py b/implementations/python/tests/test_runtime_platform_application.py index 82cb564ee..307c613cd 100644 --- a/implementations/python/tests/test_runtime_platform_application.py +++ b/implementations/python/tests/test_runtime_platform_application.py @@ -3,7 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl.runtime_platform_application import ( +from pydantic import ValidationError +from raes.runtime_platform_application import ( RelationshipServiceIntegration, RelationshipServiceIntegrationDirection, RelationshipServiceIntegrationKind, @@ -24,7 +25,6 @@ RuntimePlatformApplicationUpstreamBinding, RuntimePlatformApplicationUpstreamBindingRole, ) -from pydantic import ValidationError # --------------------------------------------------------------------------- # # Per-platform_kind valid fixtures (each carries its required profile) diff --git a/implementations/python/tests/test_runtime_scheduled_job.py b/implementations/python/tests/test_runtime_scheduled_job.py index 182346f49..ebf946680 100644 --- a/implementations/python/tests/test_runtime_scheduled_job.py +++ b/implementations/python/tests/test_runtime_scheduled_job.py @@ -3,14 +3,14 @@ from __future__ import annotations import pytest -from aces_sdl.runtime_scheduled_job import ( +from pydantic import ValidationError +from raes.runtime_scheduled_job import ( RuntimeScheduledJob, RuntimeScheduledJobLastResult, RuntimeScheduledJobRunState, RuntimeScheduledJobSchedule, RuntimeScheduledJobScheduleKind, ) -from pydantic import ValidationError def _job(**overrides) -> dict: diff --git a/implementations/python/tests/test_runtime_security_monitoring.py b/implementations/python/tests/test_runtime_security_monitoring.py index 121c6ae61..2c5734c0a 100644 --- a/implementations/python/tests/test_runtime_security_monitoring.py +++ b/implementations/python/tests/test_runtime_security_monitoring.py @@ -3,8 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl._module_symbols import symbol_index from pydantic import ValidationError +from raes._module_symbols import symbol_index from aces.core.sdl import parse_sdl from aces.core.sdl._errors import SDLValidationError diff --git a/implementations/python/tests/test_runtime_service_listeners.py b/implementations/python/tests/test_runtime_service_listeners.py index a17d8b8a8..81075b14f 100644 --- a/implementations/python/tests/test_runtime_service_listeners.py +++ b/implementations/python/tests/test_runtime_service_listeners.py @@ -3,8 +3,8 @@ from __future__ import annotations import pytest -from aces_sdl._module_symbols import symbol_index from pydantic import ValidationError +from raes._module_symbols import symbol_index from aces.core.sdl import parse_sdl from aces.core.sdl._errors import SDLValidationError diff --git a/implementations/python/tests/test_runtime_service_units.py b/implementations/python/tests/test_runtime_service_units.py index 9357a25c5..2c3c81cd3 100644 --- a/implementations/python/tests/test_runtime_service_units.py +++ b/implementations/python/tests/test_runtime_service_units.py @@ -1,14 +1,15 @@ """Model-level tests for the service-manager unit state runtime surface. -Covers ``aces_sdl.runtime_service_units`` (see ADR-035). These tests construct +Covers ``raes.runtime_service_units`` (see ADR-035). These tests construct ``ServiceManagerUnit`` and ``ServiceUnitExecStart`` directly to exercise field validators, redaction invariants, duplicate detection, and stable-identifier discipline without going through the YAML parser. """ import pytest -from aces_sdl.runtime_configuration import RuntimeConfiguration -from aces_sdl.runtime_service_units import ( +from pydantic import ValidationError +from raes.runtime_configuration import RuntimeConfiguration +from raes.runtime_service_units import ( ServiceManagerKind, ServiceManagerUnit, ServiceUnitActiveState, @@ -19,7 +20,6 @@ ServiceUnitLoadState, ServiceUnitResult, ) -from pydantic import ValidationError # --------------------------------------------------------------------------- # ServiceUnitExecStart @@ -423,8 +423,8 @@ def test_duplicate_unit_name_rejected(self): def _validate(scenario) -> list[str]: """Run validation and return errors (empty list = valid). Mirrors test_sdl_validator.py's helper so failures surface as readable lists.""" - from aces_sdl._errors import SDLValidationError - from aces_sdl.validator import SemanticValidator + from raes._errors import SDLValidationError + from raes.validator import SemanticValidator try: SemanticValidator(scenario).validate() @@ -435,7 +435,7 @@ def _validate(scenario) -> list[str]: def _scenario_with_units(units: list[dict], *, fs_inventory: list[dict] | None = None, nodes: dict | None = None): """Build a Scenario where `box` carries the units (and optional fs inventory).""" - from aces_sdl.scenario import Scenario + from raes.scenario import Scenario runtime: dict = {"service_manager_units": units} if fs_inventory is not None: @@ -488,7 +488,7 @@ def test_qualified_service_ref_other_node_rejected(self): assert any("same node" in e for e in errors) def test_variable_service_ref_deferred(self): - from aces_sdl.scenario import Scenario + from raes.scenario import Scenario s = Scenario( name="t", @@ -541,7 +541,7 @@ def test_unit_file_path_skipped_when_inventory_absent(self): assert _validate(s) == [] def test_variable_unit_file_path_deferred(self): - from aces_sdl.scenario import Scenario + from raes.scenario import Scenario s = Scenario( name="t", diff --git a/implementations/python/tests/test_runtime_ssh_server.py b/implementations/python/tests/test_runtime_ssh_server.py index 1f9553bf3..c85a482cf 100644 --- a/implementations/python/tests/test_runtime_ssh_server.py +++ b/implementations/python/tests/test_runtime_ssh_server.py @@ -1,23 +1,24 @@ """Model-level tests for the SSH server configuration runtime surface. -Covers ``aces_sdl.runtime_ssh_server`` (see ADR-031). These tests construct +Covers ``raes.runtime_ssh_server`` (see ADR-031). These tests construct ``RuntimeSshServer`` / ``SshMatchRule`` / ``SshForcedCommand`` directly to exercise field validators, redaction invariants, and stable-identifier discipline without going through the YAML parser. """ -import aces_sdl._runtime_service_families as runtime_family_registry -import aces_sdl.nodes as nodes_facade -import aces_sdl.runtime_configuration as runtime_configuration_facade import pytest -from aces_sdl._module_symbols import symbol_index -from aces_sdl._runtime_service_families import ( +import raes._runtime_service_families as runtime_family_registry +import raes.nodes as nodes_facade +import raes.runtime_configuration as runtime_configuration_facade +from pydantic import ValidationError +from raes._module_symbols import symbol_index +from raes._runtime_service_families import ( RUNTIME_SERVICE_FAMILIES, RuntimeServiceFamily, runtime_service_family_export_names, ) -from aces_sdl.runtime_configuration import RuntimeConfiguration -from aces_sdl.runtime_ssh_server import ( +from raes.runtime_configuration import RuntimeConfiguration +from raes.runtime_ssh_server import ( RuntimeSshServer, SshForcedCommand, SshForcedCommandKind, @@ -25,7 +26,6 @@ SshMatchCriterionKind, SshMatchRule, ) -from pydantic import ValidationError import aces.core.sdl.nodes as compat_nodes from aces.core.sdl import parse_sdl_file diff --git a/implementations/python/tests/test_sce_004_goal_oriented_steps.py b/implementations/python/tests/test_sce_004_goal_oriented_steps.py index 9566302ba..aadc11c71 100644 --- a/implementations/python/tests/test_sce_004_goal_oriented_steps.py +++ b/implementations/python/tests/test_sce_004_goal_oriented_steps.py @@ -15,10 +15,10 @@ WorkflowStepOutcome, ) from aces_processor.compiler import compile_runtime_model -from aces_sdl import SDLValidationError -from aces_sdl.orchestration import WorkflowStep, WorkflowStepExecutionMode -from aces_sdl.parser import parse_sdl from pydantic import ValidationError +from raes import SDLValidationError +from raes.orchestration import WorkflowStep, WorkflowStepExecutionMode +from raes.parser import parse_sdl def test_legacy_workflow_step_remains_scripted() -> None: diff --git a/implementations/python/tests/test_scenarios.py b/implementations/python/tests/test_scenarios.py index a635c00ac..6337f7987 100644 --- a/implementations/python/tests/test_scenarios.py +++ b/implementations/python/tests/test_scenarios.py @@ -184,7 +184,7 @@ def test_complex_examples_cover_new_sdl_surfaces(): def test_reference_scenario_compiles_participant_loop(): """Issue #598: the reference scenario proves the participant handoff surface.""" from aces_processor.compiler import compile_runtime_model - from aces_sdl.scenarios import load_scenario + from raes.scenarios import load_scenario scenario = load_scenario(REFERENCE_SCENARIO) model = compile_runtime_model(scenario) diff --git a/implementations/python/tests/test_scientific_scenario_completeness.py b/implementations/python/tests/test_scientific_scenario_completeness.py index 6982b45b9..e2a0483e3 100644 --- a/implementations/python/tests/test_scientific_scenario_completeness.py +++ b/implementations/python/tests/test_scientific_scenario_completeness.py @@ -28,7 +28,7 @@ load_scientific_completeness_assessment, load_scientific_completeness_taxonomy, ) -from aces_sdl.parser import parse_sdl # noqa: E402 +from raes.parser import parse_sdl # noqa: E402 from tools.check_scientific_scenario_completeness import ( # noqa: E402 _validate_contract_evidence, _validate_evidence_paths, diff --git a/implementations/python/tests/test_sdl_canonicalization.py b/implementations/python/tests/test_sdl_canonicalization.py index 7b7b81f10..6299f8222 100644 --- a/implementations/python/tests/test_sdl_canonicalization.py +++ b/implementations/python/tests/test_sdl_canonicalization.py @@ -6,7 +6,7 @@ from pathlib import Path import pytest -from aces_sdl import ( +from raes import ( SDL_CANONICAL_PROFILE, SDLMigrationPolicy, SDLParseError, diff --git a/implementations/python/tests/test_sdl_catalog_parity.py b/implementations/python/tests/test_sdl_catalog_parity.py index 0dda95bb3..c81b8dd46 100644 --- a/implementations/python/tests/test_sdl_catalog_parity.py +++ b/implementations/python/tests/test_sdl_catalog_parity.py @@ -141,7 +141,7 @@ def test_non_completion_reference_domain_drift_is_flagged(tmp_path: Path) -> Non "[node validator]", "| | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator]", ), - ("[node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py)", ""), + ("[node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py)", ""), ], ) def test_reference_row_classification_drift_is_flagged(tmp_path: Path, old: str, new: str) -> None: @@ -203,7 +203,7 @@ def test_implementation_evidence_cannot_be_normative_owner(tmp_path: Path) -> No repo, "specs/sdl/references.md", "[reference rules](#5-cross-section-reference-edge-catalog)", - "[implementation](../../implementations/python/packages/aces_sdl/scenario.py)", + "[implementation](../../implementations/python/packages/raes/scenario.py)", ) assert "sdl-catalog-reference-owner" in _rule_ids(repo) diff --git a/implementations/python/tests/test_sdl_diagnostic_boundary.py b/implementations/python/tests/test_sdl_diagnostic_boundary.py index 948e00a47..546fd3974 100644 --- a/implementations/python/tests/test_sdl_diagnostic_boundary.py +++ b/implementations/python/tests/test_sdl_diagnostic_boundary.py @@ -25,14 +25,14 @@ import ast from pathlib import Path -import aces_sdl.validator as validator_module +import raes.validator as validator_module def _all_class_methods(source: str) -> dict[str, ast.AST]: """Collect every method from every class in ``source``. The reference ``SemanticValidator`` is composed from per-seam mixin classes - split across the ``aces_sdl.validator`` package (issue #42), so the boundary + split across the ``raes.validator`` package (issue #42), so the boundary lint aggregates methods across all classes in the source rather than a single ``SemanticValidator`` ClassDef. Method names are unique across the mixins, so a flat name->node map faithfully reconstructs the composed method set. @@ -133,7 +133,7 @@ def find_advisory_boundary_violations(source: str) -> set[str]: def test_validator_advisory_error_channels_are_separated() -> None: """The live ``SemanticValidator`` honours the diagnostics.md boundary. - ``aces_sdl.validator`` is a package (issue #42), so concatenate every + ``raes.validator`` is a package (issue #42), so concatenate every module's source and let the lint aggregate methods across the mixin classes that compose ``SemanticValidator``. """ diff --git a/implementations/python/tests/test_sdl_format_cli.py b/implementations/python/tests/test_sdl_format_cli.py index 06a8554ba..016124df0 100644 --- a/implementations/python/tests/test_sdl_format_cli.py +++ b/implementations/python/tests/test_sdl_format_cli.py @@ -3,7 +3,7 @@ from __future__ import annotations from aces_cli.main import app -from aces_sdl import format_sdl_source +from raes import format_sdl_source from typer.testing import CliRunner diff --git a/implementations/python/tests/test_sdl_identifiers.py b/implementations/python/tests/test_sdl_identifiers.py index 7dd6612d0..5c11fd21c 100644 --- a/implementations/python/tests/test_sdl_identifiers.py +++ b/implementations/python/tests/test_sdl_identifiers.py @@ -31,27 +31,27 @@ from aces_contracts.runtime_state import ApplyResult, OperationStatus, RuntimeSnapshot, SnapshotEntry from aces_processor.compiler import compile_runtime_model from aces_processor.models import NetworkRuntime, NodeRuntime, RuntimeModel -from aces_sdl._declarations import build_declaration_index -from aces_sdl._errors import SDLParseError, SDLValidationError -from aces_sdl._model_diagnostics import _bounded_model_message -from aces_sdl._source_profile import SDLParserLimits -from aces_sdl.identifiers import ( +from hypothesis import given +from hypothesis import strategies as st +from pydantic import ValidationError +from raes._declarations import build_declaration_index +from raes._errors import SDLParseError, SDLValidationError +from raes._model_diagnostics import _bounded_model_message +from raes._source_profile import SDLParserLimits +from raes.identifiers import ( PORTABLE_IDENTIFIER_JSON_SCHEMA, QUALIFIED_IDENTIFIER_MAX_LENGTH, QualifiedName, is_portable_identifier, require_portable_identifier, ) -from aces_sdl.infrastructure import ACLRule -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.nodes import ServicePort -from aces_sdl.parser import parse_sdl -from aces_sdl.runtime_values import require_symbol -from aces_sdl.scenario import ExpandedScenario, ImportDecl, ModuleDescriptor, Scenario -from aces_sdl.validator import SemanticValidator -from hypothesis import given -from hypothesis import strategies as st -from pydantic import ValidationError +from raes.infrastructure import ACLRule +from raes.instantiate import instantiate_scenario +from raes.nodes import ServicePort +from raes.parser import parse_sdl +from raes.runtime_values import require_symbol +from raes.scenario import ExpandedScenario, ImportDecl, ModuleDescriptor, Scenario +from raes.validator import SemanticValidator _PORTABLE_CHARACTERS = "abcdefghijklmnopqrstuvwxyz0123456789-_" _PORTABLE_START = "abcdefghijklmnopqrstuvwxyz0123456789" @@ -646,7 +646,7 @@ def test_module_composition_uses_one_aggregate_import_budget(tmp_path: Path) -> limits = SDLParserLimits(max_imports=1) with pytest.raises(SDLParseError, match="composition import budget"): - from aces_sdl.parser import parse_sdl_file + from raes.parser import parse_sdl_file parse_sdl_file(root, limits=limits) @@ -676,7 +676,7 @@ def test_module_composition_bounds_decoded_bytes_across_the_request(tmp_path: Pa encoding="utf-8", ) - from aces_sdl.parser import parse_sdl_file + from raes.parser import parse_sdl_file with pytest.raises(SDLParseError, match="decoded-byte budget"): parse_sdl_file(root, limits=SDLParserLimits(max_composed_bytes=16)) @@ -731,7 +731,7 @@ def test_nested_composition_bounds_depth_and_namespace_growth( encoding="utf-8", ) - from aces_sdl.parser import parse_sdl_file + from raes.parser import parse_sdl_file with pytest.raises(SDLParseError, match=message): parse_sdl_file(root, limits=limits) diff --git a/implementations/python/tests/test_sdl_lineage.py b/implementations/python/tests/test_sdl_lineage.py index 3f5c1c0d2..c6774d91e 100644 --- a/implementations/python/tests/test_sdl_lineage.py +++ b/implementations/python/tests/test_sdl_lineage.py @@ -78,7 +78,7 @@ def test_artifact_code_claim_must_be_covered_by_audited_derivation_scope() -> No ) claim["aces_boundaries"] = [ { - "artifact": "implementations/python/packages/aces_sdl/accounts.py", + "artifact": "implementations/python/packages/raes/accounts.py", "symbol_or_pointer": "Account", } ] diff --git a/implementations/python/tests/test_sdl_module_registry.py b/implementations/python/tests/test_sdl_module_registry.py index 035e9d0ff..0bcb36450 100644 --- a/implementations/python/tests/test_sdl_module_registry.py +++ b/implementations/python/tests/test_sdl_module_registry.py @@ -13,9 +13,9 @@ from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path -import aces_sdl.module_registry as module_registry -import aces_sdl.parser as sdl_parser import pytest +import raes.module_registry as module_registry +import raes.parser as sdl_parser from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey from typer.testing import CliRunner @@ -825,7 +825,7 @@ def test_database_and_application_refs_survive_module_namespacing(): rewritten by module composition so an application-to-database relationship survives being imported under a namespace. """ - from aces_sdl._module_symbols import symbol_index + from raes._module_symbols import symbol_index from aces.core.sdl.scenario import ModuleDescriptor, Scenario diff --git a/implementations/python/tests/test_sdl_parser.py b/implementations/python/tests/test_sdl_parser.py index 4ad1bba5d..8421a2fde 100644 --- a/implementations/python/tests/test_sdl_parser.py +++ b/implementations/python/tests/test_sdl_parser.py @@ -3,7 +3,7 @@ from pathlib import Path import pytest -from aces_sdl import SDLMigrationPolicy +from raes import SDLMigrationPolicy from aces.core.sdl import instantiate_scenario from aces.core.sdl._errors import SDLParseError, SDLValidationError diff --git a/implementations/python/tests/test_sdl_phase_contracts.py b/implementations/python/tests/test_sdl_phase_contracts.py index a70626a7b..827d47517 100644 --- a/implementations/python/tests/test_sdl_phase_contracts.py +++ b/implementations/python/tests/test_sdl_phase_contracts.py @@ -5,23 +5,25 @@ import inspect import json -import aces_sdl import pytest +import raes from aces_contracts.contracts import schema_bundle from aces_processor.compiler import compile_runtime_model -from aces_sdl import SDLInstantiationError, SDLValidationError -from aces_sdl.canonical import ( +from jsonschema import Draft202012Validator +from pydantic import ValidationError +from raes import SDLInstantiationError, SDLValidationError +from raes.canonical import ( INSTANTIATED_SNAPSHOT_PROFILE, canonical_instantiated_sdl_bytes, canonical_instantiated_sdl_digest, ) -from aces_sdl.instantiate import ( +from raes.instantiate import ( _bind_scenario_content, admit_instantiated_scenario, instantiate_scenario, ) -from aces_sdl.parser import parse_sdl_file -from aces_sdl.phase_contracts import ( +from raes.parser import parse_sdl_file +from raes.phase_contracts import ( BindingOrigin, CapabilityConstraint, InstantiationProvenance, @@ -29,9 +31,7 @@ ResolvedImportProvenance, SemanticDigest, ) -from aces_sdl.scenario import ExpandedScenario, InstantiatedScenario, Scenario, ScenarioContent -from jsonschema import Draft202012Validator -from pydantic import ValidationError +from raes.scenario import ExpandedScenario, InstantiatedScenario, Scenario, ScenarioContent def _digest() -> SemanticDigest: @@ -70,7 +70,7 @@ def test_phase_models_have_disjoint_authoring_and_instantiated_fields() -> None: "expansion_provenance", } assert set(InstantiatedScenario.model_fields) == shared | {"instantiation_provenance"} - assert "ExpandedScenario" not in aces_sdl.__all__ + assert "ExpandedScenario" not in raes.__all__ @pytest.mark.parametrize( diff --git a/implementations/python/tests/test_sdl_source_format.py b/implementations/python/tests/test_sdl_source_format.py index 752ee2d28..733fe6e18 100644 --- a/implementations/python/tests/test_sdl_source_format.py +++ b/implementations/python/tests/test_sdl_source_format.py @@ -6,7 +6,8 @@ from pathlib import Path import pytest -from aces_sdl import ( +from paths import REPO_ROOT +from raes import ( SDL_SOURCE_FORMAT, SDLMigrationPolicy, SDLParseError, @@ -15,7 +16,6 @@ parse_sdl, parse_sdl_file, ) -from paths import REPO_ROOT def _diagnostic_codes(error: SDLParseError) -> set[str]: diff --git a/implementations/python/tests/test_sdl_variation_points.py b/implementations/python/tests/test_sdl_variation_points.py index 2f2a397f0..85cbff173 100644 --- a/implementations/python/tests/test_sdl_variation_points.py +++ b/implementations/python/tests/test_sdl_variation_points.py @@ -10,16 +10,16 @@ from aces_contracts.bounded_domains import EnumDomain from aces_contracts.contracts import schema_bundle from aces_contracts.realization_envelope import EnumDomain as EnvelopeEnumDomain -from aces_sdl import SDLInstantiationError, SDLParseError, SDLValidationError -from aces_sdl._declarations import build_declaration_index -from aces_sdl.canonical import canonical_sdl_bytes, canonical_sdl_digest -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.language_service import language_completions, language_references -from aces_sdl.parser import parse_sdl_file -from aces_sdl.scenario import InstantiatedScenario, Scenario -from aces_sdl.validator import SemanticValidator from jsonschema import Draft202012Validator from pydantic import ValidationError +from raes import SDLInstantiationError, SDLParseError, SDLValidationError +from raes._declarations import build_declaration_index +from raes.canonical import canonical_sdl_bytes, canonical_sdl_digest +from raes.instantiate import instantiate_scenario +from raes.language_service import language_completions, language_references +from raes.parser import parse_sdl_file +from raes.scenario import InstantiatedScenario, Scenario +from raes.validator import SemanticValidator FIXTURE_DIR = Path(__file__).parents[3] / "contracts" / "fixtures" / "sdl" / "variation-points-v1" diff --git a/implementations/python/tests/test_sem_208_participant_behavior.py b/implementations/python/tests/test_sem_208_participant_behavior.py index ad3757cb1..5e68f0429 100644 --- a/implementations/python/tests/test_sem_208_participant_behavior.py +++ b/implementations/python/tests/test_sem_208_participant_behavior.py @@ -15,12 +15,12 @@ ParticipantObservationStatus, iter_participant_behavior_history_violations, ) -from aces_sdl._declarations import build_declaration_index -from aces_sdl._errors import SDLInstantiationError, SDLParseError, SDLValidationError -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.parser import parse_sdl, parse_sdl_file -from aces_sdl.participant_behavior import ParticipantInteractionClass from jsonschema import Draft202012Validator +from raes._declarations import build_declaration_index +from raes._errors import SDLInstantiationError, SDLParseError, SDLValidationError +from raes.instantiate import instantiate_scenario +from raes.parser import parse_sdl, parse_sdl_file +from raes.participant_behavior import ParticipantInteractionClass T0 = "2026-05-18T18:30:00Z" T1 = "2026-05-18T18:30:05Z" diff --git a/implementations/python/tests/test_sem_211_participant_action_semantics.py b/implementations/python/tests/test_sem_211_participant_action_semantics.py index c6cb3f783..9d53c265d 100644 --- a/implementations/python/tests/test_sem_211_participant_action_semantics.py +++ b/implementations/python/tests/test_sem_211_participant_action_semantics.py @@ -22,9 +22,9 @@ map_backend_diagnostic_to_participant_failure, ) from aces_runtime.control_plane_store import LocalControlPlaneStore -from aces_sdl._errors import SDLParseError -from aces_sdl.parser import parse_sdl -from aces_sdl.participant_behavior import ( +from raes._errors import SDLParseError +from raes.parser import parse_sdl +from raes.participant_behavior import ( ParticipantEffectClass, ParticipantFailureClass, ParticipantPreconditionClass, diff --git a/implementations/python/tests/test_sem_212_participant_attribution_semantics.py b/implementations/python/tests/test_sem_212_participant_attribution_semantics.py index eb746cd2d..8fe6a6fcd 100644 --- a/implementations/python/tests/test_sem_212_participant_attribution_semantics.py +++ b/implementations/python/tests/test_sem_212_participant_attribution_semantics.py @@ -21,14 +21,14 @@ ParticipantObservationStatus, iter_participant_behavior_history_violations, ) -from aces_sdl.participant_attribution_semantics import ( +from raes.participant_attribution_semantics import ( OUTCOME_ATTRIBUTION_CANDIDATE_KINDS, STRONG_ATTRIBUTION_SUPPORT_CLASSES, ParticipantAttributionCandidateKind, ParticipantAttributionOrderingBasisKind, ParticipantAttributionSupportClass, ) -from aces_sdl.participant_behavior import ( +from raes.participant_behavior import ( ParticipantEffectClass, ParticipantPreconditionClass, ) diff --git a/implementations/python/tests/test_sem_213_temporal_participant_semantics.py b/implementations/python/tests/test_sem_213_temporal_participant_semantics.py index 40f3197f7..5b7da7450 100644 --- a/implementations/python/tests/test_sem_213_temporal_participant_semantics.py +++ b/implementations/python/tests/test_sem_213_temporal_participant_semantics.py @@ -22,10 +22,10 @@ iter_participant_behavior_history_violations, iter_participant_temporal_state_machine_violations, ) -from aces_sdl._errors import SDLParseError -from aces_sdl.parser import parse_sdl -from aces_sdl.participant_behavior import ParticipantEffectClass, ParticipantPreconditionClass -from aces_sdl.participant_temporal_semantics import ( +from raes._errors import SDLParseError +from raes.parser import parse_sdl +from raes.participant_behavior import ParticipantEffectClass, ParticipantPreconditionClass +from raes.participant_temporal_semantics import ( ParticipantTemporalContractKind, ParticipantTemporalEventPoint, ParticipantTimeDomain, diff --git a/implementations/python/tests/test_sem_215_participant_outcome_interpretation.py b/implementations/python/tests/test_sem_215_participant_outcome_interpretation.py index 39f1daf1c..9cb94b755 100644 --- a/implementations/python/tests/test_sem_215_participant_outcome_interpretation.py +++ b/implementations/python/tests/test_sem_215_participant_outcome_interpretation.py @@ -21,14 +21,14 @@ ParticipantOutcomeTargetRecord, iter_participant_behavior_history_violations, ) -from aces_sdl._errors import SDLParseError, SDLValidationError -from aces_sdl.parser import parse_sdl -from aces_sdl.participant_behavior import ( +from raes._errors import SDLParseError, SDLValidationError +from raes.parser import parse_sdl +from raes.participant_behavior import ( ParticipantEffectClass, ParticipantFailureClass, ParticipantPreconditionClass, ) -from aces_sdl.participant_outcome_semantics import ( +from raes.participant_outcome_semantics import ( OutcomeInterpretationSourceLayer, OutcomeInterpretationTargetLayer, ) diff --git a/implementations/python/tests/test_sem_218_explicitness.py b/implementations/python/tests/test_sem_218_explicitness.py index 15ba545f1..b41d7d698 100644 --- a/implementations/python/tests/test_sem_218_explicitness.py +++ b/implementations/python/tests/test_sem_218_explicitness.py @@ -5,8 +5,8 @@ import textwrap import pytest -from aces_sdl import SDLValidationError, instantiate_scenario, parse_sdl -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes import SDLValidationError, instantiate_scenario, parse_sdl +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance def _scenario_with_explicitness_cases(): diff --git a/implementations/python/tests/test_sem_218_realization.py b/implementations/python/tests/test_sem_218_realization.py index c706cfbd6..f7e1f1e3f 100644 --- a/implementations/python/tests/test_sem_218_realization.py +++ b/implementations/python/tests/test_sem_218_realization.py @@ -15,7 +15,7 @@ from aces_contracts.apparatus import ConceptBinding, RealizationSupportDeclaration from aces_contracts.vocabulary import RealizationSupportMode -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance from aces.backends.stubs import create_stub_manifest from aces.core.runtime.capabilities import BackendManifest, ProvisionerCapabilities diff --git a/implementations/python/tests/test_sem_218_realization_designation.py b/implementations/python/tests/test_sem_218_realization_designation.py index 53dc31cb8..b2e672845 100644 --- a/implementations/python/tests/test_sem_218_realization_designation.py +++ b/implementations/python/tests/test_sem_218_realization_designation.py @@ -20,17 +20,17 @@ from aces_processor.planner import plan from aces_processor.semantics.realization import realization_disclosure from aces_runtime.control_plane_api_models import _snapshot_model -from aces_sdl._errors import SDLParseError -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.parser import parse_sdl, parse_sdl_file -from aces_sdl.realization_designation import ( +from pydantic import ValidationError +from raes._errors import SDLParseError +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.instantiate import instantiate_scenario +from raes.parser import parse_sdl, parse_sdl_file +from raes.realization_designation import ( AuthorRealizationPosture, RealizationDesignationRecord, RealizationScopeDesignation, resolve_json_pointer_surface, ) -from pydantic import ValidationError def _scenario(realization: str = "", *, web_os: str = ""): diff --git a/implementations/python/tests/test_sem_218_runtime_realization.py b/implementations/python/tests/test_sem_218_runtime_realization.py index d5d6f6c4c..722b6132d 100644 --- a/implementations/python/tests/test_sem_218_runtime_realization.py +++ b/implementations/python/tests/test_sem_218_runtime_realization.py @@ -27,7 +27,7 @@ RuntimeSnapshot, ) from aces_contracts.versions import RUNTIME_SNAPSHOT_SCHEMA_VERSION -from aces_sdl.explicitness import ExplicitnessClass, ExplicitnessProvenance +from raes.explicitness import ExplicitnessClass, ExplicitnessProvenance from aces.backends.stubs import StubProvisioner, create_stub_target from aces.core.runtime.control_plane_store import _snapshot_from_payload, _snapshot_payload diff --git a/implementations/python/tests/test_sem_224_observability_plane_semantics.py b/implementations/python/tests/test_sem_224_observability_plane_semantics.py index b576ff2c7..f673b628b 100644 --- a/implementations/python/tests/test_sem_224_observability_plane_semantics.py +++ b/implementations/python/tests/test_sem_224_observability_plane_semantics.py @@ -27,8 +27,10 @@ ExperimentEvidenceRecordModel, schema_bundle, ) -from aces_sdl._runtime_service_families import RUNTIME_SERVICE_FAMILIES -from aces_sdl.observability_plane_semantics import ( +from jsonschema import Draft202012Validator +from pydantic import ValidationError +from raes._runtime_service_families import RUNTIME_SERVICE_FAMILIES +from raes.observability_plane_semantics import ( AMBIGUOUS_PLANE_TOKENS, PLANE_BY_CONTRACT_ID, SCENARIO_NATIVE_OBSERVABILITY_FAMILIES, @@ -39,8 +41,6 @@ classify_runtime_family, token_decides_plane, ) -from jsonschema import Draft202012Validator -from pydantic import ValidationError REPO_ROOT = Path(__file__).resolve().parents[3] FIXTURES_ROOT = REPO_ROOT / "contracts" / "fixtures" diff --git a/implementations/python/tests/test_sem_227_shared_time_model.py b/implementations/python/tests/test_sem_227_shared_time_model.py index 28686b157..c93fcf318 100644 --- a/implementations/python/tests/test_sem_227_shared_time_model.py +++ b/implementations/python/tests/test_sem_227_shared_time_model.py @@ -9,10 +9,10 @@ import pytest from aces_processor.compiler import compile_runtime_model from aces_runtime.time_coordinator import ClockLifecycleState, TimeCoordinator -from aces_sdl._errors import SDLParseError, SDLValidationError -from aces_sdl.parser import parse_sdl, parse_sdl_file from hypothesis import given from hypothesis import strategies as st +from raes._errors import SDLParseError, SDLValidationError +from raes.parser import parse_sdl, parse_sdl_file def _scenario_yaml() -> str: diff --git a/implementations/python/tests/test_semantics_objectives.py b/implementations/python/tests/test_semantics_objectives.py index b86c2964a..2acabb801 100644 --- a/implementations/python/tests/test_semantics_objectives.py +++ b/implementations/python/tests/test_semantics_objectives.py @@ -701,7 +701,7 @@ def test_partition_reads_each_categorys_own_role_constant(self, monkeypatch) -> # runtime tuples. Toggle just OBJECTIVE_DEPENDENCY_DEPENDENCY_ROLES to # refresh-only and assert the partition output reflects exactly that # difference — proving each category is keyed independently. - import aces_sdl.semantics.objective_semantics as os_module + import raes.semantics.objective_semantics as os_module monkeypatch.setattr( os_module, diff --git a/implementations/python/tests/test_validation_disclosure.py b/implementations/python/tests/test_validation_disclosure.py index d267fd463..4d40e64d0 100644 --- a/implementations/python/tests/test_validation_disclosure.py +++ b/implementations/python/tests/test_validation_disclosure.py @@ -21,15 +21,15 @@ ValidationGateResultModel, ValidationSubjectReferenceModel, ) -from aces_sdl.canonical import ( +from pydantic import ValidationError +from raes.canonical import ( INSTANTIATED_SNAPSHOT_PROFILE, InstantiatedScenarioSnapshot, canonical_instantiated_sdl_digest, canonical_sdl_digest, ) -from aces_sdl.instantiate import instantiate_scenario -from aces_sdl.parser import parse_sdl -from pydantic import ValidationError +from raes.instantiate import instantiate_scenario +from raes.parser import parse_sdl REPO_ROOT = Path(__file__).resolve().parents[3] FIXTURES_ROOT = REPO_ROOT / "contracts/fixtures/profiles/validation-basis-disclosure-v1" diff --git a/implementations/python/tests/test_verification_plan.py b/implementations/python/tests/test_verification_plan.py index 1cade14b0..9c1844df6 100644 --- a/implementations/python/tests/test_verification_plan.py +++ b/implementations/python/tests/test_verification_plan.py @@ -50,7 +50,7 @@ def test_research_evidence_and_formal_specs_select_contract_replay() -> None: "path", [ "contracts/schemas/sdl/sdl-authoring-input-v1.json", - "implementations/python/packages/aces_sdl/scenario.py", + "implementations/python/packages/raes/scenario.py", "implementations/python/tests/test_sdl_models.py", "implementations/python/pyproject.toml", "noxfile.py", @@ -78,7 +78,7 @@ def test_destructive_or_structural_changes_fail_closed(status: str) -> None: def test_mixed_prose_and_source_changes_take_the_highest_risk_plan() -> None: - plan = _plan("docs/explain/sdl/sections.md", "implementations/python/packages/aces_sdl/scenario.py") + plan = _plan("docs/explain/sdl/sections.md", "implementations/python/packages/raes/scenario.py") assert plan.contracts assert plan.regression diff --git a/implementations/python/tests/test_version_classification.py b/implementations/python/tests/test_version_classification.py index 94b30339c..f02eb9022 100644 --- a/implementations/python/tests/test_version_classification.py +++ b/implementations/python/tests/test_version_classification.py @@ -12,6 +12,7 @@ from __future__ import annotations from importlib.metadata import PackageNotFoundError, entry_points, version +from importlib.util import find_spec from typer.testing import CliRunner @@ -19,10 +20,14 @@ DISHONEST_LITERAL = "0.1.0" -def test_aces_namespace_version_derives_from_distribution() -> None: - import aces +def test_raes_namespace_version_derives_from_distribution() -> None: + import raes - assert aces.__version__ == version("raes") + assert raes.__version__ == version("raes") + + +def test_legacy_aces_sdl_namespace_is_absent() -> None: + assert find_spec("aces_sdl") is None def test_package_version_helper_uses_supplied_sentinel(monkeypatch) -> None: diff --git a/implementations/python/tests/test_yaml_mapping_keys.py b/implementations/python/tests/test_yaml_mapping_keys.py index 35657e5da..e4d4f0943 100644 --- a/implementations/python/tests/test_yaml_mapping_keys.py +++ b/implementations/python/tests/test_yaml_mapping_keys.py @@ -3,16 +3,16 @@ from pathlib import Path import pytest -from aces_sdl import SDLMigrationPolicy, SDLParseDiagnostic, SDLParseError, parse_sdl, parse_sdl_file -from aces_sdl.language_service import ( +from hypothesis import given +from hypothesis import strategies as st +from raes import SDLMigrationPolicy, SDLParseDiagnostic, SDLParseError, parse_sdl, parse_sdl_file +from raes.language_service import ( apply_structured_edit, language_completions, language_diagnostics, language_format, language_references, ) -from hypothesis import given -from hypothesis import strategies as st FIXTURE_DIR = Path(__file__).parent / "data" / "sdl" / "invalid" diff --git a/implementations/python/uv.lock b/implementations/python/uv.lock index c2189b8f7..bb46d727e 100644 --- a/implementations/python/uv.lock +++ b/implementations/python/uv.lock @@ -1234,7 +1234,7 @@ wheels = [ [[package]] name = "raes" -version = "0.23.1" +version = "0.24.0" source = { editable = "." } dependencies = [ { name = "asyncssh" }, diff --git a/noxfile.py b/noxfile.py index 82304a2dd..907db3b63 100644 --- a/noxfile.py +++ b/noxfile.py @@ -562,6 +562,10 @@ def _run_policy(session: nox.Session, reporter: SessionReporter, *args: str) -> "policy / example library catalog", "skipped on staged check; runs on push and verify", ) + reporter.skip( + "policy / project positioning", + "skipped on staged check; runs on push and verify", + ) reporter.skip( "policy / ADR acceptance-content pin", "skipped on staged check; runs on push and verify", @@ -599,6 +603,10 @@ def _run_policy(session: nox.Session, reporter: SessionReporter, *args: str) -> "policy / example library catalog", lambda: _run_project_python(session, "tools/check_example_library.py"), ) + reporter.run( + "policy / project positioning", + lambda: _run_project_python(session, "tools/check_project_positioning.py"), + ) reporter.run( "policy / ADR acceptance-content pin", lambda: _run_project_python(session, "tools/check_adr_immutability.py", *adr_pin_args), diff --git a/specs/agent-guidance/agent-guidance.yaml b/specs/agent-guidance/agent-guidance.yaml index d6b321e5f..77b7be36d 100644 --- a/specs/agent-guidance/agent-guidance.yaml +++ b/specs/agent-guidance/agent-guidance.yaml @@ -191,7 +191,7 @@ guidance: diagnostics over broad YAML rewrites when modifying SDL. source_refs: - docs/explain/sdl/language-service.md - - implementations/python/packages/aces_sdl/language_service.py + - implementations/python/packages/raes/language_service.py - id: no-participant-actions-through-guidance audience: [operator] diff --git a/specs/concept-authority/concept-authority.md b/specs/concept-authority/concept-authority.md index c68214b98..191939917 100644 --- a/specs/concept-authority/concept-authority.md +++ b/specs/concept-authority/concept-authority.md @@ -3,7 +3,7 @@ ## Scope This specification defines the canonical concept authority for cyber-domain -concepts used across ACES SDL, manifests, contracts, provenance, reporting, +concepts used across RAES SDL, manifests, contracts, provenance, reporting, and related ecosystem artifacts. It establishes what concept families exist, where their meaning comes from, @@ -33,10 +33,10 @@ It pins the reviewed UCO version and maps every adopted and adapted cyber-domain family to the UCO object types it aligns to, stating each adapted family's divergences explicitly so the alignment can be reviewed rather than assumed. -### 2. ACES Concept Layer +### 2. RAES Concept Layer -Defines concepts that ACES needs beyond the cyber-domain authority. These -are ACES-native extensions for experiment, runtime, apparatus, provenance, +Defines concepts that RAES needs beyond the cyber-domain authority. These +are RAES-native extensions for experiment, runtime, apparatus, provenance, and governance concerns. ### 3. Artifact Binding Layer @@ -47,7 +47,7 @@ from becoming de facto semantics. ## Surface -A **surface** is a named, bounded, contract-bearing scope of an ACES artifact +A **surface** is a named, bounded, contract-bearing scope of an RAES artifact or apparatus — owned by a single declaring authority — across which concept bindings, governed vocabularies, and conformance rules apply. "Surface" is the ecosystem's central organizing term: authoring (the SDL surface), processing @@ -99,8 +99,8 @@ Every concept family declares its provenance: | Category | Meaning | |----------|---------| | `adopted` | Imported from the external authority with equivalent meaning. | -| `adapted` | Derived from the external authority with ACES-specific modifications. | -| `native` | Defined by ACES with no external authority source. | +| `adapted` | Derived from the external authority with RAES-specific modifications. | +| `native` | Defined by RAES with no external authority source. | ## Concept Families @@ -121,9 +121,9 @@ The `relationships` family uses `adapted` provenance because existing relationship types draw from STIX 2.1 Relationship SROs and OCR dependency patterns, not from UCO alone. -### ACES-Native Families +### RAES-Native Families -These families have no external authority. They are defined by ACES for +These families have no external authority. They are defined by RAES for ecosystem-specific concerns. | Family | Scope | @@ -139,14 +139,14 @@ ecosystem-specific concerns. | `time-and-apparatus` | Clocks, timing constraints, and apparatus-level concerns. | The `episodes` family is native because participant episode semantics are an -ACES runtime boundary, not a UCO cyber object and not a task/run/study alias. +RAES runtime boundary, not a UCO cyber object and not a task/run/study alias. It covers participant-scoped episode identity, lifecycle state, reset/restart boundaries, and append-only episode history. Episode-bound behavior events, observables, actions, tools, artifacts, and evidence still bind to their narrower concept families when those records are the artifact's subject. The `runtime-inventory` family is native because observed node runtime state is -an ACES extension over the cyber-domain authority, not a UCO object in its own +an RAES extension over the cyber-domain authority, not a UCO object in its own right and not a task/run/study or apparatus declaration. It covers the typed runtime inventory carried under `nodes.*.runtime` — services, platforms, packages and software components, controls and security posture, filesystem and @@ -156,22 +156,22 @@ asset, identity, observable, tool, artifact, or relationship — still bind to that narrower family. Runtime inventory records the observed or declared state, never the actions or events that produce, change, or react to it. -The `behavioral-relations` family is native because ACES must govern how its +The `behavioral-relations` family is native because RAES must govern how its artifacts bind formal and empirical relations to carriers, observation projections, quantifiers, evidence boundaries, and assurance states. The individual mathematical relations retain their revision-pinned publication -lineage in the behavioral-relation catalog; this family owns ACES's claim +lineage in the behavioral-relation catalog; this family owns RAES's claim discipline, not a replacement definition of actions, observations, scenarios, apparatuses, runs, studies, or evidence. ## Extension Discipline -ACES-native families must be explicit extensions over the shared concept +RAES-native families must be explicit extensions over the shared concept authority, not implicit forks of adopted or adapted cyber-domain meaning. Each `native` family must declare: -- `extension_scope`: the ACES-specific concern covered by the family +- `extension_scope`: the RAES-specific concern covered by the family - `relation_rules`: how the native concept may relate to adopted, adapted, or other native families - `non_ambiguity_constraints`: constraints that prevent the native concept @@ -189,7 +189,7 @@ steps from this section and the machine-readable catalog alone: 1. **Extend the existing runtime surface first.** A new observed node fact should extend `RuntimeConfiguration` and register through the canonical - runtime service-family registry (`aces_sdl._runtime_service_families`) + runtime service-family registry (`raes._runtime_service_families`) instead of introducing a new top-level concept family. The `runtime-inventory` family and the `nodes.*.runtime` reference model are the shared seam for this surface. @@ -204,7 +204,7 @@ steps from this section and the machine-readable catalog alone: an invariant fails the suite immediately. 3. **Keep observed values redaction-safe.** Values that can carry secrets must route through the runtime redaction helpers (ADR-056 / ADR-057, - `aces_sdl.runtime_values`); raw credential material is unrepresentable on the + `raes.runtime_values`); raw credential material is unrepresentable on the model surface. 4. **Add controlled vocabulary, not free strings.** New enumerated terms belong in `contracts/concept-authority/controlled-vocabularies-v1.json` (GOV-922), diff --git a/specs/concept-authority/controlled-vocabularies.md b/specs/concept-authority/controlled-vocabularies.md index 08844dbc1..2679110c6 100644 --- a/specs/concept-authority/controlled-vocabularies.md +++ b/specs/concept-authority/controlled-vocabularies.md @@ -3,14 +3,14 @@ ## Scope This specification defines the controlled-vocabulary authority surface for -portable declared terms whose values must compare consistently across ACES +portable declared terms whose values must compare consistently across RAES artifacts. It distinguishes two cases: - closed enumerations, where the portable term set is fixed - governed-extension vocabularies, where the portable base terms are fixed but - controlled extension space remains available for ACES-native, experimental, + controlled extension space remains available for RAES-native, experimental, or still-evolving declarations Controlled vocabularies do not replace concept families, reference models, or @@ -47,13 +47,13 @@ not duplicated inside each vocabulary object. When `source.provenance` is `adopted`, base terms must preserve the cited external authority's identifiers, names, URLs, and descriptions exactly as -published in the pinned source artifact. ACES may bind those terms to its own +published in the pinned source artifact. RAES may bind those terms to its own fields and may permit governed extensions, but it must not rewrite the adopted base-term meanings. When `source.provenance` is `adapted`, the pinned source artifact must preserve the external identifiers and source text while each catalog description clearly -states the narrower ACES binding. Adaptation must not claim endorsement or +states the narrower RAES binding. Adaptation must not claim endorsement or conformance by the external authority. ### Enumeration Rules @@ -228,7 +228,7 @@ For governed apparatus-manifest capability fields: - GOV-917: canonical concept authority - GOV-918: cross-artifact concept binding -- GOV-919: disciplined ACES-native extensions +- GOV-919: disciplined RAES-native extensions - GOV-920: shared semantic profiles - GOV-921: shared reference models - GOV-922: controlled vocabularies and enumerations diff --git a/specs/concept-authority/reference-models.md b/specs/concept-authority/reference-models.md index 598d78deb..666b30747 100644 --- a/specs/concept-authority/reference-models.md +++ b/specs/concept-authority/reference-models.md @@ -3,7 +3,7 @@ ## Scope This specification defines shared reference models for recurrent -federation-relevant structures carried in ACES artifact surfaces. +federation-relevant structures carried in RAES artifact surfaces. Shared reference models do not redefine concept authority and do not replace artifact-local schemas. They declare which published structure definitions are @@ -63,7 +63,7 @@ Participant episodes are cataloged as the native `episodes` concept family rather than as an SDL reference model entry. The external lineage is the reinforcement-learning environment episode notion used by Gymnasium and OpenAI Gym: a bounded interaction sequence that starts after initialization or -reset and ends at a terminal, timeout, or truncation boundary. ACES narrows +reset and ends at a terminal, timeout, or truncation boundary. RAES narrows that lineage to participant-runtime contracts by requiring stable `participant_address`, per-episode `episode_id`, explicit lifecycle state, and append-only state/history surfaces. @@ -104,7 +104,7 @@ The valid and invalid fixture corpus for reference models is published under: ## UCO Alignment Evidence -Reference models bind recurrent ACES structures to ACES concept families; they +Reference models bind recurrent RAES structures to RAES concept families; they do not inherit UCO class structure. The concept-authority relationship behind the adopted and adapted cyber-domain families those models reference is recorded separately as machine-checkable evidence in @@ -117,7 +117,7 @@ divergences explicitly. See [ADR-012](../../docs/decisions/adrs/adr-012-shared-c - GOV-917: canonical concept authority - GOV-918: cross-artifact concept binding -- GOV-919: disciplined ACES-native extensions +- GOV-919: disciplined RAES-native extensions - GOV-920: shared semantic profiles - GOV-921: shared reference models - GOV-922: controlled vocabularies and enumerations diff --git a/specs/concept-authority/semantic-profiles.md b/specs/concept-authority/semantic-profiles.md index f513f5c20..f16ee696f 100644 --- a/specs/concept-authority/semantic-profiles.md +++ b/specs/concept-authority/semantic-profiles.md @@ -2,7 +2,7 @@ ## Scope -This specification defines shared semantic profiles for ACES authoring, +This specification defines shared semantic profiles for RAES authoring, exchange, processing, and execution surfaces. Shared semantic profiles declare the compatible concept, contract, and @@ -91,7 +91,7 @@ The valid and invalid fixture corpus for semantic profiles is published under: ## UCO Alignment Evidence -Semantic profiles compose ACES concept, contract, binding, and behavior +Semantic profiles compose RAES concept, contract, binding, and behavior assumptions; they are not UCO profiles and do not adopt UCO authoring syntax. The concept-authority relationship behind the adopted and adapted cyber-domain families a profile may require is recorded as machine-checkable evidence in @@ -103,7 +103,7 @@ divergences. See [ADR-012](../../docs/decisions/adrs/adr-012-shared-concept-auth - GOV-917: canonical concept authority - GOV-918: cross-artifact concept binding -- GOV-919: disciplined ACES-native extensions +- GOV-919: disciplined RAES-native extensions - GOV-920: shared semantic profiles - GOV-921: shared reference models - GOV-922: controlled vocabularies and enumerations diff --git a/specs/evolution/README.md b/specs/evolution/README.md index 5cef79f50..3c0697d0e 100644 --- a/specs/evolution/README.md +++ b/specs/evolution/README.md @@ -1,6 +1,6 @@ # Evolution Governance -This directory contains normative ACES ecosystem policy for artifact +This directory contains normative RAES ecosystem policy for artifact evolution: versioning, compatibility, deprecation, removal, and migration. The governing decision is diff --git a/specs/evolution/deprecation-records.yaml b/specs/evolution/deprecation-records.yaml index 16ca29014..c178befc1 100644 --- a/specs/evolution/deprecation-records.yaml +++ b/specs/evolution/deprecation-records.yaml @@ -44,7 +44,7 @@ records: identifier: "implementations/python/src/aces/ (the legacy `aces.*` re-export namespace)" status: deprecated first_notice: "ADR-010 (repository realignment order and compatibility policy)" - replacement: "the owning packages under implementations/python/packages/ (aces_sdl, aces_contracts, aces_cli, aces_runtime, and siblings)" + replacement: "the owning packages under implementations/python/packages/ (raes, aces_contracts, aces_cli, aces_runtime, and siblings)" migration_reference: "docs/decisions/adrs/adr-010-repository-realignment-order-and-compatibility-policy.md; docs/explain/sdl/runtime-architecture.md" notice_window: "Supported through the pre-1.0 package series; removal eligible no earlier than the first major (post-1.0) package release and only via a complete removal record." verification_evidence: "tools/check_repo_policy.py enforces the compatibility-wrapper-only rule for aces.* modules and the one-way import ban (owning packages must not import aces.*), proving the layer remains a supported wrapper during the notice window." @@ -60,4 +60,4 @@ records: replacement: "the `source:` field (path form `local:{path}`)" migration_reference: "docs/decisions/adrs/adr-053-sdl-module-composition-for-inventory-backed-scenarios.md; docs/explain/sdl/parser.md" notice_window: "Supported indefinitely as a backward-compatible alias; removal eligible only after a complete removal record and a deterministic source rewrite per the migration rules." - verification_evidence: "aces_sdl.scenario.ImportDecl.normalized_source maps a `path:` value to `local:{path}`, and validate_source_fields keeps deprecated-but-supported use non-fatal; parser tests exercise both the `source:` and `path:` forms." + verification_evidence: "raes.scenario.ImportDecl.normalized_source maps a `path:` value to `local:{path}`, and validate_source_fields keeps deprecated-but-supported use non-fatal; parser tests exercise both the `source:` and `path:` forms." diff --git a/specs/evolution/versioning-deprecation-and-migration.md b/specs/evolution/versioning-deprecation-and-migration.md index 0e39c7d8b..50978245e 100644 --- a/specs/evolution/versioning-deprecation-and-migration.md +++ b/specs/evolution/versioning-deprecation-and-migration.md @@ -1,6 +1,6 @@ # Versioning, Deprecation, and Migration Governance -This specification is normative for ACES ecosystem evolution policy. It +This specification is normative for RAES ecosystem evolution policy. It implements the joint design surface for GOV-901, GOV-902, and GOV-903. ## Scope @@ -37,7 +37,7 @@ the named surface and dimension. **Structural acceptance** means the consumer accepts the artifact's syntactic or schema shape. -**Semantic equivalence** means accepted input preserves the same ACES meaning. +**Semantic equivalence** means accepted input preserves the same RAES meaning. **Behavioral compatibility** means runtime, CLI, API, validation, or conformance behavior remains within the documented contract. @@ -164,7 +164,7 @@ ambiguous or lossy cases, and fail closed rather than drop unknown fields. Compatibility adapters stay at the owning boundary: - legacy `aces.*` re-exports stay in the compatibility tree; -- SDL normalization and module composition stay in `aces_sdl`; +- SDL normalization and module composition stay in `raes`; - contract readers stay in `aces_contracts`; - CLI presentation stays in `aces_cli`; and - backend/runtime layers do not reinterpret authored source to hide migration diff --git a/specs/formal/README.md b/specs/formal/README.md index 2523dc854..67bebc894 100644 --- a/specs/formal/README.md +++ b/specs/formal/README.md @@ -1,6 +1,6 @@ # Formal Specs -Optional formal artifacts for ACES SDL semantic and stateful subsystems live under: +Optional formal artifacts for RAES SDL semantic and stateful subsystems live under: `specs/formal//` diff --git a/specs/formal/assessment/README.md b/specs/formal/assessment/README.md index 018e89f87..5100e9e12 100644 --- a/specs/formal/assessment/README.md +++ b/specs/formal/assessment/README.md @@ -37,7 +37,7 @@ authored SDL: - the backend **Evaluator** ([ADR-069](../../../docs/decisions/adrs/adr-069-cage-2-replication-architecture.md) §3), which projects reward, objective, terminal-condition, and scoring facts - into ACES evaluation results, evidence records, and derived measures. + into RAES evaluation results, evidence records, and derived measures. The governing requirement remains **SEM-206 (Assessment Semantics)**; [`../../../docs/explain/reference/assessment-semantics.md`](../../../docs/explain/reference/assessment-semantics.md) diff --git a/specs/formal/assurance-fulfillment.yaml b/specs/formal/assurance-fulfillment.yaml index 1e389e50a..97a8b8294 100644 --- a/specs/formal/assurance-fulfillment.yaml +++ b/specs/formal/assurance-fulfillment.yaml @@ -158,7 +158,7 @@ entries: - kind: unit_tests path: implementations/python/tests/test_semantics_objectives.py - kind: typed_ir_or_contract_coverage - path: implementations/python/packages/aces_sdl/objectives.py + path: implementations/python/packages/raes/objectives.py - kind: property_based_or_differential_tests path: implementations/python/tests/test_semantics_objectives.py waived_artifacts: [] @@ -452,7 +452,7 @@ entries: - kind: unit_tests path: implementations/python/tests/test_sdl_phase_contracts.py - kind: typed_ir_or_contract_coverage - path: implementations/python/packages/aces_sdl/phase_contracts.py + path: implementations/python/packages/raes/phase_contracts.py - kind: property_based_or_differential_tests path: implementations/python/tests/test_sdl_phase_contracts.py waived_artifacts: [] diff --git a/specs/formal/behavioral-relations/README.md b/specs/formal/behavioral-relations/README.md index 2bef9f2b3..c50065626 100644 --- a/specs/formal/behavioral-relations/README.md +++ b/specs/formal/behavioral-relations/README.md @@ -4,7 +4,7 @@ Classification: FM2, relation and assurance semantics. ## Scope And Authority -This specification governs the meaning of ACES claims about validation, +This specification governs the meaning of RAES claims about validation, conformance, realization, comparison, refinement, equivalence, participant visibility, multi-agent interaction, and empirical adequacy. It prevents a weaker observation from being reported as a stronger behavioral result. @@ -146,7 +146,7 @@ Assurance axes are independent: | Axis | Question | | --- | --- | | definition | Is the relation defined precisely? | -| implementation | Does ACES implement a checker or realization? | +| implementation | Does RAES implement a checker or realization? | | test | What executable cases exercise it? | | proof | Is a universal obligation proved, model-checked, deliberately unproved, or future? | diff --git a/specs/formal/composition-readiness.md b/specs/formal/composition-readiness.md index 124ca3590..fec845e98 100644 --- a/specs/formal/composition-readiness.md +++ b/specs/formal/composition-readiness.md @@ -29,7 +29,7 @@ It does lock the semantic preconditions those features must respect. ## Current Implementation Hooks - objective/window references already carry a namespace-extensible path slot in - `implementations/python/packages/aces_sdl/semantics/objectives.py` + `implementations/python/packages/raes/semantics/objectives.py` - planner identity handling is already defined in terms of canonical compiled addresses in `implementations/python/packages/aces_processor/semantics/planner.py` - named regression tests pin the layout/namespace invariants: diff --git a/specs/formal/experiment-core/README.md b/specs/formal/experiment-core/README.md index a6edede4e..c35e3614c 100644 --- a/specs/formal/experiment-core/README.md +++ b/specs/formal/experiment-core/README.md @@ -62,7 +62,7 @@ Rationale: Published JSON Schemas are the portable structural contract. They declare draft 2020-12 schema identity explicitly. Semantic graph constraints that standard -JSON Schema cannot portably enforce are declared under the ACES semantic- +JSON Schema cannot portably enforce are declared under the RAES semantic- invariant profile through `x-aces-semantic-profile` and `x-aces-invariants` metadata. Each invariant records a stable id, severity, validator, and input contract/path set; the annotation shape is published as @@ -320,7 +320,7 @@ family's input-shaped value models (apparatus constraints, run allocation, stochastic controls, factors, clock context) by reference or embedding and does not re-declare task, scenario, or capture-specification meaning. The reused run- allocation model annotates its semantic invariant against `experiment-study-v1` -even when embedded here; that annotation is descriptive only — the ACES model +even when embedded here; that annotation is descriptive only — the RAES model validator runs regardless of the embedding contract. ## Invariants @@ -388,7 +388,7 @@ validator runs regardless of the embedding contract. treated as raw evidence. 17. Backends that declare `capabilities.observation` MUST declare the published experiment evidence contracts that make the observation claim inspectable. -18. `experiment-run-v1` is the canonical run provenance record. ACES MUST NOT +18. `experiment-run-v1` is the canonical run provenance record. RAES MUST NOT publish a parallel run-provenance root schema for the same archival run facts unless a later ADR supersedes this boundary. 19. Run traceability MUST link at least one capture specification and at least @@ -397,7 +397,7 @@ validator runs regardless of the embedding contract. value summary. Processor-realized disclosures MUST be attributed to a processor reference, and backend-realized disclosures MUST be attributed to a backend reference. -21. `experiment-run-v1` is the trial record for the current model. ACES MUST +21. `experiment-run-v1` is the trial record for the current model. RAES MUST NOT publish a parallel trial root schema for the same task execution facts unless a later ADR supersedes this boundary. 22. Repeated executions of the same task MUST be represented by distinct run @@ -407,7 +407,7 @@ validator runs regardless of the embedding contract. mutable run statuses MUST NOT stand in for repeated-run identity. 23. Reproducibility and replay claims MUST use the run traceability chain from run context to capture specs, evidence records, derived measures, and - claim/report refs. ACES MUST NOT publish parallel replay-run, + claim/report refs. RAES MUST NOT publish parallel replay-run, reproducibility-claim, replay-claim, or provenance-graph root schemas for the same facts unless a later ADR supersedes this boundary. 24. An experiment authoring input MUST reference its task with a `task` @@ -461,7 +461,7 @@ validator runs regardless of the embedding contract. validity notes, and an analysis plan with at least one metric, a primary metric, and structured statistical, uncertainty, multiple-comparison, and missing-data policies. -11. ACES semantic validation MUST be able to resolve canonical processor and +11. RAES semantic validation MUST be able to resolve canonical processor and backend manifest references to concrete manifest payloads with matching identities, schema versions, optional digest evidence, and mutual processor/backend compatibility declarations. @@ -528,7 +528,7 @@ validator runs regardless of the embedding contract. fixtures for schema-expressible invariants MUST fail both the published JSON Schema and the Python contract model. 5. Consumers that use only generic JSON Schema can validate portable structure - but MUST NOT claim full ACES experiment-core conformance until the ACES + but MUST NOT claim full RAES experiment-core conformance until the RAES semantic validators named by `x-aces-invariants` have been applied. ### Security And Redaction @@ -571,7 +571,7 @@ base. The most load-bearing criteria are: - Statistical analysis engines. - HTTP APIs. - New SDL authoring syntax. -- PROV, RO-Crate, OpenML, or MLflow as the internal ACES schema. +- PROV, RO-Crate, OpenML, or MLflow as the internal RAES schema. - Runtime evidence capture, artifact storage, retention jobs, or capture schedulers. - Backend-native packet/log/trace parsers. diff --git a/specs/formal/exploit-path-analysis/README.md b/specs/formal/exploit-path-analysis/README.md index 091b6931b..906b4e707 100644 --- a/specs/formal/exploit-path-analysis/README.md +++ b/specs/formal/exploit-path-analysis/README.md @@ -19,18 +19,18 @@ The input SHALL be an admitted `InstantiatedScenarioSnapshot`, a normalized attack graph whose `snapshot_digest` binds that snapshot, and a closed query. The analyzer does not consume raw YAML dictionaries, skip semantic admission, or add SDL authoring syntax. The normalized graph is a derived artifact that -binds ACES scenario concepts to attack-state facts and transitions. +binds RAES scenario concepts to attack-state facts and transitions. ## Normalized Graph A normalized graph contains: - `state_facts`: typed facts with stable ids, a fact kind, participant or - actor subject, and an ACES snapshot JSON Pointer; + actor subject, and an RAES snapshot JSON Pointer; - `transitions`: typed edges with stable ids, transition kind, transition semantics id, prerequisite fact ids, effect fact ids, and emitted observations; -- `bindings`: governed mappings from ACES snapshot JSON Pointers to exactly +- `bindings`: governed mappings from RAES snapshot JSON Pointers to exactly one graph state fact or transition target under the binding profile. State fact ids, transition ids, binding ids, prerequisite lists, effect lists, diff --git a/specs/formal/objectives/README.md b/specs/formal/objectives/README.md index c8ff98676..b9b53527a 100644 --- a/specs/formal/objectives/README.md +++ b/specs/formal/objectives/README.md @@ -35,14 +35,14 @@ target-resolution, success-interpretation, and dependency-ordering semantics ## Implementation Mapping - shared name-level source of truth for whole-objective semantics: - `implementations/python/packages/aces_sdl/semantics/objective_semantics.py` + `implementations/python/packages/raes/semantics/objective_semantics.py` (`analyze_objective_semantics`, `partition_objective_dependencies`, `OBJECTIVE_*_DEPENDENCY_ROLES`) - shared objective-window helper: - `implementations/python/packages/aces_sdl/semantics/objectives.py` + `implementations/python/packages/raes/semantics/objectives.py` (`analyze_objective_window`) -- authoring models: `implementations/python/packages/aces_sdl/objectives.py` -- semantic validation: `implementations/python/packages/aces_sdl/validator/` +- authoring models: `implementations/python/packages/raes/objectives.py` +- semantic validation: `implementations/python/packages/raes/validator/` (`_verify_objectives`) - compiled runtime objective resource, addresses, diagnostics, and ordering/refresh derivation: diff --git a/specs/formal/objectives/declarative-objective-semantics.md b/specs/formal/objectives/declarative-objective-semantics.md index ae32842d2..a08c7fd1d 100644 --- a/specs/formal/objectives/declarative-objective-semantics.md +++ b/specs/formal/objectives/declarative-objective-semantics.md @@ -20,12 +20,12 @@ control-plane behavior. The implementation must build on these existing authorities: -- SDL structure: `aces_sdl.objectives.Objective`, +- SDL structure: `raes.objectives.Objective`, `ObjectiveSuccess`, and `ObjectiveWindow` - parser/model gates: `sdl-yaml/v1`, `SDLModel`, canonical-field enforcement, explicit migration, variable-key rejection, and `SDLParseError` - static validation: `SemanticValidator` and `SDLValidationError` -- objective-window analysis: `aces_sdl.semantics.objectives` +- objective-window analysis: `raes.semantics.objectives` - assertion resolution over declared backend-neutral propositions - runtime compilation: `compile_runtime_model()` and `aces_processor.models.ObjectiveRuntime` @@ -72,7 +72,7 @@ Success interpretation: Windows: - window reference parsing, reachability, consistency, and refresh dependency - derivation come from `aces_sdl.semantics.objectives` + derivation come from `raes.semantics.objectives` - implementation must not duplicate window rules in validator, compiler, planner, or tests @@ -130,7 +130,7 @@ The design must satisfy every layer it passes through: ## Extensibility Seam The extensibility seam is the pure objective-semantics helper -`aces_sdl.semantics.objective_semantics.analyze_objective_semantics`: it produces +`raes.semantics.objective_semantics.analyze_objective_semantics`: it produces a normalized objective analysis (`ObjectiveReference` / `ObjectiveResourceDependencies` / `ObjectiveSemanticAnalysis`) reused by validation, compilation, planning, and agreement tests, parameterized by the @@ -149,7 +149,7 @@ acyclicity/fail-closed rules above. Avoid: -- a second objective schema beside `aces_sdl.objectives` +- a second objective schema beside `raes.objectives` - a second reference resolver beside `SemanticValidator`'s named-reference index or the compiler's canonical address helpers - a second objective-dependency graph implementation @@ -165,15 +165,15 @@ Avoid: ## Implementation Mapping - shared name-level semantic source of truth: - `implementations/python/packages/aces_sdl/semantics/objective_semantics.py` + `implementations/python/packages/raes/semantics/objective_semantics.py` (`analyze_objective_semantics`, `partition_objective_dependencies`, `OBJECTIVE_*_DEPENDENCY_ROLES`) - objective-window analysis (reused, not re-implemented): - `implementations/python/packages/aces_sdl/semantics/objectives.py` + `implementations/python/packages/raes/semantics/objectives.py` - authoring models (closed Pydantic shape; `agent` xor `entity`; non-empty - `success`): `implementations/python/packages/aces_sdl/objectives.py` + `success`): `implementations/python/packages/raes/objectives.py` - semantic validation: - `implementations/python/packages/aces_sdl/validator/` (`_verify_objectives`, + `implementations/python/packages/raes/validator/` (`_verify_objectives`, rendering the issue codes back onto the authoring-error strings) - compiled runtime objective resource, canonical addresses, diagnostics, and ordering/refresh derivation: diff --git a/specs/formal/objectives/proposition-and-assertion-semantics.md b/specs/formal/objectives/proposition-and-assertion-semantics.md index 063e0b843..6e561b532 100644 --- a/specs/formal/objectives/proposition-and-assertion-semantics.md +++ b/specs/formal/objectives/proposition-and-assertion-semantics.md @@ -5,7 +5,7 @@ This FM2 specification realizes [ADR-079](../../../docs/decisions/adrs/adr-079-backend-neutral-proposition-and-truth-semantics.md). The published JSON Schemas govern serialized shapes. The equations below govern the reference truth algebra. Runtime tests and fixtures provide bounded -assurance; ACES does not claim a mechanized proof. +assurance; RAES does not claim a mechanized proof. ## Domains diff --git a/specs/formal/objectives/window-consistency.md b/specs/formal/objectives/window-consistency.md index 1731c1960..9ff722493 100644 --- a/specs/formal/objectives/window-consistency.md +++ b/specs/formal/objectives/window-consistency.md @@ -68,8 +68,8 @@ shape before compiler/planner semantics run. Each resolved reference carries: ## Implementation Mapping -- shared semantic source of truth: `implementations/python/packages/aces_sdl/semantics/objectives.py` -- validator checks: `implementations/python/packages/aces_sdl/validator/` +- shared semantic source of truth: `implementations/python/packages/raes/semantics/objectives.py` +- validator checks: `implementations/python/packages/raes/validator/` - compiled runtime references and refresh derivation: - `implementations/python/packages/aces_processor/compiler/` - `implementations/python/packages/aces_processor/models/` diff --git a/specs/formal/observability-evidence-plane.md b/specs/formal/observability-evidence-plane.md index eaec1b5dc..a34d4007a 100644 --- a/specs/formal/observability-evidence-plane.md +++ b/specs/formal/observability-evidence-plane.md @@ -147,7 +147,7 @@ The minimum adversarial fixture set for implementation is: SEM-224 is realized as a carrier-oriented plane classifier plus portable plane traceability over the existing carriers. The classifier -`aces_sdl.observability_plane_semantics` is the single source of plane +`raes.observability_plane_semantics` is the single source of plane ownership; it assigns exactly one primary plane by contract role or runtime family identity and never by a free string (OE-01, OE-11). The three claim-bearing experiment-core carriers publish their plane as an `x-aces-plane` diff --git a/specs/formal/participant-behavior-model/README.md b/specs/formal/participant-behavior-model/README.md index d2926646d..460a1aa6d 100644 --- a/specs/formal/participant-behavior-model/README.md +++ b/specs/formal/participant-behavior-model/README.md @@ -121,12 +121,12 @@ Rules: ### ACT-603 Implementation Preflight Guardrails -Executable ACT-603 work must be a binding over existing ACES surfaces, not a +Executable ACT-603 work must be a binding over existing RAES surfaces, not a new participant stack. The canonical incumbents are: - SDL authored semantics: `agents.*`, `action_contracts`, `observation_boundaries`, and `outcome_interpretation_rules` in - `implementations/python/packages/aces_sdl/`. + `implementations/python/packages/raes/`. - SDL shape and reference validation: `SDLModel`, `parse_sdl`, `SemanticValidator`, `analyze_participant_behavior`, and `analyze_participant_outcome_interpretations`. @@ -196,7 +196,7 @@ Anti-patterns for ACT-603 implementations: ## ACT-602 - Executable Participant Behavior Model -Executable behavior means the model is machine-checkable through ACES gates. +Executable behavior means the model is machine-checkable through RAES gates. The executable chain is: ```text @@ -428,7 +428,7 @@ adoption of MITRE ATT&CK Enterprise tactics v19.1. The pinned source artifact is `contracts/concept-authority/attack-enterprise-tactics-source-v1.json`; it records the upstream STIX bundle URL, ATT&CK version, retrieval date, SHA-256 digest, MITRE terms URL, and citation URLs. The source artifact was extracted -from the ATT&CK Enterprise matrix order, not hand-curated by ACES. +from the ATT&CK Enterprise matrix order, not hand-curated by RAES. The base terms in `participant-ai-offensive-behavior-activities` are a separate direct adoption of MITRE ATLAS tactics release v2026.06 (`collection.version` @@ -437,7 +437,7 @@ direct adoption of MITRE ATLAS tactics release v2026.06 (`collection.version` upstream YAML release asset URL, ATLAS content and format versions, retrieval date, SHA-256 digest, MITRE ATLAS project and license citations, matrix id, and term lineage fields. The source artifact was extracted from the ATLAS -`ATLAS-matrix` sequence order, not hand-curated by ACES. +`ATLAS-matrix` sequence order, not hand-curated by RAES. Rules: @@ -461,7 +461,7 @@ Rules: overlapping labels as interchangeable without an explicit mapping surface. - External technique, tool, CVE, or command identifiers require explicit mapping or loss metadata on the owning surface; they are not accepted as raw - portable ACES semantics by this field. + portable RAES semantics by this field. - Future ATT&CK or ATLAS release updates must update the matching pinned source artifact, catalog terms, fixture, docs, schema metadata as needed, and checker validation evidence in one reviewable change. @@ -517,7 +517,7 @@ domains on the existing behavior-specification aggregate. Values resolve through `participant-defensive-behavior-activities`, independently from the ATT&CK and ATLAS offensive scopes. -The eight base terms are ACES adaptations of the active NIST CSF 2.0 Detect, +The eight base terms are RAES adaptations of the active NIST CSF 2.0 Detect, Respond, and Recover categories. The pinned source artifact is `contracts/concept-authority/nist-csf-defensive-categories-source-v1.json`. It preserves the official category identifiers, titles, function membership, @@ -525,7 +525,7 @@ and category descriptions extracted from the NIST CSF 2.0 Core export. Its digest covers the canonical category snapshot rather than generated XLSX bytes, whose ZIP metadata changes between downloads. -| NIST CSF ID | ACES term | Function | +| NIST CSF ID | RAES term | Function | | --- | --- | --- | | DE.CM | `continuous-monitoring` | Detect | | DE.AE | `adverse-event-analysis` | Detect | diff --git a/specs/formal/participant-runtime/README.md b/specs/formal/participant-runtime/README.md index 30bac2d99..acfb2dd38 100644 --- a/specs/formal/participant-runtime/README.md +++ b/specs/formal/participant-runtime/README.md @@ -14,7 +14,7 @@ conformance checks, and tests. Enum blocks use formal names. Implementation schemas should publish a single wire spelling and document the mapping; the intended wire spelling is lowercase -snake_case unless an existing ACES contract family requires a different style. +snake_case unless an existing RAES contract family requires a different style. ## Current Sufficiency Finding @@ -70,7 +70,7 @@ This design is constrained by the primary sources listed in - Gymnasium and OpenAI Gym support an action/observation/reward/episode boundary with action spaces, observation spaces, termination, truncation, - reset, and seeding. ACES follows that boundary, while adding + reset, and seeding. RAES follows that boundary, while adding multi-participant provenance and shared-state records and without requiring access to private policy internals. - PettingZoo contributes the multi-agent environment API discipline: per-agent @@ -79,7 +79,7 @@ This design is constrained by the primary sources listed in Environment Cycle versus parallel API split. OpenSpiel contributes the game-theoretic surface PettingZoo does not model: chance nodes, information-state discipline, simultaneous-move games, current-player - semantics, and mean-field game support. ACES therefore separates hidden + semantics, and mean-field game support. RAES therefore separates hidden state, participant-visible observations, action-observation histories, centralized-training state, reward/return signals, interaction context, and review evidence, attributing each requirement to the source family that @@ -100,14 +100,14 @@ This design is constrained by the primary sources listed in vocabulary. - CybORG, CyberBattleSim, CyGIL, CALDERA, OpenC2, CACAO, and ATT&CK show that cyber actions carry command, target, session, credential, knowledge, - detection, foothold, and outcome semantics. ACES records those as portable + detection, foothold, and outcome semantics. RAES records those as portable references without adopting any one backend or playbook format as canonical. - OCSF and STIX establish the event-schema precedent for identity, schema versioning, classification, timestamps with distinct meanings, normalized status/severity, confidence, source/raw mapping, raw-data integrity, markings, granular selectors, and extension rules. - Lamport clocks, HLA time management, Time Warp, DEVS, FMI, and related - runtime literature require ACES to separate wall-clock timestamps, logical + runtime literature require RAES to separate wall-clock timestamps, logical ordering, simulation time, time-advance grants, lookahead, message send/receive causality, rollback/anti-message handling, pacing, and synchronization. Vector time (Fidge; Mattern) and the Schwarz-Mattern @@ -124,11 +124,11 @@ This design is constrained by the primary sources listed in auditable comparisons. - W3C PROV, FAIR, RO-Crate, and ACM artifact-review practice require persistent identifiers, qualified references, provenance, licensing/access metadata, - reusable artifact bundles, and explicit artifact availability limits. ACES + reusable artifact bundles, and explicit artifact availability limits. RAES preserves enough runtime and support-graph information for those packages and reviews without making issue #74 a full research-object archive exporter. -These sources do not make ACES a compatibility layer for any one project. They +These sources do not make RAES a compatibility layer for any one project. They define review constraints: the model must preserve the concepts needed to make participant behavior, information boundaries, concurrency, and benchmark claims auditable. @@ -183,7 +183,7 @@ Enforcement columns mean: | PRT-01 | Base runtime records carry stable identity, schema version, event type, provenance, source refs, clocks, markings, and extension policy. | v1 MUST | `BaseEnvelope` | required fields, enums, timestamp shape, closed extra fields | `BaseOK`, `RefOK`, schema/model drift check | missing schema version; unknown required extension accepted | | PRT-02 | Evidence and raw-data claims are digest-bound and cannot point to mismatched bytes or placeholder hashes. | v1 MUST | `source_raw_ref`, `raw_data_integrity`, `evidence_refs`, evidence index digest fields | digest algorithm/pattern pairs, size/truncation requiredness | `RawDataIntegrityOK`, `EvidenceRefIntegrityOK` | event cites evidence A but digest belongs to evidence B | | PRT-03 | Field-level marking and redaction run before any public record, fixture, schema example, diagnostic, or changelog exposure. | v1 MUST | `marking_definition_refs`, `object_marking_refs`, `granular_markings`, `redaction_policy_ref`, `authorization_scope` | selector shape and marking-ref requiredness | `MarkingOK`, `NoHiddenDisclosure`, redaction publication gate | hidden answer key appears in public observation or fixture | -| PRT-04 | OCSF/STIX-style classification is ACES-native unless an explicit source mapping proves compatibility. | v1 MUST | `event_classification`, `source_status`, `source_pipeline` | nullable only for no-claim records; closed status vocab | classification registry and source-mapping validation | OCSF-looking tuple accepted with no governed OCSF mapping | +| PRT-04 | OCSF/STIX-style classification is RAES-native unless an explicit source mapping proves compatibility. | v1 MUST | `event_classification`, `source_status`, `source_pipeline` | nullable only for no-claim records; closed status vocab | classification registry and source-mapping validation | OCSF-looking tuple accepted with no governed OCSF mapping | | PRT-05 | Observable lifecycle phases do not require participant-internal plans, prompts, chain-of-thought, policy state, or workflow steps. | v1 MUST | `LifecycleEnvelope.phase`, `phase_realization`, `admission_disposition`, `operation_ref` | closed lifecycle/realization/disposition enums | `Transition_k`, lifecycle boundary validator | opaque LLM action rejected because no proposal trace exists | | PRT-06 | Non-RL cyber, human, script, playbook, and external actions are valid through action contracts and provenance, not action-space membership. | v1 MUST | `action_contract_ref`, `command_ref`, `actor_provenance`, `action_validity_basis_ref` | validity-basis enum and conditional refs | `StepActionValid`, `ActionValidityBasisOK` | human action with no RL action-space ref is rejected despite action contract | | PRT-07 | Participant-visible observation, hidden truth, scoring state, centralized-training state, evidence, and information state remain separate. | v1 MUST | `ObservationEnvelope`, `VisibleHistory`, `information_guarantee` | required projection/history refs for stronger guarantees | `KernelOK`, `HistoryConsistent`, `PerfectRecall` | hidden state id enters visible history without projection | @@ -258,7 +258,7 @@ or downgraded by the declared enforcement point. simultaneity groups. `Information state` -: The participant information state ACES claims at an order point. It may be +: The participant information state RAES claims at an order point. It may be only the emitted observation, a history-consistent reconstruction, a perfect-recall history, a lossy projection, unknown, or unsupported. @@ -331,7 +331,7 @@ or downgraded by the declared enforcement point. field. Markings govern disclosure; they are not prose warnings. `Refinement` -: A relation showing that concrete backend traces project to valid ACES traces +: A relation showing that concrete backend traces project to valid RAES traces while preserving required identity, order, visibility, provenance, and capability guarantees. @@ -386,7 +386,7 @@ Where: - `action_observation_histories[p,e,t]` is the prefix or lower set of visible actions and observations available to participant `p` at order point `t`, depending on whether the visible delivery claim is total or partial. -- `information_states[p,e,t]` is the information state ACES claims for +- `information_states[p,e,t]` is the information state RAES claims for participant `p` at order point `t`. - `shared_state[address]` is the version chain for a shared operational state address. @@ -451,7 +451,7 @@ BaseEnvelope = Rules: - `event_id` is globally stable within the run. -- `schema_name` and `schema_version` identify the ACES contract projection, not +- `schema_name` and `schema_version` identify the RAES contract projection, not the backend's native object. - `event_classification` and `source_status` are nullable only when the record makes no normalized event-status, severity, or security-telemetry claim. @@ -470,13 +470,13 @@ Rules: facts for raw data that supports a runtime claim. - `source_pipeline` records source product/version, original event identity, processed/logged/transmitted times, correlation, and sequence information - when a source telemetry or command system is mapped into ACES. + when a source telemetry or command system is mapped into RAES. - `markings` and `granular_markings` are enforceable field-level disclosure labels. Event classification, source status, source pipeline metadata, raw-data integrity, and marking selectors follow the OCSF/STIX design pattern while -remaining ACES-native: +remaining RAES-native: ```text EventClassification = @@ -493,9 +493,9 @@ EventClassification = ``` `EventClassification` is not an implicit OCSF event. The tuple -`(category_uid, class_uid, activity_id, type_uid)` is governed by the ACES +`(category_uid, class_uid, activity_id, type_uid)` is governed by the RAES classification registry for the record's `schema_name` and `schema_version`. -ACES-native examples may use the OCSF-style composite identifier pattern, but +RAES-native examples may use the OCSF-style composite identifier pattern, but that does not assert that OCSF category, class, activity, or profile values are being emitted. If a record claims OCSF compatibility, it must cite a governed source-classification mapping and the mapped values must validate against the @@ -784,7 +784,7 @@ downgrade. Participant interface and step-signal records carry the RL/MARL-facing pieces that Gymnasium, PettingZoo, and OpenSpiel make first-class, without making them -the ACES protocol: +the RAES protocol: ```text ParticipantInterface = @@ -1307,12 +1307,12 @@ Where: `RawDataIntegrityOK(ev)`, and `EvidenceRefIntegrityOK(ev)`. - `EventClassificationOK(ev)` is true when `event_classification` is null and `ClassificationClaim(ev)` is false, or when the classification tuple is - present in the ACES classification registry for the record schema version. + present in the RAES classification registry for the record schema version. OCSF compatibility is true only with a cited OCSF mapping and OCSF-schema-valid values. - `ClassificationClaim(ev)` defines "makes a claim" for classification, status, severity, and security-telemetry purposes. It is true exactly when at least - one of the following holds: the ACES classification registry marks the + one of the following holds: the RAES classification registry marks the record's `(schema_name, schema_version, event_type)` as classification-bearing; the record populates `event_classification` or maps `source_status` into a normalized status/severity vocabulary; another record @@ -1746,7 +1746,7 @@ Let: or unsupported. - `ObsValue(obs)` be the governed observation value or digest carried by an observation envelope after visibility projection and redaction. -- `I_tr(p,e,t)` be the `InformationState` ACES claim for participant `p` at +- `I_tr(p,e,t)` be the `InformationState` RAES claim for participant `p` at order point `t`. - `h1 ~_{p,policy} h2` mean two visible histories are indistinguishable to participant `p` under the declared visibility projection, markings, delivery @@ -1962,7 +1962,7 @@ time. A conforming implementation claims the witness, and reviewers judge the partition property through it; asserting the partition property without the witness is not a valid `PerfectRecall` claim. -For belief-state consumers, ACES may record a belief support: +For belief-state consumers, RAES may record a belief support: ```text B_p,t = { s in StateSpace | @@ -1974,13 +1974,13 @@ B_p,t = { s in StateSpace | trajectory under the same projection and redaction policy; it is not a backend dump of hidden world truth. -ACES does not require a participant to maintain this belief. It only records +RAES does not require a participant to maintain this belief. It only records enough visibility, ordering, and stochastic evidence for downstream reviewers to know whether such a belief or information-state claim is supportable. Guarantee meanings: -- `ObservationOnly`: only the emitted observation envelope is portable. ACES +- `ObservationOnly`: only the emitted observation envelope is portable. RAES does not claim that `I_tr(p,e,t)` is reconstructible from history. - `HistoryConsistent`: `HistoryConsistent_{p,tr,policy}(e,t)` holds. - `PerfectRecall`: `PerfectRecall_{p,tr,policy}(e,t)` holds. @@ -2036,7 +2036,7 @@ Rules: ## RL And Multi-Agent Step Signal Semantics -ACES does not adopt Gymnasium, PettingZoo, or OpenSpiel as wire protocols, but +RAES does not adopt Gymnasium, PettingZoo, or OpenSpiel as wire protocols, but it preserves the concepts that make RL/MARL results reviewable. Rules: @@ -2044,7 +2044,7 @@ Rules: - `InteractionContextEnvelope` is required whenever a step claim depends on turn order, possible/live/active agent membership, an AEC current actor, simultaneous actors, a chance outcome, a mean-field population update, or - backend serialization. Without it, ACES can record observations but cannot + backend serialization. Without it, RAES can record observations but cannot claim MARL/game-node semantics. - In `SequentialTurn` and `AgentEnvironmentCycle` modes, `current_actor_ref` must be exactly one participant in `active_agent_set`. Ordinary non-null @@ -2088,7 +2088,7 @@ Rules: limit, or administrative condition ended the step/episode before task terminal semantics. These fields must remain separate. - Per-participant termination/truncation may differ from global episode - closure. ACES episode closure follows ADR-013 and references the local + closure. RAES episode closure follows ADR-013 and references the local termination/truncation signals when they contributed to closure. - `info_refs` may preserve auxiliary metrics or debug data, but marked hidden state inside an info object is not participant-visible unless a visibility @@ -2241,7 +2241,7 @@ or opaque adapter disclosure for the action. They do not imply an cannot support a stronger validity, legality, or benchmark-comparison claim. `ActionAttemptRecordOK` is therefore weaker than `PortableActionValidityClaimOK`: the former says the attempt is recorded with a -declared support basis; the latter says ACES can make a portable validity claim +declared support basis; the latter says RAES can make a portable validity claim for it. `JointActionLinkageOK(k)` requires a governed joint-action record or step-signal @@ -2286,7 +2286,7 @@ unless the scenario explicitly models a population process as a participant. ## Concurrency And Conflict Semantics -For attempts `a` and `b` in joint action set `J`, ACES records a conflict when +For attempts `a` and `b` in joint action set `J`, RAES records a conflict when any of the following hold: - `write_set(a)` intersects `read_set(b)` or `write_set(b)`; @@ -2375,7 +2375,7 @@ The isolation vocabulary is anchored in the transaction-isolation literature: Berenson et al.'s critique of the ANSI SQL isolation levels defines the anomaly taxonomy and snapshot isolation, and Adya's generalized isolation theory gives the implementation-independent serialization-graph definitions that make these -levels portable claims rather than vendor labels. ACES uses those meanings; +levels portable claims rather than vendor labels. RAES uses those meanings; `Causal` follows the causal-consistency usage in the distributed-systems literature rather than an ANSI level. @@ -2412,7 +2412,7 @@ Policy meanings: satisfy the stronger required semantics. - `Unsupported`: the backend cannot supply a portable conflict semantics. -Fairness and liveness claims are bounded claims. If ACES says a retry policy is +Fairness and liveness claims are bounded claims. If RAES says a retry policy is fair or starvation-free, the retry bound, scheduler basis, or proof obligation must be present. Otherwise the claim must be limited to observed outcome facts. @@ -2653,7 +2653,7 @@ Rules: ## Asynchronous And Long-Running Operations Cyber actions often start, block, stream observations, partially succeed, time -out, or complete after later state changes. ACES models these with operation +out, or complete after later state changes. RAES models these with operation records rather than by inventing participant-internal lifecycle phases. Operation records carry: @@ -2757,7 +2757,7 @@ Rules: - `credential_ref` points to a redacted or controlled evidence/state reference, never a raw credential value. - OpenC2 mappings preserve command/response correlation through - `openc2_command_id`, `openc2_request_id`, and response refs. ACES lifecycle + `openc2_command_id`, `openc2_request_id`, and response refs. RAES lifecycle success or failure is not inferred from source response text without a normalized status mapping. - CACAO mappings preserve playbook/workflow-step identity, commands, @@ -2769,12 +2769,12 @@ Rules: or provenance claims. - Command mappings may cite OpenC2 actions/targets, CACAO playbook steps, CALDERA abilities/links/facts, ATT&CK techniques, CybORG actions, or - backend-native commands as source mappings. Those mappings do not define ACES + backend-native commands as source mappings. Those mappings do not define RAES semantics by themselves. - Knowledge, foothold, visibility, and detection deltas must be state records or evidence references when used to support outcome or attribution claims. - Backend-native success or failure strings are source labels until normalized - into ACES lifecycle, operation, observation, state, and outcome records. + into RAES lifecycle, operation, observation, state, and outcome records. ## Benchmark And Reproducibility Context @@ -3862,7 +3862,7 @@ to the supported conclusion scope or explicitly record The intended universal relation is `trace-inclusion`: under the named participant observation projection, every admitted concrete backend trace must -map to a valid abstract ACES trace. This section defines that obligation; it +map to a valid abstract RAES trace. This section defines that obligation; it does not establish it. Current executable evidence is bounded to named fixtures and target probes, so no simulation, data-refinement, trace-equivalence, or bisimulation claim follows. The evidence boundary for each executed check must @@ -4033,7 +4033,7 @@ Lifecycle phase, phase realization, admission disposition, operation state, information guarantee, ordering basis, isolation guarantee, conflict policy, mapping loss, delivery basis, and capability strength values are closed at the portable contract layer. Source labels may be preserved, but source labels do -not define ACES semantics. +not define RAES semantics. ### I17 - Missingness Distinctions @@ -4044,7 +4044,7 @@ absence, and backend capability limit respectively. ### I18 - Information-State Claim Strength An observation may be portable without a portable information-state claim. -Whenever ACES claims history consistency or perfect recall, the +Whenever RAES claims history consistency or perfect recall, the action-observation history, visibility projection, markings, stochastic/noise context, and order relation must be sufficient for that claim. @@ -4179,7 +4179,7 @@ as `sha256:1111...` demonstrate field placement only; they do not support exact raw-data integrity or provenance claims. A reviewable fixture must either cite an evidence fixture manifest whose bytes hash to the recorded digest, or set the raw-data hash fields to null/unknown and downgrade provenance accordingly. -Likewise, event-classification tuples in these examples are ACES-native +Likewise, event-classification tuples in these examples are RAES-native registry examples. They are not OCSF events unless a governed OCSF mapping ref and OCSF-valid class/profile values are supplied. diff --git a/specs/formal/participant-semantics/README.md b/specs/formal/participant-semantics/README.md index 6156a5e37..c6f3d7b61 100644 --- a/specs/formal/participant-semantics/README.md +++ b/specs/formal/participant-semantics/README.md @@ -91,7 +91,7 @@ action, observation, reward, and episode concepts explicit. [PettingZoo](https://papers.nips.cc/paper/2021/hash/7ed2d3454c5eea71148b11d0c25104ff-Abstract.html) extends this ecosystem to multi-agent environments through the Agent Environment Cycle model. It is a useful precedent for explicit per-agent turns and -multi-agent API consistency, but ACES cannot adopt a turn-only worldview because +multi-agent API consistency, but RAES cannot adopt a turn-only worldview because real cyber ranges also need concurrent, asynchronous, and backend-realized action ordering. @@ -104,7 +104,7 @@ details. ### Partial Observability And Multi-Agent Control Kaelbling, Littman, and Cassandra's POMDP treatment frames sequential action -under incomplete observation; the core lesson for ACES is that a participant's +under incomplete observation; the core lesson for RAES is that a participant's observation stream is not the environment state. Local history and belief matter when interpreting behavior. @@ -113,14 +113,14 @@ multi-agent interaction. Bernstein, Givan, Immerman, and Zilberstein (Mathematics of Operations Research, 2002) show that decentralized control under partial observability is fundamentally harder than centralized MDP/POMDP control. Oliehoek and Amato's Dec-POMDP monograph fixes the standard vocabulary -ACES reuses for joint policies, action-observation histories, and information -states. ACES should not pretend that one global state and one global +RAES reuses for joint policies, action-observation histories, and information +states. RAES should not pretend that one global state and one global observation stream are enough for multi-participant experiments. Mean-field game theory — Huang, Caines, and Malhamé (2006) and Lasry and Lions (2007), brought to MARL by Yang et al. (2018) — covers the population-limit regime where individual interaction is replaced by interaction with a -population distribution. ACES's runtime layer records mean-field updates as +population distribution. RAES's runtime layer records mean-field updates as environment state over a population scope, not as hidden participant actions; this lineage is why population-distribution disclosure is a first-class runtime record in `specs/formal/participant-runtime/`. @@ -130,7 +130,7 @@ record in `specs/formal/participant-runtime/`. Fagin, Halpern, Moses, and Vardi's interpreted-systems framework gives the formal basis for participant-relative information: an agent's knowledge at a point is determined by indistinguishability over its local state across global -runs. ACES's view relation `V_p,t`, local history `H_p,t`, and the +runs. RAES's view relation `V_p,t`, local history `H_p,t`, and the visible-history indistinguishability relation in `specs/formal/participant-runtime/` are interpreted-systems constructions, not ad hoc bookkeeping. @@ -153,7 +153,7 @@ Goguen and Meseguer's noninterference (1982) gives the information-flow reading of the hidden-truth boundary (I2): hidden world state and adjudication assets must be noninterfering with participant-visible projections in the absence of an explicit disclosure rule. Sabelfeld and Sands' declassification dimensions -(2009) frame ACES disclosure rules as governed declassification policies: every +(2009) frame RAES disclosure rules as governed declassification policies: every permitted release of hidden information declares what is released, where in the view relation, when (the transition anchor), and by whose authority. @@ -165,15 +165,15 @@ precondition/add/delete action model; PDDL standardized typed action schemata with explicit preconditions and effects (Haslum et al.'s language introduction is the consolidated reference); PDDL2.1 (Fox and Long, 2003) added durative actions, temporal preconditions/effects, and numeric resources — the direct -ancestors of ACES temporal preconditions and resource preconditions; PPDDL +ancestors of RAES temporal preconditions and resource preconditions; PPDDL (Younes et al., 2005) and RDDL (Sanner, 2010) added probabilistic effects and -stochastic transition models, the lineage for ACES's non-deterministic effect +stochastic transition models, the lineage for RAES's non-deterministic effect and `unknown_effect` classes. -ACES action contracts deliberately exceed this lineage: planning formalisms do +RAES action contracts deliberately exceed this lineage: planning formalisms do not carry visibility effects, evidence expectations, realization profiles, fidelity claims, or mapping-loss labels, and they assume a closed-world effect -axiomatization that a cyber range cannot honestly claim. ACES therefore fails +axiomatization that a cyber range cannot honestly claim. RAES therefore fails closed on unresolved preconditions instead of assuming closed-world frame axioms, and treats declared effect classes as disclosure obligations rather than complete world models. @@ -185,7 +185,7 @@ It defines scenarios with agents, action spaces, observations, rewards, and reset; it also supports simulation and emulation. The sim-to-emulation transfer failures reported in the results discussion of Standen et al. (2021) are directly relevant: an agent can overfit to an observation artifact that does -not exist in the emulator. ACES must therefore record observation provenance +not exist in the emulator. RAES must therefore record observation provenance and realized backend disclosure, not just action results. [CyberBattleSim](https://www.microsoft.com/en-us/research/project/cyberbattlesim/) @@ -198,13 +198,13 @@ than assuming simulation results transfer to operational environments. [unified emulation-simulation training environment](https://arxiv.org/abs/2304.01244) are relevant because the unified design derives simulation transitions from emulated traces, preserving the same action space across the sim-to-real loop. -They motivate ACES's requirement that action and observation contracts survive +They motivate RAES's requirement that action and observation contracts survive across backend fidelity modes. CyGIL also exposes a negative design lesson: an abstract action such as "network discovery" is too coarse to transfer honestly to a real or emulated network when concrete tools, parameters, network configuration, and observation -effects differ. ACES action contracts therefore need declared behavioral +effects differ. RAES action contracts therefore need declared behavioral granularity, procedure basis, and realization profile, not only a tactic or technique label. @@ -227,14 +227,14 @@ instrumentation. [CAIBench](https://arxiv.org/abs/2510.24317) argues that isolated offensive, defensive, static-knowledge, and execution-only benchmarks miss integrated cybersecurity performance. Its Attack-and-Defense and privacy categories -reinforce ACES's role-neutral multi-participant model and the need to record +reinforce RAES's role-neutral multi-participant model and the need to record privacy/redaction semantics in observation and evidence surfaces. [AI Agents That Matter](https://arxiv.org/abs/2407.01502) and the [LLM offensive-security benchmarking-practices study](https://arxiv.org/abs/2504.10112) are broader benchmark-methodology critiques. They motivate explicit holdout discipline, anti-contamination controls, scaffold and cost/resource -provenance, baseline disclosure, and standardized run records. ACES does not +provenance, baseline disclosure, and standardized run records. RAES does not turn these papers into benchmark policy here, but participant semantics must not make those controls impossible. @@ -251,7 +251,7 @@ is infrastructure constraints, not participant observations, causal attribution, or multi-agent behavior. CRACK's Datalog verification is similar prior art for executable cyber range -feasibility. It supports ACES's policy of making semantic claims checkable, but +feasibility. It supports RAES's policy of making semantic claims checkable, but does not remove the need for participant-specific semantics. [CyRIS](https://www.jaist.ac.jp/~razvan/publications/cyris_facilitating_training.pdf) @@ -264,7 +264,7 @@ semantics. Ear, Remy, and Xu's automated cyber-range design framework ([arXiv:2307.04416](https://arxiv.org/abs/2307.04416)) treats range -architecture selection as an explicit requirements-matching problem. For ACES, +architecture selection as an explicit requirements-matching problem. For RAES, the lesson is that architecture, teaming model, fidelity, observability, concurrency, resetability, and updateability are experiment requirements that must be surfaced instead of disappearing into backend choice. @@ -273,12 +273,12 @@ must be surfaced instead of disappearing into backend choice. The CALDERA planning-and-acting work argues that automated adversary emulation is not only planning: adversaries interleave acting and sensing under open-ended -uncertainty. This motivates ACES's explicit distinction between actions that +uncertainty. This motivates RAES's explicit distinction between actions that change foothold, actions that change knowledge, and actions that do both. [MITRE ATT&CK](https://www.mitre.org/news-insights/publication/mitre-attck-design-and-philosophy) is an empirically grounded behavior vocabulary. It can classify participant -actions, but ATT&CK technique labels are not ACES action contracts. +actions, but ATT&CK technique labels are not RAES action contracts. [OCSF](https://ocsf.io/) provides vendor-neutral security event structure and normalization. It is appropriate for observations, detections, findings, and @@ -287,7 +287,7 @@ evidence references, but it is not a participant-visible-state model by itself. [CACAO v2.0](https://docs.oasis-open.org/cacao/security-playbooks/v2.0/security-playbooks-v2.0.pdf) separates workflows, commands, agents, targets, variables, and authentication information. It is useful lineage for agent/target and action-step boundaries, -but ACES participant semantics must also handle observation, discovery, +but RAES participant semantics must also handle observation, discovery, concealment, and evaluation across heterogeneous participant implementations. ### Time, Ordering, And Causality @@ -300,16 +300,16 @@ Lamport's scalar clocks only respect causality in one direction; they cannot prove that two events are causally unrelated. Fidge (1988) and Mattern (1989) introduced vector time, which characterizes the causal partial order exactly, and Schwarz and Mattern (1994) survey what causal claims each clock mechanism -can and cannot support. This distinction is load-bearing for ACES: any +can and cannot support. This distinction is load-bearing for RAES: any `VectorClock` ordering basis in the runtime layer claims the stronger characterization and therefore needs the Fidge/Mattern lineage, not just Lamport's. Winskel's event structures and Mazurkiewicz's trace theory provide the -true-concurrency semantics behind ACES's realized-order model: a record of +true-concurrency semantics behind RAES's realized-order model: a record of "what happened" in a concurrent run is a labelled partial order with explicit simultaneity/independence structure, not a single forced interleaving. This is -why ACES joint-action records carry partial orders and simultaneity groups +why RAES joint-action records carry partial orders and simultaneity groups instead of a backend-chosen total order presented as ground truth. Formal temporal contracts also have direct precedent: Allen's interval algebra @@ -327,7 +327,7 @@ semantic concerns. [SISO Cyber DEM](https://cdn.ymaws.com/www.sisostandards.org/resource/resmgr/standards_products/siso-std-025-2023_cyberdem.pdf) provides cyber objects and events for simulation interoperability. It supports the idea that cyber events and effects need exchangeable representations across -simulation and range systems, but ACES still needs its own scenario/participant +simulation and range systems, but RAES still needs its own scenario/participant semantics around those events. Halpern and Pearl's structural-model causality motivates the attribution rule @@ -345,7 +345,7 @@ The software-language engineering evaluation literature warns that domain familiarity is not enough to validate a DSL. Gabriel, Goulão, and Amaral's [DSL evaluation review](https://arxiv.org/abs/1109.6794) specifically calls out expressiveness, usability, effectiveness, maintainability, and domain-expert -productivity as concerns that can be skipped or relaxed. ACES's participant +productivity as concerns that can be skipped or relaxed. RAES's participant semantics are therefore not academically complete if they only define a rich semantic model; future child issues must also include authoring profiles, examples, negative fixtures, and evidence that the notation can be used without @@ -355,7 +355,7 @@ creating ambiguous or unreviewable experiments. The design above is necessary but not by itself sufficient. A critical reading of existing SDLs, cyber-agent environments, and agent benchmarks identifies the -following failure modes that ACES must explicitly avoid. +following failure modes that RAES must explicitly avoid. | Failure mode | Direct evidence | Design correction | | ------------ | --------------- | ----------------- | @@ -371,7 +371,7 @@ following failure modes that ACES must explicitly avoid. ## Cross-Issue Coverage And Deferrals The participant-semantics design intentionally remains partial for holistic -concerns that belong to other ACES design or evidence gates. +concerns that belong to other RAES design or evidence gates. | Concern from the critique | Coverage after #71 | Owning issue(s) | Participant-semantics duty | | ------------------------- | ------------------ | --------------- | -------------------------- | @@ -493,7 +493,7 @@ the evidence for the procedure, such as an ATT&CK technique, CVE, exploit module, CACAO command, OpenC2 command, human runbook step, emulated trace, or experiment-specific procedure. `external_mappings` are typed references with a declared loss label; a mapping to ATT&CK, OCSF, CACAO, STIX, OpenC2, Cyber DEM, -Metasploit, or a benchmark milestone is not itself the ACES action semantics. +Metasploit, or a benchmark milestone is not itself the RAES action semantics. `fidelity_claims` and `realization_profile` distinguish portable intent from simulation, emulation, live, human-mediated, or stubbed realization. @@ -735,10 +735,10 @@ Minimum future implementation artifacts: Current implementation artifacts for the `SEM-208` slice: -- `implementations/python/packages/aces_sdl/participant_behavior.py` defines +- `implementations/python/packages/raes/participant_behavior.py` defines typed action contracts and observation boundaries; -- `implementations/python/packages/aces_sdl/semantics/participant_behavior.py` - and `implementations/python/packages/aces_sdl/validator/` fail closed on +- `implementations/python/packages/raes/semantics/participant_behavior.py` + and `implementations/python/packages/raes/validator/` fail closed on unbound action-contract and observation-boundary references; - `implementations/python/packages/aces_processor/compiler/` maps authored participants to compiled participant action, observation, and behavior @@ -777,11 +777,11 @@ Minimum future implementation artifacts: Current implementation artifacts for the `SEM-209` slice: -- `implementations/python/packages/aces_sdl/participant_behavior.py` defines +- `implementations/python/packages/raes/participant_behavior.py` defines interaction classes, target references, related actions, and shared-state references on action contracts; -- `implementations/python/packages/aces_sdl/semantics/participant_behavior.py` - and `implementations/python/packages/aces_sdl/validator/` fail closed on +- `implementations/python/packages/raes/semantics/participant_behavior.py` + and `implementations/python/packages/raes/validator/` fail closed on unbound related actions, interaction targets, and shared-state references; - `implementations/python/packages/aces_processor/compiler/` carries declared interaction classes and shared-state references into compiled participant @@ -800,7 +800,7 @@ and joint behavior as first-class data, while Lamport ordering motivates recording realized order as provenance rather than treating timestamp adjacency as causality. Cyber-agent systems motivate explicit action targets and shared-state effects, but technique/tool labels remain external mappings, not -the ACES interaction semantics themselves. +the RAES interaction semantics themselves. ## SEM-210 - Visibility And Information-Boundary Semantics @@ -846,13 +846,13 @@ Implemented transition discipline: Current implementation artifacts for the `SEM-210` slice: -- `implementations/python/packages/aces_sdl/participant_behavior.py` defines +- `implementations/python/packages/raes/participant_behavior.py` defines participant information-boundary classes, view dispositions, explicit view rules, time-indexed view transitions, realized-view disclosure metadata, and observation-boundary hidden, observable, and evidence-only reference separation; -- `implementations/python/packages/aces_sdl/semantics/participant_behavior.py` - and `implementations/python/packages/aces_sdl/validator/` continue to +- `implementations/python/packages/raes/semantics/participant_behavior.py` + and `implementations/python/packages/raes/validator/` continue to fail closed on unbound participant observation-boundary references, view-rule references, and view-transition evidence references; - `implementations/python/packages/aces_processor/compiler/` carries hidden, @@ -924,10 +924,10 @@ Failure classes: Current implementation artifacts for the `SEM-211` slice: -- `implementations/python/packages/aces_sdl/participant_action_semantics.py` +- `implementations/python/packages/raes/participant_action_semantics.py` defines controlled precondition, effect, and portable failure vocabularies plus typed action-contract declarations and backend failure mappings; -- `implementations/python/packages/aces_sdl/participant_behavior.py` embeds +- `implementations/python/packages/raes/participant_behavior.py` embeds those typed declarations in governed participant action contracts; - `implementations/python/packages/aces_processor/compiler/` carries the typed precondition classes, effect classes, failure classes, and backend @@ -970,7 +970,7 @@ Design commitments: Current implementation artifacts for the first `SEM-212` slice: -- `implementations/python/packages/aces_sdl/participant_attribution_semantics.py` +- `implementations/python/packages/raes/participant_attribution_semantics.py` defines controlled candidate, ordering-basis, and support-class vocabularies; - `implementations/python/packages/aces_processor/models/` defines typed @@ -1011,18 +1011,18 @@ Design commitments: Minimum future implementation artifacts: -- temporal participant contract fields aligned with the broader ACES time-model +- temporal participant contract fields aligned with the broader RAES time-model work; - abstract state-machine model for deadlines, dwell, and timeout interaction; - tests for ordering, delayed observation, and deadline/cadence edge cases. Current implementation artifacts for the first `SEM-213` slice: -- `implementations/python/packages/aces_sdl/participant_temporal_semantics.py` +- `implementations/python/packages/raes/participant_temporal_semantics.py` defines typed time domains, temporal event points, schedule/cadence/deadline/ dwell/latency/time-window contract kinds, backend timing disclosure kinds, support modes, and abstract temporal states; -- `implementations/python/packages/aces_sdl/participant_behavior.py` embeds +- `implementations/python/packages/raes/participant_behavior.py` embeds temporal contracts and backend timing disclosures in governed participant action contracts, requires temporal preconditions to resolve to typed temporal contracts, and fails closed on unknown backend disclosure refs; @@ -1043,7 +1043,7 @@ Current implementation artifacts for the first `SEM-213` slice: / timeout state-machine transitions. This slice implements participant-local temporal contracts and conformance -checks. It does not claim the broader ACES clock/time-model work owned by +checks. It does not claim the broader RAES clock/time-model work owned by `SEM-227`, `SEM-228`, and `SEM-229`. ## SEM-214 - Portable Semantics For Derived Context Views @@ -1186,7 +1186,7 @@ The required-ref clauses of B1/B2 (and B4) are enforced both by the closed-world model and by the published JSON Schema `allOf`, so schema-only consumers reject them. The relational clauses that standard JSON Schema cannot express - archival source mediation and `payload_ref` non-aliasing - are enforced by the model and -published as `x-aces-invariants` on `participant-context-view-v1` (the ACES +published as `x-aces-invariants` on `participant-context-view-v1` (the RAES semantic-invariant profile, per ADR-009 §7 and the experiment-core convention), so the portable contract advertises every obligation and names its validator. - **B3** - derived analysis is never captured evidence. An @@ -1243,18 +1243,18 @@ Current implementation artifacts for the `SEM-216` slice: `SEM-217` requires explicit semantics for external knowledge bindings so a reference to UCO, another ontology, a vocabulary, or an interoperability -profile cannot silently rewrite ACES-native meaning. +profile cannot silently rewrite RAES-native meaning. An external knowledge binding has exactly the effect declared by the governed -ACES surface that carries it: +RAES surface that carries it: - **annotates** - an external reference, reviewed class, evidence source, or - citation adds context for a native ACES concept without changing validation, + citation adds context for a native RAES concept without changing validation, planning, runtime, or conformance semantics by itself. - **aligns** - a reviewed external authority has equivalent meaning for the - native ACES family. In the current concept-authority slice, adopted UCO + native RAES family. In the current concept-authority slice, adopted UCO concept families align with UCO meaning and carry no divergence list. -- **refines** - a reviewed external authority is used with ACES-specific +- **refines** - a reviewed external authority is used with RAES-specific narrowing, loss, or divergence. In the current slice, adapted UCO concept families refine rather than align and must enumerate the divergence. - **constrains** - a governed surface must bind a vocabulary, capability, or @@ -1263,11 +1263,11 @@ ACES surface that carries it: Design commitments: -- native ACES contracts, concept families, reference models, semantic profiles, - and validators remain the authority for ACES behavior; +- native RAES contracts, concept families, reference models, semantic profiles, + and validators remain the authority for RAES behavior; - external authority references are versioned, review-scoped evidence rather than live network dependencies; -- annotation never implies constraint, refinement never weakens existing ACES +- annotation never implies constraint, refinement never weakens existing RAES invariants, and alignment never means schema inheritance; - artifact-local labels do not define portable semantics unless they bind to a governed concept family or controlled vocabulary surface. @@ -1666,9 +1666,9 @@ Future implementation PRs should still include: ## Deliberate Non-Adoptions -- Do not adopt Gym/PettingZoo as the ACES runtime protocol. Use their concepts, +- Do not adopt Gym/PettingZoo as the RAES runtime protocol. Use their concepts, not their API shape, as lineage. -- Do not treat CybORG action YAML as the ACES action contract. It is precedent +- Do not treat CybORG action YAML as the RAES action contract. It is precedent for action/observation discipline and sim-to-emulation disclosure. - Do not treat ATT&CK technique IDs as action semantics. They are behavior labels, not precondition/effect/failure contracts. @@ -1676,7 +1676,7 @@ Future implementation PRs should still include: relation. - Do not treat CACAO agents/targets as participant semantics. They are useful workflow and command-lineage objects. -- Do not treat Cyber DEM as the ACES scenario model. It is an exchange model for +- Do not treat Cyber DEM as the RAES scenario model. It is an exchange model for cyber simulation objects/events. - Do not treat timestamp order as causal attribution. - Do not treat CTF flag capture, subtask completion, or benchmark milestone @@ -1684,7 +1684,7 @@ Future implementation PRs should still include: - Do not treat Docker/container reproducibility as run or study reproducibility without reset, seed, version, backend, scaffold, and hidden-asset provenance. - Do not treat external CTI, CVE, exploit-module, or command names as portable - behavior without an ACES action contract and loss-labeled mappings. + behavior without an RAES action contract and loss-labeled mappings. ## References diff --git a/specs/formal/participant-semantics/autonomous-execution.md b/specs/formal/participant-semantics/autonomous-execution.md index 3f1ef5e98..a37cee88e 100644 --- a/specs/formal/participant-semantics/autonomous-execution.md +++ b/specs/formal/participant-semantics/autonomous-execution.md @@ -156,7 +156,7 @@ action outcome, history, and backend evidence establish what occurred. This contract does not prove participant intelligence, human realism, service fidelity, throughput, causal attribution, evaluator correctness, or -golden-range equivalence. Those claims require their existing ACES evidence and +golden-range equivalence. Those claims require their existing RAES evidence and conformance surfaces. ## Delivery Status diff --git a/specs/formal/participant-semantics/information-flow-control.md b/specs/formal/participant-semantics/information-flow-control.md index ad1867d60..81e22716e 100644 --- a/specs/formal/participant-semantics/information-flow-control.md +++ b/specs/formal/participant-semantics/information-flow-control.md @@ -27,19 +27,19 @@ a universal proof. ## Prior-Art Adaptation Rule -SEM-230 does not rename settled formal concepts and present them as ACES +SEM-230 does not rename settled formal concepts and present them as RAES inventions. It imports the strongest clearly applicable prior definition, -instantiates it over existing ACES carriers, and adds an ACES-specific +instantiates it over existing RAES carriers, and adds an RAES-specific coordinate only where the prior formulation does not carry information needed by participant/runtime governance. -| Semantic element | Formal lineage reused | ACES adaptation | Necessary extension, not reinvention | +| Semantic element | Formal lineage reused | RAES adaptation | Necessary extension, not reinvention | | --- | --- | --- | --- | -| participant-relative information state and low equivalence | Fagin, Halpern, Moses, and Vardi's interpreted-systems construction: points in runs are indistinguishable when the agent-local state agrees | local state is the existing `V_p,o` plus occurrence-preserving `H_{tr,rho}(p,e,o)` and every projection-visible control/policy coordinate | policy revision, audience, marking, and declared order are included because they can change the ACES projection | -| noninterference and purge | Goguen and Meseguer's policy-relative noninterference and purge treatment of high actions | high variation is evaluated against ACES crossings, and low observations are participant-projected history support sets | policy changes are evaluated at each occurrence's effective order; the baseline composes an explicit declassification schedule | -| declassification | Sabelfeld and Sands' dimensions and principles for what may be released, by whom, where, and when | release records bind source dimensions, participant/audience, actor/controller/authority, policy revision, order, markings, evidence, and provenance | ACES adds stable carrier/evidence coordinates and deny-first intersection with admission and marking; it does not redefine declassification as redaction | -| labelled transition and hidden-action treatment | Milner's labelled transition/`tau` discipline and van Glabbeek's separation of trace and branching-time relations | the SEM-230 alphabet maps each label to an existing ACES action, lifecycle, visibility, control, delivery, or evidence owner | observability is indexed by participant, audience, policy revision, and order; this definition does not claim weak or strong bisimulation | -| visible history and knowledge persistence | interpreted systems and the existing ADR-054 constructive visible-history/perfect-recall treatment | disclosure appends a stable visible occurrence to `H`; later concealment or revocation changes future projection | ACES preserves evidence/provenance and visible-order identity across rollback and supersession | +| participant-relative information state and low equivalence | Fagin, Halpern, Moses, and Vardi's interpreted-systems construction: points in runs are indistinguishable when the agent-local state agrees | local state is the existing `V_p,o` plus occurrence-preserving `H_{tr,rho}(p,e,o)` and every projection-visible control/policy coordinate | policy revision, audience, marking, and declared order are included because they can change the RAES projection | +| noninterference and purge | Goguen and Meseguer's policy-relative noninterference and purge treatment of high actions | high variation is evaluated against RAES crossings, and low observations are participant-projected history support sets | policy changes are evaluated at each occurrence's effective order; the baseline composes an explicit declassification schedule | +| declassification | Sabelfeld and Sands' dimensions and principles for what may be released, by whom, where, and when | release records bind source dimensions, participant/audience, actor/controller/authority, policy revision, order, markings, evidence, and provenance | RAES adds stable carrier/evidence coordinates and deny-first intersection with admission and marking; it does not redefine declassification as redaction | +| labelled transition and hidden-action treatment | Milner's labelled transition/`tau` discipline and van Glabbeek's separation of trace and branching-time relations | the SEM-230 alphabet maps each label to an existing RAES action, lifecycle, visibility, control, delivery, or evidence owner | observability is indexed by participant, audience, policy revision, and order; this definition does not claim weak or strong bisimulation | +| visible history and knowledge persistence | interpreted systems and the existing ADR-054 constructive visible-history/perfect-recall treatment | disclosure appends a stable visible occurrence to `H`; later concealment or revocation changes future projection | RAES preserves evidence/provenance and visible-order identity across rollback and supersession | | causal and partial ordering | Lamport happened-before plus the Winskel event-structure and Mazurkiewicz trace-theory lineage already adopted by ADR-054 | SEM-230 reuses the existing `R_o`, visible partial order, and simultaneity groups | policy revisions and declassification events are located in that order; no new clock or concurrency formalism is introduced | The indirect derivations in the final two rows are intentional: SEM-230 reuses @@ -354,7 +354,7 @@ realization. | authorization, admission, withholding, projection, redaction, declassification, disclosure, concealment, revocation, transformation, loss, and weakening remain distinct | this specification, “Distinct Operations” | deny-first, redaction, transformation, concealment, and revocation tests | defined and bounded-tested; no production enforcement claimed | | exact noninterference relation, low equivalence, purge, declassification, quantifiers, scheduler/environment, order, termination/progress/timing, nondeterminism, and probability | this specification plus catalog relation `policy-noninterference` | finite support-set/property cases | definition complete; test status bounded; proof deliberately unproved | | claims bind through the relation catalog with evidence status and nonclaims | behavioral-relation catalog revision `rev2` and claim surface `participant-information-flow-policy` | `tools/check_behavioral_relation_claims.py` and catalog/claim tests | catalog implemented and tested; no claim truth inferred from a valid binding | -| intellectual lineage and exact ACES mappings | `docs/explain/sdl/lineage.md`, lineage ledger, and source audit | SDL-lineage policy gate | reviewed derivation record; no source syntax or compatibility claim | +| intellectual lineage and exact RAES mappings | `docs/explain/sdl/lineage.md`, lineage ledger, and source audit | SDL-lineage policy gate | reviewed derivation record; no source syntax or compatibility claim | ## Follow-On Ownership And Nonclaims diff --git a/specs/formal/realization/README.md b/specs/formal/realization/README.md index c8c11ae4f..1e8128e0e 100644 --- a/specs/formal/realization/README.md +++ b/specs/formal/realization/README.md @@ -2,7 +2,7 @@ This directory holds the normative semantic boundary for binding author declarations versus concerns left open to backend realization (`SEM-218`). -In ACES the processor layer does not realize underspecified author +In RAES the processor layer does not realize underspecified author concerns: it compiles the typed runtime requirement and plans against backend support. Realization happens at the backend layer, and only backend manifests carry `realization_support`. @@ -75,9 +75,9 @@ work the SEM-218 row tracks. `contracts/concept-authority/concept-families-v1.json` (`realization-and-disclosure`) - SDL classifier and instantiation downgrade: - `implementations/python/packages/aces_sdl/explicitness.py`, - `implementations/python/packages/aces_sdl/validator/`, - `implementations/python/packages/aces_sdl/instantiate.py` + `implementations/python/packages/raes/explicitness.py`, + `implementations/python/packages/raes/validator/`, + `implementations/python/packages/raes/instantiate.py` - invalid fixtures evidencing fail-closed rejection: `contracts/fixtures/backend-manifest/backend-manifest-v2/invalid/hollow-realization-support.json`, `contracts/fixtures/backend-manifest/backend-manifest-v2/invalid/malformed-realization-support.json`, diff --git a/specs/formal/realization/envelope-semantics.md b/specs/formal/realization/envelope-semantics.md index eab581d8f..af8b6817f 100644 --- a/specs/formal/realization/envelope-semantics.md +++ b/specs/formal/realization/envelope-semantics.md @@ -36,7 +36,7 @@ contract model, fixtures, and property tests are implemented by issue #668: - `aces_contracts.realization_envelope` carries the closed, versioned envelope expression (`realization-envelope/v1`) — the admitted-fragment domain kinds, scoped bindings, posture, closure, and witness policy of this note; -- `aces_sdl.realization_envelope` implements `member`, `subsumes`, `witness`, and +- `raes.realization_envelope` implements `member`, `subsumes`, `witness`, and `generate_negative_probes` as one deterministic engine over that contract. Issue #100 publishes the schema carrier at @@ -323,8 +323,8 @@ exists today. | Concern | Future owner | Existing incumbent | | --- | --- | --- | | Envelope contract DTO | `aces_contracts` | `ContractModel`, generated schema bundle | -| SDL envelope syntax and validation | `aces_sdl` | variables, instantiation, semantic validation | -| Relation helper | `aces_sdl` or shared semantics helper | SEM-218 explicitness helper pattern | +| SDL envelope syntax and validation | `raes` | variables, instantiation, semantic validation | +| Relation helper | `raes` or shared semantics helper | SEM-218 explicitness helper pattern | | Backend manifest carriage | `aces_backend_protocols` / `aces_contracts` | `BackendManifest`, `backend_manifest_payload()` | | Planning admission | `aces_processor` | `realization_support_diagnostics()` | | Target conformance witness and negative probes | `aces_conformance` | `run_target_conformance(reference_scenario=...)` | diff --git a/specs/formal/realization/explicitness-and-realization.md b/specs/formal/realization/explicitness-and-realization.md index bfd751862..af24a7200 100644 --- a/specs/formal/realization/explicitness-and-realization.md +++ b/specs/formal/realization/explicitness-and-realization.md @@ -6,7 +6,7 @@ It states the rules that distinguish *binding* author declarations from concerns *left open* to backend realization, names when realization is permitted, names when an explicit declaration must be honored, and names when an unsupported exact requirement must be rejected rather than -silently approximated. In ACES the processor layer does not realize +silently approximated. In RAES the processor layer does not realize underspecified author concerns: it compiles the typed runtime requirement and plans against backend support. Realization is a backend responsibility; this spec scopes the realization surface accordingly. @@ -50,10 +50,10 @@ is `active`. What is *enforced today* spans authoring through observation: - the closed-Pydantic SDL model boundary (`extra="forbid"`), which fails closed on unknown keys at points the schema does not designate as realizable; -- the SEM-218 classifier in `aces_sdl.explicitness`, invoked by +- the SEM-218 classifier in `raes.explicitness`, invoked by `SemanticValidator`, which tags authored SDL declarations as *exact*, *constrained*, or *open* for downstream consumers; -- the typed `aces_sdl.realization_designation` authoring surface, which carries +- the typed `raes.realization_designation` authoring surface, which carries a scenario default and RFC 6901 scoped overrides using `closed`, `open`, or `unspecified`, resolved by semantic specificity rather than list order; - the instantiation downgrade rule in `instantiate_scenario`, which @@ -106,12 +106,12 @@ extend these rather than introduce parallel registries: `contracts/concept-authority/concept-families-v1.json` (`realization-and-disclosure`) - shared SDL static semantics: - `implementations/python/packages/aces_sdl/validator/` + `implementations/python/packages/raes/validator/` (`SemanticValidator`, `SDLValidationError`) - scoped author designation and canonical scope resolution: - `implementations/python/packages/aces_sdl/realization_designation.py` + `implementations/python/packages/raes/realization_designation.py` - instantiation and revalidation: - `implementations/python/packages/aces_sdl/instantiate.py` + `implementations/python/packages/raes/instantiate.py` (`instantiate_scenario`, `SDLInstantiationError`) - runtime compilation and planning: `implementations/python/packages/aces_processor/compiler/`, @@ -217,7 +217,7 @@ per-domain `RealizationSupportDeclaration` entries that name (i) the support mode (`EXACT_ONLY`, `CONSTRAINED`, or `OPEN_REALIZATION`), (ii) the supported exact-requirement-kinds, (iii) the supported constraint-kinds, and (iv) the disclosure kinds the apparatus will emit. -Processor manifests MUST NOT carry `realization_support`: in ACES the +Processor manifests MUST NOT carry `realization_support`: in RAES the processor layer does not realize underspecified author concerns — its manifest discloses processing features (compilation, planning, orchestration coordination, evaluation coordination, and related @@ -294,7 +294,7 @@ realization status, are: - **SDL parser gate** — `${var}` substitution MUST NOT create or rename an exact-declaration identity (I1, I3). *Enforced today* by the - variable-key rejection rules in `aces_sdl.parser`. + variable-key rejection rules in `raes.parser`. - **SDL model gate** — explicit-vs-open state MUST live in typed fields or structured extension surfaces, not untyped `dict` side channels (I3). *Enforced today* by the closed Pydantic SDL models @@ -316,7 +316,7 @@ realization status, are: - **Instantiation gate** — substitution MUST NOT downgrade an exact declaration; concrete scenarios MUST be revalidated after substitution (I1). *Enforced today* by `instantiate_scenario`, - `SDLInstantiationError`, and `aces_sdl.explicitness` deriving the + `SDLInstantiationError`, and `raes.explicitness` deriving the instantiated explicitness map from the pre-substitution authored map. - **Compiler / planner gate** — compiled exact, constrained, and open requirements MUST be matched against the selected backend's @@ -445,9 +445,9 @@ invariant I1–I5 is enforced by named code. (`realization-and-disclosure` family is the native authority for what may be realized at all). - I1, I3 fail-closed authoring / validation — - `implementations/python/packages/aces_sdl/explicitness.py`, - `implementations/python/packages/aces_sdl/validator/`, - `implementations/python/packages/aces_sdl/instantiate.py` + `implementations/python/packages/raes/explicitness.py`, + `implementations/python/packages/raes/validator/`, + `implementations/python/packages/raes/instantiate.py` (closed-world validation, classifier output on validated scenarios, and substitution-downgrade metadata on instantiated scenarios). - I4 fail-closed evidence — invalid fixtures @@ -587,7 +587,7 @@ precedents: - **CACAO playbook-extensions, OpenC2 actuator profiles, and Sigma backend profiles** all share the same general shape with the `RealizationSupportDeclaration` per-domain mode used here. SEM-218 - adopts the shape and makes its semantics normative for ACES. + adopts the shape and makes its semantics normative for RAES. - **Pham et al 2016 *CyRIS*** (`research/research/primary/literature/dsl-and-standards/pham2016_cyris.pdf`), **Vykopal et al 2017 *KYPO*** diff --git a/specs/formal/runtime-contracts/README.md b/specs/formal/runtime-contracts/README.md index a3b55e8d9..11f107e42 100644 --- a/specs/formal/runtime-contracts/README.md +++ b/specs/formal/runtime-contracts/README.md @@ -30,7 +30,7 @@ The standard vocabulary is intentionally lineage-bound: - participant roles reuse the existing exercise-role surface (`white`, `green`, `red`, and `blue`) from declarative participant framing; -- behavior features name the ACES participant-semantics surfaces established +- behavior features name the RAES participant-semantics surfaces established by `lineage.md`, ADR-022, and `specs/formal/participant-semantics/`: action contracts, preconditions, effects, observation boundaries, behavior history, state transitions, failure classes, attribution support, temporal @@ -48,7 +48,7 @@ of implying support from runtime presence alone. The controlled vocabulary extension policy is governed extension. Backend specific role or feature terms must use an `x-:` identifier and -remain bound through `concept_bindings`. ACES can verify the syntax and +remain bound through `concept_bindings`. RAES can verify the syntax and authority binding for extension terms; backend-specific evidence obligations remain owned by the backend that defines the extension. diff --git a/specs/formal/sdl-phases/README.md b/specs/formal/sdl-phases/README.md index b0417670c..12b305866 100644 --- a/specs/formal/sdl-phases/README.md +++ b/specs/formal/sdl-phases/README.md @@ -180,15 +180,15 @@ equivalence or bisimilarity. ## Evidence Mapping - typed phase and provenance records: - `implementations/python/packages/aces_sdl/scenario.py` and + `implementations/python/packages/raes/scenario.py` and `phase_contracts.py` - transition and admission functions: - `implementations/python/packages/aces_sdl/instantiate.py` + `implementations/python/packages/raes/instantiate.py` - typed processor lowering: `implementations/python/packages/aces_processor/models/` and `implementations/python/packages/aces_processor/planner/` - canonical snapshot: - `implementations/python/packages/aces_sdl/canonical.py` + `implementations/python/packages/raes/canonical.py` - external contracts: `contracts/schemas/sdl/instantiated-scenario-v1.json` and `instantiated-scenario-snapshot-v1.json` diff --git a/specs/formal/time-model/README.md b/specs/formal/time-model/README.md index f97f3aa64..9086fa87b 100644 --- a/specs/formal/time-model/README.md +++ b/specs/formal/time-model/README.md @@ -1,4 +1,4 @@ -# ACES Shared Time Model +# RAES Shared Time Model This specification defines the semantic authority implemented for SEM-227, SEM-228, SEM-229, DSL-126, DSL-127, DSL-128, RUN-317, and RUN-318. @@ -73,7 +73,7 @@ ordering or causality. The first closed constraint family is: -- precedence over exactly two ordinary ACES subjects; +- precedence over exactly two ordinary RAES subjects; - duration; - window; - deadline; and @@ -124,8 +124,8 @@ shared clock from matching strings. | Concern | Authority | | --- | --- | -| SDL declarations | `aces_sdl.time_model` | -| Cross-reference validation | `aces_sdl.validator._time_model` | +| SDL declarations | `raes.time_model` | +| Cross-reference validation | `raes.validator._time_model` | | Compilation | `aces_processor.compiler.time_model` | | Compiled identity | `aces_processor.models.time_model` | | Runtime lifecycle | `aces_runtime.time_coordinator` | diff --git a/specs/formal/validation-admission-profiles/README.md b/specs/formal/validation-admission-profiles/README.md index c7aded463..f732bde87 100644 --- a/specs/formal/validation-admission-profiles/README.md +++ b/specs/formal/validation-admission-profiles/README.md @@ -1,7 +1,7 @@ # Validation and Admission Profiles Formal Specification This domain specifies the ASR-511 and ASR-515 validation/admission profile -model. It defines how ACES distinguishes structural, semantic, behavioral, and +model. It defines how RAES distinguishes structural, semantic, behavioral, and stronger validity claims, and how artifacts disclose the basis and limitations of those claims. @@ -88,7 +88,7 @@ Strength classes are ordered from weakest to strongest: `structural` means syntax, schema, closed-world shape, type, and vocabulary checks passed. -`semantic` means structural validation passed and ACES domain invariants, +`semantic` means structural validation passed and RAES domain invariants, reference resolution, lifecycle separation, and cross-artifact consistency checks passed for the subject. diff --git a/specs/formal/workflows/README.md b/specs/formal/workflows/README.md index a903b3078..9f001d7a6 100644 --- a/specs/formal/workflows/README.md +++ b/specs/formal/workflows/README.md @@ -29,7 +29,7 @@ This directory holds the repo-native formal artifacts for SDL workflow control s ## Implementation Mapping - shared rules: `implementations/python/packages/aces_processor/semantics/workflow.py` -- validator enforcement: `implementations/python/packages/aces_sdl/validator/` +- validator enforcement: `implementations/python/packages/raes/validator/` - compiled contracts: `implementations/python/packages/aces_processor/compiler/` - typed runtime results and contract checks: - `implementations/python/packages/aces_processor/models/` diff --git a/specs/formal/workflows/compensation.md b/specs/formal/workflows/compensation.md index 47690c566..74f499398 100644 --- a/specs/formal/workflows/compensation.md +++ b/specs/formal/workflows/compensation.md @@ -97,8 +97,8 @@ workflow can be `cancelled` or `timed_out` while compensation is `running` or ## Implementation Mapping -- SDL authoring models: `implementations/python/packages/aces_sdl/orchestration.py` -- semantic validation: `implementations/python/packages/aces_sdl/validator/` +- SDL authoring models: `implementations/python/packages/raes/orchestration.py` +- semantic validation: `implementations/python/packages/raes/validator/` - compiled contracts: `implementations/python/packages/aces_processor/compiler/` - runtime state/history models: `implementations/python/packages/aces_processor/models/` - manager validation: `implementations/python/packages/aces_processor/manager.py` diff --git a/specs/formal/workflows/goal-oriented-steps.md b/specs/formal/workflows/goal-oriented-steps.md index 8416fa570..c803a4250 100644 --- a/specs/formal/workflows/goal-oriented-steps.md +++ b/specs/formal/workflows/goal-oriented-steps.md @@ -53,7 +53,7 @@ same objective without changing its backend-neutral success meaning. ## Implementation Mapping - authored mode and fail-closed validation: - `implementations/python/packages/aces_sdl/orchestration.py` + `implementations/python/packages/raes/orchestration.py` - compiled realization projection and feature requirements: `implementations/python/packages/aces_processor/compiler/workflow_steps.py` - portable attempt provenance: diff --git a/specs/formal/workflows/state-machine.md b/specs/formal/workflows/state-machine.md index c5c08cfa4..54d468bd7 100644 --- a/specs/formal/workflows/state-machine.md +++ b/specs/formal/workflows/state-machine.md @@ -67,7 +67,7 @@ derived from that envelope after validation. ## Implementation Mapping - semantic contract definitions: `implementations/python/packages/aces_processor/semantics/workflow.py` -- validation and visibility checks: `implementations/python/packages/aces_sdl/validator/` +- validation and visibility checks: `implementations/python/packages/raes/validator/` - compiled step contracts: `implementations/python/packages/aces_processor/compiler/` - typed runtime envelopes and result validation: - `implementations/python/packages/aces_processor/models/` diff --git a/specs/sdl/document-model.md b/specs/sdl/document-model.md index 0e0342b81..6ad000c8f 100644 --- a/specs/sdl/document-model.md +++ b/specs/sdl/document-model.md @@ -162,7 +162,7 @@ its diagnostics. ## 6. Portable identifiers and declaration identity -Every ACES-local **declaration identity** uses one portable local-identifier +Every RAES-local **declaration identity** uses one portable local-identifier grammar: ```text @@ -181,7 +181,7 @@ non-ASCII, whitespace, controls, `.`, `/`, `:`, and `${…}` are invalid. The rule applies by semantic role, not field spelling. It covers `Scenario.name`; map-valued section and variable keys; nested entity, role, and workflow-step keys; named services, ACLs, and content items; scenario-level forwarding-agent -ids; and every ACES-local primary or child id in the runtime-family registry. +ids; and every RAES-local primary or child id in the runtime-family registry. It does **not** apply merely because a field is called `name` or ends in `_id`. Display labels, usernames, DNS names, URLs, paths, LDAP DNs, environment names, versions, external/native/provider ids, and opaque evidence refs retain their diff --git a/specs/sdl/initial-service-state.md b/specs/sdl/initial-service-state.md index 18eac3d69..77128ae42 100644 --- a/specs/sdl/initial-service-state.md +++ b/specs/sdl/initial-service-state.md @@ -87,9 +87,9 @@ I/O. Direct plan submission MUST repeat these checks. ## 4. Backend Conformance And Equivalence -ACES standardizes the portable profile without selecting a product or backend. +RAES standardizes the portable profile without selecting a product or backend. A backend MAY claim `service-content-v1` only when its own conformance evidence -demonstrates native materialization through the ACES control path, fresh +demonstrates native materialization through the RAES control path, fresh independent readback, reset ownership, and the declared participant projection. A manifest claim is not execution evidence. diff --git a/specs/sdl/references.md b/specs/sdl/references.md index cbf68e6cd..ab6753c64 100644 --- a/specs/sdl/references.md +++ b/specs/sdl/references.md @@ -274,182 +274,182 @@ the source of the row's normative meaning. | Source path | Candidate domain | Resolution phase | Failure | Normative owner | Implementation evidence | | --- | --- | --- | --- | --- | --- | -| `nodes.*.features[]` | `features` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `nodes.*.features.*` | `derived:node_roles` | semantic validation | fatal dangling role when non-empty | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `nodes.*.conditions[]` | `conditions` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `nodes.*.conditions.*` | `derived:node_roles` | semantic validation | fatal dangling role when non-empty | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `conditions.*.proposition` | `propositions` | semantic validation | fatal dangling or ambiguous when present | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py) | -| `propositions.*.subjects[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py) | -| `propositions.*.evidence_requirements[]` | `evidence_requirements` | semantic validation | fatal dangling or ambiguous | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py) | -| `assertions.*.proposition` | `propositions` | semantic validation | fatal dangling or ambiguous | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py) | -| `nodes.*.injects[]` | `injects` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `nodes.*.injects.*` | `derived:node_roles` | semantic validation | fatal dangling role when non-empty | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `nodes.*.vulnerabilities[]` | `vulnerabilities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `nodes.*.roles.*.entities[]` | `entities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `infrastructure.*.$key` | `nodes` | semantic validation | fatal when no same-named node exists | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `infrastructure.*.links[]` | `infrastructure` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `infrastructure.*.properties[].*` | `infrastructure` | semantic validation | fatal unless the key names a linked switch-backed entry | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `infrastructure.*.acls[].from_net` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `infrastructure.*.acls[].to_net` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `infrastructure.*.dependencies[]` | `infrastructure` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py) | -| `features.*.dependencies[]` | `features` | semantic validation | fatal dangling, ambiguous, or cyclic | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `features.*.vulnerabilities[]` | `vulnerabilities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `entities.*.vulnerabilities[]` | `vulnerabilities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `entities.*.events[]` | `events` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `injects.*.from_entity` | `entities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `injects.*.to_entities[]` | `entities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `events.*.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py) | -| `events.*.injects[]` | `injects` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `scripts.*.events[]` | `events` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `stories.*.scripts[]` | `scripts` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py) | -| `content.*.target` | `nodes` | semantic validation | fatal unless target is a VM node | [initial service state](initial-service-state.md) | [content validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `content.*.service_materialization.target_service_ref` | `derived:node_services` | semantic validation | fatal unless the exact service exists on the content target VM | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/aces_sdl/validator/_service_materialization.py) | -| `content.*.service_materialization.shared_service_relationship_ref` | `relationships` | semantic validation | fatal unless a matching typed shared-service relationship owns cross-tenant mutable state/reset | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/aces_sdl/validator/_service_materialization.py) | +| `nodes.*.features[]` | `features` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `nodes.*.features.*` | `derived:node_roles` | semantic validation | fatal dangling role when non-empty | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `nodes.*.conditions[]` | `conditions` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `nodes.*.conditions.*` | `derived:node_roles` | semantic validation | fatal dangling role when non-empty | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `conditions.*.proposition` | `propositions` | semantic validation | fatal dangling or ambiguous when present | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/raes/validator/_propositions.py) | +| `propositions.*.subjects[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/raes/validator/_propositions.py) | +| `propositions.*.evidence_requirements[]` | `evidence_requirements` | semantic validation | fatal dangling or ambiguous | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/raes/validator/_propositions.py) | +| `assertions.*.proposition` | `propositions` | semantic validation | fatal dangling or ambiguous | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/raes/validator/_propositions.py) | +| `nodes.*.injects[]` | `injects` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `nodes.*.injects.*` | `derived:node_roles` | semantic validation | fatal dangling role when non-empty | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `nodes.*.vulnerabilities[]` | `vulnerabilities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `nodes.*.roles.*.entities[]` | `entities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `infrastructure.*.$key` | `nodes` | semantic validation | fatal when no same-named node exists | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `infrastructure.*.links[]` | `infrastructure` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `infrastructure.*.properties[].*` | `infrastructure` | semantic validation | fatal unless the key names a linked switch-backed entry | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `infrastructure.*.acls[].from_net` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `infrastructure.*.acls[].to_net` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `infrastructure.*.dependencies[]` | `infrastructure` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py) | +| `features.*.dependencies[]` | `features` | semantic validation | fatal dangling, ambiguous, or cyclic | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `features.*.vulnerabilities[]` | `vulnerabilities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `entities.*.vulnerabilities[]` | `vulnerabilities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `entities.*.events[]` | `events` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `injects.*.from_entity` | `entities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `injects.*.to_entities[]` | `entities` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `events.*.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [proposition validator](../../implementations/python/packages/raes/validator/_propositions.py) | +| `events.*.injects[]` | `injects` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `scripts.*.events[]` | `events` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `stories.*.scripts[]` | `scripts` | semantic validation | fatal dangling or ambiguous | [reference rules](#5-cross-section-reference-edge-catalog) | [section validator](../../implementations/python/packages/raes/validator/_sections.py) | +| `content.*.target` | `nodes` | semantic validation | fatal unless target is a VM node | [initial service state](initial-service-state.md) | [content validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `content.*.service_materialization.target_service_ref` | `derived:node_services` | semantic validation | fatal unless the exact service exists on the content target VM | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/raes/validator/_service_materialization.py) | +| `content.*.service_materialization.shared_service_relationship_ref` | `relationships` | semantic validation | fatal unless a matching typed shared-service relationship owns cross-tenant mutable state/reset | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/raes/validator/_service_materialization.py) | | `content.*.service_materialization.ordering_content_refs[]` | `content` | semantic validation and planner ordering | fatal dangling, self, or cyclic dependency | [initial service state](initial-service-state.md) | [content compiler](../../implementations/python/packages/aces_processor/compiler/placement.py) | -| `content.*.service_materialization.readback_assertion_refs[]` | `assertions` | semantic validation | fatal unless each ref is an observed-state postcondition | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/aces_sdl/validator/_service_materialization.py) | -| `content.*.service_materialization.evidence_requirement_refs[]` | `evidence_requirements` | semantic validation | fatal unless each ref exists and every readback proposition requires it | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/aces_sdl/validator/_service_materialization.py) | -| `content.*.service_materialization.observation_boundary_refs[]` | `observation_boundaries` | semantic validation | fatal dangling ref | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/aces_sdl/validator/_service_materialization.py) | -| `generated_artifacts.*.consumers[].node` | `nodes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/aces_sdl/scenario.py) | -| `generated_artifacts.*.ordering_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model and planner graph validation | fatal dangling, ambiguous, or cyclic | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/aces_sdl/scenario.py) | -| `generated_artifacts.*.refresh_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/aces_sdl/scenario.py) | -| `persistent_volumes.*.consumers[].node` | `nodes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/aces_sdl/scenario.py) | -| `persistent_volumes.*.ordering_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model and planner graph validation | fatal dangling, ambiguous, or cyclic | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/aces_sdl/scenario.py) | -| `persistent_volumes.*.refresh_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/aces_sdl/scenario.py) | -| `accounts.*.domain_ref` | `identity_domains` | semantic validation | fatal dangling, ambiguous, or inconsistent topology | [authored domain topology](authored-domain-topology.md) | [domain topology semantics](../../implementations/python/packages/aces_sdl/semantics/domain_topology.py) | -| `identity_domains.*.authority_account_ref` | `accounts` | semantic validation | fatal dangling, ambiguous, or authority outside domain controllers | [authored domain topology](authored-domain-topology.md) | [domain topology semantics](../../implementations/python/packages/aces_sdl/semantics/domain_topology.py) | -| `identity_forests.*.root_domain_ref` | `identity_domains` | semantic validation | fatal dangling or root outside declared membership | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [enterprise identity semantics](../../implementations/python/packages/aces_sdl/semantics/enterprise_identity.py) | -| `identity_forests.*.domain_refs[]` | `identity_domains` | semantic validation | fatal dangling, duplicate, or domain in multiple forests | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [enterprise identity semantics](../../implementations/python/packages/aces_sdl/semantics/enterprise_identity.py) | -| `identity_facades.*.service_ref` | `targetable` | semantic validation | fatal unless target is a named VM service | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [enterprise identity semantics](../../implementations/python/packages/aces_sdl/semantics/enterprise_identity.py) | -| `deployment_cells.*.tenant_ref` | `deployment_tenants` | semantic validation | fatal dangling or ambiguous | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [deployment tenancy semantics](../../implementations/python/packages/aces_sdl/semantics/deployment_tenancy.py) | -| `deployment_cells.*.node_refs[]` | `nodes` | semantic validation | fatal dangling, duplicate, or node in multiple cells | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [deployment tenancy semantics](../../implementations/python/packages/aces_sdl/semantics/deployment_tenancy.py) | -| `accounts.*.node` | `nodes` | semantic validation | fatal unless target is a vm node | [reference rules](#5-cross-section-reference-edge-catalog) | [account validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `relationships.*.source` | `targetable` | semantic validation | fatal dangling or ambiguous; subtype may narrow domain | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.target` | `targetable` | semantic validation | fatal dangling or ambiguous; subtype may narrow domain | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.database_access.role_ref` | `derived:database_roles` | semantic validation | fatal outside the target database service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.mail_access.listener_ref` | `derived:mail_listeners` | semantic validation | fatal outside the target mail service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [mail validator](../../implementations/python/packages/aces_sdl/validator/_runtime_mail.py) | -| `relationships.*.mail_access.mailbox_ref` | `derived:mailboxes` | semantic validation | fatal outside the target mail service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [mail validator](../../implementations/python/packages/aces_sdl/validator/_runtime_mail.py) | -| `relationships.*.mail_access.domain_ref` | `derived:mail_domains` | semantic validation | fatal outside the target mail service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [mail validator](../../implementations/python/packages/aces_sdl/validator/_runtime_mail.py) | -| `relationships.*.forwarding_edge.forwarder_ref` | `runtime:forwarding_agents` | semantic validation | fatal dangling or ambiguous across scenario and node scopes | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.service_integration.consumer_ref` | `runtime:platform_applications` | semantic validation | fatal dangling or ambiguous | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.service_integration.engine_ref` | `runtime:platform_applications` | semantic validation | fatal dangling or ambiguous | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.service_integration.auth_principal_ref` | `derived:engine_authorization_principals` | semantic validation | fatal outside the engine authorization scope | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py) | -| `relationships.*.proxy_upstream.route_ref` | `derived:source_application_routes` | semantic validation | fatal outside the source application | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [proxy relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships_proxy.py) | -| `relationships.*.proxy_upstream.upstream_node_ref` | `nodes` | semantic validation | fatal dangling or ambiguous | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [proxy relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships_proxy.py) | -| `relationships.*.proxy_upstream.upstream_service_ref` | `derived:upstream_node_services` | semantic validation | fatal without a resolvable upstream node and service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [proxy relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships_proxy.py) | -| `relationships.*.domain_join.controller_refs[]` | `nodes` | semantic validation | fatal dangling, ambiguous, or controller outside target domain | [authored domain topology](authored-domain-topology.md) | [domain topology semantics](../../implementations/python/packages/aces_sdl/semantics/domain_topology.py) | -| `relationships.*.shared_service.mutable_state_refs[]` | `persistent_volumes` | semantic validation | fatal dangling or conflicting state ownership | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [deployment tenancy semantics](../../implementations/python/packages/aces_sdl/semantics/deployment_tenancy.py) | -| `agents.*.entity` | `entities` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.actions[]` | `action_contracts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `agents.*.starting_accounts[]` | `accounts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.interactive_access.*.target_ref` | `nodes` | semantic validation | fatal dangling, ambiguous, or non-VM target | [participant semantics](../formal/participant-semantics/README.md) | [participant interactive-access semantics](../../implementations/python/packages/aces_sdl/semantics/participant_interactive_access.py) | -| `agents.*.interactive_access.*.account_ref` | `accounts` | semantic validation | fatal dangling, same-node mismatch, or outside participant starting accounts | [participant semantics](../formal/participant-semantics/README.md) | [participant interactive-access semantics](../../implementations/python/packages/aces_sdl/semantics/participant_interactive_access.py) | -| `agents.*.starting_assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [participant semantics](../formal/participant-semantics/README.md) | [proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py) | -| `agents.*.initial_knowledge.hosts[]` | `nodes` | semantic validation | fatal unless the target is a vm node | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.initial_knowledge.subnets[]` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.initial_knowledge.services[]` | `derived:node_services` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.initial_knowledge.accounts[]` | `accounts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.allowed_subnets[]` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.authority_anchors[]` | `declared` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.operating_scope[]` | `derived:operating_scope` | semantic validation | fatal dangling or ambiguous outside vm nodes, switch-backed infrastructure, services, and content | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `agents.*.observation_boundaries[]` | `observation_boundaries` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `action_contracts.*.interactions.*.related_actions[]` | `action_contracts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `action_contracts.*.interactions.*.target` | `targetable` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `action_contracts.*.interactions.*.shared_state_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `action_contracts.*.temporal_contracts.*.backend_disclosure_refs[]` | `derived:backend_timing_disclosures` | structural validation | fatal dangling local disclosure id | [participant semantics](../formal/participant-semantics/README.md) | [temporal model](../../implementations/python/packages/aces_sdl/participant_temporal_semantics.py) | -| `action_contracts.*.backend_timing_disclosures.*.affected_temporal_ids[]` | `derived:temporal_contracts` | structural validation | fatal dangling local temporal id | [participant semantics](../formal/participant-semantics/README.md) | [temporal model](../../implementations/python/packages/aces_sdl/participant_temporal_semantics.py) | -| `observation_boundaries.*.view_rules.*.information_ref` | `derived:boundary_information` | semantic validation | fatal outside declared boundary information | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `observation_boundaries.*.view_rules.*.evidence_refs[]` | `derived:boundary_evidence` | semantic validation | fatal outside declared boundary evidence | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `observation_boundaries.*.view_transitions.*.information_ref` | `derived:boundary_view_rules` | semantic validation | fatal without a matching view rule | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `observation_boundaries.*.view_transitions.*.evidence_refs[]` | `derived:boundary_evidence` | semantic validation | fatal outside declared boundary evidence | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `outcome_interpretation_rules.*.source_bindings.*.ref` | `action_contracts,objectives,workflows` | semantic validation | fatal dangling for SDL-bound layers | [participant semantics](../formal/participant-semantics/README.md) | [outcome semantics](../../implementations/python/packages/aces_sdl/semantics/participant_outcome.py) | -| `outcome_interpretation_rules.*.target_bindings.*.ref` | `objectives,workflows` | semantic validation | fatal dangling for SDL-bound layers | [participant semantics](../formal/participant-semantics/README.md) | [outcome semantics](../../implementations/python/packages/aces_sdl/semantics/participant_outcome.py) | -| `behavior_specifications.*.participant_refs[]` | `agents` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.participant_role_refs[]` | `derived:agent_roles` | semantic validation | fatal unless bound by a referenced participant | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.action_contract_refs[]` | `action_contracts` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.observation_boundary_refs[]` | `observation_boundaries` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.outcome_interpretation_rule_refs[]` | `outcome_interpretation_rules` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.authority_scope_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py) | -| `behavior_specifications.*.tool_affordances.*.tool_ref` | `content` | semantic validation | fatal dangling, ambiguous, or outside the `scenario-content` tools-and-artifacts reference model | [participant semantics](../formal/participant-semantics/README.md) | [tool-affordance validator](../../implementations/python/packages/aces_sdl/validator/_participant_tool_affordances.py) | -| `behavior_specifications.*.tool_affordances.*.action_contract_refs[]` | `action_contracts` | semantic validation | fatal dangling, outside the owning behavior specification, or outside a resolved participant | [participant semantics](../formal/participant-semantics/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.tool_affordances.*.observation_boundary_refs[]` | `observation_boundaries` | semantic validation | fatal dangling, outside the owner/participant, or without explicit view classification | [participant semantics](../formal/participant-semantics/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.behavior_mode` | `vocabulary:behavior_mode` | structural validation | fatal invalid vocabulary value | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior.py) | -| `behavior_specifications.*.mixed_control.participant_ref` | `agents` | semantic validation | fatal unless owned by the enclosing behavior specification | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `behavior_specifications.*.mixed_control.controller_states.*.controller_ref` | `agents-or-self` | semantic validation | fatal operator/role/identity impersonation or dangling agent | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `behavior_specifications.*.mixed_control.controller_states.*.authority_basis_refs[]` | `derived:controller_authority_anchors` | semantic validation | fatal dangling, ambiguous, or authority widening | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `clocks.*.time_domain_ref` | `time_domains` | semantic validation | fatal dangling | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py) | -| `time_domain_mappings.*.source_domain_ref` | `time_domains` | semantic validation | fatal dangling, duplicate, or cyclic mapping | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py) | -| `time_domain_mappings.*.target_domain_ref` | `time_domains` | semantic validation | fatal dangling, duplicate, or cyclic mapping | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py) | -| `time_progression_policies.*.clock_ref` | `clocks` | semantic validation | fatal dangling or incompatible reset/replay lifecycle | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py) | -| `temporal_constraints.*.clock_ref` | `clocks` | semantic validation | fatal dangling | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py) | -| `temporal_constraints.*.subject_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py) | -| `behavior_specifications.*.mixed_control.controller_states.*.scope_refs[]` | `derived:behavior-and-controller-scope` | semantic validation | fatal dangling, ambiguous, or scope widening | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `behavior_specifications.*.mixed_control.controller_states.*.evidence_refs[]` | `declared` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `behavior_specifications.*.mixed_control.transitions.*.from_state_ref` | `derived:mixed_control_local_ids` | structural and semantic validation | fatal dangling, stale, reversed, or ambiguously ordered local ref | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior_specification.py) | -| `behavior_specifications.*.mixed_control.transitions.*.to_state_ref` | `derived:mixed_control_local_ids` | structural and semantic validation | fatal dangling, stale, reversed, or ambiguously ordered local ref | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior_specification.py) | -| `behavior_specifications.*.mixed_control.transitions.*.proposal_ref` | `derived:mixed_control_local_ids` | structural and semantic validation | fatal dangling, stale, reversed, or ambiguously ordered local ref | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior_specification.py) | -| `behavior_specifications.*.mixed_control.transitions.*.evidence_refs[]` | `declared` | semantic validation | fatal dangling, ambiguous, or silent handoff | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `behavior_specifications.*.mixed_control.transitions.*.completion_evidence_refs[]` | `declared` | semantic validation | fatal dangling, ambiguous, or silent handoff | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py) | -| `behavior_specifications.*.ai_offensive_behavior_refs[]` | `vocabulary:ai_offensive_behavior` | semantic validation | fatal unknown vocabulary identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior.py) | -| `behavior_specifications.*.defensive_behavior_refs[]` | `vocabulary:defensive_behavior` | semantic validation | fatal unknown vocabulary identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior.py) | -| `behavior_specifications.*.offensive_behavior_refs[]` | `vocabulary:offensive_behavior` | semantic validation | fatal unknown vocabulary identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior.py) | -| `behavior_specifications.*.realization_profile_ref` | `opaque:realization_profile` | structural validation | fatal invalid reference shape; resolution belongs to realization | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/aces_sdl/participant_behavior.py) | -| `behavior_specifications.*.backend_feature_support_refs[]` | `registry:behavior_features` | semantic validation | fatal unsupported feature identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `behavior_specifications.*.evidence_contract_refs[]` | `contract:participant_evidence` | semantic validation | fatal unknown contract identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py) | -| `evidence_requirements.*.source_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/aces_sdl/validator/_evidence_requirements.py) | -| `evidence_requirements.*.scope_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/aces_sdl/validator/_evidence_requirements.py) | -| `evidence_requirements.*.channel_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/aces_sdl/validator/_evidence_requirements.py) | -| `evidence_requirements.*.trigger_ref` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/aces_sdl/validator/_evidence_requirements.py) | -| `evidence_requirements.*.boundary_ref` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/aces_sdl/validator/_evidence_requirements.py) | -| `variation_points.*.target.variable` | `variables` | semantic validation | fatal dangling or wrong variable type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.target.owner` | `targetable` | semantic validation | fatal dangling or wrong slot owner type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.domain.allowed_refs[]` | `targetable` | semantic validation | fatal dangling or wrong slot candidate type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.alternatives.*.reference` | `targetable` | semantic validation | fatal dangling or wrong slot candidate type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.members.*.reference` | `targetable` | semantic validation | fatal dangling or wrong slot candidate type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.alternatives.*.requires[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.alternatives.*.requires[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.alternatives.*.excludes[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.alternatives.*.excludes[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.members.*.requires[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.members.*.requires[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.members.*.excludes[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.members.*.excludes[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.precedence[].before` | `derived:variation_members` | structural validation | fatal outside the owning order point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.precedence[].after` | `derived:variation_members` | structural validation | fatal outside the owning order point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `variation_points.*.fixed_positions.*.$key` | `derived:variation_members` | structural validation | fatal outside the owning order point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py) | -| `objectives.*.agent` | `agents` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.entity` | `entities` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.actions[]` | `derived:agent_actions` | semantic validation | fatal outside the bound agent action contracts | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.targets[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.success.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.depends_on[]` | `objectives` | semantic validation | fatal dangling, ambiguous, or cyclic | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.window.stories[]` | `stories` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.window.scripts[]` | `scripts` | semantic validation | fatal dangling or outside referenced stories | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.window.events[]` | `events` | semantic validation | fatal dangling or outside referenced scripts | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.window.workflows[]` | `workflows` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `objectives.*.window.steps[]` | `workflow_steps` | semantic validation | fatal malformed, dangling, or outside referenced workflows | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py) | -| `workflows.*.start` | `workflow_steps` | semantic validation | fatal dangling step | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.when.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.when.objectives[]` | `objectives` | semantic validation | fatal dangling or ambiguous | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.when.steps.*.step` | `workflow_steps` | semantic validation | fatal dangling, self-referential, non-executable, or unavailable before evaluation | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.cases.*.when.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.cases.*.when.objectives[]` | `objectives` | semantic validation | fatal dangling or ambiguous | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.cases.*.when.steps.*.step` | `workflow_steps` | semantic validation | fatal dangling, self-referential, non-executable, or unavailable before evaluation | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.objective` | `objectives` | semantic validation | fatal dangling or ambiguous | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.procedure_ref` | `action_contracts` | semantic validation | fatal dangling or non-procedure granularity | [goal-oriented step semantics](../formal/workflows/goal-oriented-steps.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.scaffold_refs[]` | `observation_boundaries` | semantic validation | fatal dangling or scaffold-incompatible boundary | [goal-oriented step semantics](../formal/workflows/goal-oriented-steps.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.allowed_action_families[]` | `action_contracts` | semantic validation | fatal dangling or non-aggregate granularity | [goal-oriented step semantics](../formal/workflows/goal-oriented-steps.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.next` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.on_success` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.on_failure` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.on_exhausted` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.then` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.else` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.cases.*.next` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.default` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.branches[]` | `workflow_steps` | semantic validation | fatal dangling or outside a closed parallel branch | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.join` | `workflow_steps` | semantic validation | fatal dangling, non-join, multiply owned, or outside branch closure | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.workflow` | `workflows` | semantic validation | fatal dangling or cyclic | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | -| `workflows.*.steps.*.compensate_with` | `workflows` | semantic validation | fatal dangling, cyclic, or invalid as a compensation target | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py) | +| `content.*.service_materialization.readback_assertion_refs[]` | `assertions` | semantic validation | fatal unless each ref is an observed-state postcondition | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/raes/validator/_service_materialization.py) | +| `content.*.service_materialization.evidence_requirement_refs[]` | `evidence_requirements` | semantic validation | fatal unless each ref exists and every readback proposition requires it | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/raes/validator/_service_materialization.py) | +| `content.*.service_materialization.observation_boundary_refs[]` | `observation_boundaries` | semantic validation | fatal dangling ref | [initial service state](initial-service-state.md) | [service materialization validator](../../implementations/python/packages/raes/validator/_service_materialization.py) | +| `generated_artifacts.*.consumers[].node` | `nodes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/raes/scenario.py) | +| `generated_artifacts.*.ordering_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model and planner graph validation | fatal dangling, ambiguous, or cyclic | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/raes/scenario.py) | +| `generated_artifacts.*.refresh_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/raes/scenario.py) | +| `persistent_volumes.*.consumers[].node` | `nodes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/raes/scenario.py) | +| `persistent_volumes.*.ordering_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model and planner graph validation | fatal dangling, ambiguous, or cyclic | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/raes/scenario.py) | +| `persistent_volumes.*.refresh_dependencies[]` | `generated_artifacts,persistent_volumes` | structural model validation | fatal dangling or ambiguous | [stateful resources](stateful-resources.md) | [scenario model](../../implementations/python/packages/raes/scenario.py) | +| `accounts.*.domain_ref` | `identity_domains` | semantic validation | fatal dangling, ambiguous, or inconsistent topology | [authored domain topology](authored-domain-topology.md) | [domain topology semantics](../../implementations/python/packages/raes/semantics/domain_topology.py) | +| `identity_domains.*.authority_account_ref` | `accounts` | semantic validation | fatal dangling, ambiguous, or authority outside domain controllers | [authored domain topology](authored-domain-topology.md) | [domain topology semantics](../../implementations/python/packages/raes/semantics/domain_topology.py) | +| `identity_forests.*.root_domain_ref` | `identity_domains` | semantic validation | fatal dangling or root outside declared membership | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [enterprise identity semantics](../../implementations/python/packages/raes/semantics/enterprise_identity.py) | +| `identity_forests.*.domain_refs[]` | `identity_domains` | semantic validation | fatal dangling, duplicate, or domain in multiple forests | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [enterprise identity semantics](../../implementations/python/packages/raes/semantics/enterprise_identity.py) | +| `identity_facades.*.service_ref` | `targetable` | semantic validation | fatal unless target is a named VM service | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [enterprise identity semantics](../../implementations/python/packages/raes/semantics/enterprise_identity.py) | +| `deployment_cells.*.tenant_ref` | `deployment_tenants` | semantic validation | fatal dangling or ambiguous | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [deployment tenancy semantics](../../implementations/python/packages/raes/semantics/deployment_tenancy.py) | +| `deployment_cells.*.node_refs[]` | `nodes` | semantic validation | fatal dangling, duplicate, or node in multiple cells | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [deployment tenancy semantics](../../implementations/python/packages/raes/semantics/deployment_tenancy.py) | +| `accounts.*.node` | `nodes` | semantic validation | fatal unless target is a vm node | [reference rules](#5-cross-section-reference-edge-catalog) | [account validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `relationships.*.source` | `targetable` | semantic validation | fatal dangling or ambiguous; subtype may narrow domain | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.target` | `targetable` | semantic validation | fatal dangling or ambiguous; subtype may narrow domain | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.database_access.role_ref` | `derived:database_roles` | semantic validation | fatal outside the target database service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.mail_access.listener_ref` | `derived:mail_listeners` | semantic validation | fatal outside the target mail service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [mail validator](../../implementations/python/packages/raes/validator/_runtime_mail.py) | +| `relationships.*.mail_access.mailbox_ref` | `derived:mailboxes` | semantic validation | fatal outside the target mail service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [mail validator](../../implementations/python/packages/raes/validator/_runtime_mail.py) | +| `relationships.*.mail_access.domain_ref` | `derived:mail_domains` | semantic validation | fatal outside the target mail service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [mail validator](../../implementations/python/packages/raes/validator/_runtime_mail.py) | +| `relationships.*.forwarding_edge.forwarder_ref` | `runtime:forwarding_agents` | semantic validation | fatal dangling or ambiguous across scenario and node scopes | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.service_integration.consumer_ref` | `runtime:platform_applications` | semantic validation | fatal dangling or ambiguous | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.service_integration.engine_ref` | `runtime:platform_applications` | semantic validation | fatal dangling or ambiguous | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.service_integration.auth_principal_ref` | `derived:engine_authorization_principals` | semantic validation | fatal outside the engine authorization scope | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [relationship validator](../../implementations/python/packages/raes/validator/_relationships.py) | +| `relationships.*.proxy_upstream.route_ref` | `derived:source_application_routes` | semantic validation | fatal outside the source application | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [proxy relationship validator](../../implementations/python/packages/raes/validator/_relationships_proxy.py) | +| `relationships.*.proxy_upstream.upstream_node_ref` | `nodes` | semantic validation | fatal dangling or ambiguous | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [proxy relationship validator](../../implementations/python/packages/raes/validator/_relationships_proxy.py) | +| `relationships.*.proxy_upstream.upstream_service_ref` | `derived:upstream_node_services` | semantic validation | fatal without a resolvable upstream node and service | [ADR-052](../../docs/decisions/adrs/adr-052-typed-runtime-relationship-subtypes.md) | [proxy relationship validator](../../implementations/python/packages/raes/validator/_relationships_proxy.py) | +| `relationships.*.domain_join.controller_refs[]` | `nodes` | semantic validation | fatal dangling, ambiguous, or controller outside target domain | [authored domain topology](authored-domain-topology.md) | [domain topology semantics](../../implementations/python/packages/raes/semantics/domain_topology.py) | +| `relationships.*.shared_service.mutable_state_refs[]` | `persistent_volumes` | semantic validation | fatal dangling or conflicting state ownership | [enterprise identity and deployment tenancy](enterprise-deployment-tenancy.md) | [deployment tenancy semantics](../../implementations/python/packages/raes/semantics/deployment_tenancy.py) | +| `agents.*.entity` | `entities` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.actions[]` | `action_contracts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `agents.*.starting_accounts[]` | `accounts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.interactive_access.*.target_ref` | `nodes` | semantic validation | fatal dangling, ambiguous, or non-VM target | [participant semantics](../formal/participant-semantics/README.md) | [participant interactive-access semantics](../../implementations/python/packages/raes/semantics/participant_interactive_access.py) | +| `agents.*.interactive_access.*.account_ref` | `accounts` | semantic validation | fatal dangling, same-node mismatch, or outside participant starting accounts | [participant semantics](../formal/participant-semantics/README.md) | [participant interactive-access semantics](../../implementations/python/packages/raes/semantics/participant_interactive_access.py) | +| `agents.*.starting_assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [participant semantics](../formal/participant-semantics/README.md) | [proposition validator](../../implementations/python/packages/raes/validator/_propositions.py) | +| `agents.*.initial_knowledge.hosts[]` | `nodes` | semantic validation | fatal unless the target is a vm node | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.initial_knowledge.subnets[]` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.initial_knowledge.services[]` | `derived:node_services` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.initial_knowledge.accounts[]` | `accounts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.allowed_subnets[]` | `infrastructure` | semantic validation | fatal unless the target is switch-backed | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.authority_anchors[]` | `declared` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.operating_scope[]` | `derived:operating_scope` | semantic validation | fatal dangling or ambiguous outside vm nodes, switch-backed infrastructure, services, and content | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `agents.*.observation_boundaries[]` | `observation_boundaries` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `action_contracts.*.interactions.*.related_actions[]` | `action_contracts` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `action_contracts.*.interactions.*.target` | `targetable` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `action_contracts.*.interactions.*.shared_state_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [participant semantics](../formal/participant-semantics/README.md) | [participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `action_contracts.*.temporal_contracts.*.backend_disclosure_refs[]` | `derived:backend_timing_disclosures` | structural validation | fatal dangling local disclosure id | [participant semantics](../formal/participant-semantics/README.md) | [temporal model](../../implementations/python/packages/raes/participant_temporal_semantics.py) | +| `action_contracts.*.backend_timing_disclosures.*.affected_temporal_ids[]` | `derived:temporal_contracts` | structural validation | fatal dangling local temporal id | [participant semantics](../formal/participant-semantics/README.md) | [temporal model](../../implementations/python/packages/raes/participant_temporal_semantics.py) | +| `observation_boundaries.*.view_rules.*.information_ref` | `derived:boundary_information` | semantic validation | fatal outside declared boundary information | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `observation_boundaries.*.view_rules.*.evidence_refs[]` | `derived:boundary_evidence` | semantic validation | fatal outside declared boundary evidence | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `observation_boundaries.*.view_transitions.*.information_ref` | `derived:boundary_view_rules` | semantic validation | fatal without a matching view rule | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `observation_boundaries.*.view_transitions.*.evidence_refs[]` | `derived:boundary_evidence` | semantic validation | fatal outside declared boundary evidence | [participant semantics](../formal/participant-semantics/README.md) | [participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `outcome_interpretation_rules.*.source_bindings.*.ref` | `action_contracts,objectives,workflows` | semantic validation | fatal dangling for SDL-bound layers | [participant semantics](../formal/participant-semantics/README.md) | [outcome semantics](../../implementations/python/packages/raes/semantics/participant_outcome.py) | +| `outcome_interpretation_rules.*.target_bindings.*.ref` | `objectives,workflows` | semantic validation | fatal dangling for SDL-bound layers | [participant semantics](../formal/participant-semantics/README.md) | [outcome semantics](../../implementations/python/packages/raes/semantics/participant_outcome.py) | +| `behavior_specifications.*.participant_refs[]` | `agents` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.participant_role_refs[]` | `derived:agent_roles` | semantic validation | fatal unless bound by a referenced participant | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.action_contract_refs[]` | `action_contracts` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.observation_boundary_refs[]` | `observation_boundaries` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.outcome_interpretation_rule_refs[]` | `outcome_interpretation_rules` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.authority_scope_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_content_objectives.py) | +| `behavior_specifications.*.tool_affordances.*.tool_ref` | `content` | semantic validation | fatal dangling, ambiguous, or outside the `scenario-content` tools-and-artifacts reference model | [participant semantics](../formal/participant-semantics/README.md) | [tool-affordance validator](../../implementations/python/packages/raes/validator/_participant_tool_affordances.py) | +| `behavior_specifications.*.tool_affordances.*.action_contract_refs[]` | `action_contracts` | semantic validation | fatal dangling, outside the owning behavior specification, or outside a resolved participant | [participant semantics](../formal/participant-semantics/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.tool_affordances.*.observation_boundary_refs[]` | `observation_boundaries` | semantic validation | fatal dangling, outside the owner/participant, or without explicit view classification | [participant semantics](../formal/participant-semantics/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.behavior_mode` | `vocabulary:behavior_mode` | structural validation | fatal invalid vocabulary value | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior.py) | +| `behavior_specifications.*.mixed_control.participant_ref` | `agents` | semantic validation | fatal unless owned by the enclosing behavior specification | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `behavior_specifications.*.mixed_control.controller_states.*.controller_ref` | `agents-or-self` | semantic validation | fatal operator/role/identity impersonation or dangling agent | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `behavior_specifications.*.mixed_control.controller_states.*.authority_basis_refs[]` | `derived:controller_authority_anchors` | semantic validation | fatal dangling, ambiguous, or authority widening | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `clocks.*.time_domain_ref` | `time_domains` | semantic validation | fatal dangling | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/raes/validator/_time_model.py) | +| `time_domain_mappings.*.source_domain_ref` | `time_domains` | semantic validation | fatal dangling, duplicate, or cyclic mapping | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/raes/validator/_time_model.py) | +| `time_domain_mappings.*.target_domain_ref` | `time_domains` | semantic validation | fatal dangling, duplicate, or cyclic mapping | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/raes/validator/_time_model.py) | +| `time_progression_policies.*.clock_ref` | `clocks` | semantic validation | fatal dangling or incompatible reset/replay lifecycle | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/raes/validator/_time_model.py) | +| `temporal_constraints.*.clock_ref` | `clocks` | semantic validation | fatal dangling | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/raes/validator/_time_model.py) | +| `temporal_constraints.*.subject_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [shared time model](../formal/time-model/README.md) | [time-model validator](../../implementations/python/packages/raes/validator/_time_model.py) | +| `behavior_specifications.*.mixed_control.controller_states.*.scope_refs[]` | `derived:behavior-and-controller-scope` | semantic validation | fatal dangling, ambiguous, or scope widening | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `behavior_specifications.*.mixed_control.controller_states.*.evidence_refs[]` | `declared` | semantic validation | fatal dangling or ambiguous | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `behavior_specifications.*.mixed_control.transitions.*.from_state_ref` | `derived:mixed_control_local_ids` | structural and semantic validation | fatal dangling, stale, reversed, or ambiguously ordered local ref | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior_specification.py) | +| `behavior_specifications.*.mixed_control.transitions.*.to_state_ref` | `derived:mixed_control_local_ids` | structural and semantic validation | fatal dangling, stale, reversed, or ambiguously ordered local ref | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior_specification.py) | +| `behavior_specifications.*.mixed_control.transitions.*.proposal_ref` | `derived:mixed_control_local_ids` | structural and semantic validation | fatal dangling, stale, reversed, or ambiguously ordered local ref | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior_specification.py) | +| `behavior_specifications.*.mixed_control.transitions.*.evidence_refs[]` | `declared` | semantic validation | fatal dangling, ambiguous, or silent handoff | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `behavior_specifications.*.mixed_control.transitions.*.completion_evidence_refs[]` | `declared` | semantic validation | fatal dangling, ambiguous, or silent handoff | [behavior model](../formal/participant-behavior-model/README.md) | [behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py) | +| `behavior_specifications.*.ai_offensive_behavior_refs[]` | `vocabulary:ai_offensive_behavior` | semantic validation | fatal unknown vocabulary identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior.py) | +| `behavior_specifications.*.defensive_behavior_refs[]` | `vocabulary:defensive_behavior` | semantic validation | fatal unknown vocabulary identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior.py) | +| `behavior_specifications.*.offensive_behavior_refs[]` | `vocabulary:offensive_behavior` | semantic validation | fatal unknown vocabulary identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior.py) | +| `behavior_specifications.*.realization_profile_ref` | `opaque:realization_profile` | structural validation | fatal invalid reference shape; resolution belongs to realization | [behavior model](../formal/participant-behavior-model/README.md) | [behavior model](../../implementations/python/packages/raes/participant_behavior.py) | +| `behavior_specifications.*.backend_feature_support_refs[]` | `registry:behavior_features` | semantic validation | fatal unsupported feature identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `behavior_specifications.*.evidence_contract_refs[]` | `contract:participant_evidence` | semantic validation | fatal unknown contract identifier | [behavior model](../formal/participant-behavior-model/README.md) | [behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py) | +| `evidence_requirements.*.source_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/raes/validator/_evidence_requirements.py) | +| `evidence_requirements.*.scope_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/raes/validator/_evidence_requirements.py) | +| `evidence_requirements.*.channel_refs[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/raes/validator/_evidence_requirements.py) | +| `evidence_requirements.*.trigger_ref` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/raes/validator/_evidence_requirements.py) | +| `evidence_requirements.*.boundary_ref` | `targetable` | semantic validation | fatal dangling or ambiguous | [evidence authoring](observability-and-evidence.md) | [evidence validator](../../implementations/python/packages/raes/validator/_evidence_requirements.py) | +| `variation_points.*.target.variable` | `variables` | semantic validation | fatal dangling or wrong variable type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.target.owner` | `targetable` | semantic validation | fatal dangling or wrong slot owner type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.domain.allowed_refs[]` | `targetable` | semantic validation | fatal dangling or wrong slot candidate type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.alternatives.*.reference` | `targetable` | semantic validation | fatal dangling or wrong slot candidate type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.members.*.reference` | `targetable` | semantic validation | fatal dangling or wrong slot candidate type | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.alternatives.*.requires[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.alternatives.*.requires[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.alternatives.*.excludes[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.alternatives.*.excludes[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.members.*.requires[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.members.*.requires[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.members.*.excludes[].point` | `variation_points` | semantic validation | fatal dangling or ambiguous | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.members.*.excludes[].members[]` | `derived:variation_members` | semantic validation | fatal outside the resolved variation point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.precedence[].before` | `derived:variation_members` | structural validation | fatal outside the owning order point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.precedence[].after` | `derived:variation_members` | structural validation | fatal outside the owning order point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `variation_points.*.fixed_positions.*.$key` | `derived:variation_members` | structural validation | fatal outside the owning order point | [variation points](variation-points.md) | [variation validator](../../implementations/python/packages/raes/validator/_variation.py) | +| `objectives.*.agent` | `agents` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.entity` | `entities` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.actions[]` | `derived:agent_actions` | semantic validation | fatal outside the bound agent action contracts | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.targets[]` | `targetable` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.success.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.depends_on[]` | `objectives` | semantic validation | fatal dangling, ambiguous, or cyclic | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.window.stories[]` | `stories` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.window.scripts[]` | `scripts` | semantic validation | fatal dangling or outside referenced stories | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.window.events[]` | `events` | semantic validation | fatal dangling or outside referenced scripts | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.window.workflows[]` | `workflows` | semantic validation | fatal dangling or ambiguous | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `objectives.*.window.steps[]` | `workflow_steps` | semantic validation | fatal malformed, dangling, or outside referenced workflows | [objective semantics](../formal/objectives/declarative-objective-semantics.md) | [objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py) | +| `workflows.*.start` | `workflow_steps` | semantic validation | fatal dangling step | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.when.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.when.objectives[]` | `objectives` | semantic validation | fatal dangling or ambiguous | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.when.steps.*.step` | `workflow_steps` | semantic validation | fatal dangling, self-referential, non-executable, or unavailable before evaluation | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.cases.*.when.assertions[]` | `assertions` | semantic validation | fatal dangling, ambiguous, or non-precondition role | [proposition semantics](../formal/objectives/proposition-and-assertion-semantics.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.cases.*.when.objectives[]` | `objectives` | semantic validation | fatal dangling or ambiguous | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.cases.*.when.steps.*.step` | `workflow_steps` | semantic validation | fatal dangling, self-referential, non-executable, or unavailable before evaluation | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.objective` | `objectives` | semantic validation | fatal dangling or ambiguous | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.procedure_ref` | `action_contracts` | semantic validation | fatal dangling or non-procedure granularity | [goal-oriented step semantics](../formal/workflows/goal-oriented-steps.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.scaffold_refs[]` | `observation_boundaries` | semantic validation | fatal dangling or scaffold-incompatible boundary | [goal-oriented step semantics](../formal/workflows/goal-oriented-steps.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.allowed_action_families[]` | `action_contracts` | semantic validation | fatal dangling or non-aggregate granularity | [goal-oriented step semantics](../formal/workflows/goal-oriented-steps.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.next` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.on_success` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.on_failure` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.on_exhausted` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.then` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.else` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.cases.*.next` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.default` | `workflow_steps` | semantic validation | fatal dangling, cyclic, or unreachable | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.branches[]` | `workflow_steps` | semantic validation | fatal dangling or outside a closed parallel branch | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.join` | `workflow_steps` | semantic validation | fatal dangling, non-join, multiply owned, or outside branch closure | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.workflow` | `workflows` | semantic validation | fatal dangling or cyclic | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | +| `workflows.*.steps.*.compensate_with` | `workflows` | semantic validation | fatal dangling, cyclic, or invalid as a compensation target | [workflow semantics](../formal/workflows/state-machine.md) | [workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py) | The index is compared by exact source path, domain, phase, failure semantics, and implementation evidence against the checked reference contract, and its diff --git a/specs/sdl/runtime-inventory.md b/specs/sdl/runtime-inventory.md index ec961c738..31a09e701 100644 --- a/specs/sdl/runtime-inventory.md +++ b/specs/sdl/runtime-inventory.md @@ -91,7 +91,7 @@ not contradict these. element carries a stable `_id`. The id **MUST** be unique within its collection and use the portable local-identifier grammar ([document-model.md §6](document-model.md)). Runtime/native/provider ids that - are not ACES-local declaration identities retain their owning contracts. + are not RAES-local declaration identities retain their owning contracts. References address elements by these ids ([references.md](references.md)). 2. **Enum sentinels.** An open enum carries a closed core of well-defined values plus the sentinels `unknown` and `other`, so an authored value can record diff --git a/specs/sdl/scientific-scenario-completeness.md b/specs/sdl/scientific-scenario-completeness.md index 3cd0a9cf5..1ecd16ccb 100644 --- a/specs/sdl/scientific-scenario-completeness.md +++ b/specs/sdl/scientific-scenario-completeness.md @@ -5,7 +5,7 @@ Status: **normative**. This specification defines the REV1 intended-use scope contract required by GOV-942. It answers which semantic concerns are required, may remain underspecified, or are excluded for a stated scenario-use claim, and joins that -stable taxonomy to a separately versioned assessment of what ACES delivers. +stable taxonomy to a separately versioned assessment of what RAES delivers. It does not change ordinary SDL validity. A document containing only `name` may be a valid SDL fragment while being unsuitable for deployment, participant diff --git a/specs/supply-chain/README.md b/specs/supply-chain/README.md index b7ff68099..fc9dc3bbf 100644 --- a/specs/supply-chain/README.md +++ b/specs/supply-chain/README.md @@ -1,7 +1,7 @@ # Supply Chain Specs Normative prose for the **Packaging & Supply Chain** wave, under the -[ACES SDL authority boundary](../authority/authority-boundary.yaml). Documents +[RAES SDL authority boundary](../authority/authority-boundary.yaml). Documents here are authoritative independent of any reference implementation. ## Contents diff --git a/specs/supply-chain/associated-artifact-manifests.md b/specs/supply-chain/associated-artifact-manifests.md index 0aa606a92..af72bc0ec 100644 --- a/specs/supply-chain/associated-artifact-manifests.md +++ b/specs/supply-chain/associated-artifact-manifests.md @@ -4,7 +4,7 @@ Status: normative Decision: [ADR-077](../../docs/decisions/adrs/adr-077-associated-artifact-manifest-boundary.md) -This specification defines the portable ACES contract for non-semantic +This specification defines the portable RAES contract for non-semantic artifacts associated with a scenario, sealed scenario snapshot, or experiment artifact. The normative machine-readable surface is `associated-artifact-manifest-v1` under @@ -148,5 +148,5 @@ promotion, retention, and use-time verification. They validate the parent and every staged payload, derive rather than trust the set digest, retain the manifest with verified bytes, and reverify before use when storage guarantees do not make that redundant. A caller-supplied package digest may be retained as -untrusted metadata, but cannot become ACES conformance or trust evidence unless +untrusted metadata, but cannot become RAES conformance or trust evidence unless it equals the validator-derived set digest. diff --git a/specs/supply-chain/reusable-asset-trust-integrity.md b/specs/supply-chain/reusable-asset-trust-integrity.md index d6ff4239b..4eb480c52 100644 --- a/specs/supply-chain/reusable-asset-trust-integrity.md +++ b/specs/supply-chain/reusable-asset-trust-integrity.md @@ -19,7 +19,7 @@ policy under separate implementation work. universal object. The ecosystem does not introduce a `TrustedAsset` abstraction, a second registry, or per-reference digest fields. Trust, authenticity, and integrity are expressed as a **declarative policy** that, per asset family, -requires specific **evidence classes**, each satisfied by an *existing* ACES +requires specific **evidence classes**, each satisfied by an *existing* RAES mechanism. Trust rests on three orthogonal axes; a policy MUST keep them distinct: @@ -33,7 +33,7 @@ Trust rests on three orthogonal axes; a policy MUST keep them distinct: ## 2. Evidence classes -| Evidence class | Meaning | Existing ACES mechanism | +| Evidence class | Meaning | Existing RAES mechanism | |---|---|---| | `integrity_digest` | Digest bound to canonical payload bytes | module `aces.lock.json` digest pins; scenario-snapshot binding; associated-artifact set digest; study-definition digest; controlled-vocabulary `source_digest`; manifest/config digests | | `authenticity_signature` | Signature by a trusted signer set | `RegistryTrustPolicy` signature verification (`_verify_signatures`) | diff --git a/tools/check_dsl_language_evaluation.py b/tools/check_dsl_language_evaluation.py index 0fd6e9698..52a062964 100644 --- a/tools/check_dsl_language_evaluation.py +++ b/tools/check_dsl_language_evaluation.py @@ -25,6 +25,8 @@ ) MANIFEST_PATH = "docs/research/dsl-language-evaluation/bundle-manifest.json" +_HISTORICAL_PACKAGE_PREFIX = "implementations/python/packages/aces_sdl" +_CURRENT_PACKAGE_PREFIX = "implementations/python/packages/raes" _MAX_FILE_BYTES = 2 * 1024 * 1024 _MAX_CATALOG_ITEMS = 128 _MAX_EXECUTION_RECORDS = 20_000 @@ -341,6 +343,15 @@ def _failure(rule_id: str, message: str, path: str | None = None) -> PolicyFailu return PolicyFailure(rule_id, message, path) +def _resolve_repository_artifact(repo_root: Path, artifact_path: str) -> Path | None: + """Resolve an immutable evidence locator through the SDL package move.""" + + resolved_path = artifact_path + if artifact_path == _HISTORICAL_PACKAGE_PREFIX or artifact_path.startswith(f"{_HISTORICAL_PACKAGE_PREFIX}/"): + resolved_path = f"{_CURRENT_PACKAGE_PREFIX}{artifact_path[len(_HISTORICAL_PACKAGE_PREFIX) :]}" + return safe_repo_path(repo_root, resolved_path) + + def _exact_keys( value: object, expected: set[str], @@ -1505,7 +1516,7 @@ def _validate_protocol( ) ) else: - resolved = safe_repo_path(repo_root, artifact_path) + resolved = _resolve_repository_artifact(repo_root, artifact_path) if resolved is None or not resolved.exists(): failures.append( _failure( @@ -1978,7 +1989,7 @@ def _validate_snapshot( ): continue artifact = surface["artifact"] - resolved = safe_repo_path(repo_root, artifact) if isinstance(artifact, str) else None + resolved = _resolve_repository_artifact(repo_root, artifact) if isinstance(artifact, str) else None if resolved is None or not resolved.exists(): failures.append( _failure( diff --git a/tools/check_example_library.py b/tools/check_example_library.py index 31ea2046c..d4df8f5ac 100644 --- a/tools/check_example_library.py +++ b/tools/check_example_library.py @@ -428,9 +428,9 @@ def _check_artifact_common( def _check_template_body(body: dict[str, Any], relative_path: str) -> list[PolicyFailure]: try: - from aces_sdl import parse_sdl + from raes import parse_sdl except ImportError as exc: # pragma: no cover - policy runs inside the project environment - return [_fail("example-library-template-import", f"could not import aces_sdl: {exc}", relative_path)] + return [_fail("example-library-template-import", f"could not import raes: {exc}", relative_path)] try: scenario = parse_sdl(yaml.safe_dump(body, sort_keys=False)) diff --git a/tools/check_formal_semantic_validation.py b/tools/check_formal_semantic_validation.py index ac56877fb..e0b95d577 100644 --- a/tools/check_formal_semantic_validation.py +++ b/tools/check_formal_semantic_validation.py @@ -315,7 +315,7 @@ def _diagnostic_payload(exc: Exception, repo_root: Path) -> object: def replay_case(repo_root: Path, case: Mapping[str, object]) -> dict[str, str | None]: """Replay one supported case through its declared production boundary.""" from aces_processor.compiler import compile_runtime_model - from aces_sdl import SDLError, instantiate_scenario, parse_sdl_file + from raes import SDLError, instantiate_scenario, parse_sdl_file fixture_value = case.get("fixture_path") fixture = safe_repo_path(repo_root, str(fixture_value)) if _nonempty_string(fixture_value) else None diff --git a/tools/check_json_artifacts.py b/tools/check_json_artifacts.py index 160230f7e..e348e3dce 100644 --- a/tools/check_json_artifacts.py +++ b/tools/check_json_artifacts.py @@ -25,7 +25,7 @@ "implementations/python/packages/aces_contracts/", "implementations/python/packages/aces_backend_protocols/", "implementations/python/packages/aces_processor/", - "implementations/python/packages/aces_sdl/", + "implementations/python/packages/raes/", "tools/generate_contract_schemas.py", ) diff --git a/tools/check_project_positioning.py b/tools/check_project_positioning.py new file mode 100644 index 000000000..c648d1ace --- /dev/null +++ b/tools/check_project_positioning.py @@ -0,0 +1,268 @@ +#!/usr/bin/env python3 +"""Validate the domain-neutral, evidence-bounded RAES positioning surfaces.""" + +from __future__ import annotations + +import argparse +import ast +import re +import sys +import tomllib +from pathlib import Path + +import yaml + +REPO_ROOT = Path(__file__).resolve().parents[1] +if str(REPO_ROOT) not in sys.path: + sys.path.insert(0, str(REPO_ROOT)) + +from tools.policy.common import ( # noqa: E402 + PolicyFailure, + apply_exceptions, + failures_to_json, + load_exceptions, + safe_repo_path, +) + +MAX_SURFACE_BYTES = 512_000 +RULE_SURFACE = "project-positioning-surface" +RULE_FRAMING = "project-positioning-framing" +RULE_DOMAINS = "project-positioning-domains" +RULE_CLAIM_BOUNDARY = "project-positioning-claim-boundary" +RULE_METADATA = "project-positioning-metadata" + +PRIMARY_ENTRYPOINTS = ( + "README.md", + "docs/index.md", + "docs/explain/getting-started.md", +) +SUPPORTING_DOCS = ( + "docs/explain/reference/glossary.md", + "docs/explain/reference/canonical-reference-map.md", + "docs/explain/sdl/index.md", + "docs/explain/sdl/runtime-architecture.md", + "examples/README.md", +) +APPLICATION_AREAS = ( + "cyber", + "ai security", + "ai safety", + "testing", + "research", + "evaluation", +) + + +def _read_text(repo_root: Path, relative_path: str) -> tuple[str | None, PolicyFailure | None]: + path = safe_repo_path(repo_root, relative_path) + if path is None or not path.is_file(): + return None, PolicyFailure(RULE_SURFACE, "required positioning surface is missing", relative_path) + try: + if path.stat().st_size > MAX_SURFACE_BYTES: + return None, PolicyFailure( + RULE_SURFACE, + f"positioning surface exceeds the {MAX_SURFACE_BYTES}-byte inspection limit", + relative_path, + ) + return path.read_text(encoding="utf-8"), None + except (OSError, UnicodeDecodeError): + return None, PolicyFailure( + RULE_SURFACE, + "positioning surface is not readable UTF-8 text", + relative_path, + ) + + +def _read_required(repo_root: Path, relative_path: str, failures: list[PolicyFailure]) -> str: + text, failure = _read_text(repo_root, relative_path) + if failure is not None: + failures.append(failure) + return "" + return text or "" + + +def _literal_assignment(source: str, name: str) -> str | None: + try: + tree = ast.parse(source) + except SyntaxError: + return None + for node in tree.body: + if not isinstance(node, (ast.Assign, ast.AnnAssign)): + continue + targets = node.targets if isinstance(node, ast.Assign) else [node.target] + if not any(isinstance(target, ast.Name) and target.id == name for target in targets): + continue + value = node.value + if isinstance(value, ast.Constant) and isinstance(value.value, str): + return value.value + return None + + +def _missing_terms(text: str, terms: tuple[str, ...]) -> list[str]: + normalized = re.sub(r"[\s-]+", " ", text.casefold()) + return [term for term in terms if re.sub(r"[\s-]+", " ", term.casefold()) not in normalized] + + +def _validate_entrypoints( + surfaces: dict[str, str], + failures: list[PolicyFailure], +) -> None: + full_name = "reproducible agentic environments system" + for relative_path in PRIMARY_ENTRYPOINTS: + text = surfaces[relative_path] + missing = _missing_terms(text, (full_name, "agentic environment")) + if missing: + failures.append( + PolicyFailure( + RULE_FRAMING, + "primary entrypoint must introduce RAES and agentic environments", + relative_path, + ) + ) + + for relative_path in SUPPORTING_DOCS: + if _missing_terms(surfaces[relative_path], ("agentic environment",)): + failures.append( + PolicyFailure( + RULE_FRAMING, + "supporting entrypoint must connect its subject to agentic environments", + relative_path, + ) + ) + + readme = surfaces["README.md"] + missing_areas = _missing_terms(readme, APPLICATION_AREAS) + if missing_areas or len(_missing_terms(readme, ("additional domains", "other domains"))) == 2: + failures.append( + PolicyFailure( + RULE_DOMAINS, + "README must present the named application areas as non-exhaustive", + "README.md", + ) + ) + + getting_started = surfaces["docs/explain/getting-started.md"] + required_boundaries = ( + "authored scenario", + "realized environment", + "bounded reproduction attempt", + "does not guarantee", + "exact replay", + ) + if _missing_terms(getting_started, required_boundaries): + failures.append( + PolicyFailure( + RULE_CLAIM_BOUNDARY, + "getting-started guidance must retain the bounded reproduction and nonclaim boundary", + "docs/explain/getting-started.md", + ) + ) + + glossary = surfaces["docs/explain/reference/glossary.md"] + if _missing_terms(glossary, ("**RAES**", "**Agentic environment**", "**Reproducibility support**")): + failures.append( + PolicyFailure( + RULE_FRAMING, + "glossary must define RAES, agentic environment, and reproducibility support", + "docs/explain/reference/glossary.md", + ) + ) + + +def _validate_structured_metadata(repo_root: Path, failures: list[PolicyFailure]) -> None: + pyproject_path = "implementations/python/pyproject.toml" + pyproject_text = _read_required(repo_root, pyproject_path, failures) + if pyproject_text: + try: + project = tomllib.loads(pyproject_text).get("project", {}) + description = project.get("description", "") if isinstance(project, dict) else "" + except (tomllib.TOMLDecodeError, TypeError): + description = "" + if not isinstance(description, str) or "reproducible agentic environments" not in description.casefold(): + failures.append( + PolicyFailure( + RULE_METADATA, + "package description must identify reproducible agentic environments", + pyproject_path, + ) + ) + + conf_path = "docs/conf.py" + conf_text = _read_required(repo_root, conf_path, failures) + project_name = _literal_assignment(conf_text, "project") + html_title = _literal_assignment(conf_text, "html_title") + if project_name != "Reproducible Agentic Environments System" or html_title != "RAES Documentation": + failures.append( + PolicyFailure( + RULE_METADATA, + "Sphinx metadata must identify the RAES system and documentation surface", + conf_path, + ) + ) + + catalog_path = "examples/library/catalog.yaml" + catalog_text = _read_required(repo_root, catalog_path, failures) + try: + catalog = yaml.safe_load(catalog_text) + description = catalog.get("description", "") if isinstance(catalog, dict) else "" + except yaml.YAMLError: + description = "" + if not isinstance(description, str) or _missing_terms(description, ("domain-neutral", "agentic environment")): + failures.append( + PolicyFailure( + RULE_METADATA, + "example catalog description must identify its domain-neutral agentic-environment role", + catalog_path, + ) + ) + + +def _validate_mcp_metadata(repo_root: Path, failures: list[PolicyFailure]) -> None: + assignments = ( + ("implementations/python/packages/aces_mcp/server.py", "_INSTRUCTIONS"), + ( + "implementations/python/packages/aces_mcp/tools/reference.py", + "_OVERVIEW_TEXT", + ), + ) + for relative_path, assignment in assignments: + source = _read_required(repo_root, relative_path, failures) + value = _literal_assignment(source, assignment) + if not value or _missing_terms(value, ("agentic environment", "RAES SDL", "authored scenario")): + failures.append( + PolicyFailure( + RULE_METADATA, + "MCP positioning must distinguish RAES agentic environments from authored RAES SDL scenarios", + relative_path, + ) + ) + + +def validate_project_positioning(repo_root: Path) -> list[PolicyFailure]: + failures: list[PolicyFailure] = [] + surfaces = { + relative_path: _read_required(repo_root, relative_path, failures) + for relative_path in (*PRIMARY_ENTRYPOINTS, *SUPPORTING_DOCS) + } + _validate_entrypoints(surfaces, failures) + _validate_structured_metadata(repo_root, failures) + _validate_mcp_metadata(repo_root, failures) + return failures + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--json", action="store_true", help="Emit failures as JSON.") + args = parser.parse_args() + + failures = apply_exceptions(validate_project_positioning(REPO_ROOT), load_exceptions(REPO_ROOT)) + if args.json: + print(failures_to_json(failures)) + else: + for failure in failures: + print(failure.render()) + return 1 if failures else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/check_related_work_comparison.py b/tools/check_related_work_comparison.py index 0e4707489..46420c735 100644 --- a/tools/check_related_work_comparison.py +++ b/tools/check_related_work_comparison.py @@ -27,6 +27,8 @@ PUBLICATION_PATH = "docs/explain/sdl/related-work-comparison.md" PUBLICATION_START = "" PUBLICATION_END = "" +_HISTORICAL_PACKAGE_PREFIX = "implementations/python/packages/aces_sdl" +_CURRENT_PACKAGE_PREFIX = "implementations/python/packages/raes" EXPECTED_AXIS_IDS = { "expressive-breadth", @@ -234,6 +236,15 @@ def _failure(rule_id: str, message: str, path: str | None = None) -> PolicyFailu return PolicyFailure(rule_id, message, path) +def _resolve_repository_artifact(repo_root: Path, artifact_path: str) -> Path | None: + """Resolve an immutable evidence locator through the SDL package move.""" + + resolved_path = artifact_path + if artifact_path == _HISTORICAL_PACKAGE_PREFIX or artifact_path.startswith(f"{_HISTORICAL_PACKAGE_PREFIX}/"): + resolved_path = f"{_CURRENT_PACKAGE_PREFIX}{artifact_path[len(_HISTORICAL_PACKAGE_PREFIX) :]}" + return safe_repo_path(repo_root, resolved_path) + + def load_bundle( repo_root: Path = REPO_ROOT, ) -> tuple[dict[str, object], dict[str, object], dict[str, object]]: @@ -512,7 +523,7 @@ def _validate_sources( ) ) elif source["kind"] == "repository-internal" and validate_paths: - resolved = safe_repo_path(repo_root, artifact_path) + resolved = _resolve_repository_artifact(repo_root, artifact_path) if resolved is None or not resolved.exists(): failures.append( _failure( @@ -1396,6 +1407,12 @@ def _display_score(score: int | None) -> str: return "oos" if score is None else str(score) +def _current_project_name(value: str) -> str: + """Render frozen ACES evidence with the current RAES project name.""" + + return re.sub(r"\bACES\b", "RAES", value) + + def render_publication( protocol: Mapping[str, object], snapshot: Mapping[str, object], @@ -1408,14 +1425,14 @@ def render_publication( observations = snapshot["observations"] score_by_key = {(item["system_id"], item["axis_id"]): item["score"] for item in observations} system_ids = [system["system_id"] for system in systems] - system_name_by_id = {system["system_id"]: system["name"] for system in systems} + system_name_by_id = {system["system_id"]: _current_project_name(system["name"]) for system in systems} lines = [ PUBLICATION_START, f"Frozen snapshot: `{snapshot['snapshot_id']}` under protocol `{protocol['revision']}`.", "Scores are axis-specific ordinal evidence levels: 0 absent, 1 limited, 2 substantial, 3 strong;", "`oos` means the axis is outside the system's declared scope and is never treated as zero.", "", - "| Axis | " + " | ".join(system["name"] for system in systems) + " |", + "| Axis | " + " | ".join(_current_project_name(system["name"]) for system in systems) + " |", "| --- | " + " | ".join("---" for _ in systems) + " |", ] for axis in axes: @@ -1425,7 +1442,7 @@ def render_publication( for claim in analysis["claims"]: lines.append( f"- **{claim['kind'].replace('-', ' ').title()}.** Evidence status: " - f"`{claim['evidence_status']}`. {claim['statement']}" + f"`{claim['evidence_status']}`. {_current_project_name(claim['statement'])}" ) lines.extend(["", "### Sensitivity of scenario-authoring rankings", ""]) lines.append("| Weight profile | First-ranked system | Recorded totals |") @@ -1435,7 +1452,7 @@ def render_publication( f"{system_name_by_id[system_id]}={profile['totals'][system_id]}" for system_id in profile["ranking"] ) lines.append(f"| `{profile['profile_id']}` | {system_name_by_id[profile['ranking'][0]]} | {totals} |") - lines.extend(["", "### ACES delivery limits retained in the matrix", ""]) + lines.extend(["", "### RAES delivery limits retained in the matrix", ""]) axis_by_id = {axis["axis_id"]: axis["label"] for axis in axes} for observation in observations: if observation["system_id"] != "aces" or observation["score"] == 3: diff --git a/tools/check_sdl_catalog_parity.py b/tools/check_sdl_catalog_parity.py index 4971d5841..ed1905415 100644 --- a/tools/check_sdl_catalog_parity.py +++ b/tools/check_sdl_catalog_parity.py @@ -28,15 +28,15 @@ if str(import_root) not in sys.path: sys.path.insert(0, str(import_root)) -from aces_sdl._language_metadata import REFERENCE_COMPLETION_TARGETS -from aces_sdl._mapping_scopes import HASHMAP_SECTIONS -from aces_sdl._module_symbols import HASHMAP_SECTIONS as MODULE_HASHMAP_SECTIONS -from aces_sdl._runtime_service_families import ( +from raes._language_metadata import REFERENCE_COMPLETION_TARGETS +from raes._mapping_scopes import HASHMAP_SECTIONS +from raes._module_symbols import HASHMAP_SECTIONS as MODULE_HASHMAP_SECTIONS +from raes._runtime_service_families import ( RUNTIME_SERVICE_FAMILIES, RuntimeReferenceChild, ) -from aces_sdl.phase_contracts import ExpansionProvenance, InstantiationProvenance -from aces_sdl.scenario import ( +from raes.phase_contracts import ExpansionProvenance, InstantiationProvenance +from raes.scenario import ( ExpandedScenario, InstantiatedScenario, Scenario, @@ -82,88 +82,77 @@ _METADATA_FIELDS = frozenset({"name", "version", "description"}) _COMPOSITION_FIELDS = frozenset({"module", "imports", "realization"}) -_NODE_VALIDATOR = "[node validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py)" +_NODE_VALIDATOR = "[node validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py)" _INFRASTRUCTURE_VALIDATOR = ( - "[infrastructure validator](../../implementations/python/packages/aces_sdl/validator/_nodes_infra_network.py)" -) -_SECTION_VALIDATOR = "[section validator](../../implementations/python/packages/aces_sdl/validator/_sections.py)" -_CONTENT_VALIDATOR = ( - "[content validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py)" + "[infrastructure validator](../../implementations/python/packages/raes/validator/_nodes_infra_network.py)" ) +_SECTION_VALIDATOR = "[section validator](../../implementations/python/packages/raes/validator/_sections.py)" +_CONTENT_VALIDATOR = "[content validator](../../implementations/python/packages/raes/validator/_content_objectives.py)" _SERVICE_MATERIALIZATION_VALIDATOR = ( "[service materialization validator]" - "(../../implementations/python/packages/aces_sdl/validator/_service_materialization.py)" + "(../../implementations/python/packages/raes/validator/_service_materialization.py)" ) _CONTENT_COMPILER = "[content compiler](../../implementations/python/packages/aces_processor/compiler/placement.py)" -_ACCOUNT_VALIDATOR = ( - "[account validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py)" -) -_STATEFUL_MODEL = "[scenario model](../../implementations/python/packages/aces_sdl/scenario.py)" +_ACCOUNT_VALIDATOR = "[account validator](../../implementations/python/packages/raes/validator/_content_objectives.py)" +_STATEFUL_MODEL = "[scenario model](../../implementations/python/packages/raes/scenario.py)" _RELATIONSHIP_VALIDATOR = ( - "[relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships.py)" + "[relationship validator](../../implementations/python/packages/raes/validator/_relationships.py)" ) _RELATIONSHIP_PROXY_VALIDATOR = ( - "[proxy relationship validator](../../implementations/python/packages/aces_sdl/validator/_relationships_proxy.py)" + "[proxy relationship validator](../../implementations/python/packages/raes/validator/_relationships_proxy.py)" ) -_MAIL_VALIDATOR = "[mail validator](../../implementations/python/packages/aces_sdl/validator/_runtime_mail.py)" +_MAIL_VALIDATOR = "[mail validator](../../implementations/python/packages/raes/validator/_runtime_mail.py)" _DOMAIN_TOPOLOGY_SEMANTICS = ( - "[domain topology semantics](../../implementations/python/packages/aces_sdl/semantics/domain_topology.py)" + "[domain topology semantics](../../implementations/python/packages/raes/semantics/domain_topology.py)" ) _ENTERPRISE_IDENTITY_SEMANTICS = ( - "[enterprise identity semantics](../../implementations/python/packages/aces_sdl/semantics/enterprise_identity.py)" + "[enterprise identity semantics](../../implementations/python/packages/raes/semantics/enterprise_identity.py)" ) _DEPLOYMENT_TENANCY_SEMANTICS = ( - "[deployment tenancy semantics](../../implementations/python/packages/aces_sdl/semantics/deployment_tenancy.py)" + "[deployment tenancy semantics](../../implementations/python/packages/raes/semantics/deployment_tenancy.py)" ) _PARTICIPANT_VALIDATOR = ( - "[participant validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py)" + "[participant validator](../../implementations/python/packages/raes/validator/_content_objectives.py)" ) _PARTICIPANT_SEMANTICS = ( - "[participant semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py)" + "[participant semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py)" ) _PARTICIPANT_INTERACTIVE_ACCESS_SEMANTICS = ( "[participant interactive-access semantics]" - "(../../implementations/python/packages/aces_sdl/semantics/participant_interactive_access.py)" -) -_OUTCOME_SEMANTICS = ( - "[outcome semantics](../../implementations/python/packages/aces_sdl/semantics/participant_outcome.py)" + "(../../implementations/python/packages/raes/semantics/participant_interactive_access.py)" ) +_OUTCOME_SEMANTICS = "[outcome semantics](../../implementations/python/packages/raes/semantics/participant_outcome.py)" _BEHAVIOR_SEMANTICS = ( - "[behavior semantics](../../implementations/python/packages/aces_sdl/semantics/participant_behavior.py)" + "[behavior semantics](../../implementations/python/packages/raes/semantics/participant_behavior.py)" ) _BEHAVIOR_VALIDATOR = ( - "[behavior validator](../../implementations/python/packages/aces_sdl/validator/_content_objectives.py)" + "[behavior validator](../../implementations/python/packages/raes/validator/_content_objectives.py)" ) _MIXED_CONTROL_VALIDATOR = ( - "[behavior validator](../../implementations/python/packages/aces_sdl/validator/_mixed_control.py)" + "[behavior validator](../../implementations/python/packages/raes/validator/_mixed_control.py)" ) _TOOL_AFFORDANCE_VALIDATOR = ( - "[tool-affordance validator]" - "(../../implementations/python/packages/aces_sdl/validator/_participant_tool_affordances.py)" + "[tool-affordance validator](../../implementations/python/packages/raes/validator/_participant_tool_affordances.py)" ) -_BEHAVIOR_MODEL = "[behavior model](../../implementations/python/packages/aces_sdl/participant_behavior.py)" +_BEHAVIOR_MODEL = "[behavior model](../../implementations/python/packages/raes/participant_behavior.py)" _MIXED_CONTROL_MODEL = ( - "[behavior model](../../implementations/python/packages/aces_sdl/participant_behavior_specification.py)" + "[behavior model](../../implementations/python/packages/raes/participant_behavior_specification.py)" ) _EVIDENCE_VALIDATOR = ( - "[evidence validator](../../implementations/python/packages/aces_sdl/validator/_evidence_requirements.py)" + "[evidence validator](../../implementations/python/packages/raes/validator/_evidence_requirements.py)" ) _OBJECTIVE_SEMANTICS = ( - "[objective semantics](../../implementations/python/packages/aces_sdl/semantics/objective_semantics.py)" -) -_WORKFLOW_SEMANTICS = ( - "[workflow validator](../../implementations/python/packages/aces_sdl/validator/_workflows_verify.py)" + "[objective semantics](../../implementations/python/packages/raes/semantics/objective_semantics.py)" ) +_WORKFLOW_SEMANTICS = "[workflow validator](../../implementations/python/packages/raes/validator/_workflows_verify.py)" _PROPOSITION_VALIDATOR = ( - "[proposition validator](../../implementations/python/packages/aces_sdl/validator/_propositions.py)" + "[proposition validator](../../implementations/python/packages/raes/validator/_propositions.py)" ) -_VARIATION_VALIDATOR = "[variation validator](../../implementations/python/packages/aces_sdl/validator/_variation.py)" +_VARIATION_VALIDATOR = "[variation validator](../../implementations/python/packages/raes/validator/_variation.py)" _PARTICIPANT_TEMPORAL_MODEL = ( - "[temporal model](../../implementations/python/packages/aces_sdl/participant_temporal_semantics.py)" -) -_TIME_MODEL_VALIDATOR = ( - "[time-model validator](../../implementations/python/packages/aces_sdl/validator/_time_model.py)" + "[temporal model](../../implementations/python/packages/raes/participant_temporal_semantics.py)" ) +_TIME_MODEL_VALIDATOR = "[time-model validator](../../implementations/python/packages/raes/validator/_time_model.py)" _SEMANTIC = "semantic validation" _STRUCTURAL = "structural validation" _DANGLING = "fatal dangling or ambiguous" diff --git a/tools/check_sdl_lineage.py b/tools/check_sdl_lineage.py index bbe84496c..c6d09c263 100644 --- a/tools/check_sdl_lineage.py +++ b/tools/check_sdl_lineage.py @@ -15,8 +15,8 @@ sys.path.insert(0, str(REPO_ROOT)) from aces_contracts.provenance import LineageDisposition, SDLLineageLedgerModel -from aces_sdl._runtime_service_families import RUNTIME_SERVICE_FAMILIES from pydantic import ValidationError +from raes._runtime_service_families import RUNTIME_SERVICE_FAMILIES from tools.check_schema_publication import load_schema_publication_catalog from tools.policy.common import PolicyFailure, safe_repo_path @@ -31,7 +31,7 @@ "docs/explain/sdl/lineage.md", "docs/explain/sdl/related-work-comparison.md", "docs/explain/sdl/validation.md", - "implementations/python/packages/aces_sdl/__init__.py", + "implementations/python/packages/raes/__init__.py", ) DOI_LINK_RE = re.compile( r"\[([^\]]+)\]\(https://doi\.org/(10\.\d{4,9}/[^)\s]+)\)", diff --git a/tools/check_semantic_coverage.py b/tools/check_semantic_coverage.py index 03f58a151..c617d51f3 100644 --- a/tools/check_semantic_coverage.py +++ b/tools/check_semantic_coverage.py @@ -31,7 +31,7 @@ ``from package import submodule``, the ``aces.*`` compatibility wrappers, and package re-exports written either absolutely (``from pkg.core import name``) or with the idiomatic relative form (``from .core import name``); a bare - ``import aces_sdl`` does not count as evidence for every ``aces_sdl.*`` + ``import raes`` does not count as evidence for every ``raes.*`` artifact. The check is row-level: one resolvable import across the row's named tests satisfies it; * every ``test_*`` function in an ``active`` row's named test files contains at @@ -427,7 +427,7 @@ def _check_adr_links_note(repo_root: Path) -> list[PolicyFailure]: # ``from package import submodule``, the ``aces.*`` compatibility wrappers, and # explicit ``from M import name`` package re-exports — so an honest indirect # import still counts. It deliberately does NOT import or execute any module, and -# a bare ``import aces_sdl`` is not treated as evidence for every ``aces_sdl.*`` +# a bare ``import raes`` is not treated as evidence for every ``raes.*`` # artifact. Dynamic ``__getattr__`` re-exports in a canonical package ``__init__`` # are not resolved; those symbols remain reachable through the compat wrappers # (which are resolved), and the gate is row-level so one resolvable import per diff --git a/tools/check_specification_coverage.py b/tools/check_specification_coverage.py index 439bb7f5a..531ac37a0 100644 --- a/tools/check_specification_coverage.py +++ b/tools/check_specification_coverage.py @@ -44,6 +44,9 @@ IMPLEMENTATION_SURFACE_PATHS = { "contract-models": "implementations/python/packages/aces_contracts", "processor-pipeline": "implementations/python/packages/aces_processor", + "sdl-pipeline": "implementations/python/packages/raes", +} +HISTORICAL_IMPLEMENTATION_SURFACE_PATHS = { "sdl-pipeline": "implementations/python/packages/aces_sdl", } @@ -752,7 +755,11 @@ def _validate_implementation_surfaces( continue surface_id = surface.get("surface_id") expected_path = IMPLEMENTATION_SURFACE_PATHS.get(surface_id) - if surface.get("path") != expected_path: + recorded_path = surface.get("path") + if recorded_path not in { + expected_path, + HISTORICAL_IMPLEMENTATION_SURFACE_PATHS.get(surface_id), + }: failures.append( _failure( "specification-coverage-implementation-identity", @@ -785,7 +792,7 @@ def _validate_implementation_surfaces( def _execute_artifact(repo_root: Path, kind: str, path: Path) -> dict[str, object]: if kind == "sdl": from aces_processor.compiler import compile_runtime_model - from aces_sdl import admit_instantiated_scenario, instantiate_scenario, parse_sdl_file + from raes import admit_instantiated_scenario, instantiate_scenario, parse_sdl_file authored = parse_sdl_file(path) instantiated = instantiate_scenario(authored) diff --git a/tools/policy/adr_policy.yaml b/tools/policy/adr_policy.yaml index d0bc6d0c2..a2183b225 100644 --- a/tools/policy/adr_policy.yaml +++ b/tools/policy/adr_policy.yaml @@ -48,10 +48,10 @@ adr_index: index_path: docs/decisions/adrs/README.md adr_glob: docs/decisions/adrs/adr-*.md -# ADR-015: SDL is the lower layer; aces_sdl must not import aces_processor. +# ADR-015: SDL is the lower layer; raes must not import aces_processor. layering_rules: - id: aces_sdl_no_aces_processor - scope_root: implementations/python/packages/aces_sdl + scope_root: implementations/python/packages/raes forbidden_top_level: aces_processor # ADR-036 / MOD-001: explicit module ownership boundaries. @@ -60,8 +60,8 @@ module_boundaries: package_coverage_roots: - implementations/python/packages modules: - - id: aces_sdl - root: implementations/python/packages/aces_sdl + - id: raes + root: implementations/python/packages/raes allowed_top_level_imports: - aces_contracts forbidden_import_prefixes: @@ -77,7 +77,7 @@ module_boundaries: allowed_top_level_imports: - aces_backend_protocols - aces_contracts - - aces_sdl + - raes forbidden_import_prefixes: - aces_runtime - aces_backend_stubs @@ -125,7 +125,7 @@ module_boundaries: - aces_conformance - aces_mcp - aces_processor - - aces_sdl + - raes public_import_prefixes: aces_runtime: - aces_runtime.registry @@ -142,7 +142,7 @@ module_boundaries: - aces_mcp - aces_processor - aces_reference_backend - - aces_sdl + - raes public_import_prefixes: aces_runtime: - aces_runtime.registry @@ -158,7 +158,7 @@ module_boundaries: - aces_backend_protocols - aces_contracts - aces_runtime - - aces_sdl + - raes forbidden_import_prefixes: - aces_backend_stubs - aces_cli @@ -178,8 +178,8 @@ module_boundaries: - aces_runtime.control_plane - aces_runtime.manager - aces_runtime.registry - aces_sdl: - - aces_sdl.parser + raes: + - raes.parser - id: aces_conformance root: implementations/python/packages/aces_conformance allowed_top_level_imports: @@ -188,7 +188,7 @@ module_boundaries: - aces_contracts - aces_processor - aces_runtime - - aces_sdl + - raes public_import_prefixes: aces_processor: - aces_processor.compiler @@ -208,7 +208,7 @@ module_boundaries: - aces_conformance - aces_operations - aces_processor - - aces_sdl + - raes forbidden_import_prefixes: - aces_runtime public_import_prefixes: @@ -236,7 +236,7 @@ module_boundaries: - aces_backend_stubs - aces_contracts - aces_processor - - aces_sdl + - raes forbidden_import_prefixes: - aces_runtime public_import_prefixes: @@ -248,7 +248,7 @@ module_boundaries: - id: aces_contracts root: implementations/python/packages/aces_contracts allowed_top_level_imports: - - aces_sdl + - raes # ADR-015: non-test source files under packages/ cap at 500 lines (aligned # with SonarCloud S104; lowered from 600 per the 2026-07-12 amendment / #561). diff --git a/tools/policy/oversized_allowlist.yaml b/tools/policy/oversized_allowlist.yaml index e4f2e32ab..2e5daee37 100644 --- a/tools/policy/oversized_allowlist.yaml +++ b/tools/policy/oversized_allowlist.yaml @@ -17,11 +17,11 @@ files: - implementations/python/packages/aces_runtime/control_plane_api.py - implementations/python/packages/aces_runtime/control_plane.py - implementations/python/packages/aces_runtime/workflow_result_contract_checks.py - - implementations/python/packages/aces_sdl/composition.py - - implementations/python/packages/aces_sdl/module_registry.py - - implementations/python/packages/aces_sdl/orchestration.py - - implementations/python/packages/aces_sdl/participant_behavior.py - - implementations/python/packages/aces_sdl/runtime_mail_service.py - - implementations/python/packages/aces_sdl/runtime_security_monitoring.py - - implementations/python/packages/aces_sdl/semantics/objective_semantics.py - - implementations/python/packages/aces_sdl/semantics/participant_behavior.py + - implementations/python/packages/raes/composition.py + - implementations/python/packages/raes/module_registry.py + - implementations/python/packages/raes/orchestration.py + - implementations/python/packages/raes/participant_behavior.py + - implementations/python/packages/raes/runtime_mail_service.py + - implementations/python/packages/raes/runtime_security_monitoring.py + - implementations/python/packages/raes/semantics/objective_semantics.py + - implementations/python/packages/raes/semantics/participant_behavior.py diff --git a/tools/policy/repo_policy.py b/tools/policy/repo_policy.py index 0b8c75b8e..747bc9225 100644 --- a/tools/policy/repo_policy.py +++ b/tools/policy/repo_policy.py @@ -117,7 +117,7 @@ def structural_runner(input_document: dict) -> list[PolicyFailure]: # ADR-015: SDL→processor layering rule + 500-line source-file cap. # # These two gates catch unintentional regressions in normal contributions: -# a developer who accidentally writes `import aces_processor` in `aces_sdl/`, +# a developer who accidentally writes `import aces_processor` in `raes/`, # or one who pushes a >500-line file, or a split PR that forgets to drain # its allowlist entry. The policy and its YAML config are PR-mutable; PR # review (not this code) defends against deliberate weakening. See ADR-015. @@ -155,14 +155,14 @@ def structural_runner(input_document: dict) -> list[PolicyFailure]: "implementations/python/packages/aces_runtime/control_plane.py", "implementations/python/packages/aces_runtime/control_plane_api.py", "implementations/python/packages/aces_runtime/workflow_result_contract_checks.py", - "implementations/python/packages/aces_sdl/composition.py", - "implementations/python/packages/aces_sdl/module_registry.py", - "implementations/python/packages/aces_sdl/orchestration.py", - "implementations/python/packages/aces_sdl/participant_behavior.py", - "implementations/python/packages/aces_sdl/runtime_mail_service.py", - "implementations/python/packages/aces_sdl/runtime_security_monitoring.py", - "implementations/python/packages/aces_sdl/semantics/objective_semantics.py", - "implementations/python/packages/aces_sdl/semantics/participant_behavior.py", + "implementations/python/packages/raes/composition.py", + "implementations/python/packages/raes/module_registry.py", + "implementations/python/packages/raes/orchestration.py", + "implementations/python/packages/raes/participant_behavior.py", + "implementations/python/packages/raes/runtime_mail_service.py", + "implementations/python/packages/raes/runtime_security_monitoring.py", + "implementations/python/packages/raes/semantics/objective_semantics.py", + "implementations/python/packages/raes/semantics/participant_behavior.py", } ) diff --git a/tools/policy/requirement_order.yaml b/tools/policy/requirement_order.yaml index 334223ff0..9e22645b3 100644 --- a/tools/policy/requirement_order.yaml +++ b/tools/policy/requirement_order.yaml @@ -67,6 +67,12 @@ phases: - id: project-identity-migration requirements: - GOV-866 + - GOV-884 + - id: python-import-migration + requirements: + - MOD-884 + blocked_until: + - project-identity-migration - id: modularity-initiative requirements: - MOD-001 @@ -127,7 +133,7 @@ ownership: - implementations/python/packages/aces_backend_stubs - implementations/python/packages/aces_contracts - implementations/python/packages/aces_processor - - implementations/python/packages/aces_sdl + - implementations/python/packages/raes - implementations/python/tests - specs/formal/participant-semantics - specs/formal/sdl-phases @@ -176,7 +182,7 @@ ownership: - contracts/schemas/sdl - docs/explain/reference - implementations/python/packages/aces_processor - - implementations/python/packages/aces_sdl + - implementations/python/packages/raes - implementations/python/tests - specs/formal - CHANGELOG.md @@ -202,12 +208,28 @@ ownership: - implementations/python/packages/aces_runtime/control_plane_api.py - implementations/python/tests/test_mcp_server.py - implementations/python/tests/test_version_classification.py + - implementations/python/tests/test_project_positioning.py - specs/README.md - specs/agent-guidance - specs/sdl/README.md - tools/policy/requirement_order.yaml + python-import-migration: + - README.md + - contracts/schema-publication + - contracts/schema-publication-manifest.json + - contracts/schemas + - docs + - examples + - implementations/python/hatch_build.py + - implementations/python/packages + - implementations/python/pyproject.toml + - implementations/python/src/aces + - implementations/python/tests + - noxfile.py + - specs + - tools modularity-initiative: - - implementations/python/packages/aces_sdl + - implementations/python/packages/raes - implementations/python/packages/aces_processor - implementations/python/packages/aces_contracts - implementations/python/packages/aces_conformance