@dailephd/my-frontend-observer 0.8.1 → 0.9.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 (107) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +107 -7
  3. package/dist/application/projectWorkflowService.d.ts +18 -1
  4. package/dist/application/projectWorkflowService.js +40 -2
  5. package/dist/application/projectWorkflowService.js.map +1 -1
  6. package/dist/application/visualAnnotationContractPromotionService.d.ts +41 -0
  7. package/dist/application/visualAnnotationContractPromotionService.js +143 -0
  8. package/dist/application/visualAnnotationContractPromotionService.js.map +1 -0
  9. package/dist/application/visualAnnotationPersistenceService.d.ts +34 -0
  10. package/dist/application/visualAnnotationPersistenceService.js +68 -0
  11. package/dist/application/visualAnnotationPersistenceService.js.map +1 -0
  12. package/dist/application/visualAnnotationReferenceMaterializationService.d.ts +53 -0
  13. package/dist/application/visualAnnotationReferenceMaterializationService.js +194 -0
  14. package/dist/application/visualAnnotationReferenceMaterializationService.js.map +1 -0
  15. package/dist/artifacts/visualAnnotationArtifactReader.d.ts +19 -0
  16. package/dist/artifacts/visualAnnotationArtifactReader.js +66 -0
  17. package/dist/artifacts/visualAnnotationArtifactReader.js.map +1 -0
  18. package/dist/artifacts/visualAnnotationArtifactWriter.d.ts +42 -0
  19. package/dist/artifacts/visualAnnotationArtifactWriter.js +85 -0
  20. package/dist/artifacts/visualAnnotationArtifactWriter.js.map +1 -0
  21. package/dist/cli.js +464 -454
  22. package/dist/cli.js.map +1 -1
  23. package/dist/domain/visualAnnotation.d.ts +217 -0
  24. package/dist/domain/visualAnnotation.js +584 -0
  25. package/dist/domain/visualAnnotation.js.map +1 -0
  26. package/dist/domain/visualAnnotationIdentity.d.ts +17 -0
  27. package/dist/domain/visualAnnotationIdentity.js +47 -0
  28. package/dist/domain/visualAnnotationIdentity.js.map +1 -0
  29. package/dist/index.d.ts +11 -0
  30. package/dist/index.js +6 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/projectWorkflow/projectPaths.d.ts +9 -0
  33. package/dist/projectWorkflow/projectPaths.js +21 -0
  34. package/dist/projectWorkflow/projectPaths.js.map +1 -1
  35. package/dist/viewer/assets/{index-CN_yb9Uf.css → index-BN41MI7m.css} +1 -1
  36. package/dist/viewer/assets/index-CkKXnlrI.js +9 -0
  37. package/dist/viewer/index.html +2 -2
  38. package/dist/viewer/sw.js +1 -1
  39. package/dist/viewerServer/annotationAuthoring.d.ts +64 -0
  40. package/dist/viewerServer/annotationAuthoring.js +230 -0
  41. package/dist/viewerServer/annotationAuthoring.js.map +1 -0
  42. package/dist/viewerServer/annotationContractPromotion.d.ts +51 -0
  43. package/dist/viewerServer/annotationContractPromotion.js +105 -0
  44. package/dist/viewerServer/annotationContractPromotion.js.map +1 -0
  45. package/dist/viewerServer/annotationReferenceMaterialization.d.ts +40 -0
  46. package/dist/viewerServer/annotationReferenceMaterialization.js +91 -0
  47. package/dist/viewerServer/annotationReferenceMaterialization.js.map +1 -0
  48. package/dist/viewerServer/authoringSecurity.d.ts +59 -0
  49. package/dist/viewerServer/authoringSecurity.js +112 -0
  50. package/dist/viewerServer/authoringSecurity.js.map +1 -0
  51. package/dist/viewerServer/evidence/annotationView.d.ts +28 -0
  52. package/dist/viewerServer/evidence/annotationView.js +43 -0
  53. package/dist/viewerServer/evidence/annotationView.js.map +1 -0
  54. package/dist/viewerServer/evidence/classify.d.ts +3 -1
  55. package/dist/viewerServer/evidence/classify.js +12 -0
  56. package/dist/viewerServer/evidence/classify.js.map +1 -1
  57. package/dist/viewerServer/evidence/discovery.d.ts +2 -0
  58. package/dist/viewerServer/evidence/discovery.js +6 -0
  59. package/dist/viewerServer/evidence/discovery.js.map +1 -1
  60. package/dist/viewerServer/evidence/handles.js +1 -0
  61. package/dist/viewerServer/evidence/handles.js.map +1 -1
  62. package/dist/viewerServer/evidence/index.d.ts +29 -0
  63. package/dist/viewerServer/evidence/index.js +43 -1
  64. package/dist/viewerServer/evidence/index.js.map +1 -1
  65. package/dist/viewerServer/evidence/mediaResolver.d.ts +1 -1
  66. package/dist/viewerServer/evidence/mediaResolver.js +28 -2
  67. package/dist/viewerServer/evidence/mediaResolver.js.map +1 -1
  68. package/dist/viewerServer/evidence/projection.d.ts +5 -1
  69. package/dist/viewerServer/evidence/projection.js +19 -0
  70. package/dist/viewerServer/evidence/projection.js.map +1 -1
  71. package/dist/viewerServer/httpServer.d.ts +13 -2
  72. package/dist/viewerServer/httpServer.js +278 -4
  73. package/dist/viewerServer/httpServer.js.map +1 -1
  74. package/dist/viewerServer/viewerService.d.ts +8 -0
  75. package/dist/viewerServer/viewerService.js +38 -2
  76. package/dist/viewerServer/viewerService.js.map +1 -1
  77. package/docs/ARCHITECTURE.md +108 -21
  78. package/docs/CI_CD.md +57 -1
  79. package/docs/COMMANDS.md +44 -4
  80. package/docs/CONTRACTS.md +78 -8
  81. package/docs/CURRENT_STATE.md +157 -35
  82. package/docs/DEVELOPMENT.md +8 -3
  83. package/docs/PROJECT_DESCRIPTION.md +4 -1
  84. package/docs/PROJECT_MILESTONES.md +4 -0
  85. package/docs/PROJECT_OVERVIEW.md +41 -17
  86. package/docs/QUICKSTART.md +52 -39
  87. package/docs/RELEASE.md +16 -11
  88. package/docs/ROADMAP.md +406 -66
  89. package/docs/SECURITY.md +71 -14
  90. package/docs/WORKFLOWS.md +151 -23
  91. package/docs/plans/v0.9-implementation-plan.md +1529 -0
  92. package/docs/reports/v0.9-architecture-retrieval.md +567 -0
  93. package/docs/reports/v0.9-batch1-visual-annotation-foundation.md +351 -0
  94. package/docs/reports/v0.9-batch2-viewer-annotation-authoring-boundary.md +438 -0
  95. package/docs/reports/v0.9-batch3-runtime-screenshot-annotation-authoring.md +412 -0
  96. package/docs/reports/v0.9-batch4-external-reference-annotation-authoring.md +452 -0
  97. package/docs/reports/v0.9-batch5-runtime-intent-contract-promotion.md +535 -0
  98. package/docs/reports/v0.9-batch6-reference-materialization.md +514 -0
  99. package/docs/reports/v0.9-batch7-integrated-acceptance.md +644 -0
  100. package/docs/reports/v0.9-demo-foundation.md +589 -0
  101. package/docs/reports/v0.9-final-pre-release-readiness.md +209 -0
  102. package/docs/reports/v0.9-final-readiness-corrections.md +530 -0
  103. package/docs/reports/v0.9-pre-release-readiness.md +170 -0
  104. package/docs/reports/v0.9-tutorial-end-to-end-acceptance.md +980 -0
  105. package/docs/reports/v0.9-tutorial-integration.md +731 -0
  106. package/package.json +2 -2
  107. package/dist/viewer/assets/index-D98S1_2d.js +0 -9
