Jon Chery e00393adfd decision(P03): clarification — L2/contract/evidence/hash-chain schemas
---ci---
phase: 3
milestone: v1.0
status: clarify
decisions:
  - id: D-020
    decision: L2 manifest.yaml schema with l1s: list of {name, inputs: map}
    rationale: REQ-04 says L2 composes L1s; REQ-05 caps depth at 5 (L2->L1 is depth 1)
    confidence: 0.90
    alternatives: [graph-of-L1s with edges, single flat list of L1 names with no inputs]
  - id: D-021
    decision: contract.yaml schema with stack, inputs, optional public-ingress: bool
    rationale: REQ-07 cites public-ingress:true as the forbidden key; REQ-08 keys off policy pass/fail
    confidence: 0.90
    alternatives: [separate policy file, contract-free intent]
  - id: D-022
    decision: mock_executor.sh writes state.json with l2, l1s array (name+applied+exit_code), contract
    rationale: REQ-06 says writes state.json but does not specify shape
    confidence: 0.85
    alternatives: [per-L1 state files, no state file]
  - id: D-023
    decision: evidence_writer.py appends to audit.json (JSON array); each event has seq, ts, stage, event, prev_hash, hash (SHA-256 of canonical JSON); genesis has prev_hash=GENESIS, seq=0
    rationale: D-005 mandates hash-chained ledger; canonical JSON for deterministic hashing
    confidence: 0.90
    alternatives: [signed commits only, append-only log file]
  - id: D-024
    decision: confidence_signal.py prints {score, reason} JSON to stdout; exit 0 always
    rationale: REQ-08 literal: base 0.90, drops to 0.40, gate >= 0.50
    confidence: 0.95
    alternatives: [exit non-zero on fail, separate side-channel file]
  - id: D-025
    decision: policy_checker.py exits 1 with stdout POLICY_VIOLATION:PUBLIC_INGRESS on public-ingress:true; else exit 0 with stdout POLICY_PASS
    rationale: REQ-07 literal
    confidence: 0.99
    alternatives: []
  - id: D-026
    decision: l3b_agent_stub.py reads issue body from argv[1] or stdin, applies D-008 keyword map, writes contract.yaml to stdout (or -o <path>)
    rationale: D-008 + Act 3 example; L3B must produce same contract format as L3A
    confidence: 0.90
    alternatives: [fixed-output contract per stack, no -o flag]
---/ci---

Phase 03 has real ambiguities (no schema was specified for L2 manifests,
contract.yaml, audit.json events, or the L3B output format). Seven
decisions logged: D-020 L2 schema, D-021 contract.yaml schema, D-022
state.json shape, D-023 audit.json event + hash chain, D-024
confidence_signal output, D-025 policy_checker output, D-026 l3b_agent
I/O contract.
2026-07-21 13:19:43 +00:00

ACDL — Agentic Cloud Delivery Platform

A 30-minute executive demo proving that infrastructure can be delivered automatically, safely, and with a complete audit trail — without the usual weeks of manual tickets, reviews, and copy-pasted configuration.

The demo runs entirely on local stubs (no AWS/GCP/Azure, no external LLM APIs). It shows intent and safety behavior rather than provisioning real cloud resources.

Four acts

  1. Act 1 — The Friction: the old manual 2-week deployment process.
  2. Act 2 — Developer Self-Service: commit a valid contract.yaml for l2-commodity-price-feed, watch Dev auto-run, QA + Prod approval gates, then the evidence timeline.
  3. Act 3 — Citizen Developer: open a GitHub/Gitea Issue with natural- language intent; the Python keyword parser generates the same contract.yaml and triggers the identical pipeline.
  4. Act 4 — The Safety Net: commit a malicious contract.yaml (public-ingress: true) for l2-regulatory-reporting; the pipeline halts in Dev because the confidence signal drops below 0.50, and the rejection is visible on the evidence stream.

Repositories

All under the continuous-intelligence Gitea org at https://git.cloudinit.dev:

  • acdl (this repo) — platform + stubs + reusable workflows
  • acdl-contracts — developer surface (contract.yaml + issue trigger)
  • acdl-evidence — audit timeline (served via raw file URLs; Gitea has no native Pages — see .ciagent/ARCHITECTURE.md Gitea API Surface table)

Project metadata

See .ciagent/PROJECT.md for the full spec, .ciagent/ROADMAP.md for the 5-phase breakdown, .ciagent/REQUIREMENTS.md for traceable requirements, and .ciagent/PERSONAS.md for the active persona roster.

Phase 01 verification

After running scripts/gitea_setup.sh (which creates acdl-contracts and acdl-evidence in the org and pushes the placeholder index.html), run:

ACDL_GITEA_TOKEN=<token> scripts/verify_phase01.sh

The script confirms:

  • both new repos exist via the Gitea API
  • the raw index.html URL on acdl-evidence returns HTTP 200
  • the qa and prod branches exist on acdl-contracts

Exit 0 = Phase 01 success criteria met.

S
Description
Nova — The New Dawn of DevSecOps. Autonomous infrastructure delivery: consumers declare intent, the platform ships safely with an immutable audit trail.
Readme 69 MiB
Languages
Python 87.2%
Shell 8.6%
HCL 4.2%