Working with findings
After /lamina-verify, findings tell you what does not match the contract. This guide covers how to read fix.md, fix product gaps, handle contract deltas, and know when to re-verify vs re-design.
Quick path
- Read
fix.md,report.md, andfindings[]inrun.json - For
fix_target: product→ your agent fixes app code - For
fix_target: contract→ re-run/lamina-design - For
fix_target: ops→ note inreport.mdonly — no app or contract fix - Re-verify until zero open product or contract findings
Where findings live
| Location | Content |
|---|---|
run.json findings[] | Machine-readable finding list with fix_target |
fix.md | Product and contract fix brief — excludes fix_target: ops |
walkthrough/ | Optional visual evidence per actor |
report.md | Verify narrative, summary, and report-only ops observations |
Reading a finding
Each finding includes:
| Field | Meaning |
|---|---|
id | Unique identifier |
severity | Impact level |
actor | Which persona encountered the gap |
workflow | Which workflow was being walked |
expected | Behavior per the contract |
observed | Behavior on the live app |
fix | Suggested correction |
fix_target | product, contract, or report-only ops |
Product fixes (fix_target: product)
When the app does not match the contract, your coding agent fixes app code in a normal coding session — not during a Lamina command.
- Open
fix.mdin.lamina/runs/<id>/ - Prompt your agent:
Fix the product issues listed in .lamina/runs/<id>/fix.md.
Address each finding by id. Do not change styling — fix behavior only.- Re-verify:
/lamina-verify guest checkout at http://localhost:3000Advanced: Lamina does not implement fixes. The write boundary means app source changes happen outside Lamina slash commands.
Contract deltas (fix_target: contract)
When the contract itself is wrong — missing workflow, incorrect invariant, wrong permission — the finding has fix_target: contract.
- Do not change app code to work around a contract gap
- Re-run design with a scoped update:
/lamina-design Update checkout workflow — add email verification gate
before payment per finding checkout-email-gate-001- Review updated
implement.md - Your agent implements the contract change
- Re-verify with the same bounded flow and URL
Ops observations (fix_target: ops)
Some findings are operational observations — deployment gaps, monitoring hooks, or process notes that belong in report.md only. They are excluded from fix.md and do not require app or contract changes. They also do not block the product/contract exit condition.
Prioritization
Address findings in this order:
- Severity — critical permission gaps and data integrity issues first
- Dependencies — fix reachability issues before dependent workflows
- Actor coverage — ensure all primary personas can complete core flows
- Edge cases — scenarios and recovery paths after happy paths pass
Partial fixes
Re-verify after every fix batch, not just at the end. Partial fixes often reveal new gaps:
fix 3 findings → verify → 2 resolved, 1 new finding → fix → verify → cleanWhen to re-design vs re-implement
| Signal | Action |
|---|---|
| App behavior wrong, contract correct | Fix app code (fix_target: product) |
| Contract missing a rule or workflow | Re-design (fix_target: contract) |
| Scope grew beyond original design | /lamina-init update then /lamina-design |
| UI skill broke a behavior | Fix app code, then re-verify |
| Ops or process observation | Note in report.md (fix_target: ops) — no fix loop required |
Exit condition
The fix loop ends when:
- No open product or contract findings remain in
findings[]orfix.md /lamina-verifyreports no open product or contract gaps for the named flowfix_target: opsobservations may remain inreport.mdand do not block exit
Example from HavenStay
Verify caught that properties could go live without admin approval — a fix_target: product finding. The fix brief specified adding an approval gate to the publish workflow. After the coding agent implemented the fix, re-verify confirmed the gate held for all actor walks.
Next steps
- /lamina-verify — run verification
- The loop — full workflow cycle
- Troubleshooting — common verify issues