yam-flow 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to yam-flow are documented here.
4
4
 
5
+ ## v2.3.0 - 2026-07-13
6
+
7
+ ### Added
8
+
9
+ - Added `yam mission receipt` with reviewer/doctor read-only contracts, explicit lifecycle/outcome separation, verification evidence, and per-thread completion eligibility.
10
+ - Added `yam mission gate` to block Mission completion when expected thread receipts are missing, duplicated, unexpected, ambiguous, failed, or violate read-only role boundaries.
11
+ - Added `yam ueye asset add|verify` for local reference provenance, license notes, protection/edit flags, dimensions, and SHA-256 integrity checks.
12
+ - Added `yam ueye revision archive|verify` for non-overwriting round archives with hashed revision history.
13
+
14
+ ### Improved
15
+
16
+ - Mission proof requests for `verified` or `proven` now recompute and validate supplied completion gates, then cap the claim when a passing gate is missing.
17
+ - Ueye reports can attach asset and revision manifests; a supplied invalid manifest blocks a visual `done` claim.
18
+
5
19
  ## v2.2.1 - 2026-07-09
6
20
 
7
21
  ### Improved
package/COMMANDS.md CHANGED
@@ -47,6 +47,10 @@ yam ueye capture --url http://localhost:3000 --out .yam/screens/home.png
47
47
  yam ueye compare --reference ./reference.png --actual .yam/screens/home.png
48
48
  yam ueye report --reference ./reference.png --actual .yam/screens/home.png --preflight-id ueye-preflight-123 --p0-risk "mobile CTA may clip" --quality-gate-note "check CTA contrast before done" --brief-dimension "primary CTA clarity" --constraint "mobile first" --acceptance-criterion "primary CTA remains visible on mobile" --design-system-evidence "uses existing button token" --implementation-evidence "browser screenshot reviewed" --state-check default:pass --state-check mobile:partial --skipped-check "hover state not checked on touch viewport" --residual-risk "tablet breakpoint still needs visual pass" --stop-condition "stop after primary states are checked and residual risk is recorded" --resume-hint "capture tablet screenshot next" --review-session-id pricing-card-v1 --provider-context local --execution-surface in-app-browser --browser-surface in-app-browser --similar "overall hierarchy" --different "button glow intensity" --missing "mobile state" --design-quality needs-polish --json
49
49
  yam ueye report --reference ./reference.png --actual .yam/screens/home.png --completion-claim done --design-quality pass --direction-locked --reference-read --states-checked --mobile-checked --contrast-checked --cta-checked --json
50
+ yam ueye asset add --manifest .yam/ueye/assets.json --id official-logo --file ./assets/logo.png --license-note "operator supplied; local review" --operator-provided --do-not-replace --json
51
+ yam ueye asset verify --manifest .yam/ueye/assets.json --json
52
+ yam ueye revision archive --file .yam/screens/home.png --round 1 --artifact-id home --root .yam/ueye/revisions --json
53
+ yam ueye revision verify --manifest .yam/ueye/revisions/manifest.json --json
50
54
  yam media proof --requested --attempted --output ./generated.png --wait-loop --json
51
55
  yam proof --route ueye --truth partial --visual "browser/local screenshot comparison executed" --require-visual