@@ -0,0 +1,209 @@
1
+ # v0.9 Final Pre-release Readiness
2
+
3
+ ## 1. VERDICT
4
+
5
+ `RUN_A` passed the complete final-readiness workflow on one exact
6
+ post-correction commit: the candidate/static job, the exact-candidate package
7
+ smoke on Windows, Linux and macOS, and Observer tutorial readiness on Windows,
8
+ Linux and macOS.
9
+
10
+ This is final pre-release readiness evidence for v0.9. It is not a release.
11
+ The package version is unchanged at `0.8.1`, v0.9 is unreleased, and `master`
12
+ has not been pushed.
13
+
14
+ A second complete workflow run is required after this report is committed,
15
+ because `docs/reports/` is inside the npm package and committing this file
16
+ changes the candidate bytes.
17
+
18
+ ## 2. Repository identity
19
+
20
+ - Repository: `C:\Users\daile\Projects\my-frontend-observer`
21
+ - Branch: `validation/v0.9-final-readiness`
22
+ - Entry HEAD: `116bf5f45513768d4dfc552545cc02e13265f02f`
23
+ - Correction commit: `878598a1c3054f1b4d01363d1d6bdb27bb76fb29`
24
+ - Package: `@dailephd/my-frontend-observer`
25
+ - Package version: `0.8.1`
26
+ - `docs/reports/v0.9-architecture-retrieval.md`: `S` skip-worktree preserved
27
+
28
+ ## 3. The failed run this replaces
29
+
30
+ - Run: `35527166495`
31
+ - URL: `https://github.com/dailephd/my-frontend-observer/actions/runs/35527166495`
32
+ - Conclusion: failure
33
+
34
+ That run is retained as history and contributes no passing evidence to the
35
+ final candidate. Rerunning only its failed jobs would have proved nothing,
36
+ because the scenario files, the lab version, the readiness verifier and the
37
+ candidate bytes all changed.
38
+
39
+ ## 4. The three independent root causes
40
+
41
+ The earlier compressed summary attributed the whole failure to tutorial
42
+ portability. That was incomplete.
43
+
44
+ 1. Candidate/package job: failed in `npm test` because one scenario pause was
45
+ too short. `02-runtime-intent-contract.json/category-requested` declared
46
+ `pauseAfterMs` of `10900` where the frozen readability rule required
47
+ `11900`. The exact candidate tarball was therefore never built, so the
48
+ package matrix was `NOT_REACHED`.
49
+ 2. Windows tutorial job: the readiness verifier crashed with
50
+ `Cannot read properties of undefined (reading 'contractClass')` because
51
+ contract-reader success results were extracted through the wrong property.
52
+ 3. Ubuntu tutorial job: the same readiness verifier crash.
53
+ 4. macOS tutorial job: scenario 2 failed while using native-select keyboard
54
+ emulation.
55
+
56
+ This was an Observer tutorial pacing fixture defect, an Observer readiness
57
+ verifier bug, and a generic my-dev-kit-lab native-select portability gap. No
58
+ core Observer product regression was established by that run.
59
+
60
+ Two further readiness verifier defects, both in the same family as the second
61
+ root cause, were found while proving the correction locally. They were
62
+ unreachable before, because every earlier run died in scenario 2. Both are
63
+ recorded in `docs/reports/v0.9-final-readiness-corrections.md`.
64
+
65
+ ## 5. The v0.4.9 migration
66
+
67
+ - Lab pinned exactly to `@dailephd/my-dev-kit-lab@0.4.9`
68
+ - Release commit: `3aca0e2f5969b0a8b414bcd361dec20ba70b8dc6`
69
+ - Scenario, target-contract, run-result and manifest schema versions all remain
70
+ `1.0.0`
71
+ - 85 native-select keyboard workaround steps were collapsed into 37 semantic
72
+ `select-option` actions
73
+ - Remaining combobox `press` actions: 0
74
+ - Option values were read from the owning viewer source, never inferred from
75
+ visible labels
76
+ - One canonical scenario set; no OS-conditional steps
77
+ - Lab Playwright remains `1.60.0`; Observer's own `playwright` dependency
78
+ remains `^1.62.1` and was not changed to match
79
+
80
+ ## 6. The readiness verifier correction
81
+
82
+ The canonical frontend-contract readers return `contract`, not `artifact`. The
83
+ verifier now reads contracts through a dedicated canonical helper that tries
84
+ `readPersistentBaselineContract` and then `readPerChangeContract`, and fails
85
+ with both validation reasons. No raw JSON is parsed to choose a reader and no
86
+ third contract validator exists.
87
+
88
+ The reference checks now use the canonical exported type guards
89
+ `isApprovedExternalReferenceArtifact` and `isImportedExternalReferenceArtifact`
90
+ instead of comparing `lifecycle` as a string, and the materialized image digest
91
+ is compared through the artifacts' own identity-bearing `sha256` fields, which
92
+ means that comparison actually executes rather than being silently skipped.
93
+
94
+ ## 7. The pacing correction
95
+
96
+ The frozen rule is unchanged and was not weakened:
97
+
98
+ ```
99
+ readingMs = max(1200, ceil((narration.length / 15) * 10) * 100)
100
+ ```
101
+
102
+ Every step in all four scenarios was re-paced after the narration edits. All
103
+ 210 steps satisfy the rule. The candidate job proved this remotely by getting
104
+ past `npm test`.
105
+
106
+ ## 8. RUN_A identity
107
+
108
+ - Run id: `35584183782`
109
+ - URL: `https://github.com/dailephd/my-frontend-observer/actions/runs/35584183782`
110
+ - Head SHA: `878598a1c3054f1b4d01363d1d6bdb27bb76fb29`
111
+ - Conclusion: success
112
+ - Workflow: Pre-release readiness
113
+
114
+ All seven required jobs passed:
115
+
116
+ 1. Package exact candidate (Linux, Node 24): success
117
+ 2. windows-latest exact-candidate smoke: success
118
+ 3. ubuntu-latest exact-candidate smoke: success
119
+ 4. macos-latest exact-candidate smoke: success
120
+ 5. windows-latest Observer tutorial readiness: success
121
+ 6. ubuntu-latest Observer tutorial readiness: success
122
+ 7. macos-latest Observer tutorial readiness: success
123
+
124
+ ## 9. RUN_A exact candidate package
125
+
126
+ One tarball was built by the candidate job and used unchanged by all three
127
+ package smokes. It was not repacked per platform.
128
+
129
+ - Filename: `dailephd-my-frontend-observer-0.8.1.tgz`
130
+ - SHA-256: `2a14c4ccae1b846a6a7454900c9f3e2b200952d4456f824b2db01c1d3d9b0c35`
131
+ - File count: 366
132
+ - Package version: `0.8.1`
133
+ - Candidate commit: `878598a1c3054f1b4d01363d1d6bdb27bb76fb29`
134
+
135
+ The published artifact was downloaded and independently verified. The
136
+ recomputed SHA-256 matched the value the workflow recorded, and the archive
137
+ contains 0 entries under `examples/v09-demo`, so the demo remains excluded from
138
+ the npm package.
139
+
140
+ ## 10. RUN_A package results
141
+
142
+ The exact candidate reached and passed the package matrix, which run
143
+ `35527166495` never reached.
144
+
145
+ - Windows exact-package smoke: PASS
146
+ - Linux exact-package smoke: PASS
147
+ - macOS exact-package smoke: PASS
148
+
149
+ Each platform ran the packed observation smoke, the packed viewer smoke and the
150
+ packed v0.9 annotation smoke against the installed tarball, not the source
151
+ checkout.
152
+
153
+ ## 11. RUN_A tutorial results
154
+
155
+ - Windows Observer tutorial readiness: PASS
156
+ - Linux Observer tutorial readiness: PASS
157
+ - macOS Observer tutorial readiness: PASS
158
+
159
+ Each platform reported identical evidence:
160
+
161
+ - lab version `0.4.9`
162
+ - `observer-v09-annotation-basics`: `passed`, `cleanupErrors: []`, 2 annotations
163
+ - `observer-v09-runtime-contract`: `passed`, `cleanupErrors: []`, 3 contracts
164
+ - `observer-v09-reference-authoring`: `passed`, `cleanupErrors: []`, 2 references
165
+ - `observer-v09-reference-materialization`: `passed`, `cleanupErrors: []`,
166
+ 3 references
167
+ - all required tutorial artifacts written and non-empty
168
+ - canonical Observer evidence checks passed on every scenario
169
+ - `demoSourceImmutable`: true
170
+ - `repositoryUnchanged`: true
171
+
172
+ macOS is the significant result. It previously failed in scenario 2 on native
173
+ select keyboard emulation and now produces byte-identical evidence counts to
174
+ Windows and Linux, which is the direct proof that the portability defect is
175
+ closed.
176
+
177
+ ## 12. Native select portability gate
178
+
179
+ All three platforms ran scenarios that use `select-option` for every native
180
+ `<select>` semantic choice. No OS-specific keyboard navigation was
181
+ reintroduced. `tests/unit/v09TutorialScenarios.test.ts` fails if a scenario
182
+ drives a `combobox` locator with `press`, so the gate is enforced statically in
183
+ the candidate job as well as behaviourally on each platform.
184
+
185
+ ## 13. Local evidence supporting RUN_A
186
+
187
+ Recorded in full in `docs/reports/v0.9-final-readiness-corrections.md`:
188
+
189
+ - `npm run typecheck`, `npm run lint`, `npm run build`, `npm run check:docs`:
190
+ PASS
191
+ - `npm test`: PASS, 1453 tests in 89 files
192
+ - `npm run test:browser`: PASS, 275 tests in 29 files
193
+ - `npm run test:security`: PASS, 167 tests in 16 files plus 77 tests in 3 files
194
+ - Local four-tutorial readiness: all four `passed`, `cleanupErrors: []`,
195
+ `demoSourceImmutable: true`, `repositoryUnchanged: true`
196
+ - Local packed observation, viewer and v0.9 annotation smokes: PASS
197
+
198
+ ## 14. Release state
199
+
200
+ - Package version: `0.8.1`, unchanged
201
+ - v0.9: unreleased
202
+ - No version bump, tag, GitHub Release or npm publication was performed
203
+ - `master`: not pushed
204
+ - Validation branch `validation/v0.9-final-readiness`: preserved
205
+ - No Observer product semantics, artifact schema, command surface or dependency
206
+ was changed
207
+
208
+ Passing final pre-release readiness does not authorize publication. The next
209
+ stage is v0.9.0 controlled release preparation.