Testing · 03 of 03 · Honest notes

What running the free tier taught me

Hangar runs the open source agent with no control plane, on purpose. These are the four places where that floor was lower than the docs suggested, and what I built on top of it.

What running the free tier taught me Three columns: what I expected, what the cluster said, and what shipped, over four rows, all from August 24, 2026 onward on the dev cluster. One: tests in each app's own namespace through executionNamespaces, as the docs described; the source gates it to the paid editions and the api-server exits in standalone mode; so one shared namespace shipped, ADR-0007, with secrets moved in and blanked after each run. Two, highlighted: a secret per run through config sensitive true; not delivered in this CE build, the execution aborted and no secret was made; so a Kyverno admission policy shipped, ADR-0008, allowing only the app's own secret. Three: a plain pass or fail from result.status; passing runs reported aborted, a race with the Kubernetes Job controller; so the platform trusts the steps, and every step passed means passed. Four: the chart's default MongoDB backend would not start on this kernel, an upstream MongoDB gate; PostgreSQL, a first-class chart option, is used instead. WHAT I EXPECTEDWHAT THE CLUSTER SAIDWHAT SHIPPEDTests in each app namespaceexecutionNamespaces, per the docsPro only, in the sourceapi-server exits in standalone modeOne shared namespaceADR-0007 · secrets in, then blankedA secret per runconfig sensitive: trueNot in this CE buildexecution aborted, no secret madeA Kyverno admission policyADR-0008 · your own secret onlyA plain pass or failresult.statusPassing runs said aborteda race with the Job controllerTrust the stepsevery step passed means passedThe default MongoDBthe chart's own backendWon't start on this kernelan upstream MongoDB gatePostgreSQL insteada first-class chart optionRead the source when the docs disagree, and write down what you find.LEGENDThe planFound on a live clusterShippedThe policy fixTriedLed to

Fair trade

Open core means the paid features are paid. I'd rather know exactly where the line is than guess, so I read the source.

Policy fills the gap

RBAC decides who can edit a Secret, not which Secret a pod may mount. An admission policy closes that, at the one point where the caller is still known.

Reversible

With a control plane connection, per-namespace runs come back and the shared namespace and its policy simply have nothing left to do.

Hangar · Glidepath · Testing