---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.
11 KiB
marp, theme, paginate, size, header, footer, style
| marp | theme | paginate | size | header | footer | style |
|---|---|---|---|---|---|---|
| true | default | true | 16:9 | ACDL · Agentic Cloud Delivery Platform | Executive Demo · v1.0 | /* S&P Global-inspired palette */ :root { --sp-red: #C8102E; --sp-red-dark: #8E0B20; --sp-ink: #1A1A1A; --sp-slate: #4A4A4A; --sp-gray: #6E6E6E; --sp-line: #D6D6D6; --sp-bg: #FFFFFF; --sp-tint: #F4F4F4; } section { font-size: 24px; color: var(--sp-ink); background: var(--sp-bg); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 50px 60px; } section.title { text-align: center; background: var(--sp-red); color: #FFFFFF; display: flex; flex-direction: column; justify-content: center; } section.title h1 { color: #FFFFFF; font-size: 64px; margin-bottom: 0; border: none; } section.title h2 { color: #FFFFFF; border: none; font-weight: 400; } section.title strong { color: #FFFFFF; } h1 { color: var(--sp-red); font-size: 40px; font-weight: 700; margin-bottom: 12px; } h2 { color: var(--sp-red); border-bottom: 3px solid var(--sp-red); padding-bottom: 6px; font-weight: 700; } h3 { color: var(--sp-red-dark); font-weight: 600; margin-top: 24px; } ul, ol { color: var(--sp-slate); } li { margin-bottom: 6px; } strong { color: var(--sp-ink); } table { font-size: 18px; width: 100%; border-collapse: collapse; margin: 12px 0; } th { background: var(--sp-red); color: #FFFFFF; text-align: left; padding: 10px 12px; font-weight: 600; border: 1px solid var(--sp-red-dark); } td { padding: 8px 12px; border: 1px solid var(--sp-line); color: var(--sp-slate); } tr:nth-child(even) td { background: var(--sp-tint); } pre { font-size: 13px; background: var(--sp-tint); border-left: 4px solid var(--sp-red); padding: 14px 16px; border-radius: 0; color: var(--sp-ink); } code { background: var(--sp-tint); color: var(--sp-red-dark); padding: 1px 5px; border-radius: 2px; font-family: 'Menlo', 'Consolas', monospace; } pre code { background: none; color: var(--sp-ink); padding: 0; } blockquote { border-left: 5px solid var(--sp-red); background: var(--sp-tint); padding: 10px 16px; color: var(--sp-slate); font-style: italic; border-radius: 0; } header { color: var(--sp-red); font-weight: 700; font-size: 14px; } footer { color: var(--sp-gray); font-size: 12px; } section::after { color: var(--sp-red); font-weight: 700; } |
ACDL
Agentic Cloud Delivery Platform
Automatic. Safe. Audited. — in 30 minutes, on stubs.
v1.0 · GitHub Actions · stub-driven
The Problem
Today, deploying infrastructure takes weeks
- Ticket → triage queue → copy-paste config → peer review → security review → waiting for central IT to release
Two weeks of human latency for a service that should take minutes.
What we want instead
- Developer commits a contract → pipeline runs
- Safety computed automatically (confidence signal)
- Manual gates only where they matter (QA, Prod)
- Every step written to a tamper-evident evidence stream
How It Works
┌────────────── acdl-contracts ──────────────┐
Developer ──▶│ commit contract.yaml │
└───────┬───────────────────────────────────┘
│ (push)
Citizen ┌─────────┴──────────┐
│ "ingest gas pricing into data lake"
▼
Claude agent ──▶ contract.yaml ─┘
│ (push)
▼
┌─────────────────┐
│ reusable │
│ GitHub Actions │
│ pipeline │
└────────┬────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
Dev (auto) QA (approval) Prod (approval)
│
▼
evidence_writer ─▶ audit.json (hash-chained) ─▶ Pages timeline
Two entry paths, one pipeline, one audit trail — developer via GitHub, citizen developer via their own Claude agent.
The Safety Story
Computed, not requested
| Signal | Behavior |
|---|---|
| Base confidence | 0.90 |
| On policy violation | drop to 0.40 + reason code |
| Gate threshold | ≥ 0.50 to proceed past Dev |
Policy (v1)
public-ingress: true→POLICY_VIOLATION:PUBLIC_INGRESS
Evidence
- Each event appended to
audit.jsonwith SHA-256 link to previous (prev_hash+hash) - Published to Pages → vanilla-JS timeline
Scenario 1 — Developer Self-Service
Trigger
Developer commits a valid contract.yaml requesting l2-commodity-price-feed via GitHub.
What you'll see
- Dev: policy ✅ → apply api-gateway, lambda, s3 → confidence 0.90 → proceed
- QA: pipeline pauses → click Approve
- Prod: pipeline pauses → click Approve
- Finalize:
audit.jsoncommitted → Pages timeline updates
Evidence outcome
Timeline shows: contract received → policy pass → apply × 3 → confidence 0.90 → QA → Prod → published.
Scenario 1 — Journey
flowchart LR
classDef gh fill:#F4F4F4,stroke:#1A1A1A,stroke-width:2px,color:#1A1A1A
classDef stage fill:#C8102E,stroke:#8E0B20,stroke-width:1px,color:#FFFFFF
classDef gate fill:#FFFFFF,stroke:#1A1A1A,stroke-width:2px,color:#1A1A1A
classDef evidence fill:#F4F4F4,stroke:#C8102E,stroke-width:1px,color:#1A1A1A
D["Developer"]:::gh -->|"writes contract.yaml"| GH["GitHub<br/>acdl-contracts"]:::gh
GH -->|"push triggers<br/>GitHub Action"| DEV["Dev<br/>(autonomous)"]:::stage
DEV -->|"policy ✅ · confidence 0.90"| QA["QA<br/>approval gate"]:::gate
QA -->|"approve"| PROD["Prod<br/>approval gate"]:::gate
PROD -->|"approve"| FIN["Finalize<br/>commit audit.json"]:::stage
FIN --> TL["GitHub Pages<br/>timeline"]:::evidence
Scenario 2 — Citizen Developer
Trigger
Non-technical user prompts their own Claude agent in natural language:
"I need a new service to ingest real-time natural gas pricing data into our data lake."
What you'll see
- Claude agent parses intent, writes
contract.yamlforl2-commodity-price-feed, pushes a branch - Issue closed; branch push triggers the identical pipeline from Scenario 1
- Citizen developer follows the run all the way to Prod
Evidence outcome
Timeline is indistinguishable from Scenario 1 — the agentic surface is first-class, not a bolt-on.
Scenario 2 — Journey
flowchart LR
classDef cit fill:#F4F4F4,stroke:#C8102E,stroke-width:2px,color:#1A1A1A
classDef agent fill:#C8102E,stroke:#8E0B20,stroke-width:1px,color:#FFFFFF
classDef stage fill:#1A1A1A,stroke:#1A1A1A,stroke-width:1px,color:#FFFFFF
classDef gate fill:#FFFFFF,stroke:#1A1A1A,stroke-width:2px,color:#1A1A1A
classDef evidence fill:#F4F4F4,stroke:#C8102E,stroke-width:1px,color:#1A1A1A
CD["Citizen developer"]:::cit -->|"natural-language<br/>prompt"| CL["Claude agent<br/>(citizen-owned)"]:::agent
CL -->|"generates<br/>contract.yaml"| GH["GitHub<br/>acdl-contracts"]:::cit
GH -->|"push triggers<br/>GitHub Action"| DEV["Dev<br/>(autonomous)"]:::stage
DEV -->|"policy ✅ · confidence 0.90"| QA["QA<br/>approval gate"]:::gate
QA -->|"approve"| PROD["Prod<br/>approval gate"]:::gate
PROD -->|"approve"| FIN["Finalize<br/>commit audit.json"]:::stage
FIN --> TL["GitHub Pages<br/>timeline"]:::evidence
Scenario 3 — The Safety Net
Trigger
Developer commits a malicious contract.yaml for l2-regulatory-reporting via GitHub:
stack: l2-regulatory-reporting
public-ingress: true
What you'll see
- Dev:
policy_checker→POLICY_VIOLATION:PUBLIC_INGRESS confidence_signaldrops 0.90 → 0.400.40 < 0.50→ pipeline halts in Dev- Rejection reason written to the evidence stream
Evidence outcome
Timeline shows the attempted deploy, the violation, the confidence drop, and the halt — visible and explained.
Scenario 3 — Journey
flowchart LR
classDef gh fill:#F4F4F4,stroke:#1A1A1A,stroke-width:2px,color:#1A1A1A
classDef stage fill:#C8102E,stroke:#8E0B20,stroke-width:1px,color:#FFFFFF
classDef halt fill:#1A1A1A,stroke:#1A1A1A,stroke-width:1px,color:#FFFFFF
classDef evidence fill:#F4F4F4,stroke:#C8102E,stroke-width:1px,color:#1A1A1A
D["Developer"]:::gh -->|"writes malicious<br/>contract.yaml"| GH["GitHub<br/>acdl-contracts"]:::gh
GH -->|"push triggers<br/>GitHub Action"| DEV["Dev<br/>(autonomous)"]:::stage
DEV -->|"POLICY_VIOLATION:PUBLIC_INGRESS<br/>confidence 0.90 → 0.40"| HALT["Halt in Dev<br/>+ rejection reason"]:::halt
HALT --> TL["GitHub Pages<br/>timeline"]:::evidence