52
56
  ```
@@ -162,6 +166,9 @@ yam media proof --requested --attempted --output ./generated.png --wait-loop --j
162
166
  yam runtime evidence --backend terminal --claim observed --evidence-id dev-server-1 --command "npm run dev" --pid 123 --port 3000 --json
163
167
  yam runtime evidence --backend terminal --claim cleanup-verified --cleanup-observed --exit-code 0 --cleanup-method "process exit checked" --json
164
168
  yam mission queue --agent-id implementer --scope "checkout form" --changed src/checkout.tsx --verification-hint "npm run typecheck" --rollback-hint "revert checkout form patch if typecheck or smoke fails" --json
169
+ yam mission receipt --thread-id implementer-1 --role implementer --access-mode write --lifecycle stopped --outcome passed --scope "checkout form" --changed src/checkout.tsx --evidence "typecheck passed" --out .yam/mission/implementer-1.json --json
170
+ yam mission receipt --thread-id reviewer-1 --role reviewer --lifecycle stopped --outcome passed --scope "read-only checkout review" --evidence "review completed without edits" --out .yam/mission/reviewer-1.json --json
171
+ yam mission gate --expected-thread implementer-1 --expected-thread reviewer-1 --receipt .yam/mission/implementer-1.json --receipt .yam/mission/reviewer-1.json --out .yam/mission/completion.json --json
165
172
  yam benchmark report --label "render time" --baseline 100 --current 86 --unit ms --target lower --json
166
173
  yam proof --route mission --mission-envelope '{"agent_id":"implementer","assigned_scope":"target component","changed_files":["src/file.ts"],"verification_hint":"npm run typecheck","truth_status":"partial"}'
167
174
  yam proof --route deep --truth proven --require-runtime --runtime "mock server fixture"
@@ -187,7 +194,7 @@ yam template tuning
187
194
  yam tools doctor /path/to/project --json
188
195
  yam release report --json
189
196
  yam runtime evidence --backend terminal --claim cleanup-verified --cleanup-observed --exit-code 0 --cleanup-method "exit observed" --json
190
- yam mission queue --agent-id reviewer --scope "changed files review" --changed src/bin/yam.ts --verification-hint "npm run typecheck" --json
197
+ yam mission receipt --thread-id reviewer-1 --role reviewer --lifecycle stopped --outcome passed --scope "changed files review" --evidence "read-only findings recorded" --json
191
198
  yam benchmark report --label "bundle size" --baseline 120 --current 118 --unit kB --target lower --json
192
199
  yam loop report --route deep --intent "verify release readiness" --blocked "npm auth not verified" --next-action "refresh npm token, then rerun npm whoami" --json
193
200
  ```
package/README.md CHANGED
@@ -143,9 +143,15 @@ yam ueye capture --url http://localhost:3000 --out .yam/screens/home.png
143
143
  yam ueye compare --reference ./reference.png --actual .yam/screens/home.png
144
144
  yam ueye preflight /path/to/project --json
145
145
  yam ueye report --reference ./reference.png --actual .yam/screens/home.png --preflight-id ueye-preflight-123 --p0-risk "mobile CTA may clip" --quality-gate-note "check CTA contrast before done" --acceptance-criterion "primary CTA remains visible on mobile" --state-check default:pass --state-check mobile:partial --implementation-evidence "browser screenshot reviewed" --completion-claim done --design-quality pass --direction-locked --reference-read --states-checked --mobile-checked --contrast-checked --cta-checked --provider-context local --execution-surface in-app-browser --app-surface codex-app --browser-surface in-app-browser --preserved-state --json
146
+ yam ueye asset add --manifest .yam/ueye/assets.json --id official-logo --file ./assets/logo.png --license-note "operator supplied; local review" --operator-provided --do-not-replace --json
147
+ yam ueye asset verify --manifest .yam/ueye/assets.json --json
148
+ yam ueye revision archive --file .yam/screens/home.png --round 1 --artifact-id home --root .yam/ueye/revisions --json
149
+ yam ueye revision verify --manifest .yam/ueye/revisions/manifest.json --json
146
150
  yam proof --route ueye --truth verified --visual "implementation screenshot evidence recorded" --design-completion '{"completion_claim":"done","has_implementation_screenshot":true,"design_quality":"pass","states_checked":true,"mobile_checked":true,"contrast_checked":true,"cta_checked":true,"direction_locked":true,"truth_status":"verified"}'
147
151
  yam media proof --requested --attempted --output ./generated.png --wait-loop --json
148
152
  yam proof --route mission --mission-envelope '{"agent_id":"implementer","assigned_scope":"target component","changed_files":["src/file.ts"],"verification_hint":"npm run typecheck","truth_status":"partial"}'
