Repository navigation
Logbook August 2026
Week of Aug 3rd — Two automation efforts open in parallel: hardening the still-fragile Daily Amaru scheduler, and laying the groundwork for a sibling epic that runs plain Cardano Node master HEAD under Antithesis daily. Monday opened the scheduled-preflight hardening ticket; by Friday its identity-and-dependency contract work was underway alongside a new epic and a draft PR that resolves and publishes an immutable Cardano Node master-HEAD candidate, targeting a six-hour daily acceptance run. Nothing merges yet this week — both threads stay open at week's end, feeding into next week's preflight landing.
Issue: #215
- Opened Epic: run Cardano Node master HEAD in Antithesis daily for six hours #214
- Opened prepare an immutable Cardano Node master HEAD Antithesis candidate #215
- Opened ci: prepare an immutable Cardano Node master HEAD Antithesis candidate #217 — draft PR that reads one receipt naming a single Cardano Node master HEAD candidate whose upstream SHA, published image digest, live binary revision, and every rendered producer/relay image agree, with no Antithesis request made anywhere in this ticket
Week of Aug 10th — The Daily Amaru scheduled-preflight hardening lands. Midweek work closed out the controller's terminal failure sinks so a broken runner or identity precondition exits red with a durable receipt instead of vanishing before the state machine runs, and Friday merged the full preflight contract: a dedicated least-scope GitHub App identity, explicit dependency provisioning ahead of claiming the UTC day, and a fail-closed named-credential boundary held until the operator-owned App is provisioned. The scheduler is now instrumented enough to diagnose its own startup failures instead of disappearing silently.
Issue: #213
- Merged ci: make Daily Amaru scheduled preflight explicit and fail loudly #218 — make the Daily Amaru scheduled controller enter an explicit dependency and short-lived identity contract, wiring a dedicated least-scope GitHub App interface and failing closed at the named credential boundary with a durable stage-specific receipt instead of disappearing before the state machine
- Closed #213
Week of Aug 17th — The Daily Amaru scheduler goes from merged-but-untested to fighting through its first real production fires, with nearly every day surfacing and closing a bug the previous day's live-fire attempt exposed. Tuesday restored GitHub's own evaluation of the workflow, making invalid Actions expression contexts a permanent merge-blocking failure. Wednesday fixed a scheduled run that failed for want of a propagated UTC day, added a manual
production=truedispatch with a code-enforced daily launch cap, and opened the next defect the first live fire exposed — a transport channel polluted bygit commit's own stdout. Thursday closed that channel and made the bootstrap proposal safe to re-attempt; Friday found and fixed a second live-fire defect (peer-snapshot resolution not refreshed atomically) and opened a third, closed the following Saturday, teachingrequire-bootstrap-checksto distinguish pending, successful, failed, and never-reported outcomes with a bounded wait instead of guessing.
Issue: #219
- Merged ci: restore Daily Amaru workflow evaluation and gate expression contexts #220 — move Daily Amaru's runner-temporary state and receipt bindings from scheduled-job env to the controller step after runner allocation, and add a pinned actionlint census making invalid GitHub Actions expression contexts a permanent merge-blocking failure
- Closed #219
Issue: #221
- Merged fix: propagate the derived UTC day to Daily Amaru transports #222 — fix scheduled run 32215848871's
DAILY_AMARU_DAY is requiredfailure by exporting the derived UTC day into every forked Daily Amaru transport child - Closed #221
Issue: #223
- Merged ci: add manual production trigger with a code-enforced daily launch cap #224 — add a typed
workflow_dispatchproductionboolean (default false, byte-unchanged dry-run job) so the production path is testable on demand, moving the spend cap into the controller's own claim/marker code - Closed #223
Issue: #225
Issue: #225
- Merged fix: close the transport value channel and make the bootstrap proposal re-attempt-safe #226 — the first
production=truefire died atmalformed-candidate-shabecausegit commit's own stdout summary polluted the transport value channel ahead ofpropose-bootstrap's trailinggit rev-parse HEAD; close that channel and make the bootstrap proposal safe to re-attempt - Closed #225
Issue: #227
- Merged fix: atomically refresh peer snapshots in unattended Amaru bumps #228 — atomically refresh the bootstrap repository's Amaru/configurations lock pair and generated peer-snapshot resolution record, consuming the cloned repository's shipped resolver unmodified and failing closed before publication
- Closed #227
- Opened Bounded-wait check observation in require-bootstrap-checks #229
- Opened Prove fault-labeling completeness at every check-observation boundary #231
- Merged fix: wait for bootstrap checks to report #230 — make
require-bootstrap-checksdistinguish pending, uniquely successful, failed, never-reported, and transport-exhausted observations for the exact bootstrap candidate, giving pending/API-error states a finite wait derived from observed or declared check-duration evidence - Closed #229
- Closed #231
Week of Aug 24th — With the daily scheduler now landing real production runs, attention turns to detecting when it goes silent. Monday opened a ticket and a PR for an independently scheduled watchdog that alarms on a missing previous-UTC-day receipt, with canonical alarm reconciliation and both positive and negative controls. The PR stays open, waiting on hosted exact-head alarm evidence.
A daily run that stops reporting is indistinguishable from a quiet one, so #232 asks for a watchdog scheduled independently of the run it watches. #233 implements it: it looks for the previous UTC day's receipt, raises a canonical alarm when it is missing, and carries permanent negative and positive controls. Hosted exact-head alarm evidence is still pending before merge.