@dailephd/my-frontend-observer 0.9.0 → 0.10.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +17 -7
  3. package/dist/application/visualChangeAgentHandoffService.d.ts +28 -0
  4. package/dist/application/visualChangeAgentHandoffService.js +111 -0
  5. package/dist/application/visualChangeAgentHandoffService.js.map +1 -0
  6. package/dist/application/visualChangeProjectWorkflowService.d.ts +95 -0
  7. package/dist/application/visualChangeProjectWorkflowService.js +376 -0
  8. package/dist/application/visualChangeProjectWorkflowService.js.map +1 -0
  9. package/dist/application/visualChangeReviewService.d.ts +50 -0
  10. package/dist/application/visualChangeReviewService.js +69 -0
  11. package/dist/application/visualChangeReviewService.js.map +1 -0
  12. package/dist/application/visualChangeWorkflowPersistenceService.d.ts +26 -0
  13. package/dist/application/visualChangeWorkflowPersistenceService.js +15 -0
  14. package/dist/application/visualChangeWorkflowPersistenceService.js.map +1 -0
  15. package/dist/artifacts/visualChangeWorkflowArtifactReader.d.ts +9 -0
  16. package/dist/artifacts/visualChangeWorkflowArtifactReader.js +47 -0
  17. package/dist/artifacts/visualChangeWorkflowArtifactReader.js.map +1 -0
  18. package/dist/artifacts/visualChangeWorkflowArtifactWriter.d.ts +20 -0
  19. package/dist/artifacts/visualChangeWorkflowArtifactWriter.js +41 -0
  20. package/dist/artifacts/visualChangeWorkflowArtifactWriter.js.map +1 -0
  21. package/dist/cli.js +510 -508
  22. package/dist/cli.js.map +1 -1
  23. package/dist/domain/visualChangeAgentHandoff.d.ts +82 -0
  24. package/dist/domain/visualChangeAgentHandoff.js +80 -0
  25. package/dist/domain/visualChangeAgentHandoff.js.map +1 -0
  26. package/dist/domain/visualChangeAgentHandoffSerialization.d.ts +2 -0
  27. package/dist/domain/visualChangeAgentHandoffSerialization.js +11 -0
  28. package/dist/domain/visualChangeAgentHandoffSerialization.js.map +1 -0
  29. package/dist/domain/visualChangeCycle.d.ts +8 -0
  30. package/dist/domain/visualChangeCycle.js +7 -0
  31. package/dist/domain/visualChangeCycle.js.map +1 -0
  32. package/dist/domain/visualChangeWorkflow.d.ts +125 -0
  33. package/dist/domain/visualChangeWorkflow.js +109 -0
  34. package/dist/domain/visualChangeWorkflow.js.map +1 -0
  35. package/dist/domain/visualChangeWorkflowIdentity.d.ts +5 -0
  36. package/dist/domain/visualChangeWorkflowIdentity.js +24 -0
  37. package/dist/domain/visualChangeWorkflowIdentity.js.map +1 -0
  38. package/dist/index.d.ts +21 -1
  39. package/dist/index.js +12 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/projectWorkflow/projectPaths.d.ts +3 -0
  42. package/dist/projectWorkflow/projectPaths.js +7 -0
  43. package/dist/projectWorkflow/projectPaths.js.map +1 -1
  44. package/dist/viewer/assets/index-DglJ6f28.css +1 -0
  45. package/dist/viewer/assets/index-DsODREY5.js +9 -0
  46. package/dist/viewer/index.html +2 -2
  47. package/dist/viewer/sw.js +1 -1
  48. package/dist/viewerServer/evidence/classify.d.ts +3 -1
  49. package/dist/viewerServer/evidence/classify.js +10 -0
  50. package/dist/viewerServer/evidence/classify.js.map +1 -1
  51. package/dist/viewerServer/evidence/handles.js +1 -0
  52. package/dist/viewerServer/evidence/handles.js.map +1 -1
  53. package/dist/viewerServer/evidence/projection.d.ts +5 -0
  54. package/dist/viewerServer/evidence/projection.js +19 -0
  55. package/dist/viewerServer/evidence/projection.js.map +1 -1
  56. package/dist/viewerServer/evidence/visualChangeWorkflowView.d.ts +31 -0
  57. package/dist/viewerServer/evidence/visualChangeWorkflowView.js +36 -0
  58. package/dist/viewerServer/evidence/visualChangeWorkflowView.js.map +1 -0
  59. package/dist/viewerServer/httpServer.js +323 -1
  60. package/dist/viewerServer/httpServer.js.map +1 -1
  61. package/dist/viewerServer/referenceApproval.d.ts +22 -0
  62. package/dist/viewerServer/referenceApproval.js +42 -0
  63. package/dist/viewerServer/referenceApproval.js.map +1 -0
  64. package/dist/viewerServer/referenceVisualChangeAuthoring.d.ts +28 -0
  65. package/dist/viewerServer/referenceVisualChangeAuthoring.js +134 -0
  66. package/dist/viewerServer/referenceVisualChangeAuthoring.js.map +1 -0
  67. package/dist/viewerServer/runtimeVisualChangeAuthoring.d.ts +33 -0
  68. package/dist/viewerServer/runtimeVisualChangeAuthoring.js +81 -0
  69. package/dist/viewerServer/runtimeVisualChangeAuthoring.js.map +1 -0
  70. package/dist/viewerServer/visualChangeAuthoring.d.ts +46 -0
  71. package/dist/viewerServer/visualChangeAuthoring.js +63 -0
  72. package/dist/viewerServer/visualChangeAuthoring.js.map +1 -0
  73. package/dist/viewerServer/visualChangeHandoff.d.ts +23 -0
  74. package/dist/viewerServer/visualChangeHandoff.js +31 -0
  75. package/dist/viewerServer/visualChangeHandoff.js.map +1 -0
  76. package/dist/viewerServer/visualChangeReview.d.ts +30 -0
  77. package/dist/viewerServer/visualChangeReview.js +46 -0
  78. package/dist/viewerServer/visualChangeReview.js.map +1 -0
  79. package/docs/ARCHITECTURE.md +17 -5
  80. package/docs/CI_CD.md +33 -1
  81. package/docs/COMMANDS.md +19 -5
  82. package/docs/CONTRACTS.md +38 -4
  83. package/docs/CURRENT_STATE.md +92 -11
  84. package/docs/DEVELOPMENT.md +32 -2
  85. package/docs/PROJECT_MILESTONES.md +28 -0
  86. package/docs/PROJECT_OVERVIEW.md +36 -14
  87. package/docs/QUICKSTART.md +7 -3
  88. package/docs/RELEASE.md +15 -11
  89. package/docs/ROADMAP.md +55 -2
  90. package/docs/SECURITY.md +25 -3
  91. package/docs/WORKFLOWS.md +29 -3
  92. package/docs/plans/v0.10-implementation-plan.md +1509 -0
  93. package/docs/plans/v0.9.1-implementation-plan.md +468 -0
  94. package/docs/reports/v0.10-batch1-visual-change-workflow-foundation.md +102 -0
  95. package/docs/reports/v0.10-batch2-project-composition-check-recording.md +103 -0
  96. package/docs/reports/v0.10-batch3-viewer-visual-change-workspace.md +93 -0
  97. package/docs/reports/v0.10-batch4-actual-frontend-entry.md +59 -0
  98. package/docs/reports/v0.10-batch5-reference-driven-entry.md +238 -0
  99. package/docs/reports/v0.10-batch6-coding-agent-handoff.md +85 -0
  100. package/docs/reports/v0.10-batch7-correction-review-acceptance.md +145 -0
  101. package/docs/reports/v0.10-batch8-integrated-acceptance.md +109 -0
  102. package/docs/reports/v0.10-implementation-completeness-documentation-reconciliation.md +344 -0
  103. package/docs/reports/v0.10-pre-release-readiness.md +120 -0
  104. package/docs/reports/v0.10-release-preparation.md +70 -0
  105. package/docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md +359 -0
  106. package/docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md +262 -0
  107. package/docs/reports/v0.9.1-pre-release-readiness.md +206 -0
  108. package/package.json +3 -2
  109. package/dist/viewer/assets/index-BN41MI7m.css +0 -1
  110. package/dist/viewer/assets/index-CkKXnlrI.js +0 -9