153
+ yam mission receipt --thread-id reviewer-1 --role reviewer --lifecycle stopped --outcome passed --scope "read-only review" --evidence "review completed without edits" --out .yam/mission/reviewer-1.json --json
154
+ yam mission gate --expected-thread reviewer-1 --receipt .yam/mission/reviewer-1.json --out .yam/mission/completion.json --json
149
155
  yam loop report --route quick --intent "fix release readiness" --stage "inspect:passed:read release report" --evidence "typecheck passed" --evidence-level local --evidence-stamp "sha256:release-report" --touched-file src/bin/yam.ts --read-file README.md --verified-file scripts/cli-smoke.mjs --skipped-check "npm publish skipped by design" --stop-condition "stop after readiness evidence is recorded" --resume-hint "rerun release report after npm auth refresh" --readiness-state blocked --covered-requirement "release report is read-only" --uncovered-requirement "npm auth verified" --blocked-kind auth_blocked --failure-cause auth_token_invalid --safe-retry "retry after npm whoami succeeds" --recovery-hint "refresh npm auth, then rerun readiness checks" --fix-first-item "npm auth must be verified before publish" --remaining-task "rerun release report after auth refresh" --recommended-direction "fix npm auth first, then publish manually" --implementation-note "keep loop report read-only" --why-this-next "auth blocks public release claims" --blocked-by "npm whoami E401" --owner-route deep --owner-scope "release readiness only" --scope-owner deep --side-effect "no publish attempted" --avoidance-note "do not retry publish before npm auth is proven" --issue-code "src/bin/yam.ts release report" --issue-role "summarizes release readiness without publishing" --issue-symptom "npm auth failure needs clearer next action" --changed-code "yam loop report" --changed-role "records loop evidence and learning note" --change-summary "added a read-only loop artifact" --why-important "it helps users learn what changed without overclaiming verification" --learning-note "fix blockers before claiming done" --json
150
156
  yam release report --json
151
157
  yam safety "supabase db reset"
@@ -199,6 +205,8 @@ Publishing still requires confirming the final npm package name and account acce
199
205
  - runtime backend evidence
200
206
  - runtime evidence mini summaries
201
207
  - mission patch queue lite records
208
+ - Mission read-only reviewer/doctor contracts, subagent receipts, and completion gate
209
+ - Ueye local asset provenance and non-overwriting revision history
202
210
  - release report JSON
203
211
  - loop report JSON
204
212
  - study note JSON
@@ -220,6 +228,7 @@ These shapes keep reports machine-readable without turning normal work into a he
220
228
 
221
229
  - Runtime evidence mini: compact route, command/process, observation, cleanup, truth status, and next action fields for `$deep` or `$mission` runtime claims.
222
230
  - Patch queue lite: `$mission` lane records with pending/applied/verified/reverted/blocked state, changed files, verification hint, rollback hint, truth status, and next action.
231
+ - Mission completion receipt: every expected thread records lifecycle and outcome separately; reviewer/doctor write access, missing evidence, ambiguous stops, and receipt inventory gaps block the aggregate gate.
223
232
  - Verification Ladder: L0 stated, L1 inspected, L2 local check, L3 integrated, L4 release/runtime/visual proof, and L5 bounded deep. Heavier claims require heavier evidence, but stop conditions prevent endless proof loops.
224
233
  - Release report JSON: `yam release report --json` summarizes typecheck, forbidden-name scan, package boundary, registry status, CLI smoke, dist freshness, diagnostics, readiness receipt, and final truth status.
225
234
  - Loop report JSON: `yam loop report --json` records a read-only handoff artifact: guided stages, touched/read/verified files, skipped checks, stop condition, resume hint, readiness state, requirement coverage, evidence level/stamp, blocker kind, failure cause, safe retry, recovery hint, owner route/scope, side effects, next action, fix-first items, remaining tasks, recommended direction, implementation notes, blocked-by notes, avoidance note, tool intent, truth status, and study note.
@@ -237,6 +246,7 @@ These shapes keep reports machine-readable without turning normal work into a he
237
246
  - Ueye design completion gate: `$ueye` can stay fast for draft work, but a `done` claim is capped until implementation evidence, comparison/design-quality status, P0/P1 status, key states, mobile/responsive behavior, contrast/accessibility visuals, CTA affordance, and direction/reference-read proof are recorded when relevant.
238
247
  - Ueye design brief and anti-slop review: `$ueye` reports can record operator-provided brief dimensions, constraints, invented metrics, placeholder copy, generic visuals, and custom anti-slop blockers. P0 anti-slop findings block `done` claims.
