---ci---
phase: 21
milestone: v1.6
status: verify
lessons:
- P0 fix: docs/_config.yml had conflicting theme + remote_theme (would
break the GitHub Pages build). Removed the conflicting theme: key,
kept remote_theme: minimal-mistakes.
- P2 fix: removed unused json + os imports from core/environment_check.py.
---/ci---
Multi-persona review of v1.6 phase 21 (docs restructure + core rename +
environments scaffold).
P0 (blocking) — AUTO-FIXED:
- M1: docs/_config.yml declared both and
. Jekyll rejects using
both; the Pages build would fail. Fixed: removed the line,
kept (minimal-mistakes, which provides the
layout the defaults reference).
P2 (nits) — AUTO-FIXED:
- M2: core/environment_check.py imported + but never used
them. Removed.
P1 (important) — FLAGGED FOR POST-HOC REVIEW (do not block ship):
- C1 (pre-existing, from v1.5 review C2): .github/workflows/deploy.yml
checks out the platform repo at , but no floating tag
exists (only v1.4.0 / v1.4.1). Operator must create a floating v1.4
tag or change the ref to v1.4.1 (or v1.6.0 now that it exists). The
consumer guide + sample contract also reference @v1.4.
- C2: docs/_config.yml key is not a standard minimal-mistakes
navigation config (that theme reads _data/navigation.yml). The
key is harmless metadata but won't render a real nav. Recommend adding
docs/_data/navigation.yml for the theme, or switching to a theme that
reads from _config.yml. Non-blocking for the docs content.
- S1 (pre-existing, from v1.5 review S1): the static-key override in
deploy.yml sets ACDL_AWS_ACCESS_KEY_ID/ACDL_AWS_SECRET_ACCESS_KEY as env
vars on the configure-aws-credentials step, but that action reads AWS_*
or its own access-key/secret-key inputs, not ACDL_AWS_*. The override
is not actually wired. Phase 21 did not touch this step.
Verified: byte-identical workflows (CI + deploy); dev.json valid JSON;
all core Python compiles; path-traversal on --env is safe (no file match
-> onboarding prompt, exit 1); all docs internal links resolve; 166
tests pass; run_ci.sh green. The run_platform.sh env-check ordering is
correct (default contract is assigned before the env check runs).
---ci---
project: acdl
phase: 21
milestone: v1.6
status: execute
---/ci---
Introduce platform-managed environments: a consumer does not provide an
AWS account, VPC, subnet, S3 state bucket, or runner key. A named
environment is a platform-owned bundle of account + network + state
backend + IAM role (surfaced via ABAC), selected by name in the contract.
Scaffold:
- core/environments/dev.json (sample dev env definition)
- core/environments/README.md (how envs are used + how to add one)
- core/environment_check.py (reads a contract's environment field,
looks up core/environments/<name>.json, prints a friendly onboarding
prompt when none exists, exits non-zero)
- scripts/run_platform.sh: Step 0 calls environment_check.py before
contract validation; a missing env halts the pipeline with the
onboarding prompt
- tests/test_environment_check.py: 12 tests (dev bound, missing env ->
onboarding prompt, onboarding message lists provisions, contract
paths, wire-in, check-only still passes)
Tests: 166 pass (154 + 12 new).