@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
package/docs/ROADMAP.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Roadmap
2
2
 
3
- v0.9 status: released as v0.9.0 and published to npm as
4
- `@dailephd/my-frontend-observer@0.9.0`. v0.10 remains future work.
3
+ Current release: v0.10.0, Full Visual Human–LLM Frontend Change Workflow.
4
+ The v0.9.1 PWA hard-gate isolation maintenance release is preserved in history.
5
5
 
6
6
  This is a version-level specification, not an implementation checklist.
7
7
  Concrete steps and sequencing are designed only when a version begins, after
@@ -890,8 +890,61 @@ seven implementation prompts, and batch gates live in
890
890
  version-level decisions above plus current repository inspection; this roadmap
891
891
  intentionally does not duplicate batch-by-batch instructions.
892
892
 
893
+ ## v0.9.1 — PWA Hard-Gate Isolation and Reproducible Security Acceptance
894
+
895
+ Current status: released as `0.9.1`. The concrete implementation plan remains
896
+ frozen in `docs/plans/v0.9.1-implementation-plan.md`.
897
+ This patch is maintenance work over the released v0.9.0 codebase and does not
898
+ change the v0.9 product capability model.
899
+
900
+ Objective/problem: make the PWA server-down hard acceptance proof genuinely
901
+ self-contained. The released test in `tests/browser/pwaHardening.test.ts`
902
+ passes in the normal full-file/full-suite order but fails when selected alone
903
+ because it can inherit service-worker/cache state from earlier tests and from a
904
+ fixed persistent Chromium profile. That is a test-isolation defect. It is not
905
+ evidence that the released PWA serves stale evidence or otherwise violates the
906
+ runtime safety contract.
907
+
908
+ Required capabilities: the hard gate must create and own fresh disposable
909
+ evidence state, a fresh viewer server, a fresh persistent Chromium profile, a
910
+ fresh BrowserContext, and its page; independently establish service-worker
911
+ registration and activation; prove that the current page is controlled by the
912
+ worker; prove the application shell needed for offline reload is precached;
913
+ prove `/api/` evidence responses are absent from Cache Storage; prove live
914
+ evidence is visible before shutdown; prove the server/network is actually
915
+ unavailable after shutdown; reload from the precached shell; then prove an
916
+ explicit unavailable state is shown and previously fetched evidence is absent.
917
+ All owned resources must be cleaned up even on failure.
918
+
919
+ Constraints and contracts: the hard/security acceptance experiment must not
920
+ depend on another `it()`, test order, a previously warmed Cache Storage, or a
921
+ profile retained under `.my-dev-kit-workflow`. Tests explicitly designated
922
+ `HARD GATE`, `SECURITY GATE`, or `ACCEPTANCE GATE` must be independently
923
+ runnable from fresh state. The dedicated isolated hard-gate command and the
924
+ normal full browser/security suites must exercise the same product behavior.
925
+
926
+ Exclusions: no production PWA/service-worker semantic change is authorized
927
+ merely to make the test green; no new user-facing feature, evidence schema,
928
+ CLI command, package dependency, tutorial behavior, or v0.10 capability belongs
929
+ in this patch. If the corrected clean-state experiment exposes a genuine
930
+ runtime defect, implementation must stop and reclassify the work as a product
931
+ defect before changing production behavior.
932
+
933
+ Acceptance: the PWA hard gate passes when run by itself from a fresh process and
934
+ fresh temporary profile, passes in the complete `pwaHardening.test.ts` file,
935
+ and passes in the normal browser/security validation chain. The test must prove
936
+ its own service-worker control, shell-cache, API-cache-exclusion, network-down,
937
+ and stale-evidence-absence prerequisites rather than infer them from another
938
+ test. Temporary browser profiles and evidence roots must be removed after both
939
+ success and failure. Release-readiness validation must preserve the v0.9.0
940
+ product/package behavior while proving the stronger test-isolation invariant.
941
+
893
942
  ## v0.10 — Full Visual Human–LLM Frontend Change Workflow
894
943
 
944
+ Current status: released as `0.10.0`. The frozen implementation authority
945
+ remains
946
+ `docs/plans/v0.10-implementation-plan.md`.
947
+
895
948
  Objective/problem: complete the visual communication branch by combining the
896
949
  already operational coding-agent loop with graphical inspection, external design
897
950
  references, structured annotation, and the v0.8.1 project-level acceptance
package/docs/SECURITY.md CHANGED
@@ -219,10 +219,12 @@ protect against other software already running as the same user.
219
219
  `content-type: application/json`, identity `content-encoding` only, a
220
220
  256 KiB (`262144` byte) body limit, valid JSON, and a closed request shape
221
221
  with unknown fields rejected.
222
- - **Exactly three `POST` routes**: `POST /api/annotations`,
222
+ - **Exactly three v0.9 `POST` routes**: v0.9 introduced
223
+ `POST /api/annotations`,
223
224
  `POST /api/annotations/:handle/promote-contract`, and
224
225
  `POST /api/annotations/:handle/materialize-reference`. `PUT`, `PATCH`, and
