Skip to content

uat: the harness's cluster is declared, and the health check stops racing the restart - #81

Merged
lex00 merged 1 commit into
mainfrom
feat/uat-cluster-declared
Aug 7, 2026
Merged

uat: the harness's cluster is declared, and the health check stops racing the restart#81
lex00 merged 1 commit into
mainfrom
feat/uat-cluster-declared

Conversation

@lex00

@lex00 lex00 commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

The k3d lexicon adoption, m80's half — with the boundary stated plainly: m80 stays a single Go binary with no companions. What changes is the UAT harness's infrastructure: its k3d cluster was the one piece of it spelled as CLI flags.

  • uat/cluster/ — the smallest chant project that can exist (one declarable, one lexicon, private: true, dev-only). up.sh builds the SimpleConfig from it and k3d cluster create --config consumes it verbatim; chant's ownership marker rides onto every node's Docker labels. node + npm join the harness prerequisites, documented where the table already lived.
  • CLUSTER override refuses on disagreement with the declared name — one cluster created, a different one addressed is the failure it prevents.
  • The harness image default catches up to v0.4.0 (it pointed at v0.2.0 — the release-drift Releases drift from main on flags, three times now — decide whether to release on merge or check for it #75 describes, in one more place).
  • The final health check polls for up to 120s instead of reading once: the env patches restart the operator pod, the connectivity confirmation lands seconds after the rollout reports done, and the proof run for this very PR hit that race — a healthy stack reporting itself broken.

Proven live: just uat-up from nothing → AWS connectivity confirmed: account=000000000000; ownership labels verified on the server node's Docker config; just uat-down cleans up.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WVmBmk6XERjKxHa4HyezvT

…cing the restart

The k3d lexicon (chant 0.41.15) reaches the UAT harness: uat/cluster/
is the smallest chant project that can exist — one declarable, one
lexicon, dev-only — and up.sh builds the SimpleConfig from it instead
of spelling flags. chant's ownership marker lands on every node's
Docker labels, which is what lets a live read tell this cluster from
one it does not own. m80 itself stays a single Go binary; this is
harness infrastructure, and the boundary is written where the node
prerequisite is introduced.

Riding along: the harness image default catches up to v0.4.0 (it
pointed at v0.2.0 — the drift #75 is about), the CLUSTER override
refuses when it disagrees with the declared name, and the final health
check polls instead of reading once — the env patches restart the
operator, the connectivity line lands seconds after the rollout
reports done, and a healthy stack reported itself broken by exactly
that gap during this change's own proof run.

Proven: just uat-up from nothing → "AWS connectivity confirmed";
labels verified on the node; just uat-down cleans up.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WVmBmk6XERjKxHa4HyezvT
@lex00
lex00 merged commit d949aa4 into main Aug 7, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant