The Developer Experience

The Developer Experience

Agentic Cloud Delivery Platform

Internal
The Developer Experience

Where Agentic Cloud Delivery (ACDL) Sits in Your World

Here's who uses the platform and where the boundary is.

  • Technical developer — owns app code + a contract + a thin CI definition
  • Citizen developer — declares intent in plain language; an AI agent produces a contract that passes the same safety envelope Agentic
  • Upstream is anything — your IDE, an agentic SDLC, or vibe coding on a laptop. ACDL doesn't care how the contract was produced
  • ACDL is infrastructure only — it provisions and governs AWS resources. Application deployment is upstream
Internal
The Developer Experience

The Contract — The Entire Consumer Surface

Now let's look at what a consumer actually writes — it's tiny.

Three things. That is the entire consumer-side surface.

  • 1. App code — the consumer's service, at the top level of the repo
  • 2. A contract — a single YAML file: id, name, environment, infrastructure
id: msvc
name: microservice
environment: dev
infrastructure:
  microservice:
    version: "1.0.0"
    inputs:
      cpu: 256
      memory: 512
      desired_count: 2
      port: 8080
  • 3. A one-line CI definition — a thin uses: wrapper pointing at a versioned platform workflow
  • The developer does not: write infrastructure modules, clone the platform repo, hold cloud credentials, or maintain a state backend
Internal
The Developer Experience

The Developer Feedback Loop

Once you push, here's what you see — in real time, in your own logs.

Developers see what the platform is doing, in real time. Testing

  • Streamed output by default — the infrastructure plan, policy-check results, and each check record flow to stdout
  • PR comments after every successful pipeline stage — a developer always knows where they stand without refreshing a dashboard
  • Clear, explainable halt reasons — a policy violation, an insufficient confidence signal, or a missing attestation. Never an opaque debugging exercise.
  • Connection strings posted as PR comments — human-readable, no hunting
  • Runtime secrets in encrypted Parameter Store — KMS-encrypted, namespaced, no raw secrets in logs
  • Errors become GitHub issues, automatically — a failed deploy opens an issue on the platform repo
Internal
The Developer Experience

Versioned, Predictable Releases

You control when you absorb platform improvements — no surprise upgrades.

Consumers control when they absorb platform improvements. Testing

  • Floating MAJOR + MINOR tags (e.g. @v1.10) — a consumer automatically receives patch updates within the line
  • Semantic versioning with a clear contract: interface → MAJOR, behavior → MINOR, lifecycle → PATCH
  • A consumer can pin to an exact version for maximum stability, or float on MAJOR only (@v1) to absorb new features on their own cadence
  • Unversioned references (@main, bare) are discouraged — the versioned tag is the only immutability lever
  • Automated release job computes the next semver on merge to main, creates the tag, and updates the floating tags
Internal
The Developer Experience

Friendly Onboarding

First impressions matter — the platform fails gracefully, not opaquely.

First impressions of a platform are made when it fails for the first time. The platform fails gracefully. Testing

When no environment is bound, the platform emits a user-friendly onboarding prompt instead of failing opaquely:

  1. That no environment is bound to their repo yet
  2. What the platform will provision on their behalf (account, network, state, role)
  3. The expected turnaround for the platform team to grant the environment
  4. How to request an environment

The pipeline then exits without attempting a deployment — no partial state, no confusing errors.

Citizen developer onboarding path: planned

Internal
The Developer Experience

Safe Promotion Path

Promotion is a workflow choice, not a contract edit — and the bar rises automatically.

The contract is environment-agnostic. The platform raises the bar automatically.

Approach A — One contract, one job per environment. Environment passed by each job.

jobs:
  dev:
    uses: acdl/.github/workflows/deploy.yml@v1.10
    with: { contract: .acdl/contract.yml, environment: dev }
  qa:
    needs: dev
    uses: acdl/.github/workflows/deploy.yml@v1.10
    with: { contract: .acdl/contract.yml, environment: qa }

Approach B — Environment-specific contracts. When inputs differ per environment.

jobs:
  dev:
    uses: acdl/.github/workflows/deploy.yml@v1.10
    with: { contract: .acdl/contract-dev.yaml }
  qa:
    needs: dev
    uses: acdl/.github/workflows/deploy.yml@v1.10
    with: { contract: .acdl/contract-qa.yaml }
Internal
The Developer Experience

Safe Decommission

Tearing down is as deliberate as deploying — and just as gated.

Tearing down a stack is as deliberate as deploying one. Testing

uses: acdl/.github/workflows/deploy.yml@v1.10
with:
  contract: .acdl/contract.yml
  mode: decommission
  changeRequestId: "CHG0678912"

A 2-step pipeline with two SRE human-attestation gates:

  1. Validate the change request — the platform queries the CMDB; the CR must be approved and match the consumer repo
  2. Disable deletion protectionSRE approvesZero all counts + destroya second SRE approves

The per-stack encryption key enters a grace window (default 30 days) so encrypted data remains recoverable.

Internal
The Developer Experience

Self-Service Module Catalog

You don't author infrastructure — you pick from pre-built, security-reviewed building blocks.