225
- `DELETE` stay unsupported everywhere. Any other `POST` returns `405`.
226
+ `DELETE` stay unsupported everywhere. The implemented, unreleased v0.10
227
+ routes extend this same gate as described below.
226
228
  - **No permissive CORS**: no `Access-Control-Allow-*` headers are sent, so a
227
229
  page from any other origin cannot read the capability or send a JSON
228
230
  authoring request. A real-Chromium test proves this for all three routes.
@@ -249,12 +251,32 @@ protect against other software already running as the same user.
249
251
  `.tmp-*` directories, so a partially written artifact is never presented as
250
252
  evidence.
251
253
 
254
+ ## v0.10 Visual Change authoring boundary
255
+
256
+ v0.10 extends only the project-aware guarded `POST` surface. It adds explicit
257
+ reference approval and actual/reference workflow creation, plus workflow
258
+ activation, canonical check, restore, handoff preparation, human review, and
259
+ recording of already-existing governance results. Every route reuses the same
260
+ exact Host, Origin, memory-only capability token, JSON content type,
261
+ compression rejection, body limit, closed request-shape, serialized-write,
262
+ path-containment, and `no-store` controls. Standalone `view --root` remains
263
+ read-only, and the service worker continues to cache no `/api/` response.
264
+
265
+ The additional surface does not grant source-edit or external-process
266
+ authority. Observer never edits target source, executes a coding agent, invokes
267
+ my-dev-kit, or contacts/controls an orchestrator. Optional orchestrator fields
268
+ are bounded traceability metadata only. Handoffs are generated in memory and
269
+ are not a persisted evidence family. Review acceptance requires the latest
270
+ canonical Observer check to be PASS; it cannot approve a baseline/reference or
271
+ restore project acceptance. Governance recording can reference only a
272
+ separately persisted canonical approval and does not perform that approval.
273
+
252
274
  ## Not yet addressed
253
275
 
254
276
  Certificate-failure-specific handling, permission-prompt-specific handling
255
277
  (Chromium's default deny-all applies; no permission is ever explicitly
256
278
  granted), and any non-loopback/remote browsing mode remain unimplemented and
257
- out of scope. `@dailephd/my-frontend-observer@0.9.0` is published to npm, and a
279
+ out of scope. `@dailephd/my-frontend-observer@0.10.0` is the current release. A
258
280
  pre-release readiness CI workflow (Windows/Linux/macOS packed-candidate
259
281
  validation, now covering the v0.8 viewer alongside every earlier version's
260
282
  packed behavior) exists (see `docs/CI_CD.md`). The v0.7 external-reference/
package/docs/WORKFLOWS.md CHANGED
@@ -685,11 +685,37 @@ repository. The run result's `status` must be `passed` and its
685
685
  `cleanupErrors` must be empty. The demo and scenarios are not in the npm
686
686
  package. See `examples/v09-demo/README.md` for details and maintenance notes.
687
687
 
688
- ## Visual workflow progression (v0.9 implemented, v0.10 future)
688
+ ## Complete v0.10 visual-change workflow (implemented, unreleased)
689
689
 
690
690
  The sequence on top of the v0.7/v0.8 foundation above preserves the current
691
691
  engines and lets graphical interfaces consume rather than invent the reference
692
- model. v0.9 is released as `0.9.0`. v0.10 is still future:
692
+ model. v0.9 is released as `0.9.0`; v0.10 is implemented in the repository
693
+ and remains unreleased.
694
+
695
+ Actual-frontend entry starts in project-aware `view`: open a runtime
696
+ observation, draw and explicitly associate a mark, author and confirm runtime
697
+ intent, save it, select confirmed intent, and create an inactive visual-change
698
+ workflow. Reference entry opens one exact approved reference, saves confirmed
699
+ reference intent against that instance, selects an exact baseline observation,
700
+ authors explicit region-to-runtime bindings, and creates an inactive reference
701
+ workflow.
702
+
703
+ Both modes then share the same human-controlled loop:
704
+
705
+ ```text
706
+ explicit Activate
707
+ -> Prepare handoff
708
+ -> external actor edits source outside Observer
709
+ -> Run check (the canonical check <baseline> --json operation)
710
+ -> immutable pending attempt
711
+ -> Request correction, Accept latest PASS, or Abandon
712
+ -> optional governance recording only after a separate canonical approval
713
+ -> optional explicit Restore acceptance
714
+ ```
715
+
716
+ The controlling invariants are `DRAW != DECIDE`, `CONFIRM !=
717
+ PROMOTE/MATERIALIZE`, `PROMOTE/MATERIALIZE != ACTIVATE`, `PASS != ACCEPT`, and
718
+ `ACCEPT != GOVERNANCE`.
693
719
 
694
720
  ```text
695
721
  stable targets and bounded runtime behavior
@@ -764,7 +790,7 @@ external-reference services.
764
790
 
765
791
  ## Current release workflow
766
792
 
767
- The published package is `@dailephd/my-frontend-observer@0.9.0`; install it
793
+ The published package is `@dailephd/my-frontend-observer@0.9.1`; install it
768
794
  with npm and use the `my-frontend-observer` CLI. The ordinary workflow is
769
795
  `init`, `capture baseline`, `check baseline`, then `view`. Existing sections
770
796
  below retain the historical low-level and viewer workflows for compatibility.