239
248
  - Ueye deep visual review: `$ueye` can record acceptance criteria, touched/read/verified files, skipped checks, residual risks, stop condition, resume hint, design-system evidence, implementation evidence, and a state matrix so serious UI work can carry Deep-grade verification without leaving the Ueye route.
249
+ - Ueye asset/revision integrity: `$ueye` can record license/provenance and protected/editable flags for local references, then preserve pre-edit artifacts in hash-verified numbered rounds.
240
250
 
241
251
  ## Ueye Capture And Compare
242
252
 
@@ -246,6 +256,8 @@ These shapes keep reports machine-readable without turning normal work into a he
246
256
  yam ueye capture --url http://localhost:3000 --out .yam/screens/home.png
247
257
  yam ueye compare --reference ./reference.png --actual .yam/screens/home.png --json
248
258
  yam ueye preflight . --json
259
+ yam ueye asset verify --manifest .yam/ueye/assets.json --json
260
+ yam ueye revision verify --manifest .yam/ueye/revisions/manifest.json --json
249
261
  yam ueye report --reference ./reference.png --actual .yam/screens/home.png --brief-dimension "primary CTA clarity" --constraint "mobile first" --anti-slop "placeholder copy remains" --acceptance-criterion "pricing card CTA remains visible on mobile" --design-system-evidence "uses existing button token" --implementation-evidence "browser screenshot reviewed" --state-check default:pass --state-check mobile:partial --skipped-check "hover state not checked on touch viewport" --residual-risk "tablet breakpoint still needs visual pass" --stop-condition "stop after primary states are checked and residual risk is recorded" --resume-hint "capture tablet screenshot next" --completion-claim done --design-quality pass --direction-locked --reference-read --states-checked --mobile-checked --contrast-checked --cta-checked --provider-context local --execution-surface in-app-browser --browser-surface in-app-browser --preserved-state --json
250
262
  ```
251
263
 
package/ROADMAP.md CHANGED
@@ -71,6 +71,7 @@ Tasks:
71
71
  - Merge `ui`, `eye`, and `review` into `ueye`. Done.
72
72
  - Add Ueye checklist refinements. Done.
73
73
  - Add Visual Evidence Inventory, Reference Read Proof, Reference vs Implementation Matrix, and Design Quality Review. Done.
74
+ - Add local reference asset provenance/protection manifest and non-overwriting revision history. Done.
74
75
  - Add optional browser/screenshot capture notes.
75
76
  - Keep image generation optional, never a gate.
76
77
 
@@ -231,6 +232,7 @@ Tasks:
231
232
  - Add mission prompt template. Done.
232
233
  - Add doctor scan checklist. Done.
233
234
  - Require real subagent/team execution for full `$mission`; otherwise downgrade to `$deep` or report partial/blocked. Done.
235
+ - Make Reviewer/Doctor lanes read-only by default and require explicit per-thread receipts plus an aggregate completion gate. Done.
234
236
 
235
237
  ### 14. Quick / Ueye Consolidation
236
238
 
@@ -421,3 +423,26 @@ Keep out for now:
421
423
  - required thread attachment ids.
422
424
  - app-specific visual gates.
423
425
  - blocking ordinary Ueye work when attachment metadata is absent.
426
+
427
+ #### Plan Review Canvas Lite
428
+
429
+ Status: deferred until repeated real-use demand.
430
+
431
+ Trigger:
432
+
433
+ - Users repeatedly need to annotate a generated plan or design report at exact elements instead of replying in prose.
434
+ - Terminal-only approval causes revision ambiguity or costly re-reading.
435
+ - A local browser review surface would materially shorten an approved Mission or Ueye feedback loop.
436
+
437
+ First shape:
438
+
439
+ - local-only artifact review.
440
+ - anchored comments and approve/request-changes verdict.
441
+ - explicit session end and bounded idle shutdown.
442
+ - Host/Origin checks, path confinement, and sandboxed artifact rendering.
443
+
444
+ Keep out for now:
445
+
446
+ - default local server.
447
+ - remote sharing or hosting.
448
+ - automatic implementation start without an explicit approval verdict.