Developers pick from pre-built, security-reviewed building blocks. Testing

  • Primitives — single-purpose resources (S3, VPC, ECS, IAM, load balancer, container registry, CloudFront, WAF, RDS), each with documented inputs/outputs, usage, compliance extension points, and versioning
  • Modules — composed patterns (a static site with CDN + WAF; a microservice with VPC + ECS + load balancer + registry)
  • Validated examples per modulesimple.yaml + complex.yaml + variation files, validated against the contract schema in CI. Examples cannot drift from the schema silently
  • Auto-promotion of patterns — auto-promoted to the catalog after 3 observed usages Planned Agentic
  • Compliance extension points — each module lists where GDPR, SOX, SOC2, DORA controls will wire in Planned
Internal
The Developer Experience

The Desired Outcomes

Here's what this delivers to the organization.

  • Velocity without sacrificing safety. Speed is in the ergonomics (a simple contract, a one-line uses:); safety is in the gates the consumer cannot bypass.
  • Security, observability, and compliance as platform defaults — not per-team effort, not post-hoc remediation.
  • Auditability as a byproduct, not a project. Every production change is traceable to a human attestation and a tamper-evident evidence event.
  • Blast radius contained by design. Zero-trust OIDC + ABAC means a consumer can only touch its own tagged resources.
  • The bottleneck moves off the platform team's ticket queue. A merged change progresses through lower environments without a platform engineer joining a thread.
  • Infrastructure as a utility, not a craft. Teams consume infrastructure, they don't maintain it — and the platform compounds value over time by learning from recurring patterns.
  • A path to the citizen developer. The same safety envelope that serves a senior engineer will serve a non-technical consumer. Agentic
Internal
The Developer Experience

Appendix

For deep dives — these slides cover details omitted from the main 10.

Contents:

  1. The Citizen Developer Experience (full)
  2. No Platform Code, No Cloning (detail)
  3. Local Reproducibility (detail)
  4. The Road to the North Star (phased roadmap)
  5. Glossary
  6. Operating Model & Cost
Internal
The Developer Experience

A1 — The Citizen Developer Experience

A non-technical consumer ships a production deployment by declaring intent — without authoring a workflow, a configuration file, or an infrastructure module.

  • The consumer opens an issue describing what they need (e.g. "a web API for the pricing service")
  • An AI agent maps the intent to a contract referencing a module from the reviewed skill catalog
  • The contract enters the same pipeline and must clear the same confidence gate before promotion

Guardrails that make this safe:

  • Skills are versioned, signed, and reviewed for sensitive data before release (Infra & Ops owns the review)
  • Agents are stateless — all state lives in the platform; the platform trusts and always verifies
  • The agent's trace and submission confidence are captured in the contract for review

Skill catalog + real agent runtime: planned Agentic

Internal
The Developer Experience

A2 — No Platform Code, No Cloning

Consumers uses: a versioned central workflow. The platform fetches itself at run time. The consumer never touches platform internals.

  • The consumer's CI definition is a thin wrapper — one uses: line
  • The runner checks out the consumer repo, then checks out the platform repo into the workspace
  • The platform installs its own runtime dependencies — the consumer installs nothing
  • When the platform ships a fix, every consumer on a floating tag gets it on their next run
Internal
The Developer Experience

A3 — Local Reproducibility

The entire CI pipeline runs from the shell, not just in CI. Testing

  • scripts/run_ci.sh mirrors the CI pipeline locally — the same three stages (lint → test → check-only) in sequence
  • scripts/run_platform.sh --check-only runs the platform offline — no AWS, no policy engine, no outbox required. Validates a contract end-to-end before pushing
  • --plan-only runs through the infrastructure plan without applying
  • The CI and deploy pipelines are defined by declarative contracts (YAML instances validated against JSON Schemas) — a single source of truth that both workflows implement
Internal
The Developer Experience

A4 — The Road to the North Star

Proposed phasing — not formally planned.

Internal
The Developer Experience

A5 — Glossary

Term Meaning
OIDC OpenID Connect — federation protocol for short-lived tokens, no long-lived credentials
ABAC Attribute-Based Access Control — access scoped by resource tags + repo identity, not roles
CMK Customer-Managed Key — per-stack encryption key, 90-day rotation, no shared keys
CMDB Configuration Management Database — validates change requests for decommission
RPO Recovery Point Objective — RPO = 0 means evidence is written synchronously, no data loss
HITL Human-in-the-Loop — deliberate human attestation required for qa/prod/dr environments
VCS Version Control System — the git hosting platform (GitHub, Gitea, GitLab)
NFR Non-Functional Requirement — encryption, tagging, observability standards
IR Intermediate Representation — the engine-agnostic stack definition between contract and Terraform
Internal
The Developer Experience

A6 — Operating Model & Cost

ACDL runs at zero cloud cost for day-to-day development.

  • Local emulators are the primary tier — the full pipeline runs in-process, no AWS credentials, no Checkov, no DynamoDB. Testing
  • Live-AWS is a one-off spike per milestoneterraform init/validate/plan verifies the adapter. No BAU cloud spend.
  • No running infrastructure between milestones — state in S3 (one bucket), outbox in DynamoDB (one table), both query-only.
  • Cost drivers are spike-scoped: Terraform plan reads (free), S3 state storage (cents), DynamoDB outbox (cents).

Verification Coverage — 6 cloud capabilities are design-verified + locally emulated, deploy-unverified (IAM drift):
DynamoDB contracts table · Lambda contract-ingestor · ECS service live · CloudFront prod stack · uptime-kuma · OIDC role

The operating model: local-first development, milestone-scoped verification, zero BAU cloud spend.

Internal