@@ -1,5 +1,17 @@
1
1
  # Architecture
2
2
 
3
+ ## v0.10 visual workflow boundaries
4
+
5
+ `VisualChangeWorkflowArtifact` (`1.0.0`) is the only new persisted v0.10
6
+ family. It owns frozen scope, explicit activation/restoration, immutable
7
+ attempt and review revisions, and optional references to governance results.
8
+ The Viewer is the human workflow entry; `checkProject` remains the canonical
9
+ evaluator. `VisualChangeAgentHandoff` (`1.0.0`) is a generated, non-persisted
10
+ transfer contract. An external human or coding agent edits source. Optional
11
+ orchestrator metadata is traceability only and Observer never imports or runs
12
+ the orchestrator. Human acceptance is separate from baseline/reference
13
+ governance and never rewrites prior workflow evidence.
14
+
3
15
  ## v0.8.1 project workflow
4
16
 
5
17
  Versioned project configuration (`1.0.0` compatibility plus current `1.1.0`
@@ -21,7 +33,7 @@ the workflow result remain in memory/presentation.
21
33
  ## Current package architecture
22
34
 
23
35
  The current repository is one published TypeScript ESM package
24
- (`@dailephd/my-frontend-observer@0.9.0`). The CLI remains
36
+ (`@dailephd/my-frontend-observer@0.9.1`). The CLI remains
25
37
  `my-frontend-observer`; the npm scope does not rename the product or artifact
26
38
  identities.
27
39
 
@@ -369,7 +381,7 @@ lab code in this repository - those remain separate sibling-repository
369
381
  responsibilities per the Milestone 6 ownership split in
370
382
  `docs/PROJECT_MILESTONES.md`.
371
383
 
372
- ## v0.7 (released as `0.7.0`), v0.8 (released as `0.8.0`), and planned v0.9–v0.10 reference-evidence architecture constraints
384
+ ## v0.7-v0.10 reference-evidence architecture constraints
373
385
 
374
386
  The external visual-reference capability (v0.7) is released as package
375
387
  version `0.7.0` - see "v0.7 Prompt 1" through "v0.7 Prompt 8" below for the
@@ -378,9 +390,9 @@ extends the existing v0.1-v0.6 evidence architecture rather than becoming a
378
390
  UI-only feature or a parallel visual-comparison stack. v0.8 (interactive
379
391
  viewer) is released as package version `0.8.0`. v0.9 (structured visual
380
392
  annotation) is released as package version `0.9.0` - see "v0.9 visual
381
- annotation architecture" below. v0.10 (full graphical human-LLM
382
- workflow) remains future and unimplemented. The constraints below applied to
383
- v0.9 and still apply to v0.10.
393
+ annotation architecture" below. v0.10 (full graphical human-LLM workflow) is
394
+ implemented and documentation-reconciled but remains unreleased. The
395
+ constraints below apply to both v0.9 and v0.10.
384
396
 
385
397
  The evidence domains remain distinct:
386
398
 
package/docs/CI_CD.md CHANGED
@@ -1,6 +1,38 @@
1
1
  # CI/CD
2
2
 
