NOTE 02 — added /livez and /readyz as protocol norms (2026-06-28) (Acequia Component)

**Note** from Bead: Acequia Component · [canonical source](https://redfish.acequia.io/guerin/.agents/1697e2ae-2580-4c66-b4c6-9e132b435d71/2026-06-28/notes/02-livez-readyz-norm.md) · session 2026-06-28 · discussion: Talk: Acequia Component

**Bead:** `1697e2ae` (`acequia-component`). Stephen: *"find the bead that most talks about our protocol norms and add /livez and /readyz."* This bead (the four-faces / governed-corridor protocol) is that home; the norm went into the living doc, source of truth.

## What changed - **[acequia-component.md](../../acequia-component.md)** (v0.1 → **v0.2**): new section **"Well-known operational endpoints — liveness & readiness"** under the Resource face. Defines the Kubernetes-style split: - **`/livez`** — liveness ("is the process alive?"); failing/absent → dead → drop from rotation, feed apoptosis. - **`/readyz`** — readiness ("can it serve now?"); `503` when alive-but-not-ready (warming / draining / dependency down) so the fabric routes *around* it without declaring it dead. - Positioned as the operational complement to `OPTIONS` (capability card), `_status`/`Retry-After` (backpressure). `/healthz` is the k8s-legacy combined probe, kept as a liveness alias. - **[acequia-component.html](../../acequia-component.html)** regenerated from the markdown via `build-acequia-component.mjs` (the render-free twin a browser agent GETs).

## Instantiated on the origin runtime (so the norm is real) Drop-in handlers on the stephenguerin.live filesystem router (hot-loaded, no restart): - [stephenguerin.live/livez/handler.mjs](c:/Users/steph/Documents/sites/stephenguerin.live/livez/handler.mjs) — 200 `{status:"alive",origin,role,uptime…}`, HEAD supported. - [stephenguerin.live/readyz/handler.mjs](c:/Users/steph/Documents/sites/stephenguerin.live/readyz/handler.mjs) — runs a `checks[]` array (webroot reachable, not-draining), 200 when all pass else 503; extend with real deps (bead mount, upstream peers) later. - Supersedes the combined shipped earlier under [origin-routing `d3b7b28c` (https://redfish.acequia.io/guerin/.agents/d3b7b28c-ed46-42c4-a5b1-fbd23129d665/about.md); `/healthz` stays as a liveness alias. - Verified on :3500: `/livez` 200, `/readyz` 200 (ready) / 503 (when a check fails), `HEAD` + OPTIONS/CORS OK. Each origin self-labels via `ORIGIN_ID`/`ORIGIN_ROLE`, so home / laptop / phone-termux are distinguishable to the resolver.

## Why these back the routing fabric Origin selection, the mayordomo's health checks, and apoptosis detection all need a cheap, tokenless, side-effect-free probe. `/livez` answers "is it there at all," `/readyz` answers "can it take traffic right now" (enabling graceful load-shedding: 503 readyz while livez stays 200). This is the probe layer the [origin-routing](https://redfish.acequia.io/guerin/.agents/d3b7b28c-ed46-42c4-a5b1-fbd23129d665/about.md) corridors and the planned Cloudflare/DDNS failover key off. Status: folded into the living doc as **v0.2**; the doc remains **proposed**, not yet ratified into `beads.md`.

## References (bead cross-links) - Bead: Origin Routing · [canonical](https://redfish.acequia.io/guerin/.agents/d3b7b28c-ed46-42c4-a5b1-fbd23129d665/)