@dailephd/my-frontend-observer 0.8.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.
Files changed (316) hide show
  1. package/CHANGELOG.md +397 -0
  2. package/LICENSE +21 -0
  3. package/README.md +255 -0
  4. package/dist/application/browserCaptureService.d.ts +11 -0
  5. package/dist/application/browserCaptureService.js +12 -0
  6. package/dist/application/browserCaptureService.js.map +1 -0
  7. package/dist/application/comparisonService.d.ts +56 -0
  8. package/dist/application/comparisonService.js +77 -0
  9. package/dist/application/comparisonService.js.map +1 -0
  10. package/dist/application/externalReferencePersistenceService.d.ts +75 -0
  11. package/dist/application/externalReferencePersistenceService.js +182 -0
  12. package/dist/application/externalReferencePersistenceService.js.map +1 -0
  13. package/dist/application/frontendContractEvaluationService.d.ts +49 -0
  14. package/dist/application/frontendContractEvaluationService.js +112 -0
  15. package/dist/application/frontendContractEvaluationService.js.map +1 -0
  16. package/dist/application/frontendContractPersistenceService.d.ts +56 -0
  17. package/dist/application/frontendContractPersistenceService.js +91 -0
  18. package/dist/application/frontendContractPersistenceService.js.map +1 -0
  19. package/dist/application/observationPersistence.d.ts +59 -0
  20. package/dist/application/observationPersistence.js +79 -0
  21. package/dist/application/observationPersistence.js.map +1 -0
  22. package/dist/application/projectCheckService.d.ts +3 -0
  23. package/dist/application/projectCheckService.js +169 -0
  24. package/dist/application/projectCheckService.js.map +1 -0
  25. package/dist/application/projectWorkflowService.d.ts +46 -0
  26. package/dist/application/projectWorkflowService.js +92 -0
  27. package/dist/application/projectWorkflowService.js.map +1 -0
  28. package/dist/application/referenceFidelityEvaluationService.d.ts +28 -0
  29. package/dist/application/referenceFidelityEvaluationService.js +45 -0
  30. package/dist/application/referenceFidelityEvaluationService.js.map +1 -0
  31. package/dist/artifacts/artifactReader.d.ts +19 -0
  32. package/dist/artifacts/artifactReader.js +36 -0
  33. package/dist/artifacts/artifactReader.js.map +1 -0
  34. package/dist/artifacts/artifactWriter.d.ts +25 -0
  35. package/dist/artifacts/artifactWriter.js +68 -0
  36. package/dist/artifacts/artifactWriter.js.map +1 -0
  37. package/dist/artifacts/comparisonArtifactReader.d.ts +18 -0
  38. package/dist/artifacts/comparisonArtifactReader.js +35 -0
  39. package/dist/artifacts/comparisonArtifactReader.js.map +1 -0
  40. package/dist/artifacts/comparisonArtifactWriter.d.ts +41 -0
  41. package/dist/artifacts/comparisonArtifactWriter.js +67 -0
  42. package/dist/artifacts/comparisonArtifactWriter.js.map +1 -0
  43. package/dist/artifacts/externalReferenceArtifactReader.d.ts +18 -0
  44. package/dist/artifacts/externalReferenceArtifactReader.js +35 -0
  45. package/dist/artifacts/externalReferenceArtifactReader.js.map +1 -0
  46. package/dist/artifacts/externalReferenceArtifactWriter.d.ts +44 -0
  47. package/dist/artifacts/externalReferenceArtifactWriter.js +77 -0
  48. package/dist/artifacts/externalReferenceArtifactWriter.js.map +1 -0
  49. package/dist/artifacts/frontendContractArtifactReader.d.ts +24 -0
  50. package/dist/artifacts/frontendContractArtifactReader.js +47 -0
  51. package/dist/artifacts/frontendContractArtifactReader.js.map +1 -0
  52. package/dist/artifacts/frontendContractArtifactWriter.d.ts +34 -0
  53. package/dist/artifacts/frontendContractArtifactWriter.js +70 -0
  54. package/dist/artifacts/frontendContractArtifactWriter.js.map +1 -0
  55. package/dist/artifacts/frontendContractEvaluationArtifactReader.d.ts +17 -0
  56. package/dist/artifacts/frontendContractEvaluationArtifactReader.js +34 -0
  57. package/dist/artifacts/frontendContractEvaluationArtifactReader.js.map +1 -0
  58. package/dist/artifacts/frontendContractEvaluationArtifactWriter.d.ts +32 -0
  59. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js +58 -0
  60. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js.map +1 -0
  61. package/dist/artifacts/types.d.ts +17 -0
  62. package/dist/artifacts/types.js +2 -0
  63. package/dist/artifacts/types.js.map +1 -0
  64. package/dist/browser/chromiumAdapter.d.ts +21 -0
  65. package/dist/browser/chromiumAdapter.js +204 -0
  66. package/dist/browser/chromiumAdapter.js.map +1 -0
  67. package/dist/browser/evidenceCapture.d.ts +62 -0
  68. package/dist/browser/evidenceCapture.js +500 -0
  69. package/dist/browser/evidenceCapture.js.map +1 -0
  70. package/dist/browser/scrollCapture.d.ts +32 -0
  71. package/dist/browser/scrollCapture.js +163 -0
  72. package/dist/browser/scrollCapture.js.map +1 -0
  73. package/dist/browser/types.d.ts +24 -0
  74. package/dist/browser/types.js +2 -0
  75. package/dist/browser/types.js.map +1 -0
  76. package/dist/cli.d.ts +8 -0
  77. package/dist/cli.js +2411 -0
  78. package/dist/cli.js.map +1 -0
  79. package/dist/domain/boundedAgentContext.d.ts +226 -0
  80. package/dist/domain/boundedAgentContext.js +355 -0
  81. package/dist/domain/boundedAgentContext.js.map +1 -0
  82. package/dist/domain/boundedAgentContextCorrelation.d.ts +74 -0
  83. package/dist/domain/boundedAgentContextCorrelation.js +441 -0
  84. package/dist/domain/boundedAgentContextCorrelation.js.map +1 -0
  85. package/dist/domain/boundedAgentContextIdentity.d.ts +26 -0
  86. package/dist/domain/boundedAgentContextIdentity.js +69 -0
  87. package/dist/domain/boundedAgentContextIdentity.js.map +1 -0
  88. package/dist/domain/boundedAgentContextProjection.d.ts +71 -0
  89. package/dist/domain/boundedAgentContextProjection.js +477 -0
  90. package/dist/domain/boundedAgentContextProjection.js.map +1 -0
  91. package/dist/domain/comparison.d.ts +220 -0
  92. package/dist/domain/comparison.js +350 -0
  93. package/dist/domain/comparison.js.map +1 -0
  94. package/dist/domain/comparisonEngine.d.ts +76 -0
  95. package/dist/domain/comparisonEngine.js +734 -0
  96. package/dist/domain/comparisonEngine.js.map +1 -0
  97. package/dist/domain/comparisonIdentity.d.ts +13 -0
  98. package/dist/domain/comparisonIdentity.js +46 -0
  99. package/dist/domain/comparisonIdentity.js.map +1 -0
  100. package/dist/domain/completion.d.ts +30 -0
  101. package/dist/domain/completion.js +22 -0
  102. package/dist/domain/completion.js.map +1 -0
  103. package/dist/domain/diagnostics.d.ts +17 -0
  104. package/dist/domain/diagnostics.js +77 -0
  105. package/dist/domain/diagnostics.js.map +1 -0
  106. package/dist/domain/evidence.d.ts +29 -0
  107. package/dist/domain/evidence.js +59 -0
  108. package/dist/domain/evidence.js.map +1 -0
  109. package/dist/domain/explicitState.d.ts +40 -0
  110. package/dist/domain/explicitState.js +54 -0
  111. package/dist/domain/explicitState.js.map +1 -0
  112. package/dist/domain/externalReference.d.ts +158 -0
  113. package/dist/domain/externalReference.js +167 -0
  114. package/dist/domain/externalReference.js.map +1 -0
  115. package/dist/domain/externalReferenceApplicability.d.ts +43 -0
  116. package/dist/domain/externalReferenceApplicability.js +52 -0
  117. package/dist/domain/externalReferenceApplicability.js.map +1 -0
  118. package/dist/domain/externalReferenceCompatibility.d.ts +40 -0
  119. package/dist/domain/externalReferenceCompatibility.js +48 -0
  120. package/dist/domain/externalReferenceCompatibility.js.map +1 -0
  121. package/dist/domain/externalReferenceFidelity.d.ts +171 -0
  122. package/dist/domain/externalReferenceFidelity.js +419 -0
  123. package/dist/domain/externalReferenceFidelity.js.map +1 -0
  124. package/dist/domain/externalReferenceIdentity.d.ts +38 -0
  125. package/dist/domain/externalReferenceIdentity.js +70 -0
  126. package/dist/domain/externalReferenceIdentity.js.map +1 -0
  127. package/dist/domain/externalReferenceImage.d.ts +35 -0
  128. package/dist/domain/externalReferenceImage.js +160 -0
  129. package/dist/domain/externalReferenceImage.js.map +1 -0
  130. package/dist/domain/externalReferenceRegionRelationships.d.ts +63 -0
  131. package/dist/domain/externalReferenceRegionRelationships.js +98 -0
  132. package/dist/domain/externalReferenceRegionRelationships.js.map +1 -0
  133. package/dist/domain/externalReferenceRegions.d.ts +65 -0
  134. package/dist/domain/externalReferenceRegions.js +105 -0
  135. package/dist/domain/externalReferenceRegions.js.map +1 -0
  136. package/dist/domain/externalReferenceRequirementIdentity.d.ts +12 -0
  137. package/dist/domain/externalReferenceRequirementIdentity.js +35 -0
  138. package/dist/domain/externalReferenceRequirementIdentity.js.map +1 -0
  139. package/dist/domain/externalReferenceRequirements.d.ts +215 -0
  140. package/dist/domain/externalReferenceRequirements.js +401 -0
  141. package/dist/domain/externalReferenceRequirements.js.map +1 -0
  142. package/dist/domain/externalReferenceRuntimeBinding.d.ts +146 -0
  143. package/dist/domain/externalReferenceRuntimeBinding.js +183 -0
  144. package/dist/domain/externalReferenceRuntimeBinding.js.map +1 -0
  145. package/dist/domain/frontendContractEvaluation.d.ts +57 -0
  146. package/dist/domain/frontendContractEvaluation.js +454 -0
  147. package/dist/domain/frontendContractEvaluation.js.map +1 -0
  148. package/dist/domain/frontendContractEvaluationArtifact.d.ts +65 -0
  149. package/dist/domain/frontendContractEvaluationArtifact.js +108 -0
  150. package/dist/domain/frontendContractEvaluationArtifact.js.map +1 -0
  151. package/dist/domain/frontendContractIdentity.d.ts +39 -0
  152. package/dist/domain/frontendContractIdentity.js +70 -0
  153. package/dist/domain/frontendContractIdentity.js.map +1 -0
  154. package/dist/domain/frontendContracts.d.ts +188 -0
  155. package/dist/domain/frontendContracts.js +260 -0
  156. package/dist/domain/frontendContracts.js.map +1 -0
  157. package/dist/domain/identity.d.ts +21 -0
  158. package/dist/domain/identity.js +47 -0
  159. package/dist/domain/identity.js.map +1 -0
  160. package/dist/domain/referenceCorrectionIdentity.d.ts +40 -0
  161. package/dist/domain/referenceCorrectionIdentity.js +77 -0
  162. package/dist/domain/referenceCorrectionIdentity.js.map +1 -0
  163. package/dist/domain/referenceCorrectionWorkflow.d.ts +160 -0
  164. package/dist/domain/referenceCorrectionWorkflow.js +165 -0
  165. package/dist/domain/referenceCorrectionWorkflow.js.map +1 -0
  166. package/dist/domain/referenceFidelityProjection.d.ts +65 -0
  167. package/dist/domain/referenceFidelityProjection.js +135 -0
  168. package/dist/domain/referenceFidelityProjection.js.map +1 -0
  169. package/dist/domain/relationships.d.ts +210 -0
  170. package/dist/domain/relationships.js +352 -0
  171. package/dist/domain/relationships.js.map +1 -0
  172. package/dist/domain/schema.d.ts +269 -0
  173. package/dist/domain/schema.js +442 -0
  174. package/dist/domain/schema.js.map +1 -0
  175. package/dist/domain/scrollEvidence.d.ts +51 -0
  176. package/dist/domain/scrollEvidence.js +134 -0
  177. package/dist/domain/scrollEvidence.js.map +1 -0
  178. package/dist/index.d.ts +114 -0
  179. package/dist/index.js +64 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/projectWorkflow/aliasCatalog.d.ts +21 -0
  182. package/dist/projectWorkflow/aliasCatalog.js +67 -0
  183. package/dist/projectWorkflow/aliasCatalog.js.map +1 -0
  184. package/dist/projectWorkflow/checkAcceptance.d.ts +25 -0
  185. package/dist/projectWorkflow/checkAcceptance.js +55 -0
  186. package/dist/projectWorkflow/checkAcceptance.js.map +1 -0
  187. package/dist/projectWorkflow/checkResult.d.ts +85 -0
  188. package/dist/projectWorkflow/checkResult.js +101 -0
  189. package/dist/projectWorkflow/checkResult.js.map +1 -0
  190. package/dist/projectWorkflow/projectConfig.d.ts +43 -0
  191. package/dist/projectWorkflow/projectConfig.js +84 -0
  192. package/dist/projectWorkflow/projectConfig.js.map +1 -0
  193. package/dist/projectWorkflow/projectDiscovery.d.ts +9 -0
  194. package/dist/projectWorkflow/projectDiscovery.js +20 -0
  195. package/dist/projectWorkflow/projectDiscovery.js.map +1 -0
  196. package/dist/projectWorkflow/projectPaths.d.ts +8 -0
  197. package/dist/projectWorkflow/projectPaths.js +23 -0
  198. package/dist/projectWorkflow/projectPaths.js.map +1 -0
  199. package/dist/request/paths.d.ts +14 -0
  200. package/dist/request/paths.js +33 -0
  201. package/dist/request/paths.js.map +1 -0
  202. package/dist/request/request.d.ts +111 -0
  203. package/dist/request/request.js +464 -0
  204. package/dist/request/request.js.map +1 -0
  205. package/dist/safety/policy.d.ts +14 -0
  206. package/dist/safety/policy.js +81 -0
  207. package/dist/safety/policy.js.map +1 -0
  208. package/dist/viewer/assets/index-CN_yb9Uf.css +1 -0
  209. package/dist/viewer/assets/index-D98S1_2d.js +9 -0
  210. package/dist/viewer/icons/icon-192.png +0 -0
  211. package/dist/viewer/icons/icon-512.png +0 -0
  212. package/dist/viewer/index.html +15 -0
  213. package/dist/viewer/manifest.webmanifest +1 -0
  214. package/dist/viewer/registerSW.js +1 -0
  215. package/dist/viewer/sw.js +1 -0
  216. package/dist/viewer/workbox-9c191d2f.js +1 -0
  217. package/dist/viewerServer/context.d.ts +48 -0
  218. package/dist/viewerServer/context.js +60 -0
  219. package/dist/viewerServer/context.js.map +1 -0
  220. package/dist/viewerServer/evidence/classify.d.ts +59 -0
  221. package/dist/viewerServer/evidence/classify.js +124 -0
  222. package/dist/viewerServer/evidence/classify.js.map +1 -0
  223. package/dist/viewerServer/evidence/comparisonView.d.ts +28 -0
  224. package/dist/viewerServer/evidence/comparisonView.js +43 -0
  225. package/dist/viewerServer/evidence/comparisonView.js.map +1 -0
  226. package/dist/viewerServer/evidence/contextSourceView.d.ts +25 -0
  227. package/dist/viewerServer/evidence/contextSourceView.js +20 -0
  228. package/dist/viewerServer/evidence/contextSourceView.js.map +1 -0
  229. package/dist/viewerServer/evidence/discovery.d.ts +31 -0
  230. package/dist/viewerServer/evidence/discovery.js +78 -0
  231. package/dist/viewerServer/evidence/discovery.js.map +1 -0
  232. package/dist/viewerServer/evidence/evaluationView.d.ts +32 -0
  233. package/dist/viewerServer/evidence/evaluationView.js +50 -0
  234. package/dist/viewerServer/evidence/evaluationView.js.map +1 -0
  235. package/dist/viewerServer/evidence/handles.d.ts +21 -0
  236. package/dist/viewerServer/evidence/handles.js +43 -0
  237. package/dist/viewerServer/evidence/handles.js.map +1 -0
  238. package/dist/viewerServer/evidence/index.d.ts +41 -0
  239. package/dist/viewerServer/evidence/index.js +82 -0
  240. package/dist/viewerServer/evidence/index.js.map +1 -0
  241. package/dist/viewerServer/evidence/limits.d.ts +27 -0
  242. package/dist/viewerServer/evidence/limits.js +28 -0
  243. package/dist/viewerServer/evidence/limits.js.map +1 -0
  244. package/dist/viewerServer/evidence/linkedEvidence.d.ts +43 -0
  245. package/dist/viewerServer/evidence/linkedEvidence.js +151 -0
  246. package/dist/viewerServer/evidence/linkedEvidence.js.map +1 -0
  247. package/dist/viewerServer/evidence/mediaResolver.d.ts +16 -0
  248. package/dist/viewerServer/evidence/mediaResolver.js +85 -0
  249. package/dist/viewerServer/evidence/mediaResolver.js.map +1 -0
  250. package/dist/viewerServer/evidence/observationView.d.ts +29 -0
  251. package/dist/viewerServer/evidence/observationView.js +46 -0
  252. package/dist/viewerServer/evidence/observationView.js.map +1 -0
  253. package/dist/viewerServer/evidence/pathSafety.d.ts +11 -0
  254. package/dist/viewerServer/evidence/pathSafety.js +31 -0
  255. package/dist/viewerServer/evidence/pathSafety.js.map +1 -0
  256. package/dist/viewerServer/evidence/projection.d.ts +55 -0
  257. package/dist/viewerServer/evidence/projection.js +152 -0
  258. package/dist/viewerServer/evidence/projection.js.map +1 -0
  259. package/dist/viewerServer/evidence/referenceView.d.ts +133 -0
  260. package/dist/viewerServer/evidence/referenceView.js +169 -0
  261. package/dist/viewerServer/evidence/referenceView.js.map +1 -0
  262. package/dist/viewerServer/httpServer.d.ts +27 -0
  263. package/dist/viewerServer/httpServer.js +381 -0
  264. package/dist/viewerServer/httpServer.js.map +1 -0
  265. package/dist/viewerServer/openBrowser.d.ts +7 -0
  266. package/dist/viewerServer/openBrowser.js +32 -0
  267. package/dist/viewerServer/openBrowser.js.map +1 -0
  268. package/dist/viewerServer/port.d.ts +16 -0
  269. package/dist/viewerServer/port.js +19 -0
  270. package/dist/viewerServer/port.js.map +1 -0
  271. package/dist/viewerServer/viewerService.d.ts +62 -0
  272. package/dist/viewerServer/viewerService.js +88 -0
  273. package/dist/viewerServer/viewerService.js.map +1 -0
  274. package/docs/ARCHITECTURE.md +1286 -0
  275. package/docs/CI_CD.md +250 -0
  276. package/docs/COMMANDS.md +972 -0
  277. package/docs/CONTRACTS.md +1856 -0
  278. package/docs/CURRENT_STATE.md +1049 -0
  279. package/docs/DEVELOPMENT.md +202 -0
  280. package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -0
  281. package/docs/PROJECT_DESCRIPTION.md +2221 -0
  282. package/docs/PROJECT_MILESTONES.md +2526 -0
  283. package/docs/PROJECT_OVERVIEW.md +150 -0
  284. package/docs/QUICKSTART.md +83 -0
  285. package/docs/RELEASE.md +27 -0
  286. package/docs/ROADMAP.md +641 -0
  287. package/docs/SECURITY.md +218 -0
  288. package/docs/WORKFLOWS.md +642 -0
  289. package/docs/plans/v0.8-implementation-plan.md +655 -0
  290. package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -0
  291. package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -0
  292. package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -0
  293. package/docs/reports/v0.7-pre-release-readiness.md +337 -0
  294. package/docs/reports/v0.7-reference-binding-prompt5.md +223 -0
  295. package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -0
  296. package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -0
  297. package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -0
  298. package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -0
  299. package/docs/reports/v0.7-reference-regions-prompt2.md +195 -0
  300. package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -0
  301. package/docs/reports/v0.7-release-prep.md +423 -0
  302. package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -0
  303. package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -0
  304. package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -0
  305. package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -0
  306. package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -0
  307. package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -0
  308. package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -0
  309. package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -0
  310. package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -0
  311. package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -0
  312. package/docs/reports/v0.8.1-check-orchestration-prompt2.md +69 -0
  313. package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -0
  314. package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -0
  315. package/docs/reports/v0.8.1-project-workflow-foundation-prompt1.md +66 -0
  316. package/package.json +58 -0
