Commit Graph

13 Commits

Author SHA1 Message Date
Jon Chery 1598c54a8b feat(P18): testing + CI/CD pipelines - pytest suite, check-only mode, Gitea + GitHub workflows (v1.3.2)
90 offline tests covering adapter, confidence_signal, checkov_adapter,
outbox_writer, and pipeline integration. Identical CI/CD workflows for
Gitea Actions (dev) and GitHub Actions (production). New --check-only
mode for run_platform.sh (offline, no AWS).

---ci---
project: acdl
phase: 18
milestone: v1.3
status: verify
---/ci---
2026-07-22 14:26:11 +00:00
Jon Chery 431341a0ab docs(P17): verify phase 17 — VERIFY PASS (v1.3.1)
Four-layer verification: structural, behavioral, security, quality all
pass. One P1 (AWS account ID in l1-ecs-service README usage example)
deferred to post-hoc review — same account ID already in
terraform/microservice/main.tf. Fixed: README template missing ## Overview
header.

---ci---
project: acdl
phase: 17
milestone: v1.3
status: verify
---/ci---
2026-07-22 13:58:53 +00:00
Jon Chery 64d35c78e6 docs(P16): plan-as-execute + verify (v1.2.6, capstone)
---ci---
project: acdl
phase: 16
milestone: v1.2
status: verify
verdict: VERIFIED
requirements:
  covered: [REQ-35]
  partial: []
blocker:
  - P0-IAM: terraform apply blocked; operator must push spike_runner_policy.json (carried from Phase 15)
---/ci---

Phase 16 plan-as-execute + verify. scripts/verify_phase16.sh green (11
assertions). Capstone: full v1.2 platform verified end-to-end up to the
IAM-blocked terraform apply. MILESTONE_CAPSTONE_VERIFIED evidence event
written to outbox. v1.1 S3 regression passes. Ready to ship v1.2.6 +
enter the COMPLETE gate.
2026-07-21 22:24:20 +00:00
Jon Chery 699aa542df docs(P15): plan-as-execute + verify (v1.2.5, PARTIAL — terraform apply blocked by IAM)
---ci---
project: acdl
phase: 15
milestone: v1.2
status: verify
verdict: PARTIAL
requirements:
  covered: [REQ-34]
  partial: [REQ-33]
blocker:
  - id: P0-IAM
    description: terraform apply fails with AccessDenied on ECS/ECR/IAM/EC2 — live spike_runner_policy.json not pushed (root key deactivated per D-034)
    unblock: operator runs create_iam_user.py with root/admin creds to push the expanded policy, then terraform apply succeeds (plan valid, 13 to add)
---/ci---

Phase 15 plan-as-execute + verify. PARTIAL: terraform apply blocked by IAM.
- Consumer microservice content authored (app.py + Dockerfile + README.md).
- Docker image acdl-microservice:latest built.
- Adapter fixed: ref emission (bare), JSON-string jsonencode, ECS service
  network_configuration/load_balancer/desired_count/launch_type/task_definition,
  listener default_action/load_balancer_arn, target group target_type/vpc_id/protocol,
  VPC tags (not name), IGW + route table association, managed_policy_arns list.
- L1 fixes: l1-ecs-service (removed port from service sub-resource),
  l1-vpc (added intra_refs, removed igw_id output).
- Resolver: intra_refs resolution (refs between sub-resources of same L1).
- terraform validate + plan succeed (13 to add).
- terraform apply BLOCKED (AccessDenied — live IAM policy not updated).
- Evidence event TERRAFORM_APPLY_BLOCKED written to DynamoDB outbox.
- v1.1 S3 regression: byte-identical.
Ready to ship v1.2.5 (partial).
2026-07-21 22:21:36 +00:00
Jon Chery d103a37419 docs(P14): plan-as-execute + verify (v1.2.4)
---ci---
project: acdl
phase: 14
milestone: v1.2
status: verify
verdict: VERIFIED
requirements:
  covered: [REQ-32]
---/ci---

