Three ergonomic snags in the WRITE-MEMO round-trip, hit on a live run:
- Interface vocab gap. CHECK interfaces classifies MATCH/DRIFT/MISSING/EXTRA, but
write-memo validates against the drift-verdict vocab — MATCH is not in it. Clean interface rows must be silently mapped to HOLD; no doc states this mapping.
- Dirty runs still require the full round-trip. Build the merged table, pipe it in, get told
run not clean — memo not written. The REPORT already knows the run is dirty. Either let the skill skip write-memo on dirty runs, or keep the script-decides-clean contract but accept the cheaper path: pipe the REPORT table w/o the emit-row-ids merge.
- Hand-merge is error-prone. emit-row-ids skeleton + LLM verdicts + audit mechanical rows merge by hand into stdin. A
write-memo --from-audit that re-runs the mechanical side internally would shrink the LLM's job to filling behavioral verdicts only.
Also: write-memo exits 0 on a dirty run. A non-zero exit would make it usable as a CI gate (cf. archived T1).
Three ergonomic snags in the WRITE-MEMO round-trip, hit on a live run:
write-memovalidates against the drift-verdict vocab — MATCH is not in it. Clean interface rows must be silently mapped to HOLD; no doc states this mapping.run not clean — memo not written. The REPORT already knows the run is dirty. Either let the skill skip write-memo on dirty runs, or keep the script-decides-clean contract but accept the cheaper path: pipe the REPORT table w/o the emit-row-ids merge.write-memo --from-auditthat re-runs the mechanical side internally would shrink the LLM's job to filling behavioral verdicts only.Also:
write-memoexits 0 on a dirty run. A non-zero exit would make it usable as a CI gate (cf. archived T1).