Crossplane · 04 of 04 · The journey so far

Six weeks building Airframe, one lesson at a time

Not to scale. Each stop is a real commit in Airframe, Apron or my fork of the GitHub provider, and each left a rule behind.

Six weeks building Airframe, one lesson at a time A timeline from August 12 to September 29, 2026 with eight lessons. August 13, first XRDs: Ready is reserved, use your own condition. August 17, SecretStore goes live: composing a cluster-scoped resource needs an Object wrapper. August 25, TektonCICD split out: an XR can compose another XR. September 7, the polling budget: poll hourly and cap the reconcile rate. September 16, highlighted, a file vanished: rendering nothing is a delete. September 17, forking the provider: a 403 is not a 404. September 23, two API storms: render what the provider observed. September 27, ComponentReady: reasons an agent can read. AIRFRAME · 2026-08-12 TO 2026-09-29First XRDsReady is reserved; use your own08-13SecretStore goes livecluster-scoped needs an Object08-17TektonCICD split outan XR can compose another XR08-25The polling budgetpoll hourly, cap reconcile rate09-07A file vanishedrendering nothing is a delete09-16Forking the providera 403 is not a 40409-17Two API stormsrender what the provider observed09-23ComponentReadyreasons an agent can read09-27Almost every lesson here was found on a running cluster, not in a render.LEGENDA lessonThe one that cost dataWhen it landed

Built

Fifteen APIs, from app stacks and environments to PostgreSQL, Redis, RabbitMQ, MongoDB and Dex, plus three Composition Functions.

The one that hurt

A transient false in a template gate rendered a file away. Crossplane deleted it, ArgoCD pruned the SecretStore it described, and two apps lost their Infisical projects and secrets.

Next in the series

Moving every API to the catalog.hangar.io group, scaffolding repos as a one-time action instead of a reconciled resource, and the rest of the A+ scorecard.

Hangar · Airframe · Crossplane