Phase 14 plan-as-execute + verify. scripts/verify_phase14.sh green.
l2-microservice composition (6 L1s, 2 wire kinds); contract schema
extended (inputs allow objects + healthcheck); resolver extended
(array-form wires, child->child refs, multi-resource L1 expansion);
adapter extended (ref: interpolation translation). v1.2 IR: 11 resources.
v1.1 S3 regression byte-identical. Ready to ship v1.2.4.
2026-07-21 21:12:17 +00:00
Jon Chery 4ed2542ecf docs(P13): plan-as-execute + verify (v1.2.3)
---ci---
project: acdl
phase: 13
milestone: v1.2
status: verify
verdict: VERIFIED
requirements:
  covered: [REQ-31]
---/ci---

Phase 13 plan-as-execute + verify. scripts/verify_phase13.sh green.
6 ECS L1s authored + registered (l1-vpc, l1-ecs-cluster, l1-ecs-service,
l1-iam-role, l1-alb, l1-ecr). Adapter generalized to table-driven
TYPE_MAP (12 IR types) + INPUT_MAP + OUTPUT_MAP. S3 regression: the v1.1
spike l1-s3 produces byte-identical main.tf. Ready to ship v1.2.3.
2026-07-21 21:05:48 +00:00
Jon Chery 0fea29cdbb docs(P12): plan-as-execute + verify (v1.2.2)
---ci---
project: acdl
phase: 12
milestone: v1.2
status: verify
verdict: VERIFIED
requirements:
  covered: [REQ-30]
---/ci---

Phase 12 plan-as-execute + verify. scripts/verify_phase12.sh green (22
assertions). All Wave 1 + Wave 2 tasks complete:
- T-12.1: run_spike_*.sh -> run_platform.sh (D-048, --plan-only flag)
- T-12.2: spike_runner_policy.json expanded (ECS + ECR + ELB + IAM + EC2)
- T-12.3: idempotency documented in bootstrap scripts
- T-12.4: P1-1 redacted (no live AWS key IDs in .ciagent/)
- T-12.5: P1-B fixed (PERSONAS.md platform/registry -> modules-ir/registry.json)
Subagent confirmed run_platform.sh --plan-only runs against real AWS, exit 0.
Ready to ship v1.2.2.
2026-07-21 21:01:51 +00:00
Jon Chery 81c6e3995e docs(P11): plan + verify + verify_phase11.sh (v1.2.1)
---ci---
project: acdl
phase: 11
milestone: v1.2
status: verify
verdict: VERIFIED
requirements:
  covered: [REQ-29]
---/ci---

Phase 11 plan-as-execute + verify. scripts/verify_phase11.sh green (24
assertions). Plan + VERIFY committed. Ready to ship v1.2.1.
2026-07-21 20:57:45 +00:00
Jon Chery 4b8758404c verify(P10): VERIFIED — capstone; L2 + e2e; REQ-28 IR commitments hold
---ci---
project: acdl
phase: 10
milestone: v1.1
status: verify
verdict: VERIFIED
---ci---

Phase 10 milestone capstone verified. All four layers PASS:
- Structural: 9 deliverable files + regenerated TF present; composition.json
  shape correct (kind=l2, depth=1, one child l1-s3@1.0.0); registry has both
  l1-s3@1.0.0 + l2-static-asset@1.0.0; spike.yaml valid; resolver/outbox/adapter
  all export the required functions + CLIs; backend key derived from stack name
  per D-P10-1 (spike/l2-static-asset/terraform.tfstate). Tags v1.1.0..v1.1.5
  present; .gitignore has the P1-2 lock-file fix.
- Behavioral: verify_phase10.sh exits 0 with all 8 checks green against real
  AWS. Typecheck OK. Resolver cross-check emits an IR-schema-valid instance.
  Adapter cross-check emits main.tf with aws_s3_bucket + the D-P10-1 backend
  key. E2E runner prints 'SPIKE E2E OK'; confidence score=0.8 band=pass for
  dev; outbox put_item succeeded (Count>=1 in DynamoDB).
