# progress.log — Heartbeat Log
# Format: JSON Lines, one entry per heartbeat
# Governance Reference: GOVERNANCE.md §2

# === INITIAL HEARTBEAT (on start) ===
{"ts":"YYYY-MM-DDTHH:mm:ss+08:00","status":"NOT_STARTED","completed":[],"remaining":["T1","T2","T3","T4"],"risk":"","next_action":"awaiting kickoff"}

# === FIRST HEARTBEAT (on IN_PROGRESS) ===
{"ts":"YYYY-MM-DDTHH:mm:ss+08:00","status":"IN_PROGRESS","completed":[],"remaining":["T1","T2","T3","T4"],"risk":"","next_action":"start T1"}

# === PROGRESS HEARTBEAT ===
{"ts":"YYYY-MM-DDTHH:mm:ss+08:00","status":"IN_PROGRESS","completed":["T1","T2"],"remaining":["T3","T4"],"risk":"T3 depends on external API availability","next_action":"execute T3"}

# === BLOCKED HEARTBEAT ===
{"ts":"YYYY-MM-DDTHH:mm:ss+08:00","status":"BLOCKED","completed":["T1"],"remaining":["T2","T3","T4"],"risk":"T2 blocked by missing config","next_action":"create blocker.md"}

# === READY_FOR_REVIEW HEARTBEAT ===
{"ts":"YYYY-MM-DDTHH:mm:ss+08:00","status":"READY_FOR_REVIEW","completed":["T1","T2","T3"],"remaining":["T4"],"risk":"","next_action":"awaiting review for T1-T3"}

# === FINAL HEARTBEAT (on VERIFIED → ARCHIVED) ===
{"ts":"YYYY-MM-DDTHH:mm:ss+08:00","status":"ARCHIVED","completed":["T1","T2","T3","T4"],"remaining":[],"risk":"","next_action":"none"}
