Commit Graph

28 Commits

Author SHA1 Message Date
Jon Chery 4ab15cb7a5 docs(P06): post-ship traceability + roadmap update (v1.1.1)
---ci---
project: acdl
phase: 6
milestone: v1.1
status: shipped
requirements:
  complete: []
release:
  tag: v1.1.1
---/ci---

ROADMAP Phase 06 -> complete (v1.1.1). No new REQ in this phase (repo
hygiene). The archived demo runs end-to-end from demo/ (regression
gate passed); new v1.1 top-level dirs scaffolded.
2026-07-21 18:28:07 +00:00
Jon Chery e044a2de0d phase: 6, status: plan-as-execute, persona: lead-developer, task: T-6.1..T-6.4
---ci---
project: acdl
phase: 6
milestone: v1.1
status: plan-as-execute
persona: lead-developer
tasks: [T-6.1, T-6.2, T-6.3, T-6.4]
---/ci---

Archive the v1.0 demo under demo/ (D-037) and reorient the repo to the
real platform. Wave 1 of the Phase 06 plan.

- T-6.1: git mv modules/, scripts/, evidence-ui/, contracts/,
  contracts-repo/, .gitea/ -> demo/; mv ACDL_DEMO.md + runner-data/ -> demo/
- T-6.2: scaffold new v1.1 top-level dirs (platform/, schemas/, adapters/,
  terraform/, modules-ir/) with .gitkeep
- T-6.3: create top-level scripts/verify_phase06.sh (v1.1 verify scripts
  live at top-level, NOT demo/scripts/ which holds the v1.0 demo verify
  scripts)
- T-6.4: rewrite README.md to reflect the real platform (vision +
  architecture links, new layout, status v1.1 active); add runner-data/
  to .gitignore

All moves via git mv (history preserved). Repo root now contains only
README.md, demo/, docs/, .ciagent/, and the new empty v1.1 dirs.
2026-07-21 18:27:21 +00:00
Jon Chery b927f9026a docs(P06): create Phase 06 plan (archive-demo-and-reorient)
---ci---
project: acdl
phase: 6
milestone: v1.1
status: plan
plan:
  waves: 3
  tasks: 6
  requirements: []  # repo hygiene; no new REQ
---/ci---

Phase 06 plan authored by ci-planner. 3 waves (strictly ordered):
- Wave 1 (lead-developer): T-6.1 git mv demo dirs, T-6.2 scaffold new
  dirs, T-6.3 write scripts/verify_phase06.sh at top-level, T-6.4 rewrite
  README + .gitignore
- Wave 2 (frontend-engineer): T-6.5 confirm demo/evidence-ui/ moved
  cleanly (confirm-only)
- Wave 3 (lead-developer): T-6.6 run verify_phase06.sh + typecheck gate

Key design: v1.1 verify scripts live at a new top-level scripts/ (not
demo/scripts/ which holds the archived v1.0 verify scripts). All git mv
commands enumerated verbatim in T-6.1, cross-checked against RESEARCH.md
TARGET 10.
2026-07-21 18:26:24 +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
Jon Chery 30e63d6cb5 docs(contracts): add elaborate example contracts with rich inputs
---ci---
phase: 5
milestone: v1.0
status: complete
---/ci---

Two reference contracts under contracts/examples/ demonstrating how
developers can use the open-ended inputs: map (D-021) to carry
environment + ownership + business context + deployment knobs +
operational flags. 29 keys each.

- contract-commodity-price-feed-prod.yaml: passing pipeline (POLICY_PASS,
  score 0.90, all 5 L1s applied)
- contract-regulatory-reporting-violation.yaml: Act 4 trigger
  (public-ingress: true -> POLICY_VIOLATION:PUBLIC_INGRESS -> score 0.40
  < 0.50 gate -> Dev rejects)