3
- CI interprets `check` as PASS `0`, FAIL `1`, REVIEW_REQUIRED `2`, or BLOCKED `3`. The released package is `@dailephd/my-frontend-observer@0.9.0`; its CLI remains `my-frontend-observer`. Packed readiness installs one exact tarball and runs `runPackedViewerSmoke.mjs` as the single project/viewer smoke owner for `init`, `capture`, bounded `check --json` REVIEW_REQUIRED and unchanged-contract FAIL-to-PASS, alias-aware project `view`, and viewer security. `runPackedObservationSmoke.mjs` remains the lower-level legacy observation smoke.
3
+ CI interprets `check` as PASS `0`, FAIL `1`, REVIEW_REQUIRED `2`, or BLOCKED `3`. The current package is `@dailephd/my-frontend-observer@0.10.0`; its CLI remains `my-frontend-observer`. Packed readiness installs one exact tarball and runs `runPackedViewerSmoke.mjs` as the single project/viewer smoke owner for `init`, `capture`, bounded `check --json` REVIEW_REQUIRED and unchanged-contract FAIL-to-PASS, alias-aware project `view`, and viewer security. `runPackedObservationSmoke.mjs` remains the lower-level legacy observation smoke.
4
+
5
+ The same matrix now also runs `runPackedV010WorkflowSmoke.mjs`. It installs the
6
+ same SHA-verified candidate into a clean consumer and exercises installed
7
+ actual/reference workflow creation, activation, handoff, immutable correction
8
+ attempts, PASS-only acceptance, project-aware Viewer discovery, and standalone
9
+ read-only behavior. Its bounded summary is uploaded with the existing matrix
10
+ summary artifact. The candidate job still owns exactly one `npm pack`; no
11
+ second v0.10 candidate or matrix exists. Formal v0.10 exact-candidate readiness
12
+ passed on Windows, Linux, and macOS.
13
+ All four packed smokes, security checks, and PWA gates passed against the same
14
+ candidate. Run 35789033295 records that readiness result.
15
+
16
+ ## Gate isolation invariant
17
+
18
+ Cross-platform/full-suite success does not by itself prove that a security or
19
+ acceptance gate is independent. Any test explicitly labeled `HARD GATE`,
20
+ `SECURITY GATE`, or `ACCEPTANCE GATE` must also be able to run from fresh
21
+ state without relying on earlier test order, a previously warmed service-worker
22
+ cache, a persistent browser profile from an earlier run, or another test's
23
+ server/evidence setup.
24
+
25
+ v0.9.1 applies this rule to the PWA server-down
26
+ hard gate. `npm run test:pwa-hard-gate` runs that gate by itself. It is a
27
+ separate required proof in addition to the normal full-file execution in
28
+ `npm run test:browser` and `npm run test:security`.
29
+
30
+ `npm run test:security` now ends with `npm run test:pwa-hard-gate`. The
31
+ `candidate` job in `.github/workflows/pre-release-readiness.yml` already runs
32
+ `npm run test:security`, so release-readiness candidate validation receives
33
+ the isolated gate automatically. The workflow YAML did not need to change. The
34
+ released v0.9.1 suite contains the corrected isolated gate. No production PWA
35
+ regression was found.
4
36
 
5
37
  A GitHub Actions pre-release readiness workflow exists at
