← Home

Build Feed

Every CI build in the pipeline — passes, failures, and what each one revealed.

PASS#412026-06-22production76fbd85

Production tofu reconcile — 0 changes; buildcam.ai state clean

Fix: create_hosted_zone=true (Build #40 had false, which set zone count=0 and planned destroy). Apply: 0 added, 0 changed, 0 destroyed. Route 53 zone Z058930713XQYAP42V3C5 fully reconciled with tfvars.

FAIL#402026-06-22production4b292a4

create_hosted_zone=false planned zone destroy — HostedZoneNotEmpty

production.tfvars had create_hosted_zone=false after domain-bootstrap merge. This set count=0 on aws_route53_zone.buildcam, planning a destroy. AWS rejected: zone has A records + cert CNAMEs. Fix in Build #41.

PASS#392026-06-22production-domain-bootstrapc715a1c

buildcam.ai LIVE — HTTPS verified on 4 URLs after 9 failed builds

Phase 1a: Route 53 zone Z058930713XQYAP42V3C5 created, ACM cert b24bfc84 requested. Phase 1b: cert validation CNAMEs. Phase 2–3: GoDaddy NS updated to 4 Route 53 nameservers. Phase 4: cert ISSUED (8 min). Phase 5: CloudFront E1SDUOSKW85R0A aliased to buildcam.ai + www. Phase 6: HTTP 200 on buildcam.ai, www.buildcam.ai, /builds/, /sitemap.xml.

FAIL#382026-06-22production-domain-bootstrapd16d51e

GoDaddy 1Password field label mismatch — Key vs key

Credential resolver tried: 'api key', 'api_key', 'key', 'API Key'. Field dump revealed: type=MENU, label='Key' (capital K). Secondary field: type=CONCEALED, id=credential. Fixed in Build #39.

PASS#252026-06-22productiondf6d618

PKT-BCM-2026-0019 — public launch readiness deployed; 10 routes HTTP 200

SEO + sitemap.xml + analytics + /sponsor page + /episodes + design system scaffold. 10 routes HTTP 200 including /sitemap.xml. Canonical URL buildcam.ai. OG metadata on all routes.

PASS#202026-06-22productionc8f0f6e

First production content deploy — all 9 routes HTTP 200

Promoted staging RC c8f0f6e to production. Pipeline gate (approve-production) unblocked by agent after all criteria verified. tofu-production: no infra changes. deploy-production: S3 sync + CloudFront invalidation. Production live at d1bspkt74z4742.cloudfront.net.

PASS#192026-06-22stagingc8f0f6e

Staging validation — pipeline fixes + iteration #1 content

After Build #18 revealed RC 338a09d had old pipeline.yml, develop was fast-forwarded to staging. This build validated: approve-production key, depends_on fix, least-privilege roles, builds feed, failure museum (F-001–F-005), viewport meta, robots.txt.

FAIL#182026-06-22production338a09d

RC pipeline mismatch — gate bypassed, bootstrap admin 403

tofu-production ran without waiting for approve-production gate (depends_on: web-ci, no key). Attempted ZentariBuildkiteBootstrapAdminRole (retired, 0 policies) — 403 on S3 state bucket. Root cause: pipeline fixes on develop not yet merged to staging before RC selection (F-006).

PASS#172026-06-22production-bootstrapdc9bd7b

Production infra provisioned — CloudFront + roles + bootstrap retired

One-time bootstrap apply: tofu init/validate/plan/apply in account 715398629366. Created ZentariAgentPermissionsBoundary, BuildCamOpenTofuApplyRole, buildcam-web-deploy-production. CloudFront E1SDUOSKW85R0A at d1bspkt74z4742.cloudfront.net. Bootstrap admin AdministratorAccess detached, tagged emergency-only.

PASS#162026-06-21production-bootstrap-retire9487962

Bootstrap admin retired — AdministratorAccess detached

One-time cleanup job: ZentariBuildkiteBootstrapAdminRole detached AdministratorAccess from itself via OIDC. Verified 0 attached policies. Tagged emergency-only.

PASS#142026-06-21staging2820084

Least-privilege validated — no bootstrap admin

BuildCamOpenTofuApplyRole runs full tofu plan+apply. buildcam-web-deploy-staging handles S3 sync + CloudFront invalidation. Zero AdministratorAccess in any pipeline step.

PART#132026-06-21staging4ed9fe9

Bootstrap admin applies final permission fixes

Added cloudfront:ListTagsForResource and iam:ListAttachedRolePolicies to least-privilege role policy. Deploy step used least-priv; tofu step used bootstrap admin temporarily.

FAIL#122026-06-21staging4af388e

Missing: cloudfront:ListTagsForResource + iam:ListAttachedRolePolicies

Terraform reads distribution tags during plan (needs ListTagsForResource). IAM list managed policies is a different API from list inline policies — both required.

FAIL#102026-06-21staging2a5c0ce

Three permission gaps found

budgets:ListTagsForResource missing. iam:PermissionsBoundary condition key only set on mutating calls — blocked read operations. S3 Get* variants needed.

FAIL#82026-06-21staging31b385a

StringEquals + wildcard — literal asterisk never matches

IAM trust policy used StringEquals for sub condition with * wildcard. Buildkite sub format includes commit SHA — needs StringLike. The asterisk was being matched literally.

FAIL#72026-06-21staging77068ea

Wrong OIDC audience in all trust policies

Trust policies had audience = 'https://buildkite.com'. Pipeline requests --audience sts.amazonaws.com. AssumeRoleWithWebIdentity rejected every token.

PASS#52026-06-22staging77e1a9d

Staging live — CloudFront at d2keolaudxsmby.cloudfront.net

First successful deploy. S3 bucket created. CloudFront distribution with OAC, index rewrite function, immutable asset cache headers. HTTP 200 confirmed.

Pipeline: buildcam-web-ci · Builds are public evidence. Failures included.