- Security: no .env*/tfstate/key/tfplan/.terraform.lock.hcl committed in
  v1.1.4..v1.1.5. No AKIA leak in any Phase 10 deliverable (matches only in
  .ciagent/VERIFY.md P09 narrative — public key IDs, not secret pairs; P1-1
  carried forward, not introduced here). .env.secrets gitignored + holds only
  the spike user key (root key id absent). No long-lived credential in the
  generated TF. Outbox writer is append-only (0 delete/update_item calls).
  E2E runner is plan-only (0 terraform apply calls).
- Quality: README layout table still matches reality. All 8 Phase 10 commits
  carry ---ci--- blocks. ROADMAP Phase 10 = complete (v1.1.5); REQUIREMENTS
  REQ-25/27/28 = complete (v1.1.5). L2 README internally consistent.
  D-P10-1/2/3 spike scope respected. REQ-28 (the binding spike claim) holds:
  the adapter is the only substrate-specific code; acdl_platform/ Python +
  modules-ir/ JSON are substrate-agnostic.

P0: none. P1: none new (P1-1 from P09 carried forward — recommended redaction
of two public access key IDs in the .ciagent/VERIFY.md P09 narrative; non-
blocking for v1.2 ship).
2026-07-21 19:41:59 +00:00
Jon Chery e71539d681 verify(P09): VERIFIED — IR + l1-s3 + adapter; real terraform plan
---ci---
project: acdl
phase: 9
milestone: v1.1
status: verify
verdict: VERIFIED
---/ci---

Four-layer verification of Phase 09 (v1-spike-ir-and-l1-and-adapter):
- Layer 1 Structural: PASS (9/9 deliverables; interface/instance/registry/adapter/TF/gitignore/tags/history all correct)
- Layer 2 Behavioral: PASS (verify_phase09.sh exit 0; typecheck; adapter reproducible; IR schema validates; unsupported IR type -> ValueError; terraform validate)
- Layer 3 Security: PASS (no secret pairs leaked; spike key gitignored + holds spike user key not root; no creds in TF/adapter; plan-only no apply)
- Layer 4 Quality: PASS (README layout accurate; all P09 commits carry ---ci--- blocks; ROADMAP/REQUIREMENTS traceability updated; D-P09-1..4 respected; versioning warning non-blocking)

P0: none. P1: (P1-1) two AWS access key IDs (public identifiers, not secret pairs) appear in the Phase 08 verify narrative at .ciagent/VERIFY.md commit 6d27dad which falls in the v1.1.3..v1.1.4 range — recommend redacting to placeholders in a future hygiene pass (the Phase 09 gate's AKIA scan correctly excludes .ciagent/). P1-2: terraform/spike/.terraform.lock.hcl is untracked and NOT covered by .gitignore (the PLAN's gitignore list missed it) — recommend adding it to .gitignore in a future hygiene pass.

Real terraform plan against AWS succeeded (rotated spike key, plan-only, -lock=false per D-P09-1).
2026-07-21 19:20:08 +00:00
Jon Chery 6d27dad114 verify(P08): VERIFIED — AWS bootstrap, spike key rotated, D-034 manual
---ci---
project: acdl
phase: 8
milestone: v1.1
status: verify
verdict: VERIFIED
---/ci---
2026-07-21 19:05:37 +00:00
Jon Chery 167a92f621 verify(P07): VERIFIED — architecture v1.0 finalized, 9 files, 11 decisions
---ci---
project: acdl
phase: 7
milestone: v1.1
status: verify
verdict: VERIFIED
---/ci---

Phase 07 architecture-v1-finalization verified on main (HEAD 8723206,
tag v1.1.2). All four layers PASS:

- Structural: 9 deliverable files present; architecture-v1.0.md status
  is v1.0; all 11 decision IDs + Q1.3 in the snapshot; gitea-runner
  rename (D-046) applied; §15 table lists the 6 REQ-mapped files;
  3 JSON Schemas declare Draft 2020-12 with required fields per PLAN;
  3 .py files have expected docstrings + public functions; history
  preserved (T-7.1 92d4535 is creation point); tags v1.1.0/v1.1.1/v1.1.2
  all present.
- Behavioral: scripts/verify_phase07.sh exits 0 with expected final
  line; typecheck gate (bash -n + py_compile) passes; schema
  cross-checks (qa/prod/dr/agentic negative cases, staging rejected,
  valid PCR passes) all pass; confidence_signal spot-checks (missing
  input -> block + INPUT_MISSING; critical fail -> 0.0 block +
  CRITICAL_OVERRIDE; cold-start dev -> 0.95 pass) all pass; SoD
  spot-checks (None outbox, None item, equal approvers, distinct,
  empty approver_qa) all pass; Checkov adapter spot-check (CKV_AWS_24
  -> medium fail + ACDL_TAG_NAMING skipped appended) passes.
- Security: no secrets in v1.1.1..v1.1.2 file set; no boto3 imports
  (stdlib only); platform/ shadow of stdlib platform documented +
  worked around in verify_phase07.sh (cd /tmp for jsonschema); LSP
  diagnostic on confidence_signal.py:148 confirmed false positive
  (py_compile + AST parse pass; runtime correct).
- Quality: README layout table matches reality (platform/ + schemas/
  now populated); all 7 Phase 07 commits carry ---ci--- blocks;
  ROADMAP Phase 07 = complete (v1.1.2); REQUIREMENTS REQ-16..22 =
  complete (v1.1.2); architecture-v1.0.md §15 files all exist; §13
  resolutions match PROJECT.md decisions table.

Requirements covered: REQ-16, REQ-17, REQ-18, REQ-19, REQ-20, REQ-21,
REQ-22 (all 7 Phase 07 requirements; no partials).

P1 flags (post-hoc, out of Phase 07 scope):
- P1-1: platform/ package shadows stdlib platform module; v1.2 rename
  to acdl_platform/ (or src/ layout) would remove the workaround need.
- P1-2: LSP false positive on confidence_signal.py:148 (Dict[str, Any]
  typing confuses pyright); py_compile + runtime correct; a v1.2
  TypedDict tightening would silence it.
2026-07-21 18:50:40 +00:00
Jon Chery 0779a92e2f verify(P06): VERIFIED — structural, behavioral, security, quality
---ci---
project: acdl
phase: 6
milestone: v1.1
status: verify
verdict: VERIFIED
---ci---

All four verification layers pass for Phase 06 (v1.1.1):
- Structural: demo/ contains the full v1.0 demo (history preserved via
  git mv); new v1.1 top-level dirs scaffolded with .gitkeep; no stray
  v1.0 dirs at root; v1.0.1..v1.0.5 + v1.1.0 + v1.1.1 tags present.
- Behavioral: typecheck gate green; scripts/verify_phase06.sh exits 0
  with "Phase 06: ALL CHECKS PASS"; demo/scripts/run_demo.sh --no-upload
  produces a non-empty, hash-chained audit.json in /tmp/acdl_demo_run/.
- Security: no .env/tfstate/_key/secret files in v1.1.0..v1.1.1 diff;
  the only content authored in the phase was the move commit, README,
  .gitignore, and the verify script. LSP error on
  demo/scripts/finalize_evidence.py:46 is pre-existing v1.0 demo code
  (authored at v1.0.4, Phase 06 only git-mv'd it) — not a regression.
- Quality: all README link targets exist (docs/vision.md,
  docs/architecture.md, .ciagent/{PROJECT,ARCHITECTURE,ROADMAP}.md,
  demo/ACDL_DEMO.md); every phase commit carries a ---ci--- block with
  the required fields; ROADMAP §Phase 06 status = complete (v1.1.1).

P1 (post-hoc, non-blocking): scripts/verify_phase06.sh does not
programmatically assert runner-data/ is in .gitignore. The must-have
is satisfied structurally (file content verified); only the assertion
is missing. Recommend adding `grep -q '^runner-data/$' .gitignore` in
a future touch-up.

No P0 issues. Phase 06 has no new REQ (repo hygiene).
2026-07-21 18:29:32 +00:00