@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
@@ -0,0 +1,641 @@
1
+ # Roadmap
2
+
3
+ v0.8.1 status: released as v0.8.1 and published to npm as
4
+ `@dailephd/my-frontend-observer@0.8.1`. v0.9 and v0.10 remain future work.
5
+
6
+ This is a version-level specification, not an implementation checklist.
7
+ Concrete steps and sequencing are designed only when a version begins, after
8
+ the planner reads that version, inspects current repository state, and performs
9
+ needed my-dev-kit retrieval and architecture work.
10
+
11
+ ## v0.1 — Runtime Observation Foundation
12
+
13
+ Current status: released as `0.1.0`, published to npm and validated as a
14
+ packed npm tarball in a clean consumer environment on Windows, Linux, and
15
+ macOS. See `docs/CURRENT_STATE.md` for the implementation summary.
16
+
17
+ Objective and user problem: establish trustworthy evidence of what a local
18
+ frontend actually rendered, rather than relying on source inference.
19
+
20
+ Required capabilities: Node.js 24+ TypeScript CLI; explicit loopback URL,
21
+ viewport, CSS targets, and output; real Playwright Chromium capture; viewport
22
+ PNG; bounded page/target evidence; versioned portable artifact; provenance,
23
+ diagnostics, completion state, and explicit available/unavailable/not-applicable/
24
+ partial semantics.
25
+
26
+ Constraints and contracts: one reusable application service behind a thin CLI,
27
+ one Chromium adapter, external non-destructive targets, loopback-only request/
28
+ redirect/subresource policy, no full DOM/style dump, observer-owned schema
29
+ `1.0.0` independent of package version. Direct browser, computed-browser, and
30
+ derived evidence remain distinguishable.
31
+
32
+ Dependencies/ecosystem/compatibility: greenfield foundation only; no runtime
33
+ dependency or modification of my-dev-kit, orchestrator, or lab. Windows and
34
+ portable structured evidence matter; screenshot bytes need not match across OS.
35
+
36
+ Exclusions: semantic identity expansion, scrolling actions, relationships,
37
+ comparison, contracts, LLM packets, viewer, annotation, integrations, remote
38
+ browsing, credentials, cloud browsers, additional engines, databases, Docker,
39
+ plugins, and static analysis.
40
+
41
+ Acceptance: deterministic loopback fixture drives real Chromium; screenshot is
42
+ a valid nonempty PNG; page and explicit targets expose required measurements;
43
+ missing targets are honest; all validation commands pass. Planning must confirm
44
+ capture-readiness semantics, exact diagnostics, public compatibility boundaries,
45
+ and the concrete dependency/version set before implementation.
46
+
47
+ ## v0.2 — Stable Semantic Targets and Region Identity
48
+
49
+ Current status: released as `0.2.0`, published to npm and validated as a
50
+ packed npm tarball in a clean consumer environment on Windows, Linux, and
51
+ macOS. See `docs/CURRENT_STATE.md` for the implementation summary.
52
+
53
+ Objective/problem: let humans and consumers refer reliably to conceptual
54
+ rendered regions across observations without brittle selector-only identity.
55
+ Required capabilities include semantic HTML, accessibility role/name, stable
56
+ id/data attributes, bounded fallbacks, resolution confidence/status, ambiguity,
57
+ and missing evidence. Runtime identity remains observer-owned and distinct from
58
+ source symbols. Depends on v0.1 artifacts and adapter boundaries; schema changes
59
+ must be additive where compatible. No scrolling, comparison, contracts, source
60
+ ownership, or viewer. Acceptance requires repeatable semantic resolution across
61
+ fixtures and explicit ambiguity. Planning must decide selector precedence and
62
+ identity persistence rules from current evidence.
63
+
64
+ ## v0.3 — Runtime Scrolling, Overflow, and Visibility Behavior
65
+
66
+ Current status: released as `0.3.0`, published to npm and validated as a
67
+ packed npm tarball in a clean consumer environment on Windows, Linux, and
68
+ macOS (observation schema `1.2.0`). See `docs/CURRENT_STATE.md` for the
69
+ implementation summary.
70
+
71
+ Objective/problem: show which container actually scrolls and what becomes
72
+ visible, clipped, or overflowing after controlled actions. Required capabilities
73
+ are bounded action scenarios, before/after window and target scroll positions,
74
+ viewport intersection/visibility, document/element overflow, and supported
75
+ derived scroll-owner interpretation. Depends on stable targets. Browser actions
76
+ are authoritative; derived claims cite facts. No general interaction recorder,
77
+ comparison engine, or contract semantics. Acceptance requires real-browser
78
+ fixtures for document and nested scroll owners. Planning must settle action
79
+ syntax, stabilization, and visibility thresholds.
80
+
81
+ ## v0.4 — Layout Relationships, Dependency Evidence, and Before/After Comparison
82
+
83
+ Current status: released as `0.4.0`, published to npm and validated as a
84
+ packed npm tarball in a clean consumer environment on Windows, Linux, and
85
+ macOS. See `docs/CURRENT_STATE.md` for the implementation summary.
86
+
87
+ Objective/problem: explain whole-layout consequences rather than isolated
88
+ numbers. Required capabilities are containment/order/overlap/fit relationships,
89
+ comparable observation identity, before/after differences, appearance and
90
+ disappearance, geometry/visibility/overflow/relationship changes, screenshot
91
+ references, and explicit expected dependency evidence. Depends on v0.1–v0.3.
92
+ One canonical relationship and comparison layer serves all consumers;
93
+ co-change does not prove causation; causation requires explicit intent, a
94
+ contract, or another supported dependency source. No executable contracts or UI. Acceptance
95
+ requires bounded deterministic comparison with underlying evidence references.
96
+ Planning must settle comparability and tolerance semantics.
97
+
98
+ ## v0.5 — Executable Frontend Contracts and Explicit Change Scope
99
+
100
+ Current status: released as `0.5.0`, published to npm and validated as a
101
+ packed npm tarball in a clean consumer environment on Windows, Linux, and
102
+ macOS (observation schema `1.2.0`, comparison schema `1.0.0`, frontend
103
+ contract schema `1.0.0`, evaluation artifact schema `1.0.0`). See
104
+ `docs/CURRENT_STATE.md` for the implementation summary.
105
+
106
+ Objective/problem: prevent a requested local fix from silently breaking an
107
+ approved region or invariant. Required capabilities are baseline invariants,
108
+ requested/expected-dependent/protected/preserved classifications, explicit
109
+ unexpected-change results, responsive tolerances, one canonical evaluation
110
+ engine, actionable verdicts, and baseline supersession history. Both persistent
111
+ baseline contracts and per-change contracts are required. Depends on v0.4
112
+ comparison and explicit intent evidence.
113
+ Existing approved contracts remain active unless the user supersedes them.
114
+ No LLM packaging, viewer, or annotation UI. Acceptance requires fixtures where
115
+ the requested change passes but a protected property fails. Planning must settle
116
+ contract storage, approval, tolerance, and conflict resolution.
117
+
118
+ ## v0.6 — Bounded Agent Context and Native my-dev-kit Ecosystem Integration
119
+
120
+ Current status: released as `0.6.0`, from the `canonicalization/v0.6`
121
+ lineage. See `docs/CURRENT_STATE.md` for the implementation summary.
122
+
123
+ Objective/problem: make the observer useful to an actual coding-agent workflow
124
+ by answering the smallest trustworthy runtime-plus-static context question. A
125
+ coding agent needs task-relevant rendered facts, change-scope and contract
126
+ evidence, and relevant bounded source evidence without consuming the full
127
+ repository or an unbounded browser dump.
128
+
129
+ Required capabilities: bounded runtime projections containing page/viewport
130
+ identity, stable targets, important geometry and runtime behavior,
131
+ relationships, before/after differences, contract results,
132
+ requested/dependent/protected/preserved scope, diagnostics, artifact/screenshot
133
+ references, provenance, and truncation/omission metadata; adequacy reporting;
134
+ explicit runtime/static correlation to current `my-dev-kit` identities and
135
+ bounded retrieval where reliable; observer correlation/export boundary;
136
+ orchestrator bounded runtime-evidence consumption; and exact lab
137
+ readers/fixtures/evaluation needed to prove compatibility.
138
+
139
+ Architectural/evidence constraints: runtime identity never silently becomes
140
+ source ownership; ambiguity and competing candidates remain explicit. The
141
+ observer owns runtime evidence, bounded runtime projection, and
142
+ correlation/export. `my-dev-kit` owns static indexing, architecture,
143
+ dependencies, probable ownership evidence, and retrieval. The orchestrator
144
+ coordinates bounded runtime plus static evidence but does not run the browser,
145
+ redefine observer semantics, embed huge raw artifacts, or duplicate retrieval.
146
+ The lab evaluates exact supported contracts and is not required for every
147
+ normal frontend edit. Do not introduce a shared schema package without a
148
+ demonstrated ownership/release need.
149
+
150
+ Dependency direction:
151
+
152
+ ```text
153
+ freeze bounded-agent-context and integration contract
154
+ → determine whether my-dev-kit requires a static-side change
155
+ → implement observer bounded projection/correlation/export
156
+ → implement orchestrator bounded runtime-evidence consumption
157
+ → add lab exact readers/fixtures/evaluation needed for compatibility
158
+ → run individual repository readiness
159
+ → run coordinated exact-version validation
160
+ ```
161
+
162
+ This is cross-repository dependency direction, not an implementation batch
163
+ plan. Modify `my-dev-kit` only if current identities/retrieval lack a generic
164
+ static-side capability actually required by the frozen contract.
165
+
166
+ Dependencies/ecosystem/compatibility: depends on v0.1–v0.5 stable observation,
167
+ identity, behavior, comparison, relationship, contract, and change-scope
168
+ semantics. Potentially affected repositories are observer, orchestrator, lab,
169
+ and only when proven necessary, `my-dev-kit`. Pin package/candidate identities,
170
+ schema/artifact/context versions, consumer expectations, and fixture hashes;
171
+ validate downstream consumers against intended candidates rather than stale
172
+ published packages.
173
+
174
+ Exclusions: viewer, visual annotation, source editing, a new static analyzer,
175
+ browser execution in the orchestrator, broad lab product work, external LLM
176
+ APIs, full DOM/style/accessibility dumps, unrelated observations, and embedded
177
+ heavy assets where references suffice.
178
+
179
+ Acceptance: a coding agent or LLM receives bounded traceable runtime problem
180
+ evidence plus change scope/contracts plus relevant static/source evidence;
181
+ adequacy/omission/truncation and correlation ambiguity remain visible; producer
182
+ responsibilities stay distinct; exact lab consumers pass; each affected
183
+ repository passes readiness; and coordinated exact-version validation passes.
184
+ Version-start planning must decide projection profiles, redaction/text limits,
185
+ correlation ownership/evidence, the orchestrator evidence-kind representation,
186
+ whether `my-dev-kit` changes are necessary, and whether any shared contract
187
+ package is justified.
188
+
189
+ ## v0.7 — End-to-End Coding-Agent Frontend Change Review
190
+
191
+ Current status: released as `0.7.0`. See `docs/CURRENT_STATE.md`,
192
+ `docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md`
193
+ for the completeness audit, and
194
+ `docs/reports/v0.7-pre-release-readiness.md` for the cross-platform
195
+ readiness validation that preceded release. The required capabilities,
196
+ constraints, and acceptance criteria below are preserved as originally
197
+ planned and describe what the implementation actually satisfies.
198
+
199
+ Objective/problem: prove the core practical outcome before graphical work: a
200
+ text/config-driven coding-agent correction loop that cannot call a local
201
+ requested mutation successful while protected behavior regresses, and establish
202
+ the non-graphical evidence foundation required when the desired frontend is
203
+ supplied as an external visual reference rather than an earlier runtime state.
204
+
205
+ Required capabilities:
206
+
207
+ ```text
208
+ capture approved baseline
209
+ → preserve baseline contracts
210
+ → human expresses requested change in text/config
211
+ and may supply an external visual reference
212
+ → construct requested/dependent/protected/preserved scope
213
+ → when a reference is supplied, establish explicit reference identity,
214
+ applicable viewport/theme/application-state identity, reference regions,
215
+ authored design intent, tolerances, and reference-to-runtime target binding
216
+ → generate bounded runtime evidence
217
+ → evaluate reference design vs candidate where applicable
218
+ → obtain relevant bounded static evidence
219
+ → assemble coding-agent context
220
+ → external coding agent modifies target source
221
+ → observer captures new state
222
+ → compare before/after
223
+ → reevaluate reference design vs candidate where applicable
224
+ → evaluate requested changes
225
+ → evaluate expected dependent changes
226
+ → verify protected properties
227
+ → rerun baseline contracts
228
+ → PASS or actionable regression/fidelity failure
229
+ ```
230
+
231
+ The external reference is evidence, not source code and not an earlier
232
+ `ObservationArtifact`. Reference design vs candidate is therefore a distinct
233
+ comparison category from before vs after and contract vs candidate. The first
234
+ reference model must preserve deterministic reference identity and provenance,
235
+ image dimensions/format, explicit bounded reference regions, coordinate
236
+ semantics, reusable layout relationships where appropriate, authored design
237
+ requirements, tolerances, applicability state, approval/supersession history,
238
+ and explicit reference-region to runtime-target bindings whose status may be
239
+ explicit, ambiguous, unavailable, or otherwise conservatively represented.
240
+ Exact artifact/type names are selected during version-start architecture work;
241
+ this roadmap does not freeze a schema name.
242
+
243
+ Reference applicability must be evaluated before fidelity differences are
244
+ interpreted. A dark-theme active-state reference compared with a light-theme
245
+ idle candidate must become an explicit incompatible/incomparable result rather
246
+ than a meaningless list of visual failures. Planning must extend or reuse the
247
+ canonical comparability/state-identity model instead of creating a
248
+ reference-only state system.
249
+
250
+ Reference-derived executable intent must feed the existing v0.5 canonical
251
+ requested/expected-dependent/protected/preserved contract semantics. Visible
252
+ reference details may remain informational or unassessed until a human or
253
+ explicit configuration promotes them into requirements. Do not create a second
254
+ reference-only PASS/FAIL taxonomy.
255
+
256
+ Structured evidence is primary: geometry, spacing, selected style evidence,
257
+ relationships, applicability, and contract intent must remain inspectable and
258
+ traceable. Bounded screenshot-region or asset-similarity evidence may supplement
259
+ structured evidence where reliable, but pixel/image similarity alone must not
260
+ determine success. Text rendering, antialiasing, glow, shadows, gradients, and
261
+ platform/font differences require property-specific or evidence-specific
262
+ tolerance semantics rather than one global pixel-perfect threshold.
263
+
264
+ The coding-agent handoff must be actionable and bounded. Instead of only saying
265
+ "match the reference," it should be able to report the relevant target,
266
+ reference measurement, candidate measurement, delta, failed relationship or
267
+ style requirement, active protected/preserved constraints, provenance, and
268
+ bounded static/source context. Heavy image bytes and unrelated regions must not
269
+ be embedded into every agent packet when references suffice.
270
+
271
+ Unexpected changes remain explicit. Existing approved baseline contracts and
272
+ the new per-change contract both remain active unless explicitly superseded. A
273
+ reference-fidelity pass never authorizes a protected regression or silently
274
+ replaces an approved baseline/reference.
275
+
276
+ Architectural/evidence constraints: the observer does not edit target source; an
277
+ external coding agent or implementation tool does. All runtime, reference,
278
+ static, workflow, implementation, and verification identities remain separate
279
+ and traceable to their owners. One canonical observer, relationship,
280
+ comparison/evaluation, contract, change-scope, reference, and bounded-context
281
+ model must serve later UI consumers. Reference regions are not runtime targets,
282
+ and neither identity silently becomes source ownership.
283
+
284
+ Dependencies/ecosystem/compatibility: depends on v0.6 bounded integrated agent
285
+ context and v0.1–v0.5 evidence/contract foundations. Use compatible exact
286
+ observer, `my-dev-kit`, orchestrator, and lab contract versions established by
287
+ v0.6; the lab remains optional for ordinary edits once compatibility is proven.
288
+ The new reference evidence must be project-local and portable, with heavy image
289
+ content referenced rather than duplicated throughout downstream artifacts.
290
+
291
+ Exclusions: graphical inspection as a prerequisite, graphical annotation
292
+ authoring, observer source editing, autonomous approval, hidden baseline or
293
+ reference supersession, automatic image-to-code generation, raster-to-HTML or
294
+ raster-to-SVG reconstruction, a general computer-vision framework, a Figma or
295
+ Canva replacement, and pixel-diff-only acceptance.
296
+
297
+ Acceptance: controlled successful and failing changes complete end-to-end. The
298
+ required baseline failure case has a requested change succeed while a protected
299
+ property or preserved invariant fails, producing overall failure and actionable
300
+ evidence. A reference-driven proof case additionally supplies an approved
301
+ external reference, binds selected reference regions to runtime targets,
302
+ produces measurable structured reference/candidate mismatches, sends only
303
+ relevant correction evidence plus bounded static context to the external coding
304
+ agent, rerenders, and reevaluates. A reference-fidelity success must still fail
305
+ overall when an active baseline/per-change contract fails. Version-start
306
+ planning must decide the text/config request format, reference artifact and
307
+ lifecycle contract, supported image formats and size bounds, coordinate model,
308
+ region/relationship representation, applicability/theme/application-state
309
+ identity, tolerance and selected style-evidence model, optional image-similarity
310
+ boundaries, coding-agent handoff boundary, controlled target/change mechanism,
311
+ approval/baseline/reference history, failure reporting, and exact workflow entry
312
+ points.
313
+
314
+ ## v0.8 — Interactive Local Observation Viewer
315
+
316
+ Current status: released as `v0.8.0` (all eight implementation batches
317
+ passed, followed by the hardened documentation/implementation-completeness
318
+ audit and formal cross-platform/security pre-release readiness - see
319
+ `docs/CURRENT_STATE.md`). The required capabilities, constraints, and
320
+ acceptance criteria below are preserved as originally planned and describe
321
+ what the implementation actually satisfies.
322
+
323
+ Objective/problem: let developers inspect and understand the same canonical
324
+ evidence already used by the operational coding-agent workflow without opening
325
+ raw artifact files manually, including external design references and their
326
+ candidate-fidelity evidence when present.
327
+
328
+ Required capabilities: local artifact/context/reference readers; screenshot and
329
+ stable target inspection; external-reference image and reference-region
330
+ inspection; geometry, semantics, scrolling/overflow, visibility, relationships,
331
+ and before/after views; reference/candidate views; diagnostics and honest
332
+ evidence states; requested/dependent/protected/preserved/unexpected
333
+ classifications; baseline and per-change contract results; reference
334
+ applicability and fidelity results; reference-region/runtime-target binding and
335
+ ambiguity; source-correlation evidence with uncertainty; and navigation between
336
+ relevant raw evidence and bounded agent-context references.
337
+
338
+ The viewer should support a clear reference/candidate inspection mode with, as
339
+ appropriate, side-by-side images, overlays, synchronized region selection and
340
+ zoom, reference and candidate measurements, difference highlighting,
341
+ provenance, binding status, and contract/reference evaluation results. It must
342
+ show unsupported, partial, unavailable, derived, ambiguous, and incomparable
343
+ states honestly rather than converting them into apparent fidelity scores.
344
+
345
+ Architectural/evidence constraints: the viewer consumes existing observation,
346
+ relationship, comparison, contract, change-scope, correlation, bounded-context,
347
+ and v0.7 reference/evaluation engines/contracts. It must not create a second
348
+ observer, relationship engine, comparison engine, contract engine, reference
349
+ model, reference-evaluation engine, correlation implementation, or context
350
+ builder. CLI/programmatic paths remain first-class, viewer state does not mutate
351
+ targets, and merely opening/importing a reference in the viewer does not
352
+ silently approve or supersede it.
353
+
354
+ Dependencies/ecosystem/compatibility: depends on the proven v0.7 workflow and
355
+ stable v0.1–v0.7 artifacts/contracts. It may display ecosystem correlation but
356
+ does not redefine it. Viewer readers must declare supported artifact/context/
357
+ reference versions and show unsupported, missing, partial, derived, ambiguous,
358
+ and incomparable evidence honestly.
359
+
360
+ Exclusions: annotation authoring, source editing, a second workflow engine,
361
+ automatic design generation, cloud hosting, and making the viewer mandatory for
362
+ observation or coding-agent review.
363
+
364
+ Acceptance: a developer can inspect screenshots, targets, runtime behavior,
365
+ relationships, changes, contracts, diagnostics, change scope, correlation, and
366
+ reference/candidate evidence through the UI, and the displayed evidence is
367
+ demonstrably the same canonical evidence used by CLI/programmatic and
368
+ coding-agent workflows. A developer can select a reference region and see the
369
+ bound runtime target and measured mismatch where available without the viewer
370
+ recomputing a second result.
371
+
372
+ Version-start planning decisions are now resolved for v0.8:
373
+
374
+ - UI: React + TypeScript + Vite;
375
+ - application boundary: normal browser + Node-backed local server + installable
376
+ Progressive Web App using the same viewer application;
377
+ - reader architecture: existing canonical readers feed an ephemeral viewer
378
+ adapter/projection rather than a new persisted viewer artifact;
379
+ - reference/candidate display: side-by-side by default with independently
380
+ toggleable structured overlays;
381
+ - geometry rendering: SVG using each source artifact/image's original coordinate
382
+ domain;
383
+ - interaction: explicit-binding cross-selection, independent zoom/pan, and
384
+ synchronized/locked viewing only when existing compatibility evidence permits
385
+ it;
386
+ - loading: metadata/index first, with full artifacts and images loaded on demand.
387
+
388
+ The frozen concrete batch plan and implementation sequencing live in
389
+ `docs/plans/v0.8-implementation-plan.md`; this roadmap intentionally does not
390
+ copy those batches.
391
+
392
+ ## v0.8.1 — Project Workflow CLI and Human-Readable Evidence Aliases
393
+
394
+ Current status: released as `v0.8.1` and published to npm as
395
+ `@dailephd/my-frontend-observer@0.8.1`. The frozen
396
+ concrete implementation plan is
397
+ `docs/plans/v0.8.1-cli-usability-patch-plan.md`.
398
+
399
+ Objective/problem: preserve the canonical v0.1-v0.8 evidence engines while
400
+ removing artifact-plumbing friction from ordinary human and coding-agent use.
401
+ The released low-level CLI still requires users to repeat observation
402
+ configuration, choose output paths, pass exact artifact roots between commands,
403
+ and may expose long immutable artifact identifiers during routine navigation.
404
+ Those identities remain valuable provenance, but they should not be the normal
405
+ workflow interface.
406
+
407
+ Required capabilities: project-local versioned configuration; upward project
408
+ discovery; managed project-local Observer state; a versioned alias catalog that
409
+ maps human-readable names to canonical immutable artifacts; `init` for one-time
410
+ project configuration; `capture <name>` for project-configured observation;
411
+ `check [<baseline>]` for high-level capture plus canonical comparison and
412
+ applicable contract/reference evaluation; bounded `check --json` output for
413
+ coding agents; project-aware `view` without a required `--root`; alias-first
414
+ viewer navigation with canonical IDs retained as provenance; and reorganized
415
+ help that distinguishes the common workflow from advanced artifact-level
416
+ commands.
417
+
418
+ The normal workflow should become:
419
+
420
+ ```text
421
+ my-frontend-observer init
422
+ my-frontend-observer capture baseline
423
+ my-frontend-observer check baseline
424
+ my-frontend-observer view
425
+ ```
426
+
427
+ Existing low-level commands remain supported unchanged for automation,
428
+ compatibility, debugging, and advanced workflows:
429
+
430
+ ```text
431
+ observe
432
+ compare
433
+ approve-baseline
434
+ save-change-contract
435
+ evaluate-contract
436
+ import-reference
437
+ approve-reference
438
+ evaluate-reference-fidelity
439
+ ```
440
+
441
+ Acceptance semantics: `check` may report PASS only when every configured
442
+ executable acceptance dimension required by the project passes. It reports FAIL
443
+ when a configured executable criterion fails, REVIEW_REQUIRED when useful
444
+ comparison evidence exists but executable criteria are insufficient to declare
445
+ success or failure, and BLOCKED when required evidence cannot be obtained or
446
+ evaluated reliably. A raw comparison or apparent lack of differences must never
447
+ be promoted to PASS by itself. Reference-fidelity PASS must not override an
448
+ active frontend-contract FAIL.
449
+
450
+ Architectural/evidence constraints: this patch is a thin project/workflow layer
451
+ over the existing canonical observation, comparison, contract, reference,
452
+ binding, compatibility, fidelity, context, and viewer owners. Project
453
+ configuration and aliases are workflow metadata, not replacement artifact
454
+ identities. Alias replacement never deletes canonical evidence or silently
455
+ approves/supersedes a baseline or reference. Existing artifact/evaluation schema
456
+ versions stay unchanged. Existing CLI/programmatic paths remain first-class and
457
+ do not require project initialization.
458
+
459
+ Dependencies/ecosystem/compatibility: depends on released v0.8.0 and must remain
460
+ compatible with the existing v0.7 coding-agent/reference workflow. The patch is
461
+ specifically designed so v0.9 annotation can extend the existing viewer without
462
+ another top-level workflow command architecture, while v0.10 coding-agent
463
+ correction can repeatedly consume `check <baseline> --json` after external
464
+ source edits.
465
+
466
+ Exclusions: annotation authoring, source editing, automatic frontend correction,
467
+ coding-agent orchestration inside Observer, automatic binding, image-to-code
468
+ generation, deleting historical canonical evidence, implicit baseline/reference
469
+ approval or supersession, new evidence/evaluation engines, cloud hosting,
470
+ authentication, collaboration, and databases.
471
+
472
+ Acceptance: a new user can initialize a project once, capture a named baseline,
473
+ change the frontend, run one high-level check, and inspect the result without
474
+ typing an output path, evidence root, or canonical artifact hash. A coding agent
475
+ can consume the same acceptance operation through bounded JSON. Real Chromium
476
+ and a clean packed-consumer installation must prove the workflow, and all
477
+ existing low-level commands must remain backward compatible.
478
+
479
+ ## v0.9 — Human Visual Annotation and Design-Intent Capture
480
+
481
+ Objective/problem: add structured visual human intent to the already working
482
+ v0.7 coding-agent workflow through the v0.8 viewer without inventing a separate
483
+ change-semantics system, and allow that intent to be authored against either a
484
+ runtime observation or an external visual reference. The v0.8.1 project
485
+ workflow/alias layer should be reused for ordinary project discovery and
486
+ human-readable selection rather than replaced by annotation-specific command
487
+ plumbing.
488
+
489
+ Required capabilities: a bounded annotation set chosen during planning, such as
490
+ point/select, rectangle/area, arrow, line/boundary, textual note, preserve,
491
+ resize, move, remove, and inspect; structured annotation artifacts preserving
492
+ their annotation context (runtime observation or external reference), source
493
+ observation/screenshot or reference identity, geometry, type, text, provenance,
494
+ and reliable target/relationship/reference-region association; save/reload;
495
+ annotated image references; and explicit interpretation/confirmation state.
496
+
497
+ Runtime-screenshot annotations and external-reference annotations are separate
498
+ coordinate/identity domains. The annotation model must never assume that a
499
+ reference-region identity is a runtime-target identity. Coordinate transforms,
500
+ selection, overlays, persistence, and provenance must preserve which source
501
+ image the annotation belongs to.
502
+
503
+ Canonical intent flow:
504
+
505
+ ```text
506
+ runtime screenshot annotation OR external reference annotation
507
+ → target/relationship/reference-region binding
508
+ → candidate requested/dependent/protected/preserved intent
509
+ → explicit confirmation/interpretation where necessary
510
+ → canonical change contract
511
+ ```
512
+
513
+ For external references, annotation may also define or refine meaningful
514
+ reference regions and relationships, mark an asset-sensitive region, identify
515
+ which visual details are informational, and promote selected geometry/style/
516
+ relationship requirements into the canonical contract. A visible pixel never
517
+ becomes a hard requirement merely because it exists in the image.
518
+
519
+ Architectural/evidence constraints: annotation feeds the existing canonical
520
+ reference, change-scope, contract, bounded-context, and coding-agent workflow. It
521
+ must not create annotation-only or reference-only requested/protected semantics
522
+ or different PASS/FAIL rules. Ambiguous drawings never silently become strong
523
+ requirements. Original raw observations and imported reference images remain
524
+ immutable evidence; annotation and approval/supersession state are separate.
525
+
526
+ Dependencies/ecosystem/compatibility: depends on stable runtime identity,
527
+ reference identity, contracts, v0.7 coding-agent review/reference evaluation,
528
+ v0.8 viewer/coordinate mapping, and v0.8.1 project discovery, human-readable
529
+ aliases, project-aware viewer behavior, and canonical identity resolution
530
+ beneath aliases. Aliases are selection conveniences only. Persisted annotation
531
+ identity must reference the exact canonical observation/reference identity,
532
+ never mutable aliases such as `baseline` or `current`. Structured annotation/context/reference
533
+ versions must be explicit and remain traceable to supported observation,
534
+ screenshot, and external-reference identities.
535
+
536
+ Exclusions: flattening intent into pixels only, bypassing confirmation,
537
+ replacing text/config requests, image-to-code generation, source editing, or
538
+ making annotation mandatory for ordinary coding-agent changes.
539
+
540
+ Acceptance: a user can annotate either an existing observation or an external
541
+ reference in the viewer; annotations survive save/reload; their source context
542
+ remains explicit; target/relationship/reference-region associations remain
543
+ available where reliable; preserve/resize/move/remove/inspect intent can be
544
+ represented where supported; reference regions and selected design requirements
545
+ can be authored without turning every pixel into a contract; ambiguous intent
546
+ requires explicit interpretation or confirmation; and annotations can drive the
547
+ existing coding-agent change-review workflow through the canonical contract and
548
+ reference models. Version-start planning must select the first annotation set,
549
+ coordinate transforms for both source contexts, persistence/versioning,
550
+ interpretation/confirmation workflow, conflicts, region-authoring behavior, and
551
+ annotated-image derivation.
552
+
553
+ ## v0.10 — Full Visual Human–LLM Frontend Change Workflow
554
+
555
+ Objective/problem: complete the visual communication branch by combining the
556
+ already operational coding-agent loop with graphical inspection, external design
557
+ references, structured annotation, and the v0.8.1 project-level acceptance
558
+ surface so ordinary correction iterations do not require direct artifact-path
559
+ plumbing.
560
+
561
+ Two visual entry modes must coexist:
562
+
563
+ ```text
564
+ actual-frontend-driven
565
+ human views actual captured frontend
566
+ → points/draws/annotates requested design change
567
+ ```
568
+
569
+ and:
570
+
571
+ ```text
572
+ reference-driven
573
+ human supplies/selects an approved external visual reference
574
+ → views reference beside the actual captured frontend
575
+ → identifies/annotates relevant reference regions and intent
576
+ → binds confirmed reference intent to stable runtime regions
577
+ ```
578
+
579
+ Both then converge on the same canonical workflow:
580
+
581
+ ```text
582
+ confirmed requested/dependent/protected/preserved scope
583
+ → bounded runtime + relevant reference evidence is produced
584
+ → bounded static evidence is obtained
585
+ → coding-agent context is assembled
586
+ → external coding agent modifies source
587
+ → observer rerenders
588
+ → before/after comparison runs
589
+ → reference design vs candidate evaluation runs when applicable
590
+ → requested/dependent/protected/preserved behavior and baseline contracts run
591
+ → unexpected changes remain explicit
592
+ → viewer shows PASS or actionable failure evidence
593
+ → human approves or requests correction
594
+ → successful state may become the new approved baseline and/or explicitly
595
+ supersede an approved reference according to project policy
596
+ ```
597
+
598
+ The ordinary machine-facing post-edit correction loop must reuse the canonical
599
+ `check <baseline> --json` surface. v0.10 must not reconstruct before/after
600
+ comparison, frontend-contract verdicts, reference fidelity, or workflow
601
+ PASS/FAIL/BLOCKED precedence when v0.8.1 already provides them.
602
+
603
+ Architectural/evidence constraints: a visual request or reference does not
604
+ erase existing baseline contracts. Unless explicitly superseded, existing
605
+ approved contracts plus the new visual/per-change contract must both pass.
606
+ Reference fidelity is an additional evidence/evaluation dimension, not blanket
607
+ authorization for unrelated change. Runtime, reference, static, annotation,
608
+ workflow, implementation, approval, baseline, and supersession evidence remain
609
+ separate and traceable. The observer stays non-mutating; the orchestrator
610
+ coordinates bounded evidence; the lab is not required for every normal edit.
611
+
612
+ A mature result may therefore combine before/after results, reference/candidate
613
+ results, persistent-baseline evaluation, per-change evaluation, and unexpected
614
+ changes. A reference-fidelity pass with a protected or preserved contract
615
+ failure is overall failure. A raw imported image never silently becomes an
616
+ approved reference, and an approved reference never silently supersedes an
617
+ existing baseline or another approved reference.
618
+
619
+ Dependencies/ecosystem/compatibility: depends on all prior versions, especially
620
+ the v0.7 core/reference loop, v0.8 viewer, v0.8.1 project workflow/acceptance
621
+ surface, and v0.9 dual-context annotation intent model. Use exact compatible
622
+ observer/static/orchestrator/context/reference/annotation/viewer contracts and
623
+ retain the four-project responsibility split.
624
+
625
+ Exclusions: replacing the external coding agent with observer source editing,
626
+ visual/reference intent silently overriding baseline contracts, autonomous
627
+ image-to-code generation, automatic raster-to-vector reconstruction, opaque
628
+ AI-only verdicts, untraceable baseline/reference replacement, and making lab
629
+ evaluation part of every edit.
630
+
631
+ Acceptance: demonstrate a successful actual-frontend-driven visual change; a
632
+ successful reference-driven design-replication change; measurable actionable
633
+ reference/candidate failure evidence; a requested visual/reference change that
634
+ introduces a protected-property or preserved-invariant regression; a correction
635
+ cycle; human approval and explicit baseline/reference history; and compatible
636
+ integrated ecosystem evidence. A protected/invariant failure must fail overall
637
+ even when the requested local visual change or reference-fidelity requirement
638
+ succeeds. Version-start planning must settle visual workflow entry points,
639
+ approval identity and authority, reference selection/applicability, baseline and
640
+ reference governance, correction iteration history, artifact retention, and
641
+ cross-version compatibility.