/lamina-verify
Pre-merge verification: walk the live product against run.json contracts. Lamina checks actor permissions, invariants, dependency reachability, UX flows, and accessibility — then writes findings to fix.md.
Quick path
- Start your dev server
- Run
/lamina-verifywith a concrete flow or surface and the live URL - Read
fix.mdfor product findings andreport.mdfor the full narrative (includingfix_target: ops) - Your agent fixes product issues, then re-verify
Prerequisites
- Valid
.lamina/business-context.mdfrom/lamina-init - A running product at
base_url(e.g.http://localhost:3000) - Prefer an existing design run with
status: ready_to_buildorcomplete
Advanced: Brownfield verify may infer domain from repo and walkthrough without a prior design run. See Brownfield and greenfield.
When to use
- After your agent implements from
implement.md - After applying fixes from a previous
fix.md - Pre-merge / pre-PR product behavior check
- Brownfield integrity audit on an existing app
Examples
/lamina-verify guest checkout at http://localhost:3000/lamina-verify hotel partner onboarding at http://localhost:3000What Lamina does
- Loads the contract from
run.jsonandimplement.md(or infers from repo in brownfield) - Sets
status: verifying - Captures
walkthrough/evidence atbase_url - Dispatches parallel subagents — one per primary actor
- Runs probe types:
- Actor walks — each persona navigates their workflows
- Invariant probes — business rules from
invariants[] - Reachability probes — unmet
dependencies[] - Accessibility checks — against captured walkthrough steps
- Writes
findings[]torun.jsonwithfix_targetper finding (product,contract, or report-onlyops) - Sets
status: complete; writesreport.mdandfix.md(ops findings excluded fromfix.md)
Output
| Result | Meaning |
|---|---|
| No open product or contract findings | Verification passed for the named flow — fix_target: ops in report.md does not block exit |
fix.md with product or contract findings | Gaps to address in app code or via scoped re-design |
Finding categories
- Impossible states (cancelled and confirmed simultaneously)
- Missing transitions (no recovery from error state)
- Permission gaps (guest can access admin actions)
- Skipped dependencies (pay without hold, publish without approval)
- Unmet reachability (feature exists but prerequisite is unreachable)
- Accessibility violations on critical flows
fix_target
| Value | Action |
|---|---|
product | Your coding agent fixes app code from fix.md |
contract | Re-run /lamina-design with a scoped contract update |
ops | Report-only — observation stays in report.md; excluded from fix.md; does not block product/contract exit |
What to do next
If findings exist, hand fix.md to your coding agent:
Fix the product issues in .lamina/runs/<id>/fix.mdThen re-verify:
/lamina-verify guest checkout at http://localhost:3000Loop until there are zero open product or contract findings. fix_target: ops observations may remain in report.md.
Tips
- Run against a live dev server — verification reads real UI, not mocks
- Fix product behavior from
fix.md, not styling - Re-verify after every fix cycle — partial fixes often reveal new gaps
- Inspect
walkthrough/for visual evidence of what each persona encountered
Next steps
- Working with findings — fix loop deep dive
- Personas — how actor walks work
- Troubleshooting — common verify issues
Last updated on