yam-flow 2.2.1 → 2.3.1

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/AGENTS.md CHANGED
@@ -21,3 +21,21 @@
21
21
  19. Treat security as the first project lens: identify sensitive surfaces early and guide safer defaults before convenience.
22
22
  20. Keep final reports short and concrete, but always include remaining tasks or state that none are meaningful.
23
23
  21. When relevant, include architecture hygiene in the Study Note: avoid dumping unrelated logic into `page.tsx`, one-off component CSS into `global.css`, or structured product data into broad DB `jsonb` blobs when existing project boundaries, scoped styles, typed tables, constraints, or indexes fit better.
24
+
25
+ ## Latest Update Trigger
26
+
27
+ When the user says exactly `yam 최신 업데이트 사항 반영해줘` in a chat for this project, treat that phrase as explicit authorization to update the globally installed package and refresh the installed yam skills.
28
+
29
+ Run these commands sequentially from the yam project directory:
30
+
31
+ ```bash
32
+ npm install -g yam-flow
33
+ yam install
34
+ yam version
35
+ yam status
36
+ ```
37
+
38
+ - Request any environment approval required for network access or writes outside the workspace.
39
+ - Stop at the first failed command, report the blocker, and do not claim that later steps ran.
40
+ - After all four commands pass, report the installed version and skill status, then tell the user that Codex can be restarted to reload the updated skills.
41
+ - Do not restart Codex automatically.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  All notable changes to yam-flow are documented here.
4
4
 
5
+ ## v2.3.1 - 2026-07-21
6
+
7
+ ### Added
8
+
9
+ - Added a transactional skill installer that stages and SHA-256 verifies the complete managed skill set before replacing the active installation.
10
+ - Added `yam.install-receipt.v1` with the installed package version, source identity, timestamp, destination, skill inventory, per-file hashes, and aggregate source digest.
11
+ - Added deterministic install transaction smoke coverage for successful commit, forced mid-commit rollback, drift detection and repair, mirror cleanup, and concurrent-install locking.
12
+
13
+ ### Improved
14
+
15
+ - `yam status` now detects missing files, unexpected files, hash drift, receipt drift, and package-version drift instead of checking only for `SKILL.md` and `references/` existence.
16
+ - Failed commits restore the previous managed skill set and receipt; legacy and retired skill cleanup now participates in the same rollback boundary.
17
+ - Unfinished transaction artifacts are surfaced by `yam status` and block a new install so recovery backups are not silently overwritten.
18
+ - `yam uninstall` removes the install receipt and refuses to run while an install lock is present.
19
+
20
+ ### Verification
21
+
22
+ - `npm run verify:self`
23
+ - `npm run dist:freshness`
24
+ - `npm run package-boundary:check`
25
+ - `npm run cli-smoke`
26
+
27
+ ## v2.3.0 - 2026-07-13
28
+
29
+ ### Added
30
+
31
+ - Added `yam mission receipt` with reviewer/doctor read-only contracts, explicit lifecycle/outcome separation, verification evidence, and per-thread completion eligibility.
32
+ - Added `yam mission gate` to block Mission completion when expected thread receipts are missing, duplicated, unexpected, ambiguous, failed, or violate read-only role boundaries.
33
+ - Added `yam ueye asset add|verify` for local reference provenance, license notes, protection/edit flags, dimensions, and SHA-256 integrity checks.
34
+ - Added `yam ueye revision archive|verify` for non-overwriting round archives with hashed revision history.
35
+
36
+ ### Improved
37
+
38
+ - Mission proof requests for `verified` or `proven` now recompute and validate supplied completion gates, then cap the claim when a passing gate is missing.
39
+ - Ueye reports can attach asset and revision manifests; a supplied invalid manifest blocks a visual `done` claim.
40
+
5
41
  ## v2.2.1 - 2026-07-09
6
42
 
7
43
  ### 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
@@ -96,21 +96,13 @@ cd ~/Documents/Codex/tools/yam
96
96
  yam install
