@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.
- package/CHANGELOG.md +57 -0
- package/README.md +107 -7
- package/dist/application/projectWorkflowService.d.ts +18 -1
- package/dist/application/projectWorkflowService.js +40 -2
- package/dist/application/projectWorkflowService.js.map +1 -1
- package/dist/application/visualAnnotationContractPromotionService.d.ts +41 -0
- package/dist/application/visualAnnotationContractPromotionService.js +143 -0
- package/dist/application/visualAnnotationContractPromotionService.js.map +1 -0
- package/dist/application/visualAnnotationPersistenceService.d.ts +34 -0
- package/dist/application/visualAnnotationPersistenceService.js +68 -0
- package/dist/application/visualAnnotationPersistenceService.js.map +1 -0
- package/dist/application/visualAnnotationReferenceMaterializationService.d.ts +53 -0
- package/dist/application/visualAnnotationReferenceMaterializationService.js +194 -0
- package/dist/application/visualAnnotationReferenceMaterializationService.js.map +1 -0
- package/dist/artifacts/visualAnnotationArtifactReader.d.ts +19 -0
- package/dist/artifacts/visualAnnotationArtifactReader.js +66 -0
- package/dist/artifacts/visualAnnotationArtifactReader.js.map +1 -0
- package/dist/artifacts/visualAnnotationArtifactWriter.d.ts +42 -0
- package/dist/artifacts/visualAnnotationArtifactWriter.js +85 -0
- package/dist/artifacts/visualAnnotationArtifactWriter.js.map +1 -0
- package/dist/cli.js +464 -454
- package/dist/cli.js.map +1 -1
- package/dist/domain/visualAnnotation.d.ts +217 -0
- package/dist/domain/visualAnnotation.js +584 -0
- package/dist/domain/visualAnnotation.js.map +1 -0
- package/dist/domain/visualAnnotationIdentity.d.ts +17 -0
- package/dist/domain/visualAnnotationIdentity.js +47 -0
- package/dist/domain/visualAnnotationIdentity.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/projectWorkflow/projectPaths.d.ts +9 -0
- package/dist/projectWorkflow/projectPaths.js +21 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -1
- package/dist/viewer/assets/{index-CN_yb9Uf.css → index-BN41MI7m.css} +1 -1
- package/dist/viewer/assets/index-CkKXnlrI.js +9 -0
- package/dist/viewer/index.html +2 -2
- package/dist/viewer/sw.js +1 -1
- package/dist/viewerServer/annotationAuthoring.d.ts +64 -0
- package/dist/viewerServer/annotationAuthoring.js +230 -0
- package/dist/viewerServer/annotationAuthoring.js.map +1 -0
- package/dist/viewerServer/annotationContractPromotion.d.ts +51 -0
- package/dist/viewerServer/annotationContractPromotion.js +105 -0
- package/dist/viewerServer/annotationContractPromotion.js.map +1 -0
- package/dist/viewerServer/annotationReferenceMaterialization.d.ts +40 -0
- package/dist/viewerServer/annotationReferenceMaterialization.js +91 -0
- package/dist/viewerServer/annotationReferenceMaterialization.js.map +1 -0
- package/dist/viewerServer/authoringSecurity.d.ts +59 -0
- package/dist/viewerServer/authoringSecurity.js +112 -0
- package/dist/viewerServer/authoringSecurity.js.map +1 -0
- package/dist/viewerServer/evidence/annotationView.d.ts +28 -0
- package/dist/viewerServer/evidence/annotationView.js +43 -0
- package/dist/viewerServer/evidence/annotationView.js.map +1 -0
- package/dist/viewerServer/evidence/classify.d.ts +3 -1
- package/dist/viewerServer/evidence/classify.js +12 -0
- package/dist/viewerServer/evidence/classify.js.map +1 -1
- package/dist/viewerServer/evidence/discovery.d.ts +2 -0
- package/dist/viewerServer/evidence/discovery.js +6 -0
- package/dist/viewerServer/evidence/discovery.js.map +1 -1
- package/dist/viewerServer/evidence/handles.js +1 -0
- package/dist/viewerServer/evidence/handles.js.map +1 -1
- package/dist/viewerServer/evidence/index.d.ts +29 -0
- package/dist/viewerServer/evidence/index.js +43 -1
- package/dist/viewerServer/evidence/index.js.map +1 -1
- package/dist/viewerServer/evidence/mediaResolver.d.ts +1 -1
- package/dist/viewerServer/evidence/mediaResolver.js +28 -2
- package/dist/viewerServer/evidence/mediaResolver.js.map +1 -1
- package/dist/viewerServer/evidence/projection.d.ts +5 -1
- package/dist/viewerServer/evidence/projection.js +19 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -1
- package/dist/viewerServer/httpServer.d.ts +13 -2
- package/dist/viewerServer/httpServer.js +278 -4
- package/dist/viewerServer/httpServer.js.map +1 -1
- package/dist/viewerServer/viewerService.d.ts +8 -0
- package/dist/viewerServer/viewerService.js +38 -2
- package/dist/viewerServer/viewerService.js.map +1 -1
- package/docs/ARCHITECTURE.md +108 -21
- package/docs/CI_CD.md +57 -1
- package/docs/COMMANDS.md +44 -4
- package/docs/CONTRACTS.md +78 -8
- package/docs/CURRENT_STATE.md +157 -35
- package/docs/DEVELOPMENT.md +8 -3
- package/docs/PROJECT_DESCRIPTION.md +4 -1
- package/docs/PROJECT_MILESTONES.md +4 -0
- package/docs/PROJECT_OVERVIEW.md +41 -17
- package/docs/QUICKSTART.md +52 -39
- package/docs/RELEASE.md +16 -11
- package/docs/ROADMAP.md +406 -66
- package/docs/SECURITY.md +71 -14
- package/docs/WORKFLOWS.md +151 -23
- package/docs/plans/v0.9-implementation-plan.md +1529 -0
- package/docs/reports/v0.9-architecture-retrieval.md +567 -0
- package/docs/reports/v0.9-batch1-visual-annotation-foundation.md +351 -0
- package/docs/reports/v0.9-batch2-viewer-annotation-authoring-boundary.md +438 -0
- package/docs/reports/v0.9-batch3-runtime-screenshot-annotation-authoring.md +412 -0
- package/docs/reports/v0.9-batch4-external-reference-annotation-authoring.md +452 -0
- package/docs/reports/v0.9-batch5-runtime-intent-contract-promotion.md +535 -0
- package/docs/reports/v0.9-batch6-reference-materialization.md +514 -0
- package/docs/reports/v0.9-batch7-integrated-acceptance.md +644 -0
- package/docs/reports/v0.9-demo-foundation.md +589 -0
- package/docs/reports/v0.9-final-pre-release-readiness.md +209 -0
- package/docs/reports/v0.9-final-readiness-corrections.md +530 -0
- package/docs/reports/v0.9-pre-release-readiness.md +170 -0
- package/docs/reports/v0.9-tutorial-end-to-end-acceptance.md +980 -0
- package/docs/reports/v0.9-tutorial-integration.md +731 -0
- package/package.json +2 -2
- 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.
|