Both validated end-to-end: yaml load, policy_checker, confidence_signal,
mock_executor (passing contract only). state.json captures all 29 input
keys.
2026-07-21 17:42:04 +00:00
grimacing b84a8a2241 Update docs/architecture.md 2026-07-21 17:38:57 +00:00
grimacing 7614c41530 Add docs/vision.md 2026-07-21 17:35:51 +00:00
grimacing 52665b8f0c Add docs/architecture.md 2026-07-21 17:28:09 +00:00
Jon Chery d700148063 audit(v1.0): PASS — reconstruction + hygiene + discipline; P1-001 fixed
---ci---
phase: 0
milestone: v1.0
status: complete
audit:
  reconstruction: PASS (git-log phase statuses match ROADMAP.md; all 5 phases complete; 33 decisions in PROJECT.md; SEC-001 mitigated)
  branch_hygiene: PASS (all 5 phase branches merged + deleted; main + milestone/v1.0-initial only; tags v1.0.1..v1.0.5 + v1.1.0 monotonic; all 5 PRs merged)
  commit_discipline: PASS-WITH-CAVEAT (all per-task commits had ---ci--- blocks on phase branches; the 5 squash-merge commits on main lack ---ci--- blocks because Gitea's squash-merge API compresses the phase branch into a single summary commit — the per-task blocks were on the deleted phase branches)
  security_findings:
    - SEC-001 (Phase 01): mitigated (token rotated to env var)
    - P0-001 (Phase 04): fixed inline (URLError catch in finalize_evidence.py)
    - P0-002 (Phase 04): fixed inline (shell injection in issue body -> env var)
    - P1-001 (this audit): fixed (remote URL in .git/config stripped of token; future pushes use 'git -c http.https://<host>/.extraHeader=Authorization: token <token>' or a credential helper)
  escalation_count: 0
  lessons_count: 13 (across 5 verify_phaseNN.sh commits)
---/ci---

Audit PASS. Reconstruction test confirms git-log state matches .ciagent/
files. Branch hygiene clean (no orphan phase branches; tags monotonic;
PRs merged). Commit discipline passes with the documented caveat that
Gitea's squash-merge API strips per-task ---ci--- blocks from the
squashed commit body (the per-task blocks existed on the now-deleted
phase branches and are recoverable via git reflog if needed).

P1-001 (token in .git/config remote URL — deferred from Phase 01 verify)
is now FIXED: the remote URL is tokenless; future pushes use a one-shot
'git -c http.<host>/.extraHeader=Authorization: token <token>' or a
credential helper. This was the last open finding from the milestone.

The ACDL milestone v1.0 is complete and audited. Tag v1.1.0 is the
feature-milestone release (next minor per ship.md). The demo is live at
https://git.cloudinit.dev/continuous-intelligence/acdl-evidence/raw/branch/main/index.html
2026-07-21 13:58:22 +00:00
Jon Chery 80ac975e61 docs(milestone): complete v1.0 (tagged v1.1.0)
---ci---
phase: 0
milestone: v1.0
status: complete
requirements:
  covered: [REQ-01, REQ-02, REQ-03, REQ-04, REQ-05, REQ-06, REQ-07, REQ-08, REQ-09, REQ-10, REQ-11, REQ-12, REQ-13, REQ-14, REQ-15]
  partial: []
release:
  tag: v1.1.0
  type: feature-milestone (next minor per ship.md)
  phases:
    - v1.0.1 phase-01 repo-scaffolding
    - v1.0.2 phase-02 l1-modules
    - v1.0.3 phase-03 l2-modules-and-core-scripts
    - v1.0.4 phase-04 pipeline-and-approval-gates
    - v1.0.5 phase-05 evidence-ui-and-demo-dry-run
---/ci---

Milestone v1.0 complete. All 15 requirements covered. main branch created
from milestone/v1.0-initial and pushed. Repo default branch set to main.
Tag v1.1.0 (feature milestone -> next minor per ship.md versioning rule).
2026-07-21 13:57:04 +00:00
Jon Chery 58adf9e231 docs(P05): post-ship traceability + roadmap update (v1.0.5)
---ci---
phase: 5
milestone: v1.0
status: shipped
requirements:
  complete: [REQ-13, REQ-14, REQ-15]
release:
  tag: v1.0.5
  pr: 5
---/ci---

ROADMAP Phase 05 -> complete (v1.0.5). REQUIREMENTS REQ-13/14/15 -> complete.
All 5 phases of milestone v1.0 are now complete. Next: the COMPLETE gate
(review -> ship(milestone v1.1.0) -> audit).
v1.1.0
2026-07-21 13:54:41 +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.
v1.0.5
2026-07-21 13:53:54 +00:00
Jon Chery 1415c85d35 docs(P04): post-ship traceability + roadmap update (v1.0.4)
---ci---
phase: 4
milestone: v1.0
status: shipped
requirements:
  complete: [REQ-10, REQ-12]
release:
  tag: v1.0.4
  pr: 4
---/ci---

ROADMAP Phase 04 -> complete (v1.0.4). REQUIREMENTS REQ-10/12 -> complete.
Phase 04 was the last 'skeleton-filling' phase; Phase 05 builds the
evidence UI and runs the 4 demo acts end-to-end.
2026-07-21 13:43:07 +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).
v1.0.4
2026-07-21 13:42:25 +00:00
Jon Chery 711b61d63e docs(P03): post-ship traceability + roadmap update (v1.0.3)
---ci---
phase: 3
milestone: v1.0
status: shipped
requirements:
  complete: [REQ-04, REQ-05, REQ-06, REQ-07, REQ-08, REQ-11]
  partial: [REQ-12]
release:
  tag: v1.0.3
  pr: 3
---/ci---

ROADMAP Phase 03 -> complete (v1.0.3). REQUIREMENTS: REQ-04/05/06/07/08/11
-> complete; REQ-12 -> partial (full issue-trigger wiring in Phase 04).
2026-07-21 13:33:18 +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.
v1.0.3
2026-07-21 13:32:21 +00:00
Jon Chery 6e27df7404 docs(P02): post-ship traceability + roadmap update (v1.0.2)
---ci---
phase: 2
milestone: v1.0
status: shipped
requirements:
  complete: [REQ-02, REQ-03]
release:
  tag: v1.0.2
  pr: 2