97
97
  ```
98
98
 
99
- This copies each skill plus the shared `references/` directory into `~/.agents/skills/`, which is the user skill root used by this Codex desktop setup.
99
+ `yam install` stages every managed skill plus the shared `references/` directory, verifies the complete staged file manifest with SHA-256, and only then replaces the active set in `~/.agents/skills/`. If any commit or post-install verification step fails, yam restores the previous managed skill set and receipt.
100
100
 
101
- Manual install is also possible by copying selected skill folders into your active Codex user skill root, but make sure each installed skill also receives a `references/` folder.
101
+ A successful install writes `~/.agents/skills/.yam-flow-install-receipt.json`. The receipt records the package version, source identity, install timestamp, destination, managed skill inventory, and per-file hashes. `yam status` independently recomputes source and installed hashes, so a stale package install, local file change, unexpected file, or modified receipt is reported as drift.
102
102
 
103
- Recommended v0:
103
+ An ordinary install error rolls back automatically. An abrupt process or machine termination can leave `.yam-flow-install.lock` and a hidden transaction directory; `yam status` surfaces the unfinished transaction and yam refuses another mutation while recovery state remains. Remove the lock only after confirming no install is running, and preserve any transaction directory until the previous installation state has been inspected.
104
104
 
105
- ```bash
106
- mkdir -p ~/.agents/skills
107
- for skill in quick ueye question scout deep mission; do
108
- rm -rf "$HOME/.agents/skills/$skill"
109
- mkdir -p "$HOME/.agents/skills/$skill"
110
- cp "skills/$skill/SKILL.md" "$HOME/.agents/skills/$skill/SKILL.md"
111
- cp -R references "$HOME/.agents/skills/$skill/references"
112
- done
113
- ```
105
+ Manual copying can still make a skill loadable, but it intentionally remains unverified: without a matching receipt, `yam status` exits non-zero and recommends `yam install`.
114
106
 
115
107
  Restart Codex after installing so skills reload.
116
108
 
@@ -143,9 +135,15 @@ yam ueye capture --url http://localhost:3000 --out .yam/screens/home.png
143
135
  yam ueye compare --reference ./reference.png --actual .yam/screens/home.png
144
136
  yam ueye preflight /path/to/project --json
145
137
  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
138
+ 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
139
+ yam ueye asset verify --manifest .yam/ueye/assets.json --json
140
+ yam ueye revision archive --file .yam/screens/home.png --round 1 --artifact-id home --root .yam/ueye/revisions --json
141
+ yam ueye revision verify --manifest .yam/ueye/revisions/manifest.json --json
146
142
  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
143
  yam media proof --requested --attempted --output ./generated.png --wait-loop --json
148
144
  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"}'
145
+ 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
146
+ yam mission gate --expected-thread reviewer-1 --receipt .yam/mission/reviewer-1.json --out .yam/mission/completion.json --json
149
147
  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
148
  yam release report --json
151
149
  yam safety "supabase db reset"
@@ -181,6 +179,8 @@ npm install -g yam-flow
181
179
  yam status
182
180
  ```
183
181
 
182
+ After `yam status` reports all skills and the install receipt as `ok`, restart Codex so the refreshed skills reload.
183
+
184
184
  Publishing still requires confirming the final npm package name and account access.
185
185
 
186
186
  ## Trust Kernel
@@ -199,6 +199,8 @@ Publishing still requires confirming the final npm package name and account acce
199
199
  - runtime backend evidence
200
200
  - runtime evidence mini summaries
201
201
  - mission patch queue lite records
202
+ - Mission read-only reviewer/doctor contracts, subagent receipts, and completion gate
203
+ - Ueye local asset provenance and non-overwriting revision history
202
204
  - release report JSON
203
205
  - loop report JSON
204
206
  - study note JSON
@@ -220,6 +222,7 @@ These shapes keep reports machine-readable without turning normal work into a he
220
222
 
221
223
  - Runtime evidence mini: compact route, command/process, observation, cleanup, truth status, and next action fields for `$deep` or `$mission` runtime claims.
222
224
  - Patch queue lite: `$mission` lane records with pending/applied/verified/reverted/blocked state, changed files, verification hint, rollback hint, truth status, and next action.
225
+ - 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
226
  - 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
227
  - 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
228
  - 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 +240,7 @@ These shapes keep reports machine-readable without turning normal work into a he
237
240
  - 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
241
  - 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
242
  - 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.
243
+ - 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
244
 
241
245
  ## Ueye Capture And Compare
242
246
 
@@ -246,6 +250,8 @@ These shapes keep reports machine-readable without turning normal work into a he
246
250
  yam ueye capture --url http://localhost:3000 --out .yam/screens/home.png
247
251
  yam ueye compare --reference ./reference.png --actual .yam/screens/home.png --json
248
252
  yam ueye preflight . --json
253
+ yam ueye asset verify --manifest .yam/ueye/assets.json --json
254
+ yam ueye revision verify --manifest .yam/ueye/revisions/manifest.json --json
249
255
  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
256
  ```
251
257
 
package/ROADMAP.md CHANGED
@@ -8,6 +8,7 @@ Implemented:
8
8
  - Six routes: quick, ueye, question, scout, deep, mission.
9
9
  - Shared references.
10
10
  - Local CLI: list, status, verify, doctor, examples, path, install, uninstall.
11
+ - Transactional skill install with rollback, SHA-256 receipt, install lock, and status drift detection. Done.
11
12
  - CLI helpers: detect, budget, template, tune-log, version.
12
13
  - Optional advisory `yam-lite` hook with status/enable/disable. Done.
13
14
  - Opt-in project memory: init, add, list, summary, resolve.
@@ -71,6 +72,7 @@ Tasks:
71
72
  - Merge `ui`, `eye`, and `review` into `ueye`. Done.
72
73
  - Add Ueye checklist refinements. Done.
73
74
  - Add Visual Evidence Inventory, Reference Read Proof, Reference vs Implementation Matrix, and Design Quality Review. Done.
75
+ - Add local reference asset provenance/protection manifest and non-overwriting revision history. Done.
74
76
  - Add optional browser/screenshot capture notes.
75
77
  - Keep image generation optional, never a gate.
76
78
 
@@ -93,6 +95,7 @@ Tasks:
93
95
 
94
96
  - Add symlink-friendly local install.
95
97
  - Add version command. Done.
98
+ - Add staged transactional install, rollback, receipt, and drift-aware status. Done.
96
99
  - Consider npm packaging only after route behavior stabilizes.
97
100
 
98
101
  ### 8. Scout / Research Workflow
@@ -231,6 +234,7 @@ Tasks:
231
234
  - Add mission prompt template. Done.
232
235
  - Add doctor scan checklist. Done.
233
236
  - Require real subagent/team execution for full `$mission`; otherwise downgrade to `$deep` or report partial/blocked. Done.
237
+ - Make Reviewer/Doctor lanes read-only by default and require explicit per-thread receipts plus an aggregate completion gate. Done.
234
238
 
235
239
  ### 14. Quick / Ueye Consolidation
236
240
 
@@ -421,3 +425,26 @@ Keep out for now:
421
425
  - required thread attachment ids.
422
426
  - app-specific visual gates.
423
427
  - blocking ordinary Ueye work when attachment metadata is absent.
428
+
429
+ #### Plan Review Canvas Lite
430
+
431
+ Status: deferred until repeated real-use demand.
432
+
433
+ Trigger:
434
+
435
+ - Users repeatedly need to annotate a generated plan or design report at exact elements instead of replying in prose.
436
+ - Terminal-only approval causes revision ambiguity or costly re-reading.
437
+ - A local browser review surface would materially shorten an approved Mission or Ueye feedback loop.
438
+
439
+ First shape:
440
+
441
+ - local-only artifact review.
442
+ - anchored comments and approve/request-changes verdict.
443
+ - explicit session end and bounded idle shutdown.
444
+ - Host/Origin checks, path confinement, and sandboxed artifact rendering.
445
+
446
+ Keep out for now:
447
+
448
+ - default local server.
449
+ - remote sharing or hosting.
450
+ - automatic implementation start without an explicit approval verdict.