6
38
  `.github/workflows/pre-release-readiness.yml` (triggered manually via
package/docs/COMMANDS.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Commands
2
2
 
3
+ ## v0.10 visual workflow operations
4
+
5
+ v0.10 adds no CLI command. Project-aware `view` exposes the Visual changes
6
+ workspace for actual/reference entry, explicit activation, bounded handoff,
7
+ Run check, correction/review, acceptance, governance-result recording, and
8
+ explicit restore. These are guarded local HTTP/UI actions backed by canonical
9
+ application owners, not new command-line subcommands. Standalone `view --root`
10
+ remains inspection-only.
11
+
12
+ Every handoff names `check <baseline> --json` as the exact post-edit machine
13
+ operation. It captures a fresh candidate and runs the existing canonical
14
+ comparison, contract, and configured reference-fidelity owners.
15
+
3
16
  ## v0.8.1 common workflow
4
17
 
5
18
  `init --url <loopback-url> [--viewport WIDTHxHEIGHT] [--target id=selector ... | --targets-file file] [--default-baseline alias] [--replace]` creates schema-`1.1.0` project configuration; schema `1.0.0` remains readable and forbids `acceptance`. Schema `1.1.0` may add exactly:
@@ -783,7 +796,7 @@ the annotation workflow. The rest of this section describes the inspection
783
796
  surface, which is unchanged.
784
797
 
785
798
  **Current status: viewer behavior is released as package
786
- `@dailephd/my-frontend-observer@0.9.0`.** Starts one
799
+ `@dailephd/my-frontend-observer@0.9.1`.** Starts one
787
800
  loopback-only Node viewer server and serves the same React + TypeScript +
788
801
  Vite application to a normal browser or an installed Progressive Web App.
789
802
  `--root` is used as a bounded, read-only evidence-discovery root: the server
@@ -948,12 +961,13 @@ Options:
948
961
  - `--help` — show `view` usage.
949
962
 
950
963
  The server binds only to `127.0.0.1` (never `0.0.0.0`), serves only the
951
- built viewer application assets plus the bounded, read-only `/api/*`
964
+ built viewer application assets plus bounded `/api/*`
952
965
  endpoints described above, and never exposes the supplied evidence root as a
953
966
  generic static directory or arbitrary filesystem path. With `--root` it
954
- accepts no write methods and writes nothing. Without `--root`, the only
955
- writes are the three v0.9 authoring routes above, which create new immutable
956
- artifacts and never modify existing ones. On success,
967
+ accepts no write methods and writes nothing. Without `--root`, the guarded
968
+ project-aware authoring routes create only new immutable artifacts and workflow
969
+ revisions through canonical owners; they never edit target source or rewrite
970
+ existing evidence. On success,
957
971
  prints the viewer URL and keeps running (serving the viewer) until
958
972
  interrupted. On invalid syntax, a missing/non-directory `--root`, an
959
973
  invalid `--port`, an invalid `--bindings-file`, an invalid `--context-file`
package/docs/CONTRACTS.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Contracts
2
2
 
3
+ ## Visual-change workflow artifact (`1.0.0`, v0.10 Batch 1)
4
+
5
+ `my-frontend-observer/visual-change-workflow` is the immutable Observer-owned history envelope for one frozen visual-change request. It records a deterministic `visualChangeRequestId`, a fresh `visualChangeWorkflowId`, optional forward-only `supersedesVisualChangeWorkflowId`, exact references to existing canonical evidence, zero to twenty bounded attempt records, optional activation/governance result references, producer metadata, and creation provenance.
6
+
7
+ The two entry modes are exactly `actual-frontend` and `reference`. Reference mode stores validated explicit runtime binding declarations in canonical `bindings.json`; the manifest pins its SHA-256 and declaration count. Actual mode never writes that file. Project-relative evidence references must remain contained portable paths; source artifacts and media are referenced rather than copied.
8
+
9
+ Request identity hashes semantic scope only. It excludes timestamps and operational storage locations. Workflow instance identity is fresh for every explicit persistence. Attempt identity is deterministic over the visual-change request ID and candidate observation ID. Human review state is exactly `pending`, `correction-requested`, `accepted`, or `abandoned`; this foundation validates structure but does not implement the later acceptance rule or execute checks.
10
+
11
+ The v0.10 Batch 2 application composition explicitly activates either the frozen per-change contract or the frozen approved reference and workflow-owned bindings in project acceptance. Activation and restoration preserve unrelated configuration, use compensating atomic writes across mutable project configuration and immutable workflow revisions, and refuse acceptance drift. A workflow check resolves an alias only when its catalog identity and artifact location exactly match the frozen baseline, then invokes the existing `checkProject` owner once. Only a canonical result containing both baseline and candidate summaries can append a pending attempt revision; the snapshot is a bounded direct projection of that result and does not repeat evaluation.
12
+
13
+ The v0.10 Batch 3 Viewer exposes bounded workflow inspection at `GET /api/visual-changes/:handle/view` in both standalone and project-aware sessions. Create, activate, check, and restore POST operations are project-aware only, reuse the existing in-memory authoring capability and request guards, accept no filesystem paths, and delegate to the Batch 2 application service. Every new response is `no-store`. Successful immutable mutations return the exact new workflow ID so the Viewer can refresh and reselect that revision without guessing. The Viewer protocol remains `1.3.0`.
14
+
15
+ The v0.10 Batch 4 actual-frontend entry route promotes only explicitly selected, saved, confirmed, canonically promotable runtime intent without activating project acceptance. It freezes the exact resulting contract instance with the saved annotation, source observation, and configured persistent baseline contract through the Batch 2 workflow-creation owner. Repeated equivalent starts share `contractRequestId` while receiving fresh contract, visual-change request, and workflow instance identities. Activation remains a later explicit workflow action.
16
+
17
+ Reference entry freezes only an exact approved reference, an annotation authored
18
+ against that exact instance, an exact baseline observation, and explicitly
19
+ authored valid bindings. Adequacy, compatibility, complete required-region
20
+ coverage, and canonical binding evaluation fail closed. Imported references,
21
+ inferred bindings, and session bindings are not executable workflow scope.
22
+
23
+ `VisualChangeAgentHandoff` uses handoff kind
24
+ `my-frontend-observer/visual-change-agent-handoff` and version `1.0.0`. It is a
25
+ bounded non-artifact transfer contract and is never discovered or persisted as
26
+ Observer evidence. It includes confirmed scope, Observer-owned bounded context,
27
+ optional unchanged supplemental context, the exact post-edit check instruction,
28
+ and optional non-authoritative orchestrator correlation.
29
+
30
+ The current cycle is derived from the latest attempt. A pending attempt blocks
31
+ another check or handoff until explicit correction, acceptance, or abandonment.
32
+ Only the latest canonical PASS may be accepted. Review changes only the latest
33
+ attempt's review object in a fresh workflow revision. Governance references may
34
+ be recorded only after acceptance and only for already-persisted canonical
35
+ approval results; they do not perform approval or change project configuration.
36
+ No existing evidence schema changed for v0.10.
37
+
3
38
  ## Current contracts
4
39
 
5
40
  The observation artifact contract is published in the current
@@ -490,7 +525,7 @@ blockers; on the canonical worktree, `npm run typecheck`, `npm run lint`,
490
525
  `npm test` (627 tests), `npm run test:browser` (120 tests), `npm run
491
526
  test:security`, `npm run build`, and `npm run check:docs` all pass.
492
527
 
493
- ## v0.7 external visual-reference contract direction (released as `0.7.0`; v0.8 viewer released as `0.8.0`; v0.9 released as `0.9.0`; v0.10 still future)
528
+ ## v0.7 external visual-reference contract direction (preserved through implemented, unreleased v0.10)
494
529
 
495
530
  External visual-reference support is released as package version `0.7.0`
496
531
  (see "v0.7 Prompt 1" through "v0.7 Prompt 8" below for the exact contract).
@@ -498,9 +533,8 @@ The exact public type names, artifact kinds, schema versions, persistence
498
533
  layout, and command/programmatic entry points were designed during v0.7
499
534
  implementation from current repository precedent, following the constraints
500
535
  below. v0.8 (released as package version `0.8.0` - see
501
- `docs/CURRENT_STATE.md`) has preserved them. v0.9 (implemented, not yet
502
- released) preserves them too. v0.10 remains future and must continue to
503
- preserve them.
536
+ `docs/CURRENT_STATE.md`) has preserved them. v0.9 is released and preserves
537
+ them. The implemented, unreleased v0.10 workflow preserves them too.
504
538
 
505
539
  **Distinct evidence domain**: an external reference is desired-design evidence,
506
540
  not an `ObservationArtifact` and not the "before" side of a v0.4
@@ -1,6 +1,18 @@
1
1
  # Current State
2
2
 