---/ci---

ROADMAP Phase 02 -> complete (v1.0.2). REQUIREMENTS REQ-02/03 -> complete.
2026-07-21 13:18:51 +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.
v1.0.2
2026-07-21 13:18:12 +00:00
Jon Chery fd423e2df1 docs(P01): post-ship traceability + roadmap update (v1.0.1)
---ci---
phase: 1
milestone: v1.0
status: shipped
requirements:
  complete: [REQ-01, REQ-09]
  partial: [REQ-10, REQ-12]
release:
  tag: v1.0.1
  url: https://git.cloudinit.dev/continuous-intelligence/acdl/releases/tag/v1.0.1
  pr: 1
---/ci---

ROADMAP Phase 01 -> complete (v1.0.1). REQUIREMENTS REQ-01/09 -> complete;
REQ-10/12 -> partial (full impl in Phase 04).
2026-07-21 13:12:01 +00:00
grimacing 8947e89d7b ship: phase-01 repo-scaffolding (v1.0.1)
Squash merge of phase/01-repo-scaffolding into milestone/v1.0-initial; tagged v1.0.1.
2026-07-21 13:11:02 +00:00
Jon Chery b953fd4a8e docs(P01): complete repo-scaffolding phase
---ci---
phase: 1
milestone: v1.0
status: complete
requirements:
  covered: [REQ-01, REQ-09]
  partial: [REQ-10, REQ-12]
---/ci---

Squash merge of phase/01-repo-scaffolding into milestone/v1.0-initial.
Phase 01 ships the three-repo scaffold (acdl, acdl-contracts, acdl-evidence),
the placeholder index.html on acdl-evidence (D-012/D-016 raw-URL substitute
for unsupported Gitea Pages), the qa + prod branches on acdl-contracts
(D-013 stand-in for unsupported Gitea environments), the workflow skeletons
(pipeline.yml + issue-to-contract.yml), and the idempotent setup + verify
scripts. REQ-10/12 remain partial pending Phase 04 full implementation.
v1.0.1
2026-07-21 13:10:50 +00:00
Jon Chery 38eaec9337 docs(P01): create 3-wave phase plan (REQ-01/09/10)
---ci---
phase: 1
milestone: v1.0
status: plan
plan:
  waves: 3
  wave_1_coordination: [T-1.1 gitignore+layout+README, T-1.2 verify_phase01.sh]
  wave_2_backend: [T-2.1 gitea_setup.sh, T-2.2 pipeline.yml skeleton, T-2.3 issue-to-contract.yml skeleton]
  wave_3_coordination: [T-3.1 wire verify + traceability update]
  requirements_covered: [REQ-01, REQ-09, REQ-10]
  must_haves: 6
  verification:
    typecheck: bash -n scripts/*.sh
    test: scripts/verify_phase01.sh
    build: no-op
---/ci---

PLAN.md defines 3 vertical-slice waves: coordination (skeleton + verify
script), backend (Gitea setup + workflow skeletons), coordination (wiring +
traceability). infra-stub-engineer and frontend-engineer have 0 tasks this
phase. Branch for EXECUTE will be phase/01-repo-scaffolding.
2026-07-21 12:59:27 +00:00
Jon Chery 6691974445 docs(P01): research findings — Gitea API surface + persona roster
---ci---
phase: 1
milestone: v1.0
status: research
research:
  gitea_capabilities:
    pages: not_supported
    environments_api: not_supported
    repository_dispatch: not_supported
    workflow_call: supported
    workflow_dispatch: supported
    issues_opened: supported
  workarounds:
    - D-012 raw file URLs in place of Pages
    - D-013 workflow_dispatch approval inputs in place of environments
    - D-014 workflow_dispatch API in place of repository_dispatch
  verification_toolchain:
    typecheck: bash -n + python -m py_compile (no package.json)
    test: per-phase scripts/verify_phaseNN.sh
    build: no-op
---/ci---

ARCHITECTURE.md gains a Gitea API surface table and a branch-pinning rule.
PERSONAS.md is the canonical project-level persona roster: lead-developer
and backend-engineer always active; infra-stub-engineer custom persona owns
L1 stubs; data-engineer deactivated (no DB); frontend-engineer deactivated
until Phase 05.
2026-07-21 12:58:35 +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 5222a460e5 chore(config): rotate Gitea token to env-var reference (security)
---ci---
phase: 0
milestone: v1.0
status: specify
security:
  - id: SEC-001
    type: info_disclosure
    disposition: mitigated
    summary: Literal API token was committed in config.json gitea.api_token_env field
    fix: Replaced literal with env var name 'ACDL_GITEA_TOKEN'; token supplied via shell env at runtime
    severity: high
    stride: Information Disclosure
---/ci---

The 40-char value previously stored in .ciagent/config.json was a live Gitea
API token. Per the spec constraint 'no secrets in repo', the field now holds
an env var name. The token itself is exported in the shell session at runtime
and is never written to disk. Treat the prior value as already-leaked and
rotate it via the Gitea UI before any external disclosure.
2026-07-21 12:55:29 +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