This is the complete path a single critique run takes: checking for a prior log entry, reconciling what it finds, running the adversarial pass, patching, and writing the new log line. It's the detailed version of the two small diagrams in the main post, everything those two summarize, laid out step by step.
flowchart TD
A[Run starts on a target file] --> B{Log file exists at
.claude/critique-log/<slug>.jsonl ?}
B -->|No| C[First run
no prior findings]
B -->|Yes| D[Read the last log entry]
D --> E{Prior entry
promoted?}
E -->|No| F[Every prior finding stays
STILL-PRESENT, unpromoted
nothing re-derived]
E -->|Yes| G[Reconcile each prior finding:
FIXED / STILL-PRESENT / WITHDRAWN]
C --> H[Select lenses + bundle
for this target]
F --> H
G --> H
H --> I[Run the adversarial pass
each lens anchors its findings]
I --> J[Rank findings, cut low-confidence SEV3]
J --> K[Write a versioned patched copy]
K --> L[Run a regression check on the diff]
L --> M{.claude/critique-log/
folder exists?}
M -->|No| N[Create the folder]
M -->|Yes| O[Append the new log line]
N --> O
O --> P[Log saved, promoted: false
patch awaits promotion]
A few things worth knowing about this diagram that aren't obvious from the boxes alone:
- The folder-existence check happens right before the final write. The opening step is a read attempt only: an absent log file just means "first run," and nothing gets created yet.
- The
promotedflag is what decides whether the middle branch re-derives anything. If the previous run's patch was never promoted, every open finding carries forward unchanged instead of being rediscovered. - Nothing in this path applies a patch to the real file. That step, promotion, happens separately, after a person reviews the diff. The log line this run writes still says
promoted: false.