3
- v0.9.0 is released and published as `@dailephd/my-frontend-observer@0.9.0`.
3
+ v0.10.0 is the current release of `@dailephd/my-frontend-observer`.
4
+ Formal Windows, Linux, and macOS exact-candidate readiness, security checks,
5
+ and PWA gates passed before release. The package version is `0.10.0`.
6
+
7
+ The full Visual Change workflow supports actual-frontend and approved-reference
8
+ entry, structured intent, explicit activation, bounded coding-agent handoff,
9
+ immutable check attempts and correction, PASS-only human acceptance, and
10
+ separate governance. The Viewer discovers installed-package workflow evidence.
11
+ Observer never edits source or performs automatic approval. Schemas remain
12
+ independently versioned: observation `1.2.0`, comparison `1.0.0`, frontend
13
+ contract `1.0.0`, evaluation `1.0.0`, bounded-agent-context `1.0.0`,
14
+ external-reference `1.0.0`, visual annotation `1.0.0`, visual-change workflow
15
+ `1.0.0`, handoff `1.0.0`; Viewer protocol remains `1.3.0`.
4
16
  v0.9 (Human Visual Annotation and Design-Intent Capture) adds structured visual
5
17
  annotation to the project-aware viewer. It passed integrated real-Chromium
6
18
  acceptance and final exact-candidate pre-release readiness on Windows, Linux
@@ -12,8 +24,10 @@ repository also holds a deterministic demo and four tutorial scenarios for
12
24
  v0.9, recorded by the external `@dailephd/my-dev-kit-lab@0.4.9` tool. See
13
25
  "v0.9 status" below.
14
26
 
15
- The project is published at package version `0.9.0` (roadmap v0.9, Human
16
- Visual Annotation and Design-Intent Capture; observation schema `1.2.0`;
27
+ The project is published at package version `0.9.1` (roadmap v0.9.1, PWA
28
+ Hard-Gate Isolation and Reproducible Security Acceptance; the preceding v0.9
29
+ release was Human Visual Annotation and Design-Intent Capture; observation
30
+ schema `1.2.0`;
17
31
  comparison schema `1.0.0`; frontend contract schema `1.0.0`; evaluation
18
32
  artifact schema `1.0.0`; bounded-agent-context schema `1.0.0`;
19
33
  external-reference schema `1.0.0`; visual annotation schema `1.0.0`). v0.9.0
@@ -22,6 +36,71 @@ evidence schema version. v0.8.1 did not change any canonical evidence schema
22
36
  version either; see "v0.8 status" below for the final, complete v0.8 viewer
23
37
  state.
24
38
 
39
+ ## v0.9.1 maintenance status
40
+
41
+ Status: released and published as `@dailephd/my-frontend-observer@0.9.1`.
42
+ No production code changed.
43
+
44
+ Result of the implementation:
45
+
46
+ 1. The original failure was reproduced. Selected alone, the hard gate failed at
47
+ the offline reload with `net::ERR_CONNECTION_REFUSED`.
48
+ 2. Root cause, part one: the old readiness check was
49
+ `registration?.active !== undefined`. While the worker was still installing,
50
+ `active` was `null` and the page had no controller. Because
51
+ `null !== undefined` is true, the check passed and the server was closed
52
+ before the worker controlled the page or finished precaching.
53
+ 3. Root cause, part two: the gate shared a server, evidence root, and a fixed
54
+ persistent Chromium profile with earlier tests. In normal file order those
55
+ tests had already activated a controlling worker, which hid the defect.
56
+ 4. The hard gate now owns a fresh evidence root, viewer server, temporary
57
+ persistent profile, and BrowserContext. No PWA test uses the fixed
58
+ `.my-dev-kit-workflow` profile any more.
59
+ 5. The gate proves service-worker activation (`registration.active !== null`)
60
+ and current-page control (`navigator.serviceWorker.controller !== null`)
61
+ as separate facts.
62
+ 6. It proves the app shell is in the Workbox precache and that no `/api/`
63
+ request is in Cache Storage.
64
+ 7. It proves the server is down with a direct Node-side request before the
65
+ offline reload.
66
+ 8. After the reload, the shell renders, the evidence list shows its explicit
67
+ unavailable state, and the previously visible evidence identity is absent.
68
+ 9. `npm run test:pwa-hard-gate` runs the gate alone. `npm run test:security`
69
+ now ends with it. It passes repeatedly, and the full PWA file, browser suite,
70
+ and security suite pass.
71
+ 10. Production PWA behavior is unchanged.
72
+
73
+ Evidence: `docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md` and
74
+ `docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md`.
75
+
76
+ The historical planning background follows.
77
+
78
+ A post-release test-isolation defect has been identified in
79
+ `tests/browser/pwaHardening.test.ts`. The PWA server-down test labeled
80
+ `HARD GATE` passes in the normal full-file/full-suite execution but fails
81
+ when selected independently with Vitest `-t`. The current test shares a
82
+ persistent Chromium context/profile with earlier tests, and its own setup proves
83
+ that a service-worker registration is active without independently proving all
84
+ of the state the server-down experiment needs: that the current page is
85
+ controlled, that the application shell is actually precached, and that no
86
+ historical profile/cache state was inherited.
87
+
88
+ This is currently classified as a test-isolation defect, not a demonstrated
89
+ production PWA regression. The released safety contract remains unchanged:
90
+ application-shell caching may keep the viewer shell available while evidence
91
+ and media remain server-backed, and stale evidence must never be presented as
92
+ current after the server is unavailable. No production PWA code change is
93
+ authorized unless a corrected fresh-state hard-gate experiment first
94
+ demonstrates a real runtime failure.
95
+
96
+ The completed v0.9.1 maintenance patch was governed by the frozen implementation
97
+ plan `docs/plans/v0.9.1-implementation-plan.md`. It made the hard gate own fresh
98
+ disposable evidence/server/browser-profile state, explicitly prove service-worker
99
+ control and shell/API cache preconditions, explicitly prove the server is
100
+ unavailable before the offline reload, and add an isolated execution gate so the
101
+ same test passes by itself as well as inside the full browser and security
102
+ suites.
103
+
25
104
  v0.8 (Interactive Local Observation Viewer) is fully implemented, tested,
26
105
  formally cross-platform/security validated, and released. All eight v0.8
27
106
  implementation batches, the hardened documentation/implementation-
@@ -1128,14 +1207,15 @@ npm package.
1128
1207
  implemented.) A CLI surface for Prompt 8's correction workflow specifically
