the audit trail must survive a restart — the executor starts from it #31
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Meta/Campaign
Meta/Epic
Meta/Session
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Curated
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Scope/Campaign
Status/Abandoned
Status/Blocked
Status/Conflicted
Status/In Progress
Status/In Review
Status/Need Grooming
Status/Need More Info
Status/Ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Ting/Jostoph#31
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
In scope
The audit sink is
TeeSink(TracingSink, MemorySink::new(512)): a 512-entry ring that a restart erases. Two users pay for that: an operator doing incident archaeology across a redeploy finds nothing, and the executor (#26) — which by its own ticket "starts from a record of everything the steward would have done" — would start from a record that evaporates.Give rulings a durable sink: append-only file under a
StateDirectory(or the substrate's equivalent), written by the same tee, replayable enough that/v1/auditcan answer from history after a restart and the future executor can consume declared-but-unperformed effects across one.Out of scope
/v1/auditalready answers.Boundary
The service gains a write path to its own state directory and nothing else — still no Forgejo token, still loopback. Hardening in
nix/module.nixwidens by exactly that directory.Acceptance
/v1/auditstill answers with the pre-restart ruling.nix flake checkand the module evaluation stay green.