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 12 August to 29 September 2026 with eight lessons. 13 August, first XRDs: Ready is reserved, use your own condition. 17 August, SecretStore goes live: composing a cluster-scoped resource needs an Object wrapper. 25 August, TektonCICD split out: an XR can compose another XR. 7 September, the polling budget: poll hourly and cap the reconcile rate. 16 September, highlighted, a file vanished: rendering nothing is a delete. 17 September, forking the provider: a 403 is not a 404. 23 September, two API storms: render what the provider observed. 27 September, 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