2ec2a87a4e01fe01ac016acf28af7ddacafdb502
6 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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.
|
||
|
|
ab69d1069f |
docs(milestone): v1.1 complete - audit hygiene fixes (P1-A/B/D)
---ci--- project: acdl phase: 0 milestone: v1.1 status: complete audit_hygiene: - P1-A: config.json status specify -> complete - P1-B: PERSONAS.md 6 stale platform/ territory paths -> acdl_platform/ - P1-D: ROADMAP.md audit pending -> audit CLEAN ---/ci--- v1.1 milestone COMPLETE + audit CLEAN. Applied 3 audit-hygiene fixes (P1-A/B/D from AUDIT.md): - config.json: status specify -> complete (milestone shipped). - PERSONAS.md: 6 territory paths + 1 verification toolchain command updated platform/ -> acdl_platform/ (the Phase 08 prep rename). - ROADMAP.md: audit pending -> audit CLEAN. Remaining post-hoc P1s (non-blocking, v1.2 cleanup): - P1-1: redact two AWS access key IDs in .ciagent/VERIFY.md Phase 09 narrative (public identifiers, not secret pairs). - P1-C: document v1.1.0 tag-placement guidance in run.md (the tag is on the v1.0 Phase 05 traceability commit, causing 3 pre-specify no-ci commits to fall in the v1.1.0..HEAD range). |
||
|
|
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 |
||
|
|
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.
|
||
|
|
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.
|
||
|
|
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]
|