Skip to content

feat: enforce portable SDL identifiers - #736

Merged
Brad-Edwards merged 13 commits into
devfrom
723-stable-sdl-identifiers
Jul 12, 2026
Merged

feat: enforce portable SDL identifiers#736
Brad-Edwards merged 13 commits into
devfrom
723-stable-sdl-identifiers

Conversation

@Brad-Edwards

Copy link
Copy Markdown
Collaborator

Summary

Define and enforce one portable, exact SDL identity contract from authoring through composition, compilation, planning, runtime state, and backend realization, with explicit standards lineage and no claim that ACES addresses are URIs or that this identifier layer establishes behavioral bisimulation.

Requirement UIDs

  • DSL-101
  • DSL-102
  • SEM-205

Related Issues

Closes #723

ADR Impact

  • ADR-076

Changes

  • Add lowercase ASCII local identifiers, structured qualified names, explicit module namespaces, a typed collision-preserving declaration index, exact reference resolution, and aggregate composition budgets.
  • Carry compiler-owned canonical addresses through planning and snapshots; reject endpoint-domain, resource-type, dependency, result, and key/address incoherence before execution.
  • Derive bounded provider names deterministically from complete canonical addresses and remove last-segment identity aliases in reference and libvirt realization paths.
  • Align authoring tools, language services, schemas, examples, diagnostics, normative SDL specifications, the FM ledger, and accepted ADR-076 with the same identity model.
  • Add property, differential, schema/model parity, composition, language-service, processor, runtime, and backend round-trip tests for the identity invariants.

Test Plan

  • Unit tests pass (make test)
  • Integration tests pass if applicable (make integration)
  • make check passes (Spotless, SpotBugs, Error Prone, Checkstyle, JaCoCo)
  • No coverage regression

Canonical verification passed: 3,277 tests passed, 1 skipped, 41 deselected; 92% coverage; 31 integration tests; schema/catalog/policy checks and Sphinx documentation build passed. Pre-commit, two core-review cycles, final GRC screening, and test-quality review are clean.

Ground Control Checks

  • make policy passes
  • gc_evaluate_quality_gates passes or is unchanged by this repo-only change
  • gc_run_sweep reviewed; findings fixed or recorded with rationale

Traceability

  • IMPLEMENTS: DSL-101 <- aces_sdl identifier validation, variable instantiation, and phase schemas, DSL-102 <- typed declaration index, exact reference resolution, composition namespaces, and compiler address collision checks, SEM-205 <- compiler, plan, snapshot, control-plane, backend, and provider-name address preservation
  • TESTS: DSL-101 <- implementations/python/tests/test_sdl_identifiers.py and source/parser/schema parity tests, DSL-102 <- identifier injectivity, collision provenance, composition, language-service, validator, and processor tests, SEM-205 <- runtime control-plane, planner, reference backend, OCI, and libvirt realization tests

Checklist

  • Code follows project coding standards (docs/CODING_STANDARDS.md)
  • No business logic in API layer
  • Domain layer has no framework imports
  • Envers @Audited on new entities if applicable
  • Changelog is generated by release-please; feature PRs add no fragment
  • Architectural docs updated if stack, package structure, or key behaviors changed

Documentation

Updated: see diff.

@Brad-Edwards
Brad-Edwards changed the base branch from 722-normative-sdl-catalogs to dev July 11, 2026 23:25
@pulumi

pulumi Bot commented Jul 11, 2026

Copy link
Copy Markdown

⚠️ Pulumi could not deploy preview(s) for this pull request because GitHub reports it is not mergeable (mergeable state: dirty). This usually means the branch has merge conflicts with its base branch. Resolve the conflicts and push a new commit to retry.

@Brad-Edwards
Brad-Edwards changed the base branch from dev to 722-normative-sdl-catalogs July 11, 2026 23:28
@Brad-Edwards
Brad-Edwards changed the base branch from 722-normative-sdl-catalogs to dev July 11, 2026 23:29
@Brad-Edwards
Brad-Edwards changed the base branch from dev to 722-normative-sdl-catalogs July 11, 2026 23:32
@Brad-Edwards
Brad-Edwards changed the base branch from 722-normative-sdl-catalogs to dev July 11, 2026 23:32
@Brad-Edwards
Brad-Edwards changed the base branch from dev to 722-normative-sdl-catalogs July 11, 2026 23:32
…iers

# Conflicts:
#	contracts/schema-publication-manifest.json
#	implementations/python/packages/aces_contracts/planning.py
#	implementations/python/packages/aces_contracts/runtime_state.py
Base automatically changed from 722-normative-sdl-catalogs to 721-canonical-sdl-yaml July 11, 2026 23:46
@Brad-Edwards
Brad-Edwards changed the base branch from 721-canonical-sdl-yaml to dev July 11, 2026 23:52
@Brad-Edwards
Brad-Edwards changed the base branch from dev to 721-canonical-sdl-yaml July 11, 2026 23:56
Base automatically changed from 721-canonical-sdl-yaml to dev July 12, 2026 00:20
…iers

# Conflicts:
#	contracts/schema-publication-manifest.json
#	docs/explain/sdl/parser.md
#	examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml
#	examples/scenarios/port-authority-surge-response.sdl.yaml
#	examples/scenarios/satcom-release-poisoning.sdl.yaml
#	implementations/python/packages/aces_backend_libvirt/techvault_native.py
#	implementations/python/packages/aces_sdl/__init__.py
#	implementations/python/packages/aces_sdl/_reference_targetability.py
#	implementations/python/packages/aces_sdl/_source_profile.py
#	implementations/python/packages/aces_sdl/_yaml_loader.py
#	implementations/python/packages/aces_sdl/composition.py
#	implementations/python/packages/aces_sdl/parser.py
#	implementations/python/packages/aces_sdl/scenario.py
#	implementations/python/packages/aces_sdl/validator/_core.py
#	implementations/python/tests/test_language_service.py
#	implementations/python/tests/test_runtime_models.py
#	implementations/python/tests/test_sdl_canonicalization.py
#	implementations/python/tests/test_sdl_format_cli.py
#	implementations/python/tests/test_sdl_parser.py
#	implementations/python/tests/test_sdl_source_format.py
#	implementations/python/tests/test_yaml_mapping_keys.py
#	specs/sdl/diagnostics.md
#	specs/sdl/document-model.md
@Brad-Edwards
Brad-Edwards merged commit 40af65b into dev Jul 12, 2026
9 checks passed
@Brad-Edwards
Brad-Edwards deleted the 723-stable-sdl-identifiers branch July 12, 2026 02:41
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant