Commit Graph

34 Commits

Author SHA1 Message Date
Jon Chery 950db56fdc docs(P55): rewrite PROJECT/ROADMAP/decks to verified reality; unfreeze decks
PROJECT.md gains a 'Capability Status (Re-Verified 2026-07-27)' section
after Domain Boundaries: decay disclosure, the 16 auto-verified
capabilities table, the 6 IAM-gated escalated resources, and the
regression-gate note. ROADMAP.md v1.9.8 entry annotated 'Last
deck-polish phase before the v1.10 deck-freeze'; new v1.10 overview
entry noting v1.9.1-v1.9.8 are 'superseded-by-reverification'. Both
leadership decks disclose the 2026-07-27 re-verification in their
maturity-framing headers, citing .ciagent/CAPABILITY_INVENTORY.md as
the source of truth.

No 'shipped'/'Available today' claims remain that aren't backed by a
Verified capability or an explicit escalation note. The 6 IAM-gated
cloud resources (contracts table, Lambda, ECS service, CloudFront
stack, uptime-kuma, OIDC role) are explicitly listed as escalated,
not silently omitted.

Decks unfrozen. v1.10.0 ready to tag.

---ci---
project: acdl
phase: 55
milestone: v1.10
status: verify
requirements:
  covered: [REQ-115]
  partial: []
decisions: [D-094]
---/ci---
2026-07-27 18:26:00 +00:00
Jon Chery 772ac721b0 docs(P52): create v1.10 milestone plan — pipeline regression fix + capability re-verification
---ci---
project: acdl
phase: 52
milestone: v1.10
status: plan
decisions: [D-090, D-091, D-092, D-093, D-094]
requirements: [REQ-112, REQ-113, REQ-114, REQ-115]
---/ci---
2026-07-27 17:10:09 +00:00
Jon Chery 5f69bdea10 docs(P51): update ROADMAP + PROJECT for v1.9.8 patch release
acdl-ci / Lint (push) Successful in 8s
acdl-ci / Test (push) Successful in 29s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
phase: 51
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-27 14:48:45 +00:00
Jon Chery 116f49ecb8 docs(P50): update ROADMAP + PROJECT for v1.9.7 patch release
acdl-ci / Lint (push) Successful in 8s
acdl-ci / Test (push) Successful in 28s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
phase: 50
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 15:59:20 +00:00
Jon Chery 1eeee323c0 docs(P49): update ROADMAP + PROJECT for v1.9.6 patch release
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 27s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
phase: 49
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 15:44:36 +00:00
Jon Chery 0f250d2bbd docs(P48): update ROADMAP + PROJECT for v1.9.5 patch release
acdl-ci / Lint (push) Successful in 6s
acdl-ci / Test (push) Successful in 24s
acdl-ci / Platform check-only (offline) (push) Successful in 8s
---ci---
phase: 48
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 14:59:19 +00:00
Jon Chery 7585c828f0 docs(P48): vision gaps + badge system + substrate→engine + CR format + agentic tags
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 23s
acdl-ci / Platform check-only (offline) (push) Successful in 8s
9 requirements implemented across presentation decks and project docs:

1. DX closing slide: added 'Infrastructure as a utility, not a craft' bullet
   to convey the full vision (infrastructure consumed, not maintained;
   platform compounds value over time).
2. PW Problem slide: 'moving a merged change' → 'promoting a change'.
3. PW Problem slide: added 'Red tape' and 'Scalability without increasing
   headcount' bullets (4 frictions, not 2).
4. PW Roadmap slide: redesigned with side-by-side HTML table layout
   (Testing | Planned), 16px font, no overflow.
5. PW deck: added new slide 'What This Platform Is — and Isn't' after North
   Star (sovereign boundary, infrastructure as utility, 4 anti-goals).
   PW deck now 16 slides (was 15).
6. Maturity nomenclature: 'Available today'/'shipped' → 'Testing' across
   both decks + source markdown. New .testing badge (blue/teal #DBEAFE).
   Roadmap title: 'Testing vs. Planned'. The platform has 0 consumer
   adoption — 'shipped' was inaccurate.
7. Global: 'substrate' → 'engine' across entire project (88 matches, 30+
   files including .ciagent/, docs/, modules/, adapters/, schemas/, code).
8. Presentation files only: 'forge' → 'VCS' / 'version control system'
   (6 occurrences in 4 files). 'forge' retained in all technical docs and
   code as the industry-standard term.
9. New .agentic badge (purple/violet #EDE9FE) appended to agentic features
   in both decks: confidence signal, autonomous dev, pattern recognition,
   dynamic module creation, citizen developer surface, auto-promotion.

Also: Change Request ID format changed from 'CR-2026-001' to 'CHG0678912'
across presentation files, consumer guide, and test fixtures.

HTML re-rendered. PPTX rendered for release upload.

---ci---
phase: 48
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 14:58:29 +00:00
Jon Chery fc070ccb15 docs(P47): remove HIPAA from ciagent tracking files
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 25s
acdl-ci / Platform check-only (offline) (push) Successful in 8s
---ci---
phase: 47
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 14:10:16 +00:00
Jon Chery be6dc7cff6 docs(P47): update ROADMAP + PROJECT for v1.9.4 patch release
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 26s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
phase: 47
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 14:09:31 +00:00
Jon Chery 5079d07e64 docs(P46): update ROADMAP + PROJECT for v1.9.3 patch release
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 26s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
phase: 46
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 13:44:51 +00:00
Jon Chery 2cd9ae150d docs(P45): update ROADMAP + PROJECT for v1.9.2 patch release
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 26s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
phase: 45
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 13:28:54 +00:00
Jon Chery b0a2728f59 docs(P44): update ROADMAP + PROJECT for v1.9.1 patch release
acdl-ci / Lint (push) Successful in 7s
acdl-ci / Test (push) Successful in 26s
acdl-ci / Platform check-only (offline) (push) Successful in 8s
---ci---
phase: 44
milestone: v1.9
status: complete
requirements:
  covered: []
  partial: []
---/ci---
2026-07-23 12:51:59 +00:00
Jon Chery 5365bb4e0a docs(milestone): complete v1.9 — verify + review + audit + tag v1.9.0
---ci---
project: acdl
phase: 0
milestone: v1.9
status: complete
requirements:
  covered: [REQ-100, REQ-101, REQ-102, REQ-103, REQ-104, REQ-105, REQ-106, REQ-107, REQ-108, REQ-109, REQ-110, REQ-111]
  partial: []
---/ci---

v1.9 milestone COMPLETE. All 12 requirements satisfied.

Verify: 4 layers PASS (structural 26/26 files, behavioral 493 tests +
run_ci.sh + run_platform.sh --check-only green, security, quality).
Review: 0 P0, 0 P1 (READY TO SHIP). REVIEW.md reconstructed (D-086).
Audit: PASS (reconstruction, file discipline, branch hygiene, commit
discipline — 12/12 commits with ---ci--- blocks).

Updated:
- .ciagent/REQUIREMENTS.md: v1.9 section marked complete; traceability
  table REQ-100..111 added.
- .ciagent/ROADMAP.md: v1.9 marked complete; Phase 43 added.
- .ciagent/PROJECT.md: v1.9 objective marked complete.
- .ciagent/config.json: milestone v1.9 status -> complete.
- .ciagent/REVIEW.md: reconstructed with v1.9 content (D-086).
- .ciagent/VERIFY.md: v1.9 4-layer verify.
- .ciagent/AUDIT.md: v1.9 audit (PASS).
- uses:/ref: bumped @v1.6 -> @v1.9 in contracts/, deploy workflows,
  docs/consumer-guide.md (D-071 successor).

Tag v1.9.0 created next; floating v1.9 + v1 tags updated.
2026-07-23 04:46:04 +00:00
Jon Chery c05ed7a26f docs(P00): clarify v1.9 — record decisions D-080..D-086
---ci---
project: acdl
phase: 0
milestone: v1.9
status: clarify
---/ci---

Full autonomy: all clarifications resolved interactively pre-run + 2
auto-resolved parameters. Decisions recorded (renumbered D-080+ to
avoid collision with v1.8 research decisions D-073..D-077):
- D-080: new milestone v1.9 (feature), ship tag v1.9.0
- D-081: ${env.<field>} + ${contract.<field>} interpolation syntax
- D-082: hybrid per-env promotion (per-env contracts + env workflow input)
- D-083: audit ledger Object Lock/JWS/worker/DLQ deferred (future milestone)
- D-084: attestation matrix offline-testable subset + signed evidence artifacts
- D-085: P1-1 adapter defaults move to L1 interface.json inputs
- D-086: REVIEW.md reconstructed at v1.9 complete; v1.3-v1.8 noted as not-persisted

Auto-resolved: per-env account_id placeholder + stderr warning; SNS topic
defined in Terraform + code reads ACDL_SOD_HALT_TOPIC_ARN.
2026-07-23 04:16:42 +00:00
Jon Chery 136ec6abf3 docs(init): validate v1.9 specification
---ci---
project: acdl
phase: 0
milestone: v1.9
status: specify
---/ci---

v1.9 scope (user-directed, 2026-07-23):
- Design doc refresh (hitl_matrix_design.md + audit_ledger_design.md)
- Contract interpolation (${env.<field>} + ${contract.<field>})
- Per-environment CI jobs (no environment field editing for promotion)
- Stub implementation (SoD, HITL gates, attestation matrix, Wiz, Kyverno)
- P1-1 adapter parameterization remediation

Requirements REQ-100..REQ-111 added to REQUIREMENTS.md.
PROJECT.md v1.9 objective + phase table (39-43) appended.
config.json milestone bumped to v1.9 (active).
2026-07-23 04:15:41 +00:00
Jon Chery 60f2b669ea docs(P0): clarify v1.8 — 12 decisions resolved
---ci---
project: acdl
phase: 0
milestone: v1.8
status: clarify
---/ci---

12 decisions resolved (D-061..D-072) at full autonomy:
- D-061: Fold all 3 new requirements into v1.8 (feature milestone)
- D-062: P1-3 SSM fail loud + escape hatch
- D-063: P1-6 Terraform-rendered invoke policy
- D-064: P1-8 Remove committed spike .tf files
- D-065: S1 Single conditional AWS credentials step
- D-066: Uptime on ECS Fargate
- D-067: Uptime as deploy-uptime pipeline stage, separate state
- D-068: CMDB = DynamoDB acdl-change-requests table
- D-069: Per-stack CMK (one key per L2 deployment)
- D-070: Decommission as mode on existing deploy pipeline, HITL SRE gates
- D-071: uses: ref bump @v1.6 -> @v1.8 at COMPLETE
- D-072: Managed KMS fallback for standalone L1s with warning
2026-07-22 21:59:45 +00:00
Jon Chery bab2cf363b docs(init): validate v1.8 specification
---ci---
project: acdl
phase: 0
milestone: v1.8
status: specify
---/ci---

v1.8 specification validated. 11 phases (28-38), 24 new requirements
(REQ-76..99). Three tracks: P1 remediation (P1-3..P1-9 + S1), encryption
+ deletion protection by default + decommission alias, uptime monitoring
+ engineering standards + path documentation. Feature milestone, ship
tag v1.8.0.
2026-07-22 21:59:29 +00:00
Jon Chery 0bee8f9bc2 docs(milestone): complete v1.7 — production platform + contract ingestion
---ci---
project: acdl
phase: 0
milestone: v1.7
status: complete
requirements:
  covered: [REQ-62, REQ-63, REQ-64, REQ-65, REQ-66, REQ-67, REQ-68, REQ-69, REQ-70, REQ-71, REQ-72, REQ-73, REQ-74, REQ-75]
  partial: []
---/ci---

v1.7 milestone COMPLETE. 6 phases (22-27), 14 requirements (REQ-62..REQ-75),
all shipped + verified. 272 tests pass. CI pipeline green.

Phase summary:
  P22: rename static-asset -> static-assets (D-048) + cloudfront/waf
       primitives + production stack (D-049) + @v1.6 bump (D-057).
  P23: tagging standard (D-054, D-043 closure) + Wiz adapter (D-052) +
       Kyverno adapter (D-053).
  P24: platform Lambda + DynamoDB acdl-contracts (D-051) + cross-account IAM.
  P25: deploy outputs SSM+PR comment (D-050) + error reporting via Lambda
       (D-055) + stage comments.
  P26: 3 platform pipelines (platform-test, primitives-plan, patterns-plan) +
       release job (D-057) + multi-resource L1 ref fix.
  P27: remove consumer-repos + validated per-module examples (D-058) +
       RDS primitive (D-059).

Ship tag: v1.7.0 (feature milestone, next minor per ship.md;
v1.6 shipped v1.6.0).
2026-07-22 20:28:18 +00:00
Jon Chery 49462d5e38 feat(P27): remove consumer-repos + rewrite .ciagent historical refs per D-048
Delete the consumer-repos/ directory (v1.2 artifact removed in v1.7).
Rewrite all .ciagent/ historical narrative references per D-048 to
describe the removal rather than referencing the directory as existing.

---ci---
project: acdl
phase: 27
milestone: v1.7
status: execute
---/ci---
2026-07-22 20:20:12 +00:00
Jon Chery dca35c78ec feat(P22): rename static-asset→static-assets + cloudfront/waf primitives + production stack + @v1.6 bump
---ci---
phase: 22
title: rename-and-production-static-assets-stack
status: complete
verification:
  - scripts/run_ci.sh: PASS (CI PIPELINE OK)
  - python3 -m pytest tests/ -v: 175 passed
  - scripts/run_platform.sh --check-only: PASS (PLATFORM CHECK OK)
  - grep -R "static-asset[^s]" . (excl .git/): 0 hits
  - grep -R "static-asset$" . (excl .git/): 0 hits
  - floating git tags v1.6 + v1 point at v1.6.0 (a90a756)
changed_files:
  - Task 1 (rename): contracts/static-asset.yaml→static-assets.yaml (git mv); modules/l2/static-asset→static-assets (git mv); sed replaceAll static-asset→static-assets in 22 files (README, docs, scripts/run_platform.sh, pipelines/deploy.yaml, modules/registry.json, tests/*, .ciagent/* historical narrative)
  - Task 2 (cloudfront primitive): modules/l1/cloudfront/interface.json + README.md
  - Task 3 (waf primitive): modules/l1/waf/interface.json + README.md
  - Task 4 (registry): modules/registry.json (+cloudfront, +waf, static-assets renamed)
  - Task 5 (augment static-assets): modules/l2/static-assets/composition.json (s3+cloudfront+waf, depth 1); modules/l1/s3/interface.json +instance.json (+bucket_regional_domain_name output); modules/l2/static-assets/README.md (production stack docs)
  - Task 6 (adapter): adapters/terraform/adapter.py (+TYPE_MAP/INPUT_MAP/OUTPUT_MAP for cloudfront distribution+OAC+wafv2 webacl; special handling in _emit_resource for OAC defaults, distribution origin/cache_behavior/restrictions/viewer_certificate/web_acl_id, waf scope/default_action/visibility_config/managed rules)
  - Task 7 (contract schema): no change needed (generic inputs object; new module names match ^[a-z][a-z0-9-]*$)
  - Task 8 (@v1.6 bump): contracts/static-assets.yaml, .gitea/.github/workflows/deploy.yml (ref: v1.6 + header comments), docs/consumer-guide.md, docs/contracts/index.md, docs/pipeline/versioning.md, docs/pipeline/index.md, docs/architecture.md, README.md, modules/l2/microservice/README.md, tests/test_environment_check.py, tests/test_pipeline_contract.py
  - Task 9 (floating tags): git tag -f v1.6 v1.6.0; git tag -f v1 v1.6.0
  - Task 10 (tests): tests/test_adapter.py (registry 11 entries/9 L1/2 L2; cloudfront+waf type map tests; TestS3Output bucket_regional_domain_name; TestStaticAssetsStack 4 tests); tests/test_contract_resolver.py (+s3/cloudfront/waf resource assertions)
generated:
  - terraform/spike/main.tf + terraform.tf (regenerated by run_platform.sh --check-only; reflect static-assets production stack + backend key spike/static-assets/)
notes:
  - D-048 full rewrite of .ciagent/ historical narrative (verbatim phase descriptions, REQ-25/27/50, D-036) — produces intentional tautologies (e.g. "Rename static-assets → static-assets") per the decision to override the v1.6 preservation precedent.
  - cloudfront interface.json resources array ordered distribution-first so the resolver (first-match wire resolution) routes bucket_regional_domain_name/waf_web_acl_arn/region to the distribution; the OAC gets adapter-provided defaults (name=acdl-oac, origin_type=s3, signing_behavior=always).
  - .ciagent/ @v1.4 references left as historical record (D-048 scope was static-asset rename only; @v1.4 is historical narrative of Phase 20).
  - s3 OUTPUT_MAP bucket_regional_domain_name not added (identity fallback in adapt() already handles it; OUTPUT_MAP documents non-identity mappings only).
---ci---
2026-07-22 19:56:52 +00:00
Jon Chery fee59944fd docs(init): validate v1.7 specification
---ci---
project: acdl
phase: 0
milestone: v1.7
status: specify
---/ci---

v1.7 milestone: production platform + contract ingestion + pipeline
maturation. 12 user-directed scope axes (2026-07-22):
  1. rename static-asset -> static-assets (D-048)
  2. production-ready static-assets stack (cloudfront + waf, D-049)
  3. DX-friendly deploy outputs (SSM + PR comment, D-050)
  4. central pipeline error reporting via Lambda (D-055)
  5. PR comments after every successful stage
  6. three platform pipelines (platform-test, primitives-plan, patterns-plan)
  7. release job with semver + MAJOR.MINOR/MAJOR tag updates (D-057)
  8. platform Lambda + DynamoDB contract ingestion (D-051)
  9. tagging standards (Checkov custom rule, D-054, D-043 closure)
  10. Wiz adapter (D-052)
  11. Kyverno adapter (D-053)
  12. remove consumer-repos + validated per-module examples (D-058) + RDS
      primitive (D-059)

6 phases (22-27), 14 requirements (REQ-62..REQ-75).
Ship tag: v1.7.0 (feature milestone, next minor; v1.6 shipped v1.6.0).
2026-07-22 19:47:08 +00:00
Jon Chery e050e65158 feat(P19): central pipeline contract + shell reproducibility + output streaming (v1.4.1)
acdl-ci / Lint (push) Successful in 8s
acdl-ci / Test (push) Successful in 14s
acdl-ci / Platform check-only (offline) (push) Successful in 9s
---ci---
project: acdl
phase: 19
milestone: v1.4
status: execute
---

Add declarative pipeline contract (schemas/pipeline.schema.json +
pipelines/ci.yaml) as single source of truth for both Gitea Actions (dev)
and GitHub Actions (production) workflows. Both workflow files are
byte-identical and validated against the contract by 32 new tests.

Add scripts/run_ci.sh for shell reproducibility — mirrors the CI pipeline
locally (lint → test → check-only), exits 0 with 'CI PIPELINE OK'.

Update scripts/run_platform.sh to stream output by default: terraform
init/validate/plan via tee, Checkov compliance results with per-record
severity/rule/pass-fail, and emitted Terraform in --check-only. New
--quiet flag for log-only mode.

Requirements: REQ-43 (central pipeline contract), REQ-44 (shell
reproducibility), REQ-45 (output streaming). 122 tests pass (90 + 32).
2026-07-22 15:10:54 +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 9504782a77 docs(specify): open v1.2 milestone — platform hardening + ECS microservice
---ci---
project: acdl
phase: 0
milestone: v1.2
status: specify
decisions:
  - id: D-047
    decision: Extend D-039 per-run-rotated-key waiver for v1.2; real OIDC deferred to v1.3+
    rationale: go-gitea/gitea#36988 still open (re-checked 2026-07-21, last updated 2026-05-27, not merged)
    confidence: 0.95
    alternatives: []
---/ci---

Open the v1.2 milestone: platform hardening + first real consumer deployment.
5 scope axes (user-directed): re-eval #36988, NFR improvements, simplify
the setup, README rewrite, bootstrap a consumer repo with a basic
microservice deployed to ECS Fargate end-to-end.

Files:
- config.json: milestone v1.1 -> v1.2, status complete -> specify
- PROJECT.md: v1.1 objective -> prior (complete); new v1.2 objective +
  6-phase table (11-16) + REQ-29..35 summary + D-047
- REQUIREMENTS.md: v1.1 -> prior (complete); new v1.2 section with
  REQ-29..35 + traceability (planned)
- ROADMAP.md: v1.1 -> complete (tag v1.2.0, Gitea release 202); new v1.2
  section with 6 phases (status planned, ship v1.3.0)
- ARCHITECTURE.md: new "v1.2 build-out scope" section (5 axes, substrate
  extension, terraform apply dev-only, out-of-scope deferrals) + build
  order

Ship tag at milestone COMPLETE: v1.3.0 (feature milestone, next minor
per ship.md — v1.1 shipped v1.2.0). Phase patches v1.2.1..v1.2.6.
2026-07-21 20:54:55 +00:00
Jon Chery 6f865a6b3d docs(D-034): close the bootstrap root-key waiver (user deactivated it)
---ci---
project: acdl
phase: 0
milestone: v1.1
status: complete
decision_closure:
  - D-034: root key AKIAYOZHMKZ772SINHFX deactivated by the user in the
    AWS IAM console. Verified: sts.get_caller_identity with the root key
    returns InvalidClientTokenId; the spike key acdl-spike-runner still
    works. D-034 is closed.
---/ci---

User confirmed the bootstrap root key (AKIAYOZHMKZ772SINHFX) was
deactivated in the AWS IAM console. Verified:
- Root key: InvalidClientTokenId (deactivated, as expected).
- Spike key (acdl-spike-runner): still live
  (arn:aws:iam::581513795199:user/acdl-spike-runner).

D-034 is closed. The v1.1 milestone is fully shipped + released (v1.2.0)
with no outstanding manual actions.
2026-07-21 20:32:07 +00:00
Jon Chery 930c24be6d docs(research): OIDC blocker found; adopt D-039..D-046; re-scope Phase 08
---ci---
project: acdl
phase: 0
milestone: v1.1
status: research
research_targets: 10
top_finding:
  - TARGET 1 (conf 0.95): Gitea Actions does NOT support id-token: write / OIDC.
    Real OIDC deferred to v1.2 (blocked on go-gitea/gitea#36988).
    Spike adopts D-039: per-run-rotated long-lived key waiver.
decisions_adopted: [D-039, D-040, D-041, D-042, D-043, D-044, D-045, D-046]
risks:
  - R-1 (highest): OIDC gap -> key-rotation waiver (mitigated by D-039)
  - R-2: Checkov terraform_plan edge cases (mitigated by ACDL_TAG_NAMING skipped record)
  - R-3: 6 confidence inputs are a recommendation (D-040 adopted in PROJECT.md)
---/ci---

RESEARCH.md (1330 lines) authored by ci-researcher. Key findings:

- TARGET 1: Gitea Actions does NOT support emitting an OIDC id-token
  (Gitea docs list id-token as unsupported; go-gitea/gitea#33681 open;
  draft PR #36988 unmerged; Gitea's own CI still uses long-lived keys
  per #37980). Real-AWS OIDC is unachievable in this environment for v1.1.
- TARGETS 2-10: Terraform/Checkov install steps, IR prior art, Checkov
  adapter, DynamoDB outbox, 6-input confidence signal, tiered ledger
  (Object Lock deferred), HITL/SoD, contract schema, archive strategy
  — all resolved with concrete sketches in RESEARCH.md.

Adopted D-039..D-046 in PROJECT.md. Re-scoped Phase 08 (ROADMAP) and
REQ-23 (REQUIREMENTS) to reflect the OIDC blocker: the spike uses a
per-run-rotated long-lived key (D-039) instead of OIDC; real OIDC is a
v1.2 deliverable. ARCHITECTURE.md Gitea API surface table updated with
the OIDC verdict.
2026-07-21 18:03:41 +00:00
Jon Chery 087c89edbf docs(clarify): auto-resolve operational parameters; defer OIDC to RESEARCH
---ci---
project: acdl
phase: 0
milestone: v1.1
status: clarify
clarifications:
  resolved: 12 operational parameters (AWS region, state bucket/lock names, OIDC role + trust subject, spike L1/L2/contract inputs, terraform command scope, Checkov ruleset, tag preservation, next ship tag)
  mode: accept-recommendations + decide-rest (D-038)
  deferred_to_research: [gitea/act_runner OIDC support, terraform/checkov runner availability, configure-aws-credentials action availability]
  user_blocking_questions: 0
---/ci---

At full autonomy, the 11 architecture open decisions were already
recorded in PROJECT.md during SPECIFY (D-038). CLARIFY resolves the 12
operational parameters needed to unblock planning (AWS region, state
backend names, OIDC role, spike L1/L2/contract inputs, terraform command
scope, Checkov ruleset). The one genuinely unknown item — Gitea/act_runner
OIDC support — is not a clarification (no user preference can resolve it);
it is the highest-priority RESEARCH target.
2026-07-21 17:55:49 +00:00
Jon Chery 288607b3fa docs(specify): ingest docs/vision+architecture; reframe .ciagent for v1.1
---ci---
project: acdl
phase: 0
milestone: v1.1
status: specify
decisions:
  - D-034 temporary long-lived AWS key waiver (used once in Phase 08, rotated)
  - D-035 milestone v1.1 (feature), ship tag v1.2.0
  - D-036 spike picks l1-s3 + l2-static-asset
  - D-037 demo archived to demo/
  - D-038 open decisions resolved (accept recommendations + decide rest)
---/ci---

Ingest docs/vision.md (6 tenets, anti-goals, signals of success) and
docs/architecture.md v0.2 (4 layers + 6 cross-cutting concerns incl. the
substrate abstraction) as the source of truth for why/how. Reframe the
project from the v1.0 stub demo (tag v1.1.0, archived to demo/ in Phase 06)
to the real Agentic Cloud Delivery Platform.

- config.json: milestone v1.1, status specify
- PROJECT.md: vision + 4-layer/6-concern model + 11 open-decision
  resolutions (W1.A/B, W2.A, BA.A accepted; W3.D/E, BA.B-F, OpenTofu
  decided) + D-034..D-038
- ARCHITECTURE.md: target architecture (IR, confidence, ledger, HITL, SoD,
  substrate abstraction) + v1.1 spike scope (l1-s3 + l2-static-asset)
- REQUIREMENTS.md: add REQ-16..REQ-28 + traceability
- ROADMAP.md: add v1.1 Phases 06-10 (archive, arch-finalize, OIDC, IR+L1,
  L2+contract-e2e)
- PERSONAS.md: add platform-engineer + security-engineer (custom),
  retire infra-stub-engineer, update territories + verification toolchain
  (terraform validate + jsonschema)
- PLAN.md: v1.1 specify plan
2026-07-21 17:55:09 +00:00
grimacing 0672edfc3f ship: phase-05 evidence-ui-and-demo-dry-run (v1.0.5)
Squash merge of phase/05-evidence-ui-and-demo-dry-run; evidence-ui/index.html + run_demo.sh 4-act simulation + verify_phase05.sh; demo live at acdl-evidence raw URL.
2026-07-21 13:53:54 +00:00
grimacing 72b359c9a9 ship: phase-04 pipeline-and-approval-gates (v1.0.4)
Squash merge of phase/04-pipeline-and-approval-gates; pipeline.yml + issue-to-contract.yml + finalize_evidence.py; verify_phase04.sh green; 1 P0 fixed (shell injection).
2026-07-21 13:42:25 +00:00
grimacing 3ea36ef3ab ship: phase-03 l2-modules-and-core-scripts (v1.0.3)
Squash merge of phase/03-l2-modules-and-core-scripts; 4 L2s + 5 core scripts; verify_phase03.sh green.
2026-07-21 13:32:21 +00:00
grimacing 00d0043866 ship: phase-02 l1-modules (v1.0.2)
Squash merge of phase/02-l1-modules into milestone/v1.0-initial; 8 L1 stub modules created; verify_phase02.sh green.
2026-07-21 13:18:12 +00:00
Jon Chery e5f5604319 decision(P01): clarification — project mode, pages fallback, env gates
---ci---
phase: 1
milestone: v1.0
status: clarify
decisions:
  - id: D-011
    decision: Single-project mode explicitly enforced via config.json mode=single
    rationale: run.md Step 0 reads projects[] length as multi-project trigger; explicit flag disambiguates from D-010
    confidence: 0.95
    alternatives: [move acdl into .ciagent/acdl/ subdirectory and adopt multi-project paths]
  - id: D-012
    decision: Gitea has no native Pages; serve acdl-evidence via raw file URLs + CORS note
    rationale: Research confirms Gitea has no [pages] section; raw URLs work without server config
    confidence: 0.85
    alternatives: [sidecar static server, external Pages host]
  - id: D-013
    decision: QA/Prod gates modeled as workflow_dispatch approval inputs (D-004 fallback) instead of Gitea environments
    rationale: Research confirms Gitea ignores environment: blocks and exposes no environments API
    confidence: 0.90
    alternatives: [external approval bot, drop approval gates entirely]
  - id: D-014
    decision: Cross-repo triggering uses workflow_dispatch API from inside a step (no repository_dispatch)
    rationale: Gitea Actions does not support repository_dispatch
    confidence: 0.85
    alternatives: [push-based trigger with a sentinel file, polling]
  - id: D-015
    decision: New repos acdl-contracts and acdl-evidence use default_branch=main with auto_init=true
    rationale: Matches Gitea DEFAULT_BRANCH=main; required for the default branch to exist before any push
    confidence: 0.95
    alternatives: [use milestone/v1.0-initial as default_branch]
  - id: D-016
    decision: Pages placeholder for Phase 01 is a minimal HTML stub; full timeline UI deferred to Phase 05
    rationale: Phase 01 success criterion is the URL returns 200 with placeholder; full UI is Phase 05
    confidence: 0.90
    alternatives: [build a minimal timeline now]
---/ci---

Clarifications accepted at full autonomy per clarify.md Step 4. Three requirements
re-stated: REQ-09 (new repos default_branch=main), REQ-10 Pages (raw-URL 200
substitute), REQ-10 environments (workflow_dispatch inputs + qa/prod branches).
See .ciagent/REQUIREMENTS.md Clarifications table.
2026-07-21 12:57:50 +00:00
Jon Chery e3416f8e77 docs(init): initialize Agentic Cloud Delivery Platform (5 phases)
---ci---
phase: 0
milestone: v1.0
status: specify
decisions:
  - id: D-001
    decision: Use Gitea org continuous-intelligence for all ACDL repos
    rationale: User-specified target org; already exists at git.cloudinit.dev
    confidence: 0.95
    alternatives: [new dedicated demo org]
  - id: D-002
    decision: Map "GitHub Actions" to Gitea Actions (act_runner) using same workflow YAML
    rationale: Environment is Gitea; syntax-compatible with act_runner
    confidence: 0.85
    alternatives: [migrate to GitHub.com, raw shell scripts]
  - id: D-003
    decision: Collapse acdl-platform into the existing empty acdl repo
    rationale: acdl already exists at org root; avoids a 4th repo
    confidence: 0.90
    alternatives: [create separate acdl-platform repo]
  - id: D-004
    decision: Use Gitea environment blocks + required reviewers for QA/Prod; fallback to manual workflow_dispatch with approval input
    rationale: Spec mandates approval gates; forge supports environment protection
    confidence: 0.80
    alternatives: [external approval bot, no approval gates]
  - id: D-005
    decision: Hash-chained ledger (prev_hash + own hash via SHA-256 of canonical JSON) for evidence; declared demonstrative not adversarially secure
    rationale: Spec asks for simple JSON; chain gives visible tamper-evidence
    confidence: 0.85
    alternatives: [signed commits only, full Merkle tree]
  - id: D-006
    decision: Confidence gate threshold = 0.50 exactly (base 0.90, fail drops to 0.40)
    rationale: Explicit in spec
    confidence: 0.99
    alternatives: []
  - id: D-007
    decision: Each mock_apply.sh echoes "[L1: <name>] applying..." + "OK", sleeps 1s, exits 0
    rationale: Spec literal; uniformity aids timeline parsing
    confidence: 0.95
    alternatives: [randomized sleep durations]
  - id: D-008
    decision: L3B keyword->stack mapping: gas/price/ingest/data-lake->commodity-price-feed; invoice/billing->invoice-service; analytics/historical/query->energy-analytics-api; regulatory/compliance/reporting/trading->regulatory-reporting; fallback->invoice-service
    rationale: Mirrors the 4 L2 modules + Act 3 example issue text
    confidence: 0.85
    alternatives: [single default stack, ML classifier (forbidden by no-AI constraint)]
  - id: D-009
    decision: Init milestone = v1.0, branch milestone/v1.0-initial
    rationale: init.md Step 5 mandates milestone/v1.0-initial
    confidence: 0.99
    alternatives: []
  - id: D-010
    decision: Single-project mode for the acdl checkout; ---ci--- blocks omit project field
    rationale: User chose standalone single-project; no other projects in this checkout
    confidence: 0.90
    alternatives: [register acdl in /root multi-project config]
---/ci---

Specification: 30-minute executive demo of the Agentic Cloud Delivery Platform proving automatic, safe, audited infra delivery via local stubs on Gitea Actions (no cloud, no AI APIs).
Requirements: [3 repos under continuous-intelligence org, 8 L1 stub modules, 4 L2 composed modules mirroring S&P Global Energy use cases, 5 core scripts (mock_executor.sh, policy_checker.py, confidence_signal.py, evidence_writer.py, l3b_agent_stub.py), reusable Dev->QA->Prod pipeline with approval gates, issue-triggered L3B agent, Pages evidence timeline UI, 4 scripted demo acts]
Constraints: [local Linux OS, Gitea Actions + Environments, no AWS/GCP/Azure, no external LLM APIs, state in flat JSON/artifacts, EKS Fargate + serverless primitives (no VPC module), L1 single-purpose substrate-agnostic max-depth-1, L2 max-depth-5]
Out of scope: [real cloud provisioning, real LLM inference, production-grade infrastructure, adversarial tamper-proofing of evidence]
2026-07-21 12:46:33 +00:00