1129
1208
  remains unimplemented by design (programmatic-only, library-level use is
1130
1209
  the current supported entry point) - see "v0.7 Prompt 8 status" above.
1131
- The full graphical human-LLM workflow (v0.10) remains future and
1132
- unimplemented. Structured visual annotation (v0.9) is implemented and
1133
- released as `0.9.0` - see "v0.9 status" above.
1210
+ The full graphical human-LLM workflow is released as `0.10.0`. Structured
1211
+ visual annotation (v0.9) is
1212
+ implemented and released as `0.9.0` - see "v0.9 status" above.
1134
1213
 
1135
1214
  ## Next target
1136
1215
 
1137
- v0.1-v0.9 are implemented, validated, and released (`0.1.0`, `0.2.0`,
1138
- `0.3.0`, `0.4.0`, `0.5.0`, `0.6.0`, `0.7.0`, `0.8.0`, `0.8.1`, `0.9.0`). v0.7 (End-to-End
1216
+ v0.1-v0.10 are implemented, validated, and released (`0.1.0`, `0.2.0`,
1217
+ `0.3.0`, `0.4.0`, `0.5.0`, `0.6.0`, `0.7.0`, `0.8.0`, `0.8.1`, `0.9.0`,
1218
+ `0.9.1`, `0.10.0`). v0.7 (End-to-End
1139
1219
  Coding-Agent Frontend Change Review) is fully implemented and released: the
1140
1220
  external-reference artifact foundation, explicit reference
1141
1221
  regions/relationships, selected design requirements/tolerance
@@ -1166,6 +1246,7 @@ for the completeness audit, and
1166
1246
  for the cross-platform readiness validation that preceded this release.
1167
1247
 
1168
1248
  v0.9 (structured visual annotation) is released as
1169
- `@dailephd/my-frontend-observer@0.9.0` - see "v0.9 status" above. The next
1170
- target is v0.10 (full graphical human-LLM workflow), which remains future and
1171
- unimplemented - see `docs/ROADMAP.md`.
1249
+ `@dailephd/my-frontend-observer@0.9.0` - see "v0.9 status" above. v0.10.0 is
1250
+ the current release. Its formal exact-candidate readiness passed on Windows,
1251
+ Linux, and macOS, including installed-package, security, and PWA gates. See
1252
+ `docs/reports/v0.10-release-preparation.md` for release-preparation evidence.
@@ -1,7 +1,7 @@
1
1
  # Development
2
2
 
3
- The released v0.9.0 package is published as
4
- `@dailephd/my-frontend-observer@0.9.0` (CLI `my-frontend-observer`). It keeps
3
+ The released v0.9.1 package is published as
4
+ `@dailephd/my-frontend-observer@0.9.1` (CLI `my-frontend-observer`). It keeps
5
5
  the v0.8.1 project workflow and adds structured visual annotation.
6
6
 
7
7
  The v0.8.1 workflow is exercised through unit and real-Chromium tests. Project fixtures use `init`, `capture baseline`, and `check`; coding-agent consumers use bounded `check --json`. `tests/browser/projectCheckWorkflow.test.ts` covers REVIEW_REQUIRED, contract FAIL-to-PASS, reference FAIL/PASS/BLOCKED, incomparable BLOCKED, current history, and contained acceptance paths. `scripts/ci/runPackedViewerSmoke.mjs` is the single installed-package viewer/project-workflow smoke owner: it repeats REVIEW_REQUIRED and unchanged-contract FAIL-to-PASS before alias-aware viewer proof. Run the full unit, browser, security, build, documentation, and packed-consumer validations before release readiness.
@@ -38,6 +38,36 @@ first; it is kept out of `npm test` because it launches a real browser and
38
38
  is slower. Exact counts drift as the suite grows - run the commands above
39
39
  for the current numbers rather than trusting this document.
40
40
 
41
+ ## Hard/security/acceptance gate isolation
42
+
43
+ Tests explicitly designated `HARD GATE`, `SECURITY GATE`, or
44
+ `ACCEPTANCE GATE` must be independently reproducible. A passing full suite is
45
+ not sufficient evidence if the gate itself only succeeds because another test
46
+ ran first or because a prior run left browser/cache/filesystem state behind.
47
+
48
+ For browser-based gates, the gate must own or explicitly establish every
49
+ precondition material to its claim. That includes disposable evidence state,
50
+ servers, browser profiles/contexts, service-worker control, relevant cache
51
+ state, and cleanup. Fixed persistent profiles must not be used as hidden
52
+ fixtures for a hard acceptance claim.
53
+
54
+ v0.9.1 applies this rule to the PWA server-down safety proof in
55
+ `tests/browser/pwaHardening.test.ts`. The hard gate owns its evidence root,
56
+ viewer server, temporary Chromium profile, and context. It must pass when
57
+ selected alone and must also continue to pass in the complete browser and
58
+ security suites.
59
+
60
+ Run the gate by itself with:
61
+
62
+ ```powershell
63
+ npm run test:pwa-hard-gate
64
+ ```
65
+
66
+ Run this command when working on PWA, service-worker, viewer-server, or
67
+ security behavior. It must pass on its own, not only after other tests have
68
+ run. `npm run test:security` also runs it after the rest of the security
69
+ suite. See `docs/plans/v0.9.1-implementation-plan.md`.
70
+
41
71
  ROADMAP v0.1 and Project Milestone 1 require browser-level validation once the
42
72
  observation capability is planned and implemented. Static checks must not later
43
73
  be substituted for that required browser evidence. `npm run test:browser` is
@@ -1719,6 +1719,34 @@ Implementation status: implemented and released as `0.9.0`. The milestone
1719
1719
  design below is unchanged and remains the capability authority. Milestone 10
1720
1720
  remains future.
1721
1721
 
1722
+ ### v0.9.1 maintenance acceptance note
1723
+
1724
+ v0.9.1 is a bounded maintenance patch over Milestone 9 rather than a new
1725
+ capability milestone. A post-release PWA hard-gate test-isolation defect was
1726
+ found: the server-down safety test can pass only after earlier tests have
1727
+ prepared persistent service-worker/cache state. No production PWA regression has
1728
+ been demonstrated.
1729
+
1730
+ The durable acceptance rule added by this maintenance patch is broader than the
1731
+ single PWA test: any test explicitly designated `HARD GATE`, `SECURITY GATE`,
1732
+ or `ACCEPTANCE GATE` must be able to establish its own prerequisites and pass
1733
+ when selected independently from fresh state. Such a gate must not rely on
1734
+ another test running first, a fixed browser profile, historical cache state, or
1735
+ test ordering. For browser gates, owned servers, evidence roots, browser
1736
+ profiles, contexts, and other state must be scoped and cleaned up explicitly.
1737
+
1738
+ The v0.9.1 correction is test/validation work unless the corrected isolated
1739
+ experiment demonstrates a genuine product failure. In that case the work must
1740
+ stop and be reclassified before production semantics change. The concrete
1741
+ implementation details live in
1742
+ `docs/plans/v0.9.1-implementation-plan.md`; the Milestone 9 product capability
1743
+ design below remains unchanged.
1744
+
1745
+ Status: the maintenance invariant is implemented and released in v0.9.1 for the PWA hard gate, which
1746
+ now passes alone through `npm run test:pwa-hard-gate` and inside the full
1747
+ browser and security suites. No genuine product failure was found. Release of
1748
+ v0.9.1 is released and published.
1749
+
1722
1750
  ### Objective
1723
1751
 
1724
1752
  Add visual human intent to the already working Milestone 7 coding-agent/reference workflow through the Milestone 8 viewer.
@@ -1,9 +1,8 @@
1
1
  # Project Overview
2
2
 
3
- The repository contains the complete v0.9.0 release, published as
4
- `@dailephd/my-frontend-observer@0.9.0` under the MIT license. It adds
5
- structured visual annotation to the v0.8.1 project workflow (`init`,
6
- `capture`, `check`, project-aware `view`).
3
+ The repository contains the v0.10.0 release of
4
+ `@dailephd/my-frontend-observer` under the MIT license. It completes the Visual
5
+ Change workflow on the project workflow (`init`, `capture`, `check`, Viewer).
7
6
 
8
7
  `my-frontend-observer` is the rendered browser/runtime evidence producer in
9
8
  the my-dev-kit ecosystem. It addresses the gap between source-level evidence
@@ -31,14 +30,15 @@ Comparison; v0.5, Executable Frontend Contracts and Explicit Change Scope;
31
30
  v0.6, Bounded Agent Context and Native my-dev-kit Ecosystem Integration;
32
31
  v0.7, End-to-End Coding-Agent Frontend Change Review; v0.8, Interactive
33
32
  Local Observation Viewer; v0.8.1, Project Workflow CLI and Human-Readable
34
- Evidence Aliases; and v0.9, Human Visual Annotation and Design-Intent Capture,
35
- are released and published to npm. The current package version is `0.9.0` as
33
+ Evidence Aliases; v0.9, Human Visual Annotation and Design-Intent Capture; and
34
+ v0.10.0, Full Visual Human–LLM Frontend Change Workflow, are released and
35
+ published to npm. The current package version is `0.10.0` as
36
36
  `@dailephd/my-frontend-observer` (observation schema `1.2.0`, comparison schema
37
37
  `1.0.0`, frontend contract schema `1.0.0`, evaluation artifact schema `1.0.0`,
38
38
  bounded-agent-context schema `1.0.0`, external-reference schema `1.0.0`,
39
- visual annotation schema `1.0.0`). The released package was validated as a
40
- packed npm tarball in a clean consumer environment across Windows, Linux, and
41
- macOS.
39
+ visual annotation schema `1.0.0`, visual-change workflow schema `1.0.0`,
40
+ handoff `1.0.0`; Viewer protocol `1.3.0`). Exact-candidate readiness passed
41
+ on Windows, Linux, and macOS.
42
42
 
