Repo: the standalone solmara-lab repo (tracked here until it has a remote). Found during the 2026-07-07 YAML config audit.
Context
Default service ports (43xx family, 54329, 63799) and purpose URIs (https://id.registrystack.org/solmara/purpose/...) are hardcoded independently in .env.example, compose.yaml, scenarios/service_config.py, perf/k6/*.js, and requests/registry-lab/environments/Local Compose.bru (URIs additionally in ministries/*/manifest/fragment.yaml, notaries/*.yaml, metadata/assembly.yaml, and the wave manifest). Nothing cross-checks them; a port or URI change requires touching five-plus files and CI will not notice a miss.
Scope
Pick a cheap mechanism: a single defaults table that generates the Bruno environment and k6 defaults, or a lint that cross-checks the literals across surfaces. Full templating is overkill; drift detection is the goal.
Acceptance
Repo: the standalone solmara-lab repo (tracked here until it has a remote). Found during the 2026-07-07 YAML config audit.
Context
Default service ports (43xx family, 54329, 63799) and purpose URIs (
https://id.registrystack.org/solmara/purpose/...) are hardcoded independently in.env.example,compose.yaml,scenarios/service_config.py,perf/k6/*.js, andrequests/registry-lab/environments/Local Compose.bru(URIs additionally inministries/*/manifest/fragment.yaml,notaries/*.yaml,metadata/assembly.yaml, and the wave manifest). Nothing cross-checks them; a port or URI change requires touching five-plus files and CI will not notice a miss.Scope
Pick a cheap mechanism: a single defaults table that generates the Bruno environment and k6 defaults, or a lint that cross-checks the literals across surfaces. Full templating is overkill; drift detection is the goal.
Acceptance