@dailephd/my-frontend-observer 0.9.1 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +490 -471
- package/LICENSE +21 -21
- package/README.md +375 -357
- package/dist/application/projectCheckService.d.ts +6 -0
- package/dist/application/projectCheckService.js +8 -1
- package/dist/application/projectCheckService.js.map +1 -1
- package/dist/application/projectWorkflowService.d.ts +7 -2
- package/dist/application/projectWorkflowService.js +10 -3
- package/dist/application/projectWorkflowService.js.map +1 -1
- package/dist/application/visualChangeAgentHandoffService.d.ts +28 -0
- package/dist/application/visualChangeAgentHandoffService.js +111 -0
- package/dist/application/visualChangeAgentHandoffService.js.map +1 -0
- package/dist/application/visualChangeProjectWorkflowService.d.ts +95 -0
- package/dist/application/visualChangeProjectWorkflowService.js +376 -0
- package/dist/application/visualChangeProjectWorkflowService.js.map +1 -0
- package/dist/application/visualChangeReviewService.d.ts +50 -0
- package/dist/application/visualChangeReviewService.js +69 -0
- package/dist/application/visualChangeReviewService.js.map +1 -0
- package/dist/application/visualChangeWorkflowPersistenceService.d.ts +26 -0
- package/dist/application/visualChangeWorkflowPersistenceService.js +15 -0
- package/dist/application/visualChangeWorkflowPersistenceService.js.map +1 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.d.ts +9 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.js +47 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.js.map +1 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.d.ts +20 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.js +41 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.js.map +1 -0
- package/dist/cli.js +9 -7
- package/dist/cli.js.map +1 -1
- package/dist/domain/visualChangeAgentHandoff.d.ts +82 -0
- package/dist/domain/visualChangeAgentHandoff.js +80 -0
- package/dist/domain/visualChangeAgentHandoff.js.map +1 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.d.ts +2 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.js +11 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.js.map +1 -0
- package/dist/domain/visualChangeCycle.d.ts +8 -0
- package/dist/domain/visualChangeCycle.js +7 -0
- package/dist/domain/visualChangeCycle.js.map +1 -0
- package/dist/domain/visualChangeWorkflow.d.ts +125 -0
- package/dist/domain/visualChangeWorkflow.js +109 -0
- package/dist/domain/visualChangeWorkflow.js.map +1 -0
- package/dist/domain/visualChangeWorkflowIdentity.d.ts +5 -0
- package/dist/domain/visualChangeWorkflowIdentity.js +24 -0
- package/dist/domain/visualChangeWorkflowIdentity.js.map +1 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/projectWorkflow/projectPaths.d.ts +3 -0
- package/dist/projectWorkflow/projectPaths.js +7 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -1
- package/dist/viewer/assets/index-DglJ6f28.css +1 -0
- package/dist/viewer/assets/index-DsODREY5.js +9 -0
- package/dist/viewer/index.html +15 -15
- package/dist/viewer/sw.js +1 -1
- package/dist/viewerServer/evidence/classify.d.ts +3 -1
- package/dist/viewerServer/evidence/classify.js +10 -0
- package/dist/viewerServer/evidence/classify.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/projection.d.ts +5 -0
- package/dist/viewerServer/evidence/projection.js +19 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -1
- package/dist/viewerServer/evidence/visualChangeWorkflowView.d.ts +31 -0
- package/dist/viewerServer/evidence/visualChangeWorkflowView.js +36 -0
- package/dist/viewerServer/evidence/visualChangeWorkflowView.js.map +1 -0
- package/dist/viewerServer/httpServer.js +323 -1
- package/dist/viewerServer/httpServer.js.map +1 -1
- package/dist/viewerServer/referenceApproval.d.ts +22 -0
- package/dist/viewerServer/referenceApproval.js +42 -0
- package/dist/viewerServer/referenceApproval.js.map +1 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.d.ts +28 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.js +134 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.d.ts +33 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.js +81 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/visualChangeAuthoring.d.ts +46 -0
- package/dist/viewerServer/visualChangeAuthoring.js +63 -0
- package/dist/viewerServer/visualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/visualChangeHandoff.d.ts +23 -0
- package/dist/viewerServer/visualChangeHandoff.js +31 -0
- package/dist/viewerServer/visualChangeHandoff.js.map +1 -0
- package/dist/viewerServer/visualChangeReview.d.ts +30 -0
- package/dist/viewerServer/visualChangeReview.js +46 -0
- package/dist/viewerServer/visualChangeReview.js.map +1 -0
- package/docs/ARCHITECTURE.md +1394 -1373
- package/docs/CI_CD.md +349 -327
- package/docs/COMMANDS.md +1035 -1012
- package/docs/CONTRACTS.md +1971 -1926
- package/docs/CURRENT_STATE.md +1277 -1238
- package/docs/DEVELOPMENT.md +240 -237
- package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -50
- package/docs/PROJECT_DESCRIPTION.md +2248 -2224
- package/docs/PROJECT_MILESTONES.md +2681 -2558
- package/docs/PROJECT_OVERVIEW.md +200 -191
- package/docs/QUICKSTART.md +100 -96
- package/docs/RELEASE.md +37 -33
- package/docs/ROADMAP.md +1105 -1033
- package/docs/SECURITY.md +297 -275
- package/docs/WORKFLOWS.md +806 -770
- package/docs/plans/v0.10-implementation-plan.md +1509 -0
- package/docs/plans/v0.8-implementation-plan.md +655 -655
- package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -505
- package/docs/plans/v0.9-implementation-plan.md +1529 -1529
- package/docs/plans/v0.9.1-implementation-plan.md +468 -468
- package/docs/reports/v0.10-batch1-visual-change-workflow-foundation.md +102 -0
- package/docs/reports/v0.10-batch2-project-composition-check-recording.md +103 -0
- package/docs/reports/v0.10-batch3-viewer-visual-change-workspace.md +93 -0
- package/docs/reports/v0.10-batch4-actual-frontend-entry.md +59 -0
- package/docs/reports/v0.10-batch5-reference-driven-entry.md +238 -0
- package/docs/reports/v0.10-batch6-coding-agent-handoff.md +85 -0
- package/docs/reports/v0.10-batch7-correction-review-acceptance.md +145 -0
- package/docs/reports/v0.10-batch8-integrated-acceptance.md +109 -0
- package/docs/reports/v0.10-implementation-completeness-documentation-reconciliation.md +344 -0
- package/docs/reports/v0.10-pre-release-readiness.md +120 -0
- package/docs/reports/v0.10-release-preparation.md +70 -0
- package/docs/reports/v0.10.1-project-check-baseline-context-implementation.md +86 -0
- package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -243
- package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -497
- package/docs/reports/v0.7-pre-release-readiness.md +337 -337
- package/docs/reports/v0.7-reference-binding-prompt5.md +223 -223
- package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -234
- package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -222
- package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -216
- package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -151
- package/docs/reports/v0.7-reference-regions-prompt2.md +195 -195
- package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -217
- package/docs/reports/v0.7-release-prep.md +423 -423
- package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -279
- package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -233
- package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -279
- package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -247
- package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -741
- package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -128
- package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -223
- package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -687
- package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -232
- package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -278
- package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -114
- package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -170
- package/docs/reports/v0.9-architecture-retrieval.md +14 -37
- package/docs/reports/v0.9-final-pre-release-readiness.md +209 -209
- package/docs/reports/v0.9-final-readiness-corrections.md +530 -530
- package/docs/reports/v0.9-pre-release-readiness.md +169 -169
- package/docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md +359 -359
- package/docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md +262 -262
- package/docs/reports/v0.9.1-pre-release-readiness.md +206 -206
- package/package.json +59 -59
- package/dist/viewer/assets/index-BN41MI7m.css +0 -1
- package/dist/viewer/assets/index-CkKXnlrI.js +0 -9
|
@@ -281,12 +281,10 @@ Closest server tests are `tests/unit/viewerServer.test.ts`,
|
|
|
281
281
|
rendering-only subset passed to the SVG leaf.
|
|
282
282
|
|
|
283
283
|
Closest protection is `tests/browser/observationSvgWorkspace.test.ts`, covering
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
suites; the hook’s direct unit coverage is in the corresponding viewer hook
|
|
289
|
-
test locations where present.
|
|
284
|
+
screenshot/media loading, exact rectangles, unresolved targets, selection in
|
|
285
|
+
both directions, relationship connectors, and aspect-ratio/viewBox alignment.
|
|
286
|
+
Zoom/pan coverage is in `tests/browser/observationComparison.test.ts`,
|
|
287
|
+
`referenceCandidateWorkspace.test.ts`, and the focused viewer workspace suites.
|
|
290
288
|
|
|
291
289
|
## 7. External-reference coordinate architecture
|
|
292
290
|
|
|
@@ -308,7 +306,7 @@ Closest protection is `tests/browser/observationSvgWorkspace.test.ts`, covering
|
|
|
308
306
|
`data-region-id` values and are not runtime target names.
|
|
309
307
|
- The reference overlay has separate `requirementRegionIds` and
|
|
310
308
|
`highlightRegionIds` presentation props. A bound cross-selection highlights
|
|
311
|
-
the other domain without changing that domain
|
|
309
|
+
the other domain without changing that domain's primary interactive
|
|
312
310
|
selection.
|
|
313
311
|
- Reference and runtime views share the `useZoomPan` interaction machinery,
|
|
314
312
|
but each supplies its own frame dimensions and SVG coordinate domain.
|
|
@@ -400,10 +398,8 @@ zoom/pan/view lock, and server-side canonical derivation.
|
|
|
400
398
|
observation directory and its `observationId` remain authoritative. Replacement
|
|
401
399
|
creates a fresh observation instance and leaves the prior directory intact;
|
|
402
400
|
the catalog changes which current artifact the alias selects.
|
|
403
|
-
- Viewer startup receives ephemeral
|
|
404
|
-
|
|
405
|
-
the matching observation relative directory. Artifact handles and logical IDs
|
|
406
|
-
remain canonical.
|
|
401
|
+
- Viewer startup receives ephemeral `ViewerAliasMetadata`; artifact handles and
|
|
402
|
+
logical IDs remain canonical.
|
|
407
403
|
- `view` discovers project evidence when `--root` is omitted. `init`, `capture`,
|
|
408
404
|
and `check` dispatch through `src/cli.ts` to application/project workflow
|
|
409
405
|
owners rather than embedding persistence semantics.
|
|
@@ -438,12 +434,9 @@ zoom/pan/view lock, and server-side canonical derivation.
|
|
|
438
434
|
- A. Structural validation: `tests/unit/schema.test.ts`,
|
|
439
435
|
`comparison.test.ts`, `frontendContracts.test.ts`,
|
|
440
436
|
`externalReference.test.ts`, and `frontendContractEvaluationArtifact.test.ts`.
|
|
441
|
-
Protect required fields, versions, closed vocabularies, geometry, and
|
|
442
|
-
lifecycle validation.
|
|
443
437
|
- B. Identity determinism: `tests/unit/identity.test.ts`,
|
|
444
438
|
`comparisonIdentity.test.ts`, `frontendContractIdentity.test.ts`, and
|
|
445
|
-
`externalReferenceIdentity.test.ts`.
|
|
446
|
-
exclusion of paths/timestamps, and fresh instance IDs.
|
|
439
|
+
`externalReferenceIdentity.test.ts`.
|
|
447
440
|
- C. Writer/reader round trip: `tests/unit/artifactWriter.test.ts`,
|
|
448
441
|
`comparisonPersistence.test.ts`, `frontendContractPersistence.test.ts`,
|
|
449
442
|
`externalReferencePersistence.test.ts`, and
|
|
@@ -455,39 +448,23 @@ zoom/pan/view lock, and server-side canonical derivation.
|
|
|
455
448
|
`cliFrontendContracts.test.ts`, `cliExternalReference.test.ts`,
|
|
456
449
|
`cliEvaluateReferenceFidelity.test.ts`, and `cliProjectWorkflow.test.ts`.
|
|
457
450
|
- F. Viewer discovery/classification: `tests/unit/evidenceDiscovery.test.ts`.
|
|
458
|
-
Protect deterministic manifest discovery, family classification, honest
|
|
459
|
-
malformed/unsupported states, metadata-only indexing, and no arbitrary-file
|
|
460
|
-
inclusion.
|
|
461
451
|
- G. Path containment: `tests/unit/paths.test.ts`,
|
|
462
452
|
`tests/unit/viewerEvidenceServer.test.ts`, and `tests/unit/policy.test.ts`.
|
|
463
|
-
Protect portable paths, root containment, symlink handling, and method/error
|
|
464
|
-
boundaries.
|
|
465
453
|
- H. Runtime SVG selection/highlighting: `tests/browser/observationSvgWorkspace.test.ts`.
|
|
466
|
-
Protect exact geometry, unresolved-target omission, list/SVG selection, and
|
|
467
|
-
visual highlights.
|
|
468
454
|
- I. Reference SVG selection/highlighting: `tests/browser/referenceCandidateWorkspace.test.ts`
|
|
469
455
|
and `referenceBindingFidelityWorkspace.test.ts`.
|
|
470
456
|
- J. Zoom/pan: `tests/browser/observationComparison.test.ts`,
|
|
471
|
-
`referenceCandidateWorkspace.test.ts`, and focused workspace scenarios
|
|
472
|
-
|
|
473
|
-
- K. Explicit binding cross-selection: `tests/browser/referenceBindingFidelityWorkspace.test.ts`
|
|
474
|
-
(`Case A - explicit bound cross-selection`). It protects declared-only,
|
|
475
|
-
many-to-one reverse highlighting and keeps primary selection separate.
|
|
457
|
+
`referenceCandidateWorkspace.test.ts`, and focused workspace scenarios.
|
|
458
|
+
- K. Explicit binding cross-selection: `tests/browser/referenceBindingFidelityWorkspace.test.ts`.
|
|
476
459
|
- L. Real-browser viewer behavior: `tests/browser/viewerIntegratedAcceptance.test.ts`,
|
|
477
460
|
`viewerEvidenceShell.test.ts`, `observationSvgWorkspace.test.ts`,
|
|
478
461
|
`referenceCandidateWorkspace.test.ts`, and
|
|
479
462
|
`referenceBindingFidelityWorkspace.test.ts`.
|
|
480
|
-
- M. PWA/API cache boundary: `tests/browser/pwaHardening.test.ts
|
|
481
|
-
service-worker registration, shell precache, no `/api/` cache entries, and
|
|
482
|
-
explicit unavailable state when the server is down.
|
|
463
|
+
- M. PWA/API cache boundary: `tests/browser/pwaHardening.test.ts`.
|
|
483
464
|
- N. Packed installed-package viewer smoke: `scripts/ci/runPackedViewerSmoke.mjs`.
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
and `tests/browser/projectCheckWorkflow.test.ts`; unit ownership is
|
|
488
|
-
`tests/unit/projectWorkflow.test.ts`, `projectCheckService.test.ts`, and
|
|
489
|
-
`projectCheckResult.test.ts`. These protect init/capture/replace, canonical
|
|
490
|
-
paths, alias projection, and project check flow.
|
|
465
|
+
- O. Project-aware viewer behavior: `tests/browser/projectWorkflowViewer.test.ts`,
|
|
466
|
+
`tests/browser/projectCheckWorkflow.test.ts`, `tests/unit/projectWorkflow.test.ts`,
|
|
467
|
+
`projectCheckService.test.ts`, and `projectCheckResult.test.ts`.
|
|
491
468
|
|
|
492
469
|
## 13. Package/release boundary
|
|
493
470
|
|
|
@@ -1,209 +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.
|
|
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.
|