Skip to the content.

Kind-cluster verification — PR #25 (Waves A–F)

Date: 2026-09-16 · Cluster: tram-dev (kind, 4 nodes) · Release: trishul-ram @ image local-20260916044939 (branch wave-a-stopgaps, commit 74957a9) · Mode: manager+worker (1 manager, 3 workers, 1Gi limits).

All wave exit criteria that require a live cluster were exercised. Every gate passed.

Deployment & smoke

E.2 — queued manual runs (GH #21)

Sequence: workers scaled to 0 → manual trigger → 202 {status: "queued", run_id, expires_at} (+15 min TTL), queued_run present in the pipeline detail → manager pod deleted and recreated → queued row survived with the same run_id (durable DB row, absolute TTL clock) → workers restored → auto-dispatched ~5 s after capacity returned (worker-restored nudge). Run history truthfully records the outcome — including the failure case (failed / Local source path does not exist, correct node attribution). Metrics: queue_depth=0, queue_dispatched_total=1, drain_result{dispatched}=1, wait_seconds_sum=51.6 matching the exact request→dispatch timestamps.

F.1 — stateful transforms

Pipeline vf1-counter (local source → counter_delta → local sink), manager+worker mode:

Pipeline vf1-window (webhook stream → window_aggregate 60 s/5 s → local sink), workers.count: 1:

D.2 — count=1 stream placement (GH #17)

Pipeline vd2-stream (webhook stream, workers.count: 1):

#16 — RSS soak, threaded path (A.4/A.5 + B.3, GH #16)

Pipeline v16-soak: 42 MB JSON / 300 k nested records → flatten → local sink, thread_workers: 2, 13 consecutive manual runs on a single worker (1Gi limit):

Verdict

All cluster-verifiable exit criteria for Waves A–F are met: E.2 queue lifecycle, F.1 stateful-transform semantics + guards, D.2 durable placement lifecycle, #16 soak plateau. PR #25 is clear to merge from a runtime-behavior standpoint.