Bound /readyz so kubelet probes cannot hang the Service
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

/readyz walked the hash chain and opened pooled connections with no
libpq connect_timeout, so a 2s kubelet probe never saw a response and
the pod stayed unready. Informed Decision accept is blocked on that.

Probe health() only, under a 1.5s budget, publish last-known
tamper_evidence, and fail TCP handshake in 1s. Integrity stays on
/v1/integrity.

Assistant: grok
Assistant-Session: 01a0a182-bab7-7f11-b32b-d06f3af52082
This commit is contained in:
tegwick 2026-09-14 22:13:55 +02:00
parent e7e054d8d6
commit b0e6792cf0
9 changed files with 276 additions and 18 deletions

View file

@ -0,0 +1,41 @@
---
id: ADHOC-2026-09-14
type: workplan
title: "Ad hoc tasks 2026-09-14"
domain: infotech
repo: audit-core
status: finished
flavor: implementation
owner: grok
topic_slug: railiance
created: "2026-09-14"
updated: "2026-09-14"
---
# Ad hoc tasks 2026-09-14
## Bound /readyz so the Service can become Ready
```task
id: ADHOC-2026-09-14-T01
status: done
priority: high
```
Inbox from grok (INFD-WP-0002-T03): `audit-core` Service has no ready
endpoints. The live pod is Ready=false since 2026-09-11T08:27:26Z;
`/healthz` is 200; `/readyz` hangs >8s against kubelet `timeoutSeconds: 2`.
Informed Decision accept is 503 `approval_path_not_connected` until a ready
endpoint exists.
Cause: `/readyz` called `retention_policy`, which walks the hash chain and
opens a pooled connection with no libpq `connect_timeout` and a 30s
statement timeout. A hung walk or handshake looks the same as down.
Change: `/readyz` checks `health()` (`SELECT 1`) under a 1.5s budget,
publishes last-known `tamper_evidence` without walking, and sets
`connect_timeout=1`. Integrity stays on `/v1/integrity`. Production needs a
receiver image rebuild and rollout after this lands.
Evidence: Informed Decision
`docs/evidence/2026-09-14-infd-0002-t03-bind-path-probe.json`.

View file

@ -9,7 +9,7 @@ flavor: implementation
owner: claude
topic_slug: railiance
created: "2026-08-29"
updated: "2026-09-11"
updated: "2026-09-14"
depends_on:
- AUDIT-WP-0007
state_hub_workstream_id: "46a96b03-bc08-53b5-9c93-4071adabf734"
@ -458,6 +458,13 @@ Remaining: token custody, the protected registry entry, operator manifest
application, and live ingestion evidence. No secret was created and no
production manifest applied.
**2026-09-14 production blocker:** Informed Decision accept is closed because
the live receiver has been Ready=false since 2026-09-11. `/healthz` is 200;
`/readyz` hangs past kubelet `timeoutSeconds: 2` (observed >8s). The hang is
the chain walk T01 placed on the probe path. Bounded `/readyz` (health only,
cached claim, libpq `connect_timeout`) is ADHOC-2026-09-14-T01; T11 still
needs a rolled image before live accept can resume.
### Factory sender deployment precondition — 2026-09-11