43
43
  The released low-level command surface remains artifact-oriented: a real
44
44
  `observe` command launches Chromium, enforces loopback-only safety, captures
@@ -96,7 +96,7 @@ artifact identifiers during ordinary use. Existing low-level commands remain
96
96
  supported. The frozen plan is
97
97
  `docs/plans/v0.8.1-cli-usability-patch-plan.md`.
98
98
 
99
- The latest published release is v0.9.0. v0.9 adds structured
99
+ v0.9 added structured
100
100
  visual annotation to the project-aware viewer for both runtime observations and
101
101
  external references. People draw marks, explicitly associate them, and confirm
102
102
  structured intent. Selected confirmed runtime intent can become a normal
@@ -110,9 +110,21 @@ The repository-owned deterministic demo and its four tutorial scenarios
110
110
  `@dailephd/my-dev-kit-lab@0.4.9` tool) passed final cross-platform readiness
111
111
  with the release. They are release support and documentation, not product
112
112
  behavior, and they are not shipped in the npm package.
113
- v0.10 remains future and unimplemented and completes the visual human-LLM
114
- workflow on top of the v0.9 annotation model and v0.8.1 high-level acceptance
115
- surface.
113
+
114
+ The v0.9.1 maintenance release hardened the
115
+ PWA server-down hard acceptance test so the gate is reproducible from a fresh
116
+ browser profile and fresh test-owned state. PWA hard/security acceptance no
117
+ longer depends on prior test order or persistent browser state, and
118
+ `npm run test:security` now also runs the gate by itself through
119
+ `npm run test:pwa-hard-gate`. This was a test-isolation correction, not a
120
+ production PWA defect. No production behavior changed. The frozen concrete plan
121
+ is `docs/plans/v0.9.1-implementation-plan.md`.
122
+
123
+ v0.10.0 completes the Visual Change workflow on top of the v0.9 annotation
124
+ model and v0.8.1 high-level acceptance surface. It supports actual-frontend
125
+ and approved-reference entry, explicit activation, bounded coding-agent
126
+ handoff, immutable correction history, PASS-only human acceptance, and
127
+ separate governance. Installed-package and Viewer support are included.
116
128
 
