Skip to content
C.W.K.
Stream
Lesson 03 of 05 · published

Stage Logs Are Evidence

~12 min · stages, provenance, events, audit

Level 0Cold Vessel
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Stage Logs Are Evidence

A stage is not a checkbox pasted onto a task. It is a named transition with delegation identity, session identity, timestamp, and note describing what closed. The pipeline contract gives the name meaning by requiring it before later transitions.

Good stage notes are current-state receipts. They name what was inspected or produced, the important finding, and the boundary preserved. They do not need to copy terminal transcripts or private paths. Enough detail should remain for a reviewer to test the claim with the artifact.

Append-only events are valuable because correction does not erase error. If a stage was logged too early, a later note can explain the repair; silently rewriting the first event would remove the evidence that the control failed. The derived database view may show current status while the event stream keeps the history.

Stages should stay few and product-relevant. Turning every shell command into a stage adds ceremony without decision value. A stage earns a name when later policy needs to ask whether a meaningful boundary was crossed.

Evidence, Not Activity

Compare “worked on tests” with “race test now proves exactly one of take/edit wins; no production state changed.” The second note states an artifact claim and a boundary. Review can challenge both.

Define each required stage with allowed inputs and its closing evidence. If nobody can say what failure the stage prevents, remove it rather than preserving ritual.

Log the transition when its evidence is still present. A stage receipt should identify the artifact, session, decision, and proof that justified crossing the boundary. Reconstructing it at the end may preserve chronology, but it cannot restore the control the missing gate was meant to provide.

Code

Append a stage receipt·python
from datetime import datetime, timezone

events = []
events.append({
    "kind": "stage",
    "name": "plan-gate",
    "session": "session-a",
    "at": datetime.now(timezone.utc).isoformat(),
    "note": "targets and exclusions approved; no mutation performed",
})
assert events[-1]["kind"] == "stage"
print(events[-1])

External links

Exercise

Take three recent progress notes and rewrite each as a stage receipt with artifact claim, finding, and preserved boundary.
Hint
Delete command-by-command narration unless a command result is itself the proof.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.