package/docs/CI_CD.md ADDED
@@ -0,0 +1,250 @@
1
+ # CI/CD
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.8.1`; 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
+ A GitHub Actions pre-release readiness workflow exists at
6
+ `.github/workflows/pre-release-readiness.yml` (triggered manually via
7
+ `workflow_dispatch`, by pushing a `validation/**` or `release/**` branch, or
8
+ by a pull request into `master`). It has two phases:
9
+
10
+ 1. **candidate** (Linux, Node 24): `npm ci`, install Chromium, typecheck,
11
+ lint, `npm test`, `npm run test:browser`, `npm run test:security`,
12
+ build, `npm run check:docs`, then `npm pack` to produce exactly one
13
+ candidate tarball and its SHA-256, uploaded as build artifacts.
14
+ 2. **matrix-smoke** (`windows-latest`, `ubuntu-latest`, `macos-latest`, all
15
+ Node 24): each job downloads the *same* candidate tarball produced by the
16
+ candidate job, independently recomputes and verifies its SHA-256 against
17
+ the candidate job's hash (failing immediately on any mismatch - no job
18
+ ever builds its own tarball), installs Chromium via the installed
19
+ package's own Playwright dependency, and runs
20
+ `scripts/ci/runPackedObservationSmoke.mjs` against the installed
21
+ tarball: four real Chromium observations against a disposable local HTTP
22
+ target - the legacy `--target` CSS shorthand, the structured
23
+ `--targets-file` semantic-target path (`role`+accessible-name and `text`
24
+ locators, landmark evidence), a `--scroll-scenario-file` `window-scroll-by`
25
+ scenario, and a combined `--targets-file` + `--scroll-scenario-file`
26
+ `target-scroll-by` scenario against a nested scrollable container - all
27
+ asserting schema `1.2.0`, real scroll-position movement, derived
28
+ scroll-owner evidence (`document`/`target:<name>`), scenario transition
29
+ evidence, targets-file/scroll-scenario-file path privacy, and target
30
+ immutability.
31
+
32
+ This proves the same packaged candidate installs and performs a real
33
+ observation - CSS-shorthand, semantic-target, and v0.3 scroll-scenario alike
34
+ (both `window-scroll-by` and `target-scroll-by`) - on Windows, Linux, and
35
+ macOS, not just in the source checkout.
36
+
37
+ There is no automated npm publication and no automated GitHub Release
38
+ creation - this workflow is readiness validation only. Package publication
39
+ remains a separate, later, explicit release decision.
40
+
41
+ ## v0.2 readiness coverage
42
+
43
+ The packed-candidate readiness gap that previously existed for
44
+ `--targets-file` has been closed: `scripts/ci/runPackedObservationSmoke.mjs`
45
+ now exercises both the legacy CSS-shorthand path and the structured
46
+ semantic `--targets-file` path in the same run, on every platform in the
47
+ matrix. This was proven on `validation/v0.2-pre-release`
48
+ (`2a0718c37cfe6988fc5d9852db455b99aa8238af`), GitHub Actions run
49
+ `31537578062`, which passed on Windows, Linux, and macOS using one
50
+ hash-verified candidate tarball.
51
+
52
+ ## v0.3 readiness coverage
53
+
54
+ The packed-candidate readiness gap that previously existed for the v0.3
55
+ `--scroll-scenario-file` public interface - identified during the v0.3
56
+ implementation-completeness audit as `V0_3_READINESS_VALIDATION_GAP_EXISTS`
57
+ - has been closed: `scripts/ci/runPackedObservationSmoke.mjs` now also
58
+ performs a real `window-scroll-by` observation and a real `target-scroll-by`
59
+ observation (against a nested scrollable fixture container, combined with
60
+ `--targets-file`) through the installed tarball, asserting schema `1.2.0`,
61
+ actual scroll movement, `document`/`target:<name>` scroll-owner evidence
62
+ with `derivedFrom` provenance, scenario transition evidence, and that
63
+ neither the `--targets-file` nor the `--scroll-scenario-file` local path is
64
+ ever persisted into the manifest - on every platform in the matrix, using
65
+ the same single hash-verified candidate tarball as the legacy/semantic
66
+ observations. This was proven on `validation/v0.3-pre-release`
67
+ (`e59621c2fb5a6d74f491a63dc79ebe6e8b62c175`), GitHub Actions run
68
+ `31591920744`, which passed on Windows, Linux, and macOS using one
69
+ hash-verified candidate tarball (SHA-256
70
+ `da6cbc18a98d005b84a2f12c06f5c01d390006b53c02176a6c9cdc6d9b9d24d0`) - the
71
+ release candidate for `v0.3.0`.
72
+
73
+ ## v0.4 readiness coverage
74
+
75
+ The packed-candidate readiness gap that previously existed for the v0.4
76
+ `compare` public command - identified during the v0.4 implementation/
77
+ documentation audit as `V0_4_READINESS_VALIDATION_GAP_EXISTS` - has been
78
+ closed: `scripts/ci/runPackedObservationSmoke.mjs` now also installs the
79
+ candidate tarball, observes a deterministic before/after fixture through
80
+ the installed `observe`, and runs the installed `compare` against both
81
+ resulting artifacts, asserting (through the *installed package's own*
82
+ exported `isValidComparisonArtifact`/`isValidObservationArtifact`, resolved
83
+ from the consumer's own `node_modules` rather than the source checkout):
84
+ comparison artifact kind/schema `1.0.0`, a `comparable` result with a real
85
+ `moved`+`resized` target difference and a real relationship-family
86
+ transition (`does-not-overlap`→`overlaps` and `left-of`→
87
+ `horizontally-overlapping` simultaneously - the same pair the v0.4
88
+ relationship-family matching regression concerns), an explicit
89
+ `--config-file` non-causal dependency-evidence result, an `incomparable`
90
+ result (differing viewport) with the expected blocking comparability
91
+ reason and no fabricated ordinary differences, comparison-manifest path
92
+ privacy (no absolute operational path leakage), retained (never copied)
93
+ before/after screenshot references, a `manifest.json`-only comparison
94
+ directory, and byte-identical source-observation manifests/screenshots
95
+ before and after comparing - on every platform in the matrix, using the
96
+ same single hash-verified candidate tarball as the legacy/semantic/scroll
97
+ observations. This preserves every pre-existing v0.1-v0.3 packed
98
+ observation proof unchanged and adds the v0.4 proof additively, in the same
99
+ script and the same candidate, per the established same-candidate
100
+ architecture (no second `npm pack`, no per-platform rebuild).
101
+
102
+ ## v0.5 readiness coverage
103
+
104
+ The packed-readiness coverage gap identified during the v0.5 implementation-
105
+ completeness audit as `V0_5_READINESS_VALIDATION_GAP_EXISTS` - the packed
106
+ candidate smoke exercised `observe`/`compare` but not `approve-baseline`/
107
+ `save-change-contract`/`evaluate-contract` - has been **corrected locally**:
108
+ `scripts/ci/runPackedObservationSmoke.mjs` now also installs the same
109
+ candidate tarball, observes a deterministic navigation/workspace/rail
110
+ fixture through the installed `observe`, and drives the complete installed
111
+ `approve-baseline` → `save-change-contract` → `observe` (candidate) →
112
+ `compare` → `evaluate-contract` sequence, proving both a fully successful
113
+ contract change (overall `PASS`, `--enforce` still exits `0`) and the
114
+ milestone-signature failure (a locally successful requested/expected-
115
+ dependent change alongside a real protected right-rail regression and a
116
+ real preserved navigation-clipping regression, overall `FAIL`) - including
117
+ `--enforce` producing a nonzero exit for the identical `FAIL` evidence
118
+ (`evaluationRequestId` and `clauseResults` unchanged), full source
119
+ observation/comparison/contract-artifact immutability, no copied
120
+ screenshots, and no repository-root artifact leakage. All product behavior
121
+ under test is invoked through the installed tarball's own executable, never
122
+ imported from the source checkout. This addition is exercised in every
123
+ existing matrix lane (`windows-latest`, `ubuntu-latest`, `macos-latest`)
124
+ because all three already invoke this same script against the same
125
+ candidate tarball - no workflow YAML change was required.
126
+
127
+ This correction has since been proven cross-platform on the validation
128
+ branch `validation/v0.5-pre-release`, first tested at commit
129
+ `90255a9175503664f3e65d4114ee205176b7040a`: GitHub Actions run
130
+ [`31727856546`](https://github.com/dailephd/my-frontend-observer/actions/runs/31727856546)
131
+ passed completely - the candidate job (Linux, Node 24) and all three
132
+ `matrix-smoke` lanes (`windows-latest` Node v24.18.1, `ubuntu-latest` Node
133
+ v24.19.0, `macos-latest` Node v24.18.0) - using one shared candidate
134
+ tarball, `my-frontend-observer-0.4.0.tgz`, SHA-256
135
+ `9533a53e475614cd80a29dfa8b0f85e533e3ad736596579f559479e90e78941a`,
136
+ independently hash-verified by each of the three matrix lanes before any of
137
+ them ran the smoke (no lane built its own tarball). Every lane's
138
+ `smoke-summary.json` reported byte-identical v0.5 evidence: the installed
139
+ candidate's `approve-baseline`/`save-change-contract`/`evaluate-contract`
140
+ `--help` all present, a real successful contract change (overall `PASS`,
141
+ `--enforce` exits `0`), and the real milestone-signature failure (requested/
142
+ expected-dependent `pass`, protected/preserved `fail`, overall `FAIL`,
143
+ identical `evaluationRequestId`/`clauseResults` with `--enforce` exiting `1`
144
+ and without it exiting `0`), plus source-artifact immutability, no copied
145
+ screenshot, no path leakage, and no repository-root leakage - alongside
146
+ every pre-existing v0.1-v0.4 packed observe/compare/scroll assertion, still
147
+ passing unchanged on all three platforms.
148
+
149
+ ## v0.6 packed-candidate coverage (released as `0.6.0`)
150
+
151
+ `.github/workflows/pre-release-readiness.yml`'s existing candidate-job steps
152
+ (`npm test`, `npm run test:browser`, `npm run test:security`, `npm run
153
+ build`, `npm run check:docs`) cover the v0.6 bounded-agent-context and
154
+ correlation modules, since they are part of the same `src/`/`tests/unit/`
155
+ tree exercised by `npm test`. `scripts/ci/runPackedObservationSmoke.mjs`
156
+ (the matrix-smoke packed-candidate proof) now also exercises the installed
157
+ package's bounded-agent-context and runtime/static correlation public
158
+ export surface directly - bounded projection, adequacy, omission/
159
+ truncation, deterministic request identity vs. fresh instance identity,
160
+ `correlated`/`ambiguous`/`unavailable` correlation outcomes, v0.5
161
+ scope-inheritance, schema validation, and input immutability - since v0.6
162
+ adds no new CLI command and no disk artifact for the packed candidate to
163
+ observe end-to-end; it is a programmatic export surface only (see
164
+ `docs/CONTRACTS.md`). This closed the readiness gap identified during v0.6
165
+ pre-release validation. The final pre-release candidate
166
+ (`acd067247c447294a611f37f52eab301b6038ab1c6d493ae65e81c2f1279bfd7`) passed
167
+ Windows, Linux, and macOS using that one hash-verified tarball (GitHub
168
+ Actions run `32304059259`) before the `0.6.0` release below.
169
+
170
+ ## v0.7 packed-candidate coverage (released as `0.7.0`)
171
+
172
+ The v0.7 pre-release readiness stage identified the same class of gap
173
+ `scripts/ci/runPackedObservationSmoke.mjs` had already closed for every
174
+ prior version: the packed-candidate smoke exercised `observe`/`compare`/
175
+ `approve-baseline`/`save-change-contract`/`evaluate-contract` and the v0.6
176
+ bounded-agent-context/correlation exports, but none of v0.7's new surface.
177
+ This was closed the same way as every prior version's gap - one narrow,
178
+ additive extension to the existing script, never a second parallel
179
+ framework: the installed candidate's `import-reference --help`/
180
+ `approve-reference --help`/`evaluate-reference-fidelity --help`; a real
181
+ external-reference image imported and approved through the installed CLI
182
+ with explicit regions, three requirement kinds (`region-property`,
183
+ `region-relationship`, and both `exact`/`absolute-reference-px` tolerance
184
+ kinds), and a declared `applicability.viewport`; explicit region↔runtime-
185
+ target bindings reusing the existing v0.5 contract-fixture geometry; a
186
+ genuine fidelity `pass` and a genuine fidelity `fail` (each checked with and
187
+ without `--enforce`, mirroring `evaluate-contract`'s own PASS/FAIL/
188
+ `--enforce` proof pattern); an `observe --state-file` explicit-state
189
+ round-trip; and the installed package's programmatic
190
+ `evaluateReferenceCandidateFidelityFromArtifactRoots`/
191
+ `prepareReferenceCorrection`/`reviewReferenceCorrectionAttempt` exports,
192
+ including a `prepareReferenceCorrection` handoff carrying a bounded-agent-
193
+ context artifact (exercising the v0.7 bounded fidelity projection and its
194
+ v0.6 bounded-agent-context integration together) and both a `pass` and a
195
+ `fail` `reviewReferenceCorrectionAttempt` outcome - all resolved from the
196
+ installed package's own `node_modules`, never the source checkout, and all
197
+ re-verified against a re-hash of the pre-existing source observation
198
+ manifest to confirm none of the new calls mutated it.
199
+
200
+ This was proven cross-platform on the validation branch
201
+ `validation/v0.7-pre-release` at commit
202
+ `b2286bdc9550d70fa1047a1f732968a8eca46a1e`: GitHub Actions run
203
+ [`34054085344`](https://github.com/dailephd/my-frontend-observer/actions/runs/34054085344)
204
+ passed completely - the candidate job (Linux, Node 24) and all three
205
+ `matrix-smoke` lanes (`windows-latest` Node v24.19.0, `ubuntu-latest` Node
206
+ v24.20.0, `macos-latest` Node v24.20.0) - using one shared **pre-version-
207
+ bump implementation candidate** tarball, `my-frontend-observer-0.6.0.tgz`
208
+ (package version still `0.6.0` at that point in the readiness stage - the
209
+ version bump to `0.7.0` happened only afterward, during release
210
+ preparation; this tarball itself was never version `0.7.0`), SHA-256
211
+ `0347b1f3cfd5d311e13b405c0c2fbc2f507e250cb63223d58b4d2d31df029414`,
212
+ independently hash-verified by each of the three matrix lanes before any of
213
+ them ran the smoke (no lane built its own tarball). Every lane's
214
+ `smoke-summary-<os>.json` reported the same v0.7 evidence described above,
215
+ alongside every pre-existing v0.1-v0.6 packed assertion, still passing
216
+ unchanged on all three platforms - see
217
+ `docs/reports/v0.7-pre-release-readiness.md` for the complete readiness
218
+ report.
219
+
220
+ ## v0.8.1 packaging implications (released as `0.8.1`; formal cross-platform readiness passed)
221
+
222
+ v0.8.1 is released as `@dailephd/my-frontend-observer@0.8.1` - see
223
+ `docs/CURRENT_STATE.md`. `.github/workflows/pre-release-readiness.yml`'s
224
+ matrix now covers it: alongside the pre-existing packed-observation smoke,
225
+ each platform runner also installs the exact candidate tarball and runs
226
+ `scripts/ci/runPackedViewerSmoke.mjs`, proving in real Chromium that the
227
+ installed `view` command binds to loopback only, indexes real evidence,
228
+ renders the SVG target overlay and a reference view, enforces its read-only
229
+ API, rejects path traversal, registers its service worker, never caches
230
+ `/api/` responses as authoritative, and never presents stale evidence once
231
+ the server is stopped.
232
+
233
+ `npm run build` builds both the Node/CLI output (`tsc -p tsconfig.json`) and
234
+ the browser-side viewer application plus its PWA assets (`vite build
235
+ --config viewer/vite.config.ts` into `dist/viewer` - service worker,
236
+ manifest, precached app shell); the existing `files` package allowlist
237
+ (`dist`, `README.md`, `CHANGELOG.md`, `docs`) already includes
238
+ `dist/viewer`, so no separate publish boundary was created for the viewer;
239
+ the existing CLI/library commands (`observe` through
240
+ `evaluate-reference-fidelity`) remain packaged and unchanged; and package
241
+ version stays independent of every schema version, as for every prior
242
+ release.
243
+
244
+ Formal Windows/Linux/macOS cross-platform validation - the same exact
245
+ hash-verified candidate tarball on every platform - and a formal security
246
+ audit (which found and fixed one real finding: a symlinked-media
247
+ evidence-root escape in the viewer's media route) both passed before this
248
+ release - see
249
+ `docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md`
250
+ for the complete readiness report.