Airframe · Scorecard
Airframe, measured
Autopilot only works if an agent can change an app safely without guessing. So I score Airframe, the contract every app is built on, against what an agent needs: ten dimensions, fourteen acceptance checks, all automated. A+ means 97 or better and all fourteen checks. The number starts low on purpose, because it measures the finished contract, and it moves only when the work is real.
Progress over time
Each filled point is a committed run of the tool. The hollow points are the roadmap's milestone targets still ahead, not measurements.
- Baseline · Sep 26, 2026 Before any of the A+ work. One acceptance check passed: every live values file rendered.
- M0 · Sep 26, 2026 The chart guard, chart tests and CI, AGENTS.md and a first airframe validate. M0 closed the next day against a target of 35.
- M1 and M2 · Sep 29, 2026 A strict schema, component outputs, a contract bundle, the release-file split, an ownership gate, field-level agent scope and replayable walkthroughs.
- Review fixes · Oct 9, 2026 Fixes from the architecture review: AGENTS.md on every component, an owner and a risk class on every values field, status conditions and reason codes on 17 of 20 XRDs, and every XRD described and in the catalog. Past the M2 target of 75 for the first time.
- AppSpec in the contract · Oct 9, 2026 The AppSpec schema (one document stating an app and its environments) moved into Airframe's contract bundle, where an agent reading the contract finds it. Interaction surface doubled; the airframe.* tools are what it still lacks.
- Cloud targets and the rebuild · Oct 25, 2026 Three new XRDs (23 in all), cross-field CEL rules on 22 of them, fromComponent in nearly every env entry (2 literals left of 78), 23 chart guards and 48 chart tests, seven walkthroughs. Past the M3 target of 88, though M3 itself (the planner and airframe.* tools) is not built. The chart README got shorter when it was rewritten to describe today's chart, which cost a little discoverability.
- airframe.* tools behind Clearance · Oct 28, 2026 Seven read-only airframe.* tools (capabilities, validate, explain, plan, status, describe, verify) behind Clearance over a GET-only Kubernetes reader, live on hangar-dev through MCP (autopilot#19). The planner's cicd.yaml patch now passes Glidepath's agent scope. The schema marks its 12 deliberate passthroughs, so every other object is strict (airframe#128). The scorecard itself got more honest (hangar#94): tools are counted from what Clearance registers rather than a file name, the extraManifests deny is measured instead of hard-coded, and typed maps and if/then fragments are no longer miscounted as open objects. One check left: two cross-app URLs that wait on fromService.
- A+: fromService · Oct 29, 2026 The last derived-name literals are gone: env[].fromService (airframe v0.3.168) builds another app's Service URL from the namespace convention the platform now passes every environment, so an agent never guesses it. All 14 acceptance checks pass and the overall clears 97: the A+ bar. The milestone it measures readiness for, the parachute sentence running live through Clearance, is still ahead (airframe.apply, the agents' GitHub App, AgentRun).
Ten dimensions, measured October 29, 2026
The bar is the latest score; the thin mark on it is where the baseline stood, and the amber tick is the A+ line.
The fourteen acceptance checks
A+ needs every one. A high average cannot hide a missing check.
| Check | BaselineSep 26, 2026 | M0Sep 26, 2026 | M1 and M2Sep 29, 2026 | Review fixesOct 9, 2026 | AppSpec in the contractOct 9, 2026 | Cloud targets and the rebuildOct 25, 2026 | airframe.* tools behind ClearanceOct 28, 2026 | A+: fromServiceOct 29, 2026 |
|---|---|---|---|---|---|---|---|---|
| typo acceptance is 0% | · | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| schema description coverage >= 95% | · | · | · | ✓ | ✓ | ✓ | ✓ | ✓ |
| every non-passthrough object rejects unknown keys | · | · | · | · | · | · | ✓ | ✓ |
| contract bundle published | · | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| AGENTS.md at root and on every component | · | · | · | ✓ | ✓ | ✓ | ✓ | ✓ |
| all component XRDs declare outputs and verify checks | · | · | · | ✓ | ✓ | ✓ | ✓ | ✓ |
| no derived-name literals in live env entries | · | · | · | · | · | · | · | ✓ |
| airframe validate exists and is a required check | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| no live file mixes human and machine-owned keys | · | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| shared base layer in the ApplicationSets | · | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| airframe.* tools exist | · | · | · | · | · | · | ✓ | ✓ |
| AppSpec schema exists | · | · | · | · | ✓ | ✓ | ✓ | ✓ |
| executable walkthroughs replace prose quickstarts | · | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| every live values file renders cleanly | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Principle honored
Measured, not felt. Every check is automated, so A+ is something the tool prints, not something I claim. Every run that moves the number is committed, so the history on this page is the tool's own output.
Corrections to the tool
The first run on September 29, 2026 said 58. The tool was looking for component contracts and for Clearance where they were first planned to live, not where M1 and M2 put them, and two checks were hard-coded to zero. I fixed the paths and turned those two checks into real ones.
The first run on October 9, 2026 said 82.2, because the app repos had renamed platform/ to
glidepath/ and the release-file layering had moved into Glidepath, so the tool lost both. The
release-file split looked undone when it wasn't. I pointed the tool at the new paths. Each fix is in the same
commit as its score, and snapshots before it were not re-scored.
The run on October 25, 2026 needed two more. The dev cluster's repo had been renamed in the October rebuild, so I pointed the tool at both names before running it. Then it said 89.2, because it counted one docs block as broken YAML when the block simply held two documents. The tool now accepts that, which made it 89.5.
Limits
The scorecard can't tell whether an agent would actually succeed. The parachute sentence does: one request to an agent to set up a new Python app named parachute, with dev and test, staging and prod, a canary step and an env var, run as a Preflight case that passes only when the result is right. I use both.
Re-run it yourself: python3 tools/airframe-scorecard/scorecard.py --json out.json.
The tool, every committed run, the rubric
and the roadmap are on GitHub. More on Autopilot on the AI workloads page.