Architecture · 05 of 08 · The contract

The contract: one source, generated artifacts, four consumers

Everything an agent needs to know about Airframe comes out of one bundle. Validate, Tower's forms, the agent tools and the docs all read it, so they can never disagree.

The contract: one source, generated artifacts, four consumers Architecture in which three sources of truth, the XRDs and chart schema, the sidecar meta and the dead-end rules, feed a contract generator that runs in CI on each tag and emits one versioned contract bundle, consumed by airframe validate, Tower, the airframe tools and the generated documentation. TAGXRDs + chart schemaOpenAPI · values.schema.jsonSidecar metaowner · risk · outputs · verifyDead-end rulesAF ids + failing fixturesContract generatorCI, on each tagContract bundleairframe-contract.jsonairframe validateCI check + agent toolTowerforms · validatorairframe.* toolsClearance · MCPDocsAGENTS.md · referenceOne source, generated artifacts: nothing is written twice, so nothing can drift.LEGENDGeneratedSource of truth or consumerVersioned with each tagReads

Principle honored

Single source of truth. Today the same rules live in values.yaml comments, the schema, Tower's TypeScript and the quickstarts, and they drift.

What changes

  • A CRD structural schema rejects unknown x- keys, so owners, risks, outputs and verify checks live in sidecar meta files.
  • Schema-first: values.yaml and the reference docs are generated from the schema, not the other way round.
  • The bundle is versioned with each Airframe tag, so a tool can ask "what was true at v0.3.90".

Check first

Unverified: that Helm ignores unknown x-hangar keywords inside values.schema.json. Check with helm lint before relying on it; if not, keep them in the sidecar too.

Hangar · Autopilot · plan