117
129
  The revised dependency path reaches practical coding-agent use before graphical
118
130
  interaction and keeps later visual work on the same canonical evidence system:
@@ -130,7 +142,8 @@ runtime observation and stable identity
130
142
  → structured visual annotation on runtime screenshots and external references
131
143
  (released as 0.9.0)
132
144
  → full visual human-LLM workflow with actual-frontend-driven and
133
- reference-driven entry modes (planned v0.10)
145
+ reference-driven entry modes (implemented, documentation-reconciled,
146
+ unreleased v0.10)
134
147
  ```
135
148
 
136
149
  The implemented reference model is not a second observer or a
@@ -167,6 +180,15 @@ Repository-local authorities and navigation:
167
180
  gates, and validation expectations for v0.9. It is planning authority only;
168
181
  the v0.9 implementation state is recorded in CURRENT_STATE.md and the
169
182
  `reports/v0.9-*.md` reports.
183
+ - [plans/v0.9.1-implementation-plan.md](plans/v0.9.1-implementation-plan.md)
184
+ freezes the bounded maintenance plan for independent PWA hard-gate
185
+ reproduction, fresh browser-profile ownership, explicit service-worker/cache
186
+ precondition proof, and isolated-gate validation. It does not authorize a
187
+ production PWA change unless the corrected experiment demonstrates a real
188
+ product defect.
189
+ - [plans/v0.10-implementation-plan.md](plans/v0.10-implementation-plan.md)
190
+ is the frozen planning authority for the completed v0.10 implementation;
191
+ current evidence and reconciliation are recorded in the v0.10 reports.
170
192
  - [reports/v0.9-architecture-retrieval.md](reports/v0.9-architecture-retrieval.md)
171
193
  preserves the bounded current-source retrieval that grounded the v0.9 plan.
172
194
 
@@ -80,9 +80,13 @@ approve a reference or prove every aesthetic requirement. See
80
80
  [CONTRACTS.md](CONTRACTS.md) and [WORKFLOWS.md](WORKFLOWS.md).
81
81
 
82
82
  `my-frontend-observer view --no-open` starts the loopback-only viewer over managed
83
- project evidence. Use `view --root observations --no-open` for standalone roots.
84
- The viewer is inspect-only. Its `--bindings-file` and `--context-file` inputs do
85
- not create a second evaluator or automatic source-owner mapping.
83
+ project evidence. The v0.10.0 project-aware Viewer also owns the explicit
84
+ Visual Change workflow: visual entry, activation, handoff, check,
85
+ review/correction, acceptance, and separate
86
+ governance-result recording. Use `view --root observations --no-open` for
87
+ standalone roots; that mode remains inspect-only. The `--bindings-file` and
88
+ `--context-file` inputs do not create a second evaluator or automatic
89
+ source-owner mapping. The installed package includes the Visual Change surface.
86
90
 
87
91
  To validate this repository itself, rather than the target application:
88
92
 
package/docs/RELEASE.md CHANGED
@@ -1,25 +1,29 @@
1
1
  # Release
2
2
 
3
- `v0.9.0` (Human Visual Annotation and Design-Intent Capture) is released and
4
- published to npm as `@dailephd/my-frontend-observer`. The release adds
5
- structured visual annotation of runtime observations and external references
6
- to the project-aware viewer, selected promotion of confirmed runtime intent
7
- into canonical change contracts, and selected materialization of confirmed
8
- reference intent into new imported reference revisions, with final
9
- Windows/Linux/macOS readiness and the MIT license.
3
+ `v0.10.0` (Full Visual Human–LLM Frontend Change Workflow) is the current
4
+ release state. Formal exact-candidate readiness passed on Windows, Linux, and
5
+ macOS, including installed-package workflow smokes and security/PWA gates.
6
+
7
+ `v0.9.1` (PWA Hard-Gate Isolation and Reproducible Security Acceptance) is the
8
+ previous maintenance release, published to npm as
9
+ `@dailephd/my-frontend-observer`. It hardened isolated PWA security acceptance
10
+ without changing production behavior.
10
11
 
11
12
  The CLI remains `my-frontend-observer`; package identity and product identity
12
13
  are intentionally distinct. Canonical artifact schemas remain versioned
13
14
  independently from the npm package version.
14
15
 
15
16
  Observation, comparison, frontend contract, evaluation artifact,
16
- bounded-agent-context, external-reference, visual annotation, and package
17
- version all remain separate: package version is `0.9.0`; observation schema is
17
+ bounded-agent-context, external-reference, visual annotation,
18
+ visual-change-workflow, handoff, Viewer protocol, and package version all
19
+ remain separate: package version is `0.10.0`; observation schema is
18
20
  `1.2.0`, comparison schema is `1.0.0`, frontend contract schema is `1.0.0`,
19
21
  evaluation artifact schema is `1.0.0`, bounded-agent-context schema is
20
22
  `1.0.0`, external-reference schema is `1.0.0`, and visual annotation schema is
21
- `1.0.0` - none of which changes automatically with the package version. v0.9
22
- introduced the visual annotation schema and bumped no existing schema.
23
+ `1.0.0`, visual-change-workflow schema is `1.0.0`, handoff version is `1.0.0`,
24
+ and Viewer protocol is `1.3.0` - none changes automatically with the package
25
+ version. v0.9 introduced the visual annotation schema and bumped no existing
26
+ schema.
23
27
 
24
28
  Prior releases: `v0.8.1` (Project Workflow CLI and Human-Readable Evidence
25
29
  Aliases), `v0.8.0` (Interactive Local Observation Viewer), `v0.7.0` (End-to-End