Hangar · Review · Crossplane v2 vocabulary

Is "claim" the right word in a Crossplane v2 world?

I use Crossplane v2 exclusively, and one word kept rubbing me the wrong way: "Ephemeral runs are claims to Crossplane." I asked ChatGPT to analyse it, then had Claude check that analysis against the v2 docs and every repo. This is what held up, what didn't, and what changed.

Review October 5, 2026Scope the site, Hangar docs, Autopilot code and docs, Airframe docsActed on in hangar#32, hangar#33, autopilot#5, airframe#50
Done · all four PRs merged Oct 5, 2026

"Claim" was the wrong word. "Direct request" says what's actually different.

Crossplane v2 removed Claims: namespaced XRs don't need them, and only LegacyCluster XRs from v1 XRDs still support them. So a Crossplane reader who sees "AgentRun claim" assumes v1 indirection that Hangar never used. The fix was mostly words, because nothing in Hangar was ever built on Claims.

What changed in v2

The whole reason for a Claim was that v1 XRs were cluster-scoped. Namespaced XRs remove that reason, and v2 removes Claims with it. Every Airframe XRD and the draft AgentRun XRD are apiextensions.crossplane.io/v2, scope: Namespaced, with no claimNames.

Crossplane v1 and v2 resource pathsIn v1 a namespaced Claim pointed at a cluster-scoped XR, which composed resources. In v2 a namespaced XR composes resources directly, and Claims are gone.CROSSPLANE V1ClaimnamespacedXRcluster-scopedResourcescomposedA Claim let a namespaced team ask for acluster-scoped XR without cluster access.The indirection the word implies.CROSSPLANE V2 · WHAT HANGAR USESXRnamespacedResourcescomposedCOMPOSESClaimRemoved. Only LegacyClusterXRs from v1 XRDs keep it.All 17 Airframe XRDs are v2 and namespaced.
Figure 1v1 needed a Claim in front of a cluster-scoped XR. v2 makes the XR itself namespaced, so the Claim has nothing left to do.

Where the analysis was right, and where it slipped

Right

The core point

"Claim" signals v1 to anyone who knows Crossplane. The v2 docs say it plainly: namespaced XRs don't support claims.

Overstated

It's prose, not the model

Nothing in Hangar was built on Claims. "Kubernetes API for AgentRun claims" in a README is wording, not an implementation choice.

Missed

Its favourite fix

"Ephemeral runs are Crossplane XRs" doesn't separate the planes, because durable apps are XRs too. The difference is the path.

Missed

How far it went

The word was all over the site: the glossary, the stack page, the cost essay's rule of thumb and the overview diagrams.

Missed

Two meanings in Autopilot

One was the AgentRun. The other was the narrow-only request in code, which also applies to local sessions and child spawns. It needed its own name.

The two planes, named by their path

Hangar's two planesDurable changes go from a person or agent through a reviewed git commit and Argo CD to an Airframe XR. Ephemeral runs go from an agent through the Clearance policy gate as a direct request to the Kubernetes API, creating an AgentRun XR with a deadline.DURABLE · REVIEWED AND REPLAYABLEPerson or agentproposesONLY PATHReviewed commitgitArgo CDappliesApp XRAirframe, lives in gitEPHEMERAL · BOUNDED AND AUDITEDAgentasks to runClearancepolicy gateK8s APIdirect requestAgentRun XRdeadline, then goneLIMITSBoth planes end in an XR. What differs is the path, so the principle names the path.
Figure 2Why "Ephemeral runs are Crossplane XRs" doesn't work: durable apps are XRs too. A run is different because it skips the commit, so it's a direct request.

What changed

BeforeAfter
Ephemeral runs are claims to Crossplane.Ephemeral runs are direct requests to Crossplane.
AgentRun claimAgentRun XR, or just AgentRun
Glossary: ClaimGlossary: XR, with a note that v1 put a Claim in front of it
A claim says what you want; reconciliation keeps it true.An XR says what you want; reconciliation keeps it true.
If you'd be upset that it changed back, it's a claim.If you'd be upset that it changed back, it's an XR.
Claim and claim= in Autopilot's codeLimitRequest and limits=, called requested limits in prose
Diagram labels CLAIM and "claims · ttl"API and "XRs · ttl"

Left alone, because the word is plain English there: "every claim is labelled Built", the SLO compare-and-set claim, token and OIDC claims, SandboxClaim (a real agent-sandbox kind), and the dated Sep 27, 2026 architecture review, which is a point-in-time record.

Tracking

Site and Hangar docs

Merged · hangar#32

Principle, glossary, stack page, cost essay, overview diagrams.

Autopilot code and docs

Merged · autopilot#5

AgentRun is an XR; Claim renamed LimitRequest, passed as limits on session_open and run.spawn.

Airframe docs

Merged · airframe#50

The Skyport demo walkthrough, plus a chart CI fix that rode along.

Glossary note

Merged · hangar#33

Why the code once said claim.