Three runs (two harnesses) showed the parent generating production
rasters after the producer returned: no exact embedded prompt, no
inventory row, orphan files. The asset contract in visualize.md was
phase-scoped to the build while new-work.md's fix loop licensed
"produce the named assets" with no rules attached.
- visualize.md: name the provenance contract, require the exact tool
payload, and scope it to the run, fix rounds and rebuilds included.
- new-work.md: bind fix/rebuild rasters to the contract, add an
embed-prompt --scan step before the verdict round, and extend the
FINISH line to carry the condition through long builds.
- embed-prompt.mjs: add --scan mode listing rasters missing a prompt
(exit 3 when any), reusing the existing read path.
AI-assisted change, prepared with Cursor under maintainer direction.
Co-authored-by: Cursor <cursoragent@cursor.com>