@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,2526 @@
1
+ # my-frontend-observer — Project Milestones
2
+
3
+ ## Purpose
4
+
5
+ This document defines the ordered development milestones for `my-frontend-observer`.
6
+
7
+ `my-frontend-observer` is a separate, local-first runtime/browser evidence producer within the broader `my-dev-kit` ecosystem.
8
+
9
+ Its purpose is to observe what a browser actually renders and convert that runtime frontend state into structured evidence that humans, large language models (LLMs), coding agents, automated regression checks, and later ecosystem consumers can inspect. As the visual workflow matures, it also owns the structured evidence boundary for approved external visual references used to describe desired design intent, without treating those references as runtime observations or source code.
10
+
11
+ The milestone order is intentional.
12
+
13
+ Later capabilities must extend the observation model established by earlier milestones rather than creating parallel browser-control, artifact, comparison, contract, reference, annotation, or integration systems.
14
+
15
+ The project must preserve the core evidence flow:
16
+
17
+ ```text
18
+ browser observation
19
+ → structured runtime evidence
20
+ → relationships and behavior
21
+ → comparison
22
+ → contracts and change scope
23
+ → bounded agent context plus static/runtime integration
24
+ → text/config-driven coding-agent change review
25
+ + external visual-reference evidence foundation
26
+ + reference-vs-candidate structured evaluation
27
+ → human graphical inspection of runtime and reference evidence
28
+ → structured visual annotation on runtime screenshots or external references
29
+ → full visual human–LLM frontend change workflow
30
+ ```
31
+
32
+ The project must not become a source-analysis replacement for `my-dev-kit`, an autonomous image-to-code generator, or a screenshot-cloning system.
33
+
34
+ ## Long-term responsibility model
35
+
36
+ The intended ecosystem responsibility split is:
37
+
38
+ ```text
39
+ my-dev-kit
40
+ → static repository/source evidence
41
+ → files
42
+ → symbols
43
+ → architecture
44
+ → dependencies
45
+ → probable source ownership evidence
46
+ → bounded source retrieval
47
+
48
+ my-frontend-observer
49
+ → rendered browser/runtime evidence
50
+ → screenshots
51
+ → stable rendered-region identities
52
+ → geometry
53
+ → scrolling and overflow
54
+ → visibility
55
+ → layout relationships
56
+ → before/after comparisons
57
+ → runtime contracts
58
+ → external visual-reference evidence
59
+ → reference-region identity and runtime binding
60
+ → reference/candidate structured fidelity evidence
61
+ → human visual intent
62
+
63
+ my-dev-kit-orchestrator
64
+ → workflow coordination
65
+ → bounded evidence consumption
66
+ → implementation and verification flow
67
+
68
+ my-dev-kit-lab
69
+ → compatibility
70
+ → experiments
71
+ → fixtures
72
+ → ecosystem evaluation
73
+ → evidence-quality validation
74
+ ```
75
+
76
+ These responsibilities must remain distinct even when the projects become deeply integrated.
77
+
78
+ Deep integration means explicit contracts, evidence references, adapters, exact readers, and coordinated workflows.
79
+
80
+ It does not mean merging all four projects into one implementation.
81
+
82
+ ## Product development model
83
+
84
+ The project develops through four broad phases.
85
+
86
+ ### Phase A — Runtime evidence foundation
87
+
88
+ ```text
89
+ Milestones 1–3
90
+ ```
91
+
92
+ Establish trustworthy browser observation, stable runtime targets, and runtime behavior evidence.
93
+
94
+ ### Phase B — Safe-change reasoning
95
+
96
+ ```text
97
+ Milestones 4–5
98
+ ```
99
+
100
+ Add comparison, relationship/dependency reasoning, executable contracts, and explicit requested/dependent/protected/preserved/unexpected change scope.
101
+
102
+ ### Phase C — Coding-agent and ecosystem workflow
103
+
104
+ ```text
105
+ Milestones 6–7
106
+ ```
107
+
108
+ Combine bounded runtime and static evidence through explicit ecosystem contracts, then prove a text/config-driven coding-agent change-review workflow before graphical interaction becomes a dependency. Milestone 7 also establishes the non-graphical external-reference artifact/binding/evaluation foundation so the later viewer consumes canonical reference evidence rather than inventing it.
109
+
110
+ ### Phase D — Human visual interaction
111
+
112
+ ```text
113
+ Milestones 8–10
114
+ ```
115
+
116
+ Add graphical inspection of runtime and reference evidence, structured visual annotation in both source contexts, and the complete visual human–LLM frontend change workflow on top of the already proven coding-agent path.
117
+
118
+ ## Milestone 1 — Runtime Observation Foundation
119
+
120
+ ### Objective
121
+
122
+ Establish `my-frontend-observer` as an independently executable runtime-evidence producer and prove the smallest complete browser-observation workflow against a deterministic local target.
123
+
124
+ This milestone establishes the foundational evidence model that every later capability must reuse.
125
+
126
+ ### Required capability
127
+
128
+ The first vertical slice must be able to:
129
+
130
+ 1. launch or connect to Chromium through the selected browser automation mechanism;
131
+ 2. navigate to a supplied local URL;
132
+ 3. apply a supplied viewport width and height;
133
+ 4. accept one or more explicitly configured observation targets;
134
+ 5. capture a screenshot;
135
+ 6. capture required page-level browser evidence;
136
+ 7. capture required target-level rendered evidence;
137
+ 8. write one cohesive versioned observation artifact set;
138
+ 9. return a concise machine-usable and human-understandable success, partial, warning, or failure result.
139
+
140
+ ### Initial public interface
141
+
142
+ The initial public interface should be command-line first.
143
+
144
+ It should accept at minimum:
145
+
146
+ ```text
147
+ target URL
148
+ viewport width
149
+ viewport height
150
+ observation targets
151
+ output location
152
+ ```
153
+
154
+ and produce:
155
+
156
+ ```text
157
+ screenshot
158
+ structured page evidence
159
+ structured target evidence
160
+ versioned observation artifact
161
+ concise execution result
162
+ ```
163
+
164
+ The command-line interface must not own browser-control logic directly.
165
+
166
+ The observation engine must remain reusable independently of command-line presentation.
167
+
168
+ ### Minimum page evidence
169
+
170
+ Capture at least:
171
+
172
+ ```text
173
+ requested URL
174
+ final URL
175
+ document title
176
+
177
+ viewport width
178
+ viewport height
179
+ device pixel ratio where available
180
+
181
+ document width
182
+ document height
183
+ document scroll width
184
+ document scroll height
185
+ document client width
186
+ document client height
187
+
188
+ window scroll X
189
+ window scroll Y
190
+ ```
191
+
192
+ ### Minimum target evidence
193
+
194
+ For each explicitly observed target, capture at least:
195
+
196
+ ```text
197
+ stable observer target identifier
198
+ selection method
199
+ selection result/status
200
+ tag
201
+
202
+ semantic role when available
203
+ accessible name when available
204
+
205
+ x
206
+ y
207
+ width
208
+ height
209
+ right
210
+ bottom
211
+
212
+ visibility
213
+ display
214
+ position
215
+ overflow-x
216
+ overflow-y
217
+
218
+ scroll width
219
+ scroll height
220
+ client width
221
+ client height
222
+ scroll top
223
+ scroll left where applicable
224
+ ```
225
+
226
+ ### Observation artifact foundation
227
+
228
+ The first milestone must establish an observer-owned artifact contract.
229
+
230
+ The exact schema and filenames must be decided during architecture/schema design, but the artifact model must include:
231
+
232
+ ```text
233
+ artifact kind
234
+ schema version
235
+ observation identity
236
+ producer/package version
237
+ browser identity
238
+ request/configuration identity
239
+ provenance
240
+ page evidence
241
+ target evidence
242
+ screenshot reference
243
+ completion state
244
+ diagnostics
245
+ limits and omissions
246
+ artifact references
247
+ ```
248
+
249
+ Artifact paths should be relative to the observation root where practical.
250
+
251
+ The artifact model must distinguish:
252
+
253
+ ```text
254
+ direct browser observation
255
+ derived interpretation
256
+ unavailable evidence
257
+ not-applicable evidence
258
+ partial evidence
259
+ ```
260
+
261
+ Package version and observation schema version must remain separate concepts.
262
+
263
+ ### Evidence boundedness
264
+
265
+ The first version must not collect an unrestricted browser dump.
266
+
267
+ Observation must be explicitly scoped.
268
+
269
+ Do not capture by default:
270
+
271
+ - the entire raw Document Object Model;
272
+ - every computed style property;
273
+ - a complete accessibility tree;
274
+ - arbitrary numbers of targets;
275
+ - redundant browser evidence.
276
+
277
+ When evidence is omitted or truncated because of a limit, the artifact must make that visible.
278
+
279
+ ### Completion semantics
280
+
281
+ The system must distinguish:
282
+
283
+ ```text
284
+ complete observation
285
+ partial observation
286
+ observation with warnings
287
+ invalid request
288
+ fatal observation failure
289
+ ```
290
+
291
+ Missing required evidence must not silently appear as a valid zero, false, empty string, or successful result.
292
+
293
+ ### Diagnostics
294
+
295
+ Establish a small stable diagnostic model for cases such as:
296
+
297
+ - invalid request;
298
+ - unsupported configuration;
299
+ - navigation failure;
300
+ - target missing;
301
+ - target ambiguous;
302
+ - target hidden or unavailable;
303
+ - browser evidence unavailable;
304
+ - evidence truncated;
305
+ - artifact write failure;
306
+ - browser/runtime failure.
307
+
308
+ Diagnostic ordering should be deterministic where practical.
309
+
310
+ ### Browser and network safety
311
+
312
+ Before broad navigation support is added, define the browser/network safety boundary.
313
+
314
+ The initial milestone should remain conservative and local-first.
315
+
316
+ The design must explicitly address, as appropriate:
317
+
318
+ - allowed URL schemes;
319
+ - local versus remote targets;
320
+ - redirects;
321
+ - timeouts;
322
+ - certificate failure behavior;
323
+ - downloads;
324
+ - popups;
325
+ - browser permissions;
326
+ - unexpected navigation;
327
+ - sensitive rendered data;
328
+ - secret-bearing URLs or output;
329
+ - browser-process cleanup.
330
+
331
+ ### Deterministic fixture requirement
332
+
333
+ Create deterministic local fixture content for development and browser-level automated tests.
334
+
335
+ The first fixture should contain enough structure to observe at least:
336
+
337
+ ```text
338
+ header
339
+ navigation
340
+ main/workspace
341
+ footer
342
+ ```
343
+
344
+ The fixture exists to validate the observer, not to imitate a production product.
345
+
346
+ ### Architecture requirements
347
+
348
+ The first milestone must establish clean ownership boundaries for at least:
349
+
350
+ ```text
351
+ command-line interface
352
+ observation engine/application service
353
+ browser adapter
354
+ observation domain/schema
355
+ target/selector configuration
356
+ artifact writer
357
+ fixture/test infrastructure
358
+ ```
359
+
360
+ Do not put browser automation directly inside future React presentation components.
361
+
362
+ Do not create speculative plugin systems, event buses, generic dependency containers, or multi-browser registries before they are justified.
363
+
364
+ ### Ecosystem requirements
365
+
366
+ Milestone 1 must establish the observer as a future ecosystem evidence producer without creating cross-project runtime coupling.
367
+
368
+ The observer must not yet require:
369
+
370
+ ```text
371
+ my-dev-kit
372
+ my-dev-kit-orchestrator
373
+ my-dev-kit-lab
374
+ ```
375
+
376
+ as runtime dependencies.
377
+
378
+ The first artifact must nevertheless be designed so that future exact readers/adapters can consume it without scraping console text or depending on internal browser-library objects.
379
+
380
+ ### Acceptance criteria
381
+
382
+ Milestone 1 is complete when:
383
+
384
+ - a clean installation can run the observation workflow;
385
+ - Chromium launches successfully;
386
+ - a supplied deterministic local page loads;
387
+ - viewport configuration is honored;
388
+ - explicitly configured targets are evaluated;
389
+ - screenshot generation succeeds;
390
+ - structured page evidence is written;
391
+ - structured target evidence is written;
392
+ - artifact identity and schema version are explicit;
393
+ - provenance is recorded;
394
+ - observed and derived evidence are distinguishable;
395
+ - missing/partial evidence is represented honestly;
396
+ - output paths are portable and bounded;
397
+ - browser/network safety rules are documented;
398
+ - deterministic fixture tests exist;
399
+ - target application files remain untouched;
400
+ - typecheck passes;
401
+ - lint passes;
402
+ - unit/integration tests pass;
403
+ - browser-level tests pass;
404
+ - applicable build/package validation passes;
405
+ - project documentation explains how the first observation works.
406
+
407
+ ### Explicit exclusions
408
+
409
+ Do not include yet:
410
+
411
+ - automatic route discovery;
412
+ - comparison between observations;
413
+ - persistent regression contracts;
414
+ - requested/dependent/protected change contracts;
415
+ - rich LLM context packaging;
416
+ - external visual-reference evaluation;
417
+ - graphical observation viewer;
418
+ - visual annotation;
419
+ - static source ownership;
420
+ - `my-dev-kit` integration;
421
+ - orchestrator integration;
422
+ - lab integration;
423
+ - external LLM APIs;
424
+ - cloud browsers;
425
+ - authentication workflows;
426
+ - collaboration;
427
+ - cross-browser support beyond the selected initial Chromium implementation.
428
+
429
+ ## Milestone 2 — Stable Semantic Targets and Region Identity
430
+
431
+ ### Objective
432
+
433
+ Make meaningful frontend regions reliably observable and referable across repeated observations without depending entirely on brittle CSS selectors.
434
+
435
+ ### Required capability
436
+
437
+ Establish an explicit observation-target model supporting appropriate forms such as:
438
+
439
+ - stable element `id`;
440
+ - accessibility role;
441
+ - accessible name;
442
+ - stable `data-*` attribute;
443
+ - semantic HTML element;
444
+ - bounded CSS selector fallback;
445
+ - text-based selection only when needed and explicitly constrained.
446
+
447
+ The exact public target configuration model must be defined before implementation.
448
+
449
+ ### Stable runtime identity
450
+
451
+ Every configured observation target must have a stable observer-level identifier independent of its browser locator.
452
+
453
+ Example:
454
+
455
+ ```text
456
+ target id:
457
+ primary-navigation
458
+
459
+ locator:
460
+ role=navigation
461
+ accessible name=Primary navigation
462
+ ```
463
+
464
+ The stable observer identity should remain usable by:
465
+
466
+ - observations;
467
+ - comparisons;
468
+ - contracts;
469
+ - annotations;
470
+ - future reference bindings;
471
+ - future ecosystem correlation.
472
+
473
+ A stable runtime identity must not be treated as proof of source ownership or future reference identity.
474
+
475
+ ### Multiple targets
476
+
477
+ One observation must support multiple explicitly configured targets.
478
+
479
+ Logical target examples may include:
480
+
481
+ ```text
482
+ app-shell
483
+ header
484
+ primary-navigation
485
+ main-content
486
+ tool-workspace
487
+ left-ad-rail
488
+ right-ad-rail
489
+ footer-ad
490
+ footer
491
+ theme-control
492
+ ```
493
+
494
+ These names are examples only.
495
+
496
+ The observer must not assume every target project has these regions.
497
+
498
+ ### Semantic evidence
499
+
500
+ Where the browser exposes it reliably, enrich target observations with:
501
+
502
+ - accessibility role;
503
+ - accessible name;
504
+ - landmark identity;
505
+ - relevant state;
506
+ - containment relationships useful for layout reasoning.
507
+
508
+ ### Cardinality and selection behavior
509
+
510
+ Target selection must define expected cardinality.
511
+
512
+ The observer must report explicitly when:
513
+
514
+ - no match exists;
515
+ - more than one element matches unexpectedly;
516
+ - the selected target is hidden;
517
+ - a target cannot be observed reliably;
518
+ - the selection mechanism is unsupported.
519
+
520
+ Do not silently choose an arbitrary match.
521
+
522
+ ### Identity stability
523
+
524
+ Observation artifacts must preserve:
525
+
526
+ ```text
527
+ stable target id
528
+ locator definition
529
+ selection method
530
+ actual selection status
531
+ ```
532
+
533
+ so a future comparison can distinguish:
534
+
535
+ ```text
536
+ target disappeared
537
+ ```
538
+
539
+ from:
540
+
541
+ ```text
542
+ target configuration changed
543
+ ```
544
+
545
+ ### Acceptance criteria
546
+
547
+ Milestone 2 is complete when:
548
+
549
+ - multiple targets can be captured in one observation;
550
+ - stable observer target IDs survive repeated observations;
551
+ - semantic selection works against deterministic fixtures;
552
+ - stable IDs/data attributes work where configured;
553
+ - CSS fallback remains available;
554
+ - ambiguous selection produces an explicit diagnostic;
555
+ - missing targets are represented explicitly;
556
+ - hidden/unavailable targets are not misrepresented as valid visible targets;
557
+ - semantic evidence is included where supported;
558
+ - observation artifacts remain bounded;
559
+ - deterministic fixtures yield deterministic semantic observations;
560
+ - Milestone 1 workflows remain valid.
561
+
562
+ ### Explicit exclusions
563
+
564
+ Do not add yet:
565
+
566
+ - automatic source-file lookup;
567
+ - automatic target discovery through static analysis;
568
+ - LLM-driven target discovery;
569
+ - source ownership inference;
570
+ - external visual-reference regions;
571
+ - visual annotation;
572
+ - full accessibility auditing.
573
+
574
+ ## Milestone 3 — Runtime Scrolling, Overflow, and Visibility Behavior
575
+
576
+ ### Objective
577
+
578
+ Make runtime layout behavior observable instead of inferring scrolling, overflow, or viewport behavior solely from source code.
579
+
580
+ ### Required capability
581
+
582
+ Capture scroll-related state for:
583
+
584
+ - document/root;
585
+ - body where relevant;
586
+ - explicitly observed targets.
587
+
588
+ Evidence should include, where applicable:
589
+
590
+ ```text
591
+ scrollTop
592
+ scrollLeft
593
+ scrollWidth
594
+ scrollHeight
595
+ clientWidth
596
+ clientHeight
597
+ computed overflow-x
598
+ computed overflow-y
599
+ position
600
+ bounding rectangle
601
+ visibility relative to viewport
602
+ ```
603
+
604
+ ### Controlled scroll scenarios
605
+
606
+ Support a bounded observation scenario that can:
607
+
608
+ 1. capture initial state;
609
+ 2. request a controlled page scroll;
610
+ 3. capture resulting state;
611
+ 4. compare document scroll position;
612
+ 5. compare observed target scroll positions;
613
+ 6. identify measured values that changed;
614
+ 7. identify targets entering or leaving the viewport where applicable.
615
+
616
+ This capability is bounded runtime-behavior evidence for defined observation
617
+ scenarios. It is not a generic browser interaction recorder, automation
618
+ framework, or replacement for Playwright.
619
+
620
+ ### Required runtime questions
621
+
622
+ The system must be able to provide browser evidence for questions such as:
623
+
624
+ - Did `window.scrollY` change?
625
+ - Did an observed container's `scrollTop` change?
626
+ - Which observed container appears to own requested page scrolling?
627
+ - Is there horizontal document overflow?
628
+ - Is an element initially below the viewport?
629
+ - Does an element enter the viewport after scrolling?
630
+ - Is a footer region positioned after the main workspace?
631
+ - Did scroll ownership evidence change after a frontend modification?
632
+
633
+ ### Claim-strength rule
634
+
635
+ The observer must preserve a strict distinction between:
636
+
637
+ ```text
638
+ browser-observed fact
639
+ ```
640
+
641
+ and:
642
+
643
+ ```text
644
+ derived interpretation
645
+ ```
646
+
647
+ Example direct evidence:
648
+
649
+ ```text
650
+ window.scrollY changed from 0 to 500
651
+ main.scrollTop remained 0
652
+ ```
653
+
654
+ Possible derived statement:
655
+
656
+ ```text
657
+ document appears to own primary vertical scrolling
658
+ ```
659
+
660
+ The interpretation must remain traceable to the measurements supporting it.
661
+
662
+ ### Behavior relationships
663
+
664
+ This milestone should establish the foundation for runtime behavior relationships such as:
665
+
666
+ ```text
667
+ target moves with document scroll
668
+ target remains fixed
669
+ container owns nested scrolling
670
+ element begins below viewport
671
+ element enters viewport after page scroll
672
+ ```
673
+
674
+ These relationships are runtime evidence and must not be inferred from stylesheet declarations alone.
675
+
676
+ ### Acceptance criteria
677
+
678
+ Milestone 3 is complete when deterministic fixtures prove:
679
+
680
+ - document scrolling;
681
+ - nested element scrolling;
682
+ - horizontal document overflow detection;
683
+ - nested overflow evidence;
684
+ - below-viewport detection;
685
+ - movement into viewport after scrolling;
686
+ - explicit reporting of changed scroll measurements;
687
+ - observed-versus-derived claim separation;
688
+ - stable artifact representation of runtime behavior;
689
+ - earlier observation artifacts remain compatible or are migrated deliberately.
690
+
691
+ ## Milestone 4 — Layout Relationships, Dependency Evidence, and Before/After Comparison
692
+
693
+ ### Objective
694
+
695
+ Compare two comparable observations and explain meaningful rendered-layout differences while establishing an explicit model for spatial relationships and potential layout dependencies.
696
+
697
+ ### Comparison eligibility
698
+
699
+ Before comparing two observations, determine whether they are sufficiently comparable.
700
+
701
+ Relevant evidence may include:
702
+
703
+ ```text
704
+ target identity
705
+ target configuration
706
+ route/page identity
707
+ viewport
708
+ browser/runtime identity
709
+ observation scenario
710
+ relevant state/theme
711
+ ```
712
+
713
+ The comparison engine must not silently compare fundamentally incompatible observations as if they represented the same frontend state.
714
+
715
+ The comparability concepts established here should be extended or reused later for reference/candidate applicability where the same state dimensions apply, rather than replaced by a second unrelated state model.
716
+
717
+ ### Required difference categories
718
+
719
+ The comparison engine should support, as evidence permits:
720
+
721
+ - appeared target;
722
+ - disappeared target;
723
+ - moved target;
724
+ - resized target;
725
+ - visibility change;
726
+ - clipping/containment change;
727
+ - horizontal-overflow change;
728
+ - vertical-overflow change;
729
+ - page-size change;
730
+ - scroll-owner evidence change;
731
+ - relative-position change;
732
+ - relationship change.
733
+
734
+ ### Structured before/after evidence
735
+
736
+ For each difference report:
737
+
738
+ ```text
739
+ target
740
+ property or relationship
741
+ before value
742
+ after value
743
+ difference
744
+ classification
745
+ supporting observation identities
746
+ ```
747
+
748
+ Example:
749
+
750
+ ```text
751
+ Target: primary-navigation
752
+ Property: width
753
+ Before: 176px
754
+ After: 97px
755
+ Difference: -79px
756
+ ```
757
+
758
+ ### Layout relationships
759
+
760
+ Support runtime relationships such as:
761
+
762
+ ```text
763
+ A is left of B
764
+ A is above B
765
+ A contains B
766
+ A does not overlap B
767
+ A is wider than B
768
+ A follows B vertically
769
+ A fits inside B
770
+ document width does not exceed viewport width
771
+ footer follows main content
772
+ workspace lies between navigation and right rail
773
+ ```
774
+
775
+ These relationships should be computed from browser-observed geometry where possible.
776
+
777
+ ### Layout relationship graph
778
+
779
+ The system should support a structured representation of meaningful region relationships.
780
+
781
+ Conceptual example:
782
+
783
+ ```text
784
+ Viewport
785
+ ↓
786
+ AppShell
787
+ ├── LeftAd
788
+ ├── Navigation
789
+ ├── Workspace
790
+ └── RightAd
791
+ ```
792
+
793
+ This representation should support later reasoning about which relationships changed and should be reusable where an external reference expresses the same geometric relationship among reference regions.
794
+
795
+ Do not require every target project to have the same graph structure.
796
+
797
+ ### Dependency evidence
798
+
799
+ The system should leave room to represent expected layout dependencies such as:
800
+
801
+ ```text
802
+ Navigation width decreases
803
+ ↓
804
+ Workspace width increases
805
+ Workspace x-position changes
806
+ ```
807
+
808
+ However, the observer must not infer causation merely because two values changed together.
809
+
810
+ A dependency claim must eventually come from:
811
+
812
+ - explicit user intent;
813
+ - a change contract;
814
+ - approved reference intent;
815
+ - an approved relationship specification;
816
+ - another supported evidence source.
817
+
818
+ Milestone 4 establishes the representation and comparison foundation.
819
+
820
+ Milestone 5 establishes executable change-scope semantics.
821
+
822
+ ### Relationship comparison
823
+
824
+ Support comparisons such as:
825
+
826
+ ```text
827
+ workspace width changed relative to navigation
828
+ advertising rail width changed
829
+ footer moved relative to workspace
830
+ navigation overlap appeared
831
+ page horizontal overflow appeared
832
+ scroll-owner relationship changed
833
+ ```
834
+
835
+ ### Screenshot association
836
+
837
+ Comparison must retain references to corresponding before/after screenshots and underlying observations.
838
+
839
+ ### Acceptance criteria
840
+
841
+ Milestone 4 is complete when:
842
+
843
+ - comparable observations can be compared deterministically;
844
+ - incomparable observations are rejected or clearly marked;
845
+ - deterministic fixture changes produce deterministic structured differences;
846
+ - unchanged fixtures do not produce false meaningful regressions;
847
+ - moved and resized targets are detected;
848
+ - relationship changes are detected;
849
+ - overlap and overflow changes are represented;
850
+ - before/after screenshot references remain available;
851
+ - layout relationship evidence is traceable to underlying geometry;
852
+ - causation is not invented from correlation.
853
+
854
+ ### Explicit exclusions
855
+
856
+ Do not yet decide automatically:
857
+
858
+ ```text
859
+ looks better
860
+ looks worse
861
+ modern
862
+ ugly
863
+ ```
864
+
865
+ The tool reports observable change.
866
+
867
+ Do not yet treat every difference as a failure.
868
+
869
+ Milestone 5 defines which changes are allowed, required, or protected.
870
+
871
+ External desired-design references are also not an ordinary Milestone 4 before/after comparison; that separate evidence domain arrives later.
872
+
873
+ ## Milestone 5 — Executable Frontend Contracts and Explicit Change Scope
874
+
875
+ ### Objective
876
+
877
+ Turn approved frontend behavior and user-requested change intent into persistent, executable runtime contracts.
878
+
879
+ This milestone establishes the mechanism that prevents:
880
+
881
+ ```text
882
+ fix one frontend problem
883
+ → accidentally break another
884
+ ```
885
+
886
+ ### Two contract classes
887
+
888
+ The system should distinguish two related forms of contract:
889
+
890
+ ```text
891
+ persistent baseline contract
892
+ ```
893
+
894
+ and:
895
+
896
+ ```text
897
+ per-change contract
898
+ ```
899
+
900
+ ### Persistent baseline contracts
901
+
902
+ Persistent baseline contracts describe previously approved frontend behavior that should remain valid across future changes unless explicitly superseded.
903
+
904
+ Examples:
905
+
906
+ ```text
907
+ navigation contents are not clipped
908
+ navigation does not overlap workspace
909
+ workspace does not overlap advertising rails
910
+ document does not horizontally overflow
911
+ document owns primary vertical scrolling
912
+ footer appears after main content
913
+ mobile workspace remains usable
914
+ ```
915
+
916
+ ### Per-change contract
917
+
918
+ A per-change contract describes the allowed scope of one requested frontend modification.
919
+
920
+ It should support four explicit categories.
921
+
922
+ #### Requested changes
923
+
924
+ Properties or relationships explicitly intended to change.
925
+
926
+ Example:
927
+
928
+ ```text
929
+ primary-navigation.width
930
+ → decrease significantly
931
+ ```
932
+
933
+ #### Expected dependent changes
934
+
935
+ Properties expected to change as a legitimate consequence.
936
+
937
+ Example:
938
+
939
+ ```text
940
+ tool-workspace.width
941
+ → increase using released horizontal space
942
+
943
+ tool-workspace.x
944
+ → may move left
945
+ ```
946
+
947
+ #### Protected properties or regions
948
+
949
+ Properties expected to remain unchanged.
950
+
951
+ Example:
952
+
953
+ ```text
954
+ left-ad-rail.width
955
+ right-ad-rail.width
956
+ header.height
957
+ ```
958
+
959
+ #### Preserved invariants and behaviors
960
+
961
+ Previously correct relationships or behaviors that must remain valid.
962
+
963
+ Example:
964
+
965
+ ```text
966
+ navigation remains unclipped
967
+ navigation does not overlap workspace
968
+ workspace does not overlap ads
969
+ no horizontal document overflow
970
+ scroll ownership remains unchanged
971
+ ```
972
+
973
+ #### Unexpected changes
974
+
975
+ Observed properties or relationships that changed outside the requested,
976
+ expected-dependent, protected, or explicitly preserved scope must remain
977
+ visible and classified as unexpected rather than being silently ignored.
978
+
979
+ Together these five categories define the allowed frontend change scope.
980
+
981
+ Future executable reference-derived intent must reuse these same categories. A visible reference detail may remain informational or unassessed until explicitly promoted into the canonical contract. Reference evidence must not introduce a second requested/protected taxonomy.
982
+
983
+ ### Relationship-first design
984
+
985
+ Prefer relational constraints when they more accurately represent the user's intent.
986
+
987
+ Example:
988
+
989
+ Prefer:
990
+
991
+ ```text
992
+ workspace width increases when navigation width decreases
993
+ ```
994
+
995
+ over:
996
+
997
+ ```text
998
+ workspace width must equal 1039px
999
+ ```
1000
+
1001
+ when the actual requirement is redistribution of available space rather than one fixed measurement.
1002
+
1003
+ Fixed-pixel constraints remain valid when explicitly required, including when an approved reference genuinely requires a particular geometry.
1004
+
1005
+ ### Required contract primitives
1006
+
1007
+ The first contract model should support high-value conditions such as:
1008
+
1009
+ ```text
1010
+ target is visible
1011
+ target is not clipped
1012
+ target width is within a bound
1013
+ target A does not overlap target B
1014
+ target A is wider than target B
1015
+ target A follows target B vertically
1016
+ target is fully contained inside another target
1017
+ document width does not exceed viewport width
1018
+ window owns requested page scrolling
1019
+ specified element does not own primary scrolling
1020
+ element begins below initial viewport
1021
+ relationship remains unchanged
1022
+ property remains unchanged within an allowed tolerance
1023
+ property increases/decreases as requested
1024
+ ```
1025
+
1026
+ Do not create a general-purpose programming language.
1027
+
1028
+ ### Change evaluation
1029
+
1030
+ After implementation, comparison results should be evaluated against the change contract.
1031
+
1032
+ Conceptual result:
1033
+
1034
+ ```text
1035
+ REQUESTED CHANGE
1036
+ Navigation.width
1037
+ 176 → 97
1038
+ PASS
1039
+
1040
+ EXPECTED DEPENDENT CHANGE
1041
+ Workspace.width
1042
+ 960 → 1039
1043
+ PASS
1044
+
1045
+ PROTECTED PROPERTY
1046
+ RightAd.width
1047
+ 112 → 154
1048
+ FAIL
1049
+
1050
+ PRESERVED INVARIANT
1051
+ Navigation content became clipped
1052
+ FAIL
1053
+
1054
+ OVERALL
1055
+ FAIL
1056
+ ```
1057
+
1058
+ A requested local success must not hide a protected-region regression.
1059
+
1060
+ A later reference-fidelity result must obey the same rule and cannot override this failure.
1061
+
1062
+ ### Existing contracts remain active
1063
+
1064
+ A new requested change does not erase previously approved frontend contracts.
1065
+
1066
+ Unless the user explicitly supersedes a prior invariant:
1067
+
1068
+ ```text
1069
+ existing approved contracts
1070
+ +
1071
+ new per-change contract
1072
+ ```
1073
+
1074
+ must both be evaluated.
1075
+
1076
+ ### Contract result requirements
1077
+
1078
+ Every contract result must explain:
1079
+
1080
+ ```text
1081
+ contract identity
1082
+ contract category
1083
+ PASS or FAIL
1084
+ observed values
1085
+ expected condition
1086
+ observation identity
1087
+ relevant targets
1088
+ supporting evidence
1089
+ ```
1090
+
1091
+ Do not return only a score.
1092
+
1093
+ ### Fixture coverage
1094
+
1095
+ Controlled fixtures should demonstrate at least:
1096
+
1097
+ - passing layout;
1098
+ - clipped navigation content;
1099
+ - overlapping regions;
1100
+ - horizontal document overflow;
1101
+ - document scrolling;
1102
+ - nested scrolling;
1103
+ - footer after workspace;
1104
+ - relative-width relationship;
1105
+ - requested resize;
1106
+ - expected dependent resize;
1107
+ - unexpected protected-region resize;
1108
+ - preserved-invariant failure.
1109
+
1110
+ ### Acceptance criteria
1111
+
1112
+ Milestone 5 is complete when:
1113
+
1114
+ - baseline contracts can be persisted;
1115
+ - per-change contracts can be represented;
1116
+ - requested/dependent/protected/preserved categories are explicit;
1117
+ - contracts execute against fresh observations;
1118
+ - previously approved contracts can be rerun after frontend changes;
1119
+ - unexpected protected changes are distinguishable from legitimate dependent changes;
1120
+ - contract failures return actionable evidence;
1121
+ - relationship-oriented contracts work against deterministic fixtures;
1122
+ - failing required contracts produce nonzero validation status where configured;
1123
+ - contract evaluation does not mutate the target application.
1124
+
1125
+ ## Milestone 6 — Bounded Agent Context and Native my-dev-kit Ecosystem Integration
1126
+
1127
+ ### Objective
1128
+
1129
+ Make the runtime observer useful to an actual coding-agent workflow by combining bounded observer evidence with relevant bounded static/source evidence without merging producer responsibilities.
1130
+
1131
+ The core question is:
1132
+
1133
+ ```text
1134
+ What is the smallest trustworthy runtime + static context
1135
+ the coding agent needs to understand and safely modify this frontend?
1136
+ ```
1137
+
1138
+ This milestone moves the minimum required ecosystem integration onto the critical path before viewer and annotation work.
1139
+
1140
+ ### Runtime context requirements
1141
+
1142
+ Produce bounded runtime projections containing only task-relevant information such as:
1143
+
1144
+ - page identity;
1145
+ - viewport;
1146
+ - stable target identities;
1147
+ - important geometry;
1148
+ - runtime behavior;
1149
+ - layout and behavior relationships;
1150
+ - before/after differences;
1151
+ - contract results;
1152
+ - requested/dependent/protected/preserved scope;
1153
+ - important diagnostics;
1154
+ - screenshot and artifact references;
1155
+ - provenance;
1156
+ - truncation and omission metadata.
1157
+
1158
+ The runtime projection must remain traceable to authoritative observation, comparison, relationship, and contract evidence.
1159
+
1160
+ ### Boundedness and adequacy
1161
+
1162
+ Do not dump by default:
1163
+
1164
+ - the full raw Document Object Model;
1165
+ - every computed style property;
1166
+ - complete accessibility trees;
1167
+ - unrelated observations or targets;
1168
+ - repeated unchanged measurements;
1169
+ - unbounded diagnostics;
1170
+ - embedded screenshots or other heavy assets when references are sufficient.
1171
+
1172
+ The context builder must report omissions, truncation, and whether evidence required for the agent task is adequate. Some evidence existing is not equivalent to adequate task context.
1173
+
1174
+ The same boundedness discipline must later apply when reference evidence is added: only relevant reference regions, failed requirements, and heavy-asset references belong in ordinary coding-agent context.
1175
+
1176
+ ### Static/runtime correlation
1177
+
1178
+ Support explicit correlation between observer runtime identities and bounded static evidence where reliable.
1179
+
1180
+ Desired chain:
1181
+
1182
+ ```text
1183
+ rendered region
1184
+ → stable observer target
1185
+ → correlation evidence
1186
+ → my-dev-kit static identity / bounded evidence
1187
+ → relevant source retrieval
1188
+ ```
1189
+
1190
+ Runtime target identity must never silently become source ownership. Correlation confidence, ambiguity, competing candidates, and missing evidence must remain explicit.
1191
+
1192
+ A future reference-region to runtime-target binding remains a separate relationship upstream of this static correlation. Reference identity must not be passed off as a source identity either.
1193
+
1194
+ ### my-dev-kit relationship
1195
+
1196
+ Determine whether current `my-dev-kit` identities and retrieval contracts already support the required correlation.
1197
+
1198
+ Modify `my-dev-kit` only if evidence proves that a generic static-side capability is actually missing. Do not add browser concepts, runtime observation semantics, reference-image semantics, or Playwright dependencies to `my-dev-kit`.
1199
+
1200
+ `my-dev-kit` remains the owner of static repository/source evidence, indexing, architecture, dependency evidence, probable ownership evidence, and bounded source retrieval.
1201
+
1202
+ ### Observer relationship
1203
+
1204
+ `my-frontend-observer` owns:
1205
+
1206
+ - browser/runtime evidence;
1207
+ - bounded runtime projection;
1208
+ - stable runtime identity;
1209
+ - correlation evidence it can support;
1210
+ - the correlation/export boundary;
1211
+ - references back to authoritative observer artifacts.
1212
+
1213
+ Future reference evidence remains observer-owned but distinct from runtime evidence. The observer does not become a static analyzer and must remain independently executable outside the ecosystem.
1214
+
1215
+ ### Orchestrator relationship
1216
+
1217
+ Add bounded observer-evidence consumption to `my-dev-kit-orchestrator` so a workflow can coordinate or reference:
1218
+
1219
+ ```text
1220
+ bounded runtime evidence
1221
+ +
1222
+ bounded static evidence
1223
+ ```
1224
+
1225
+ for the coding agent.
1226
+
1227
+ The orchestrator must not:
1228
+
1229
+ - run the browser as its native responsibility;
1230
+ - redefine observer evidence or artifact semantics;
1231
+ - copy enormous raw browser artifacts into prompts by default;
1232
+ - duplicate `my-dev-kit` retrieval;
1233
+ - become the canonical owner of runtime/static correlation evidence.
1234
+
1235
+ Future reference-driven workflows may pass bounded reference/fidelity evidence through the same coordination boundary, but the orchestrator must not define a competing reference schema or fidelity engine.
1236
+
1237
+ ### Lab relationship
1238
+
1239
+ Add only the `my-dev-kit-lab` exact readers, pinned fixtures, compatibility checks, and evidence-quality evaluation needed to prove the observer/orchestrator/static-evidence contract.
1240
+
1241
+ The lab remains downstream evaluation. It must not reimplement capture, retrieval, correlation, orchestration, or become part of every normal frontend edit.
1242
+
1243
+ Future reference compatibility/evidence-quality checks belong in the lab only when a concrete integration requires them; the lab must not become the production reference evaluator.
1244
+
1245
+ ### Cross-repository dependency direction
1246
+
1247
+ When Milestone 6 implementation begins, preserve this high-level dependency direction:
1248
+
1249
+ ```text
1250
+ freeze bounded-agent-context and integration contract
1251
+ → determine whether my-dev-kit requires a static-side change
1252
+ → implement observer bounded projection/correlation/export
1253
+ → implement orchestrator bounded runtime-evidence consumption
1254
+ → add lab exact readers/fixtures/evaluation needed for compatibility
1255
+ → run individual repository readiness
1256
+ → run coordinated exact-version validation
1257
+ ```
1258
+
1259
+ This is dependency direction, not an implementation batch plan. Concrete steps and batches must be designed only when this milestone begins and the actual repository/package states can be inspected.
1260
+
1261
+ ### Compatibility requirements
1262
+
1263
+ Cross-repository validation must pin and record:
1264
+
1265
+ - package versions or candidate identities;
1266
+ - observer artifact/schema versions;
1267
+ - bounded-context contract version;
1268
+ - static identity/evidence contract version;
1269
+ - orchestrator consumer compatibility;
1270
+ - lab reader/fixture compatibility.
1271
+
1272
+ Do not validate downstream consumers accidentally against stale published upstream packages when coordinated candidates are intended.
1273
+
1274
+ Do not create a shared schema package merely for symmetry; require demonstrated cross-repository ownership and release need.
1275
+
1276
+ ### Acceptance criteria
1277
+
1278
+ Milestone 6 is complete when:
1279
+
1280
+ - a coding agent or LLM can receive bounded, traceable runtime problem evidence;
1281
+ - requested/dependent/protected/preserved scope and contract results are included where relevant;
1282
+ - relevant bounded static/source evidence can be retrieved and correlated where reliable;
1283
+ - ambiguous runtime/static correlation remains explicit;
1284
+ - task adequacy, omission, and truncation are reported;
1285
+ - the observer remains independently usable and does not duplicate static analysis;
1286
+ - the orchestrator consumes bounded references/projections without becoming a browser runner;
1287
+ - the lab reads exact supported contracts and validates required compatibility;
1288
+ - every affected repository passes individual readiness;
1289
+ - coordinated exact-version validation passes;
1290
+ - no viewer, external-reference, or visual-annotation dependency is required for the released v0.6 capability itself.
1291
+
1292
+ ## Milestone 7 — End-to-End Coding-Agent Frontend Change Review and External Reference Evidence Foundation
1293
+
1294
+ ### Objective
1295
+
1296
+ Prove that the system solves the core practical frontend-correction problem through a text/config-driven workflow before investing in graphical interaction, and establish the non-graphical external visual-reference evidence foundation needed when the desired design is supplied as an approved image rather than expressed only as prose.
1297
+
1298
+ This is the first milestone where the complete coding-agent correction loop is operational. It is also the milestone where reference design vs candidate becomes a first-class observer evidence/evaluation path so Milestone 8 can display that canonical result rather than inventing a viewer-only implementation.
1299
+
1300
+ ### Core text/config-driven workflow
1301
+
1302
+ Demonstrate:
1303
+
1304
+ ```text
1305
+ capture approved baseline
1306
+ → preserve baseline contracts
1307
+ → human expresses requested change in text/config
1308
+ → construct requested/dependent/protected/preserved scope
1309
+ → generate bounded runtime evidence
1310
+ → obtain relevant bounded static evidence
1311
+ → assemble coding-agent context
1312
+ → external coding agent modifies target source
1313
+ → observer captures new state
1314
+ → compare before/after
1315
+ → evaluate requested changes
1316
+ → evaluate expected dependent changes
1317
+ → verify protected properties
1318
+ → rerun baseline contracts
1319
+ → PASS or actionable regression failure
1320
+ ```
1321
+
1322
+ Unexpected changes must remain visible and classified rather than disappearing outside the requested scope.
1323
+
1324
+ ### External reference evidence domain
1325
+
1326
+ The milestone must also support a non-graphical external-reference path for an approved local image that represents desired design intent.
1327
+
1328
+ An external reference is not:
1329
+
1330
+ - an `ObservationArtifact`;
1331
+ - the "before" side of the existing before/after comparison;
1332
+ - source code;
1333
+ - a hidden DOM/CSS/component representation;
1334
+ - automatic permission to change every visible difference.
1335
+
1336
+ The exact public artifact/type names and schema versions must be selected during milestone planning by reusing current observer identity, provenance, validation, persistence, and boundedness precedents. Do not freeze a `ReferenceVisualArtifact` name merely because planning used that working term.
1337
+
1338
+ ### Reference identity and provenance
1339
+
1340
+ A reference model must preserve, as applicable:
1341
+
1342
+ - deterministic logical reference identity/version;
1343
+ - source image reference;
1344
+ - image width/height and supported format;
1345
+ - provenance;
1346
+ - explicit reference viewport or other applicability identity;
1347
+ - bounded reference regions;
1348
+ - coordinate semantics;
1349
+ - authored design constraints;
1350
+ - relationships;
1351
+ - selected style/asset evidence where supported;
1352
+ - tolerances;
1353
+ - diagnostics/limits;
1354
+ - approval/supersession history.
1355
+
1356
+ Operational filesystem paths must not become semantic identity. Heavy image bytes should be referenced rather than copied into every downstream artifact/context packet.
1357
+
1358
+ ### Reference regions
1359
+
1360
+ Support bounded meaningful reference-region identities, for example:
1361
+
1362
+ ```text
1363
+ popup-shell
1364
+ header
1365
+ brand-mark
1366
+ current-page-card
1367
+ destination-card
1368
+ crawl-controls
1369
+ progress
1370
+ status
1371
+ message
1372
+ footer
1373
+ ```
1374
+
1375
+ Reference-region identity is separate from runtime target identity.
1376
+
1377
+ Reference geometry may include absolute image coordinates and may support normalized coordinates where appropriate. Exact coordinate semantics must be selected during milestone planning.
1378
+
1379
+ Reference regions should reuse the canonical layout-relationship vocabulary where the same geometric concept applies instead of creating a second relationship engine.
1380
+
1381
+ ### Reference-to-runtime binding
1382
+
1383
+ The milestone must establish an explicit binding between:
1384
+
1385
+ ```text
1386
+ reference region
1387
+ ```
1388
+
1389
+ and:
1390
+
1391
+ ```text
1392
+ stable runtime target
1393
+ ```
1394
+
1395
+ The binding must be able to represent reliable association plus ambiguity/unavailability or equivalent conservative states selected during planning.
1396
+
1397
+ Reference identity, runtime identity, and static source identity remain separate. A binding to a runtime target never becomes source ownership automatically. Static/source evidence still flows through the Milestone 6 correlation/retrieval boundary.
1398
+
1399
+ ### Reference applicability before fidelity
1400
+
1401
+ The system must decide whether a reference and candidate represent compatible intended states before ordinary fidelity differences are produced.
1402
+
1403
+ Relevant dimensions may include:
1404
+
1405
+ ```text
1406
+ viewport
1407
+ theme
1408
+ application state
1409
+ variant/state identity
1410
+ ```
1411
+
1412
+ Example:
1413
+
1414
+ ```text
1415
+ reference: One Dark / active crawl
1416
+ candidate: One Light / idle
1417
+ ```
1418
+
1419
+ must produce an explicit incompatible/incomparable result rather than a meaningless visual-difference list.
1420
+
1421
+ Where possible, extend/reuse the existing comparability/state conventions established by Milestone 4 rather than inventing an unrelated reference-only state system.
1422
+
1423
+ ### Reference design intent and canonical contracts
1424
+
1425
+ A visible reference detail is evidence, not automatically a hard requirement.
1426
+
1427
+ The reference model must distinguish, at minimum conceptually:
1428
+
1429
+ ```text
1430
+ image-observed/derived evidence
1431
+ authored design intent
1432
+ informational or unassessed detail
1433
+ ```
1434
+
1435
+ When reference intent becomes executable, it must map into the existing Milestone 5 authored categories:
1436
+
1437
+ ```text
1438
+ requested
1439
+ expected-dependent
1440
+ protected
1441
+ preserved
1442
+ ```
1443
+
1444
+ `unexpected` remains derived-only. Do not create reference-only requested/protected semantics or a separate PASS/FAIL taxonomy.
1445
+
1446
+ ### Reference tolerance and style evidence
1447
+
1448
+ Reference fidelity cannot use one global pixel-perfect threshold.
1449
+
1450
+ Planning should define bounded property-specific tolerance semantics for appropriate categories such as:
1451
+
1452
+ - geometry;
1453
+ - normalized position/size;
1454
+ - spacing;
1455
+ - layout relationships;
1456
+ - selected color/style evidence;
1457
+ - asset-sensitive regions;
1458
+ - optional image-region similarity.
1459
+
1460
+ Text rendering, font differences, antialiasing, gradients, shadows, and glow may vary across platform/browser environments and must not generate false structural failures merely because screenshot bytes differ.
1461
+
1462
+ Screenshot/image similarity may supplement structured evidence, but it must not be the sole determinant of success.
1463
+
1464
+ ### Reference-vs-candidate structured evaluation
1465
+
1466
+ The milestone must be able to combine:
1467
+
1468
+ ```text
1469
+ REFERENCE IMAGE
1470
+ + REFERENCE REGION GEOMETRY
1471
+ + REFERENCE RELATIONSHIPS
1472
+ + AUTHORED DESIGN INTENT
1473
+ + OPTIONAL IMAGE/ASSET SIMILARITY EVIDENCE
1474
+ ```
1475
+
1476
+ with:
1477
+
1478
+ ```text
1479
+ CANDIDATE SCREENSHOT
1480
+ + CANDIDATE BROWSER GEOMETRY
1481
+ + CANDIDATE RELATIONSHIPS
1482
+ + CANDIDATE COMPUTED EVIDENCE
1483
+ ```
1484
+
1485
+ and produce bounded, actionable evidence rather than only "looks different."
1486
+
1487
+ Example:
1488
+
1489
+ ```text
1490
+ Target: current-page-card
1491
+ Reference x: 28
1492
+ Candidate x: 18
1493
+ Delta: -10
1494
+
1495
+ Reference width: 424
1496
+ Candidate width: 446
1497
+ Delta: +22
1498
+
1499
+ Expected separation below header: 24px within tolerance
1500
+ Candidate separation: 38px
1501
+ Result: fidelity requirement failed
1502
+ ```
1503
+
1504
+ The candidate side remains browser-authoritative and must be captured through the existing observation engine.
1505
+
1506
+ ### Coding-agent correction packet
1507
+
1508
+ The external coding agent should receive only relevant reference/runtime mismatches plus active protected/preserved constraints, diagnostics/provenance, and bounded static/source context.
1509
+
1510
+ Do not make the coding agent reinterpret the full image from scratch on every correction iteration when structured mismatch evidence already exists.
1511
+
1512
+ Conceptually:
1513
+
1514
+ ```text
1515
+ reference requirement
1516
+ + candidate measurement
1517
+ + delta/failure
1518
+ + nearby protected relationships
1519
+ + bounded source evidence
1520
+ → coding agent correction
1521
+ ```
1522
+
1523
+ ### Reference approval and supersession
1524
+
1525
+ The system must distinguish:
1526
+
1527
+ ```text
1528
+ raw imported image
1529
+ ≠ approved reference
1530
+ ≠ approved runtime baseline
1531
+ ```
1532
+
1533
+ Reference import, reference approval, baseline approval, reference supersession, and baseline supersession are separate acts.
1534
+
1535
+ A reference-fidelity `PASS`, ordinary comparison success, or frontend-contract `PASS` must never silently approve or supersede a reference/baseline.
1536
+
1537
+ Multiple approved references may exist for explicit states such as dark/light theme, desktop/mobile, idle/active/error, or other variants. Selection must be explicit through reference identity/applicability, not accidental filename matching.
1538
+
1539
+ ### No viewer dependency
1540
+
1541
+ Both the ordinary text/config correction workflow and the external-reference foundation must work without requiring:
1542
+
1543
+ - an interactive graphical viewer;
1544
+ - visual drawing;
1545
+ - visual annotation authoring.
1546
+
1547
+ A human may express the requested change, expected dependents, protected regions/properties, preserved invariants, and initial reference regions/requirements through text or structured configuration.
1548
+
1549
+ ### Required proof cases
1550
+
1551
+ Controlled targets must demonstrate:
1552
+
1553
+ 1. a successful ordinary requested change whose dependent changes and preserved contracts pass;
1554
+ 2. an ordinary requested change that succeeds locally while a protected property or preserved invariant fails;
1555
+ 3. a reference-driven case where an approved external reference is bound to selected runtime targets, measurable fidelity mismatches are produced, bounded correction evidence reaches the coding agent, the candidate is rerendered, and reference fidelity is reevaluated;
1556
+ 4. a reference/candidate applicability mismatch that produces an explicit incompatible/incomparable result rather than fabricated visual differences;
1557
+ 5. a case where reference-fidelity requirements pass but an active protected/baseline contract fails, producing overall failure.
1558
+
1559
+ The protected/invariant cases prove the system prevents:
1560
+
1561
+ ```text
1562
+ fix or match one frontend area
1563
+ → silently break another
1564
+ ```
1565
+
1566
+ ### Coding-agent boundary
1567
+
1568
+ The observer does not edit source.
1569
+
1570
+ A coding agent or another external implementation tool performs the edit against the target project. The observer and ecosystem provide bounded runtime/reference/static evidence before and after that edit. Source changes and evidence-producer responsibilities remain independently traceable.
1571
+
1572
+ The observer is not an automatic image-to-code generator, website cloner, raster-to-HTML/CSS generator, or vectorizer.
1573
+
1574
+ ### Baseline and contract behavior
1575
+
1576
+ Existing approved baseline contracts remain active unless explicitly superseded.
1577
+
1578
+ ```text
1579
+ existing approved baseline contracts
1580
+ +
1581
+ new per-change contract
1582
+ +
1583
+ reference requirements where applicable
1584
+ ```
1585
+
1586
+ must all remain visible in the overall result. Successful results may be proposed as a new baseline or reference state, but approval and history must remain explicit.
1587
+
1588
+ ### Acceptance criteria
1589
+
1590
+ Milestone 7 is complete when:
1591
+
1592
+ - the end-to-end text/config-driven coding-agent workflow runs against a controlled external target;
1593
+ - bounded runtime plus relevant static evidence reaches the agent without full-repository or unbounded browser dumps;
1594
+ - the agent changes source outside the observer;
1595
+ - the observer recaptures and compares the result;
1596
+ - requested and expected dependent changes are evaluated;
1597
+ - protected properties and preserved invariants are evaluated;
1598
+ - existing baseline contracts are rerun;
1599
+ - successful and failing ordinary cases produce traceable actionable results;
1600
+ - a locally successful requested change with a protected/invariant regression fails overall;
1601
+ - an external-reference identity/artifact model exists without masquerading as an observation;
1602
+ - bounded reference regions, applicability, authored intent, tolerances, and reference/runtime binding are represented explicitly;
1603
+ - reference-vs-candidate structured evaluation produces measurable actionable evidence;
1604
+ - incompatible reference/candidate state is represented explicitly;
1605
+ - reference-derived executable intent reuses canonical contract semantics;
1606
+ - bounded agent context can carry relevant reference mismatch evidence without embedding all heavy image bytes or unrelated regions;
1607
+ - reference approval/supersession remains explicit;
1608
+ - reference-fidelity success cannot hide an active contract failure;
1609
+ - viewer and annotation systems are not required.
1610
+
1611
+ ## Milestone 8 — Interactive Local Observation and Reference Viewer
1612
+
1613
+ ### Objective
1614
+
1615
+ Add a human graphical inspection surface over the already working observation, comparison, contract, correlation, coding-agent-context, and external-reference evidence system.
1616
+
1617
+ The viewer enhances a proven core workflow; it is not a prerequisite for Milestones 6 or 7.
1618
+
1619
+ ### Required interface capabilities
1620
+
1621
+ The viewer should show, as applicable:
1622
+
1623
+ - runtime screenshots;
1624
+ - approved external reference images;
1625
+ - stable observed targets;
1626
+ - stable reference regions;
1627
+ - geometry and semantic information;
1628
+ - scrolling, overflow, and visibility evidence;
1629
+ - layout and behavior relationships;
1630
+ - before/after changes;
1631
+ - reference/candidate structured fidelity evidence;
1632
+ - reference applicability/incomparability;
1633
+ - diagnostics and evidence-state distinctions;
1634
+ - requested/dependent/protected/preserved/unexpected classifications;
1635
+ - baseline and per-change contract results;
1636
+ - reference-region/runtime-target bindings and ambiguity;
1637
+ - source-correlation evidence and uncertainty where available;
1638
+ - bounded agent-context references;
1639
+ - provenance/approval information relevant to the displayed evidence.
1640
+
1641
+ ### Reference/candidate inspection
1642
+
1643
+ The viewer should support a clear mode for inspecting an approved reference beside a browser-rendered candidate.
1644
+
1645
+ Where useful, this may include:
1646
+
1647
+ - side-by-side reference/candidate images;
1648
+ - synchronized zoom/pan;
1649
+ - region overlays;
1650
+ - selecting a reference region and highlighting the bound runtime target;
1651
+ - selecting a runtime target and showing its bound reference region;
1652
+ - reference/candidate measurements and deltas;
1653
+ - failed relationship/style/asset evidence;
1654
+ - active baseline/per-change contract results;
1655
+ - unsupported/partial/ambiguous/incomparable states.
1656
+
1657
+ The viewer displays canonical results; it must not recompute a second fidelity model merely for presentation.
1658
+
1659
+ ### Element/screenshot/reference association
1660
+
1661
+ Where practical:
1662
+
1663
+ ```text
1664
+ structured runtime target selection
1665
+ → corresponding candidate screenshot region
1666
+ ```
1667
+
1668
+ ```text
1669
+ structured reference-region selection
1670
+ → corresponding reference image region
1671
+ ```
1672
+
1673
+ and, where an explicit binding exists:
1674
+
1675
+ ```text
1676
+ reference region
1677
+ ↔ runtime target
1678
+ ```
1679
+
1680
+ should be supported without inventing identity when evidence is insufficient.
1681
+
1682
+ ### Architecture constraint
1683
+
1684
+ The viewer consumes existing canonical engines, contracts, and artifacts.
1685
+
1686
+ It must not create:
1687
+
1688
+ - a second observer;
1689
+ - a second relationship engine;
1690
+ - a second before/after comparison engine;
1691
+ - a second contract/change-scope engine;
1692
+ - a second reference artifact model;
1693
+ - a second reference/candidate evaluation engine;
1694
+ - a second static/runtime correlation engine;
1695
+ - a second bounded-context builder.
1696
+
1697
+ CLI and programmatic paths remain first-class. Viewer state must not mutate target applications, raw observations, or raw reference images.
1698
+
1699
+ Merely opening/importing a reference in the viewer must not silently approve or supersede it.
1700
+
1701
+ ### Acceptance criteria
1702
+
1703
+ Milestone 8 is complete when:
1704
+
1705
+ - a developer can inspect observations and screenshots without opening raw files;
1706
+ - a developer can inspect approved external references beside candidates;
1707
+ - geometry, runtime behavior, relationships, and before/after comparisons are understandable;
1708
+ - reference/candidate fidelity evidence and applicability are understandable;
1709
+ - contract/change-scope results identify relevant regions;
1710
+ - reference/runtime binding ambiguity remains visible;
1711
+ - source-correlation evidence displays uncertainty rather than false ownership;
1712
+ - the evidence shown is the same canonical evidence used by the coding-agent workflow;
1713
+ - selecting a reference region can expose the corresponding bound runtime target and mismatch evidence where available;
1714
+ - command-line/programmatic workflows remain independently functional.
1715
+
1716
+ ## Milestone 9 — Human Visual Annotation and Design-Intent Capture
1717
+
1718
+ ### Objective
1719
+
1720
+ Add visual human intent to the already working Milestone 7 coding-agent/reference workflow through the Milestone 8 viewer.
1721
+
1722
+ Annotations may originate from either:
1723
+
1724
+ ```text
1725
+ a runtime observation screenshot
1726
+ ```
1727
+
1728
+ or:
1729
+
1730
+ ```text
1731
+ an approved/imported external visual reference
1732
+ ```
1733
+
1734
+ The two annotation contexts must remain explicit.
1735
+
1736
+ ### Required annotation capabilities
1737
+
1738
+ Support a deliberately bounded first annotation set selected during milestone planning, such as:
1739
+
1740
+ - point/select;
1741
+ - rectangle or area;
1742
+ - arrow;
1743
+ - line or boundary;
1744
+ - textual note;
1745
+ - preserve;
1746
+ - resize;
1747
+ - move;
1748
+ - remove;
1749
+ - inspect.
1750
+
1751
+ ### Structured annotation artifact
1752
+
1753
+ Annotations must preserve:
1754
+
1755
+ - annotation source context (`runtime-observation` or external-reference equivalent selected during planning);
1756
+ - observation/screenshot identity or reference identity;
1757
+ - annotation geometry;
1758
+ - annotation type;
1759
+ - textual instruction where supplied;
1760
+ - associated stable runtime target, relationship, or reference region where reliable;
1761
+ - provenance and interpretation/confirmation state.
1762
+
1763
+ Do not store annotation intent only as flattened pixels. Preserve structured data in addition to any annotated screenshot/reference rendering.
1764
+
1765
+ Runtime-screenshot and reference-image coordinates are distinct domains. Coordinate transforms must preserve which source image the annotation belongs to.
1766
+
1767
+ ### Reference region authoring
1768
+
1769
+ For external references, annotation may help define or refine:
1770
+
1771
+ - meaningful reference regions;
1772
+ - reference-region relationships;
1773
+ - asset-sensitive regions;
1774
+ - design notes;
1775
+ - which visual details are informational;
1776
+ - which explicit geometry/style/relationship constraints should become executable intent.
1777
+
1778
+ A region drawn over a reference does not automatically make every enclosed pixel a requirement.
1779
+
1780
+ ### Canonical intent and change-scope model
1781
+
1782
+ Annotations must feed the existing canonical reference/change-scope/contract model:
1783
+
1784
+ ```text
1785
+ runtime annotation OR external-reference annotation
1786
+ → target/relationship/reference-region binding
1787
+ → candidate requested/dependent/protected/preserved intent
1788
+ → explicit confirmation or interpretation where necessary
1789
+ → canonical per-change contract
1790
+ ```
1791
+
1792
+ Do not create annotation-only or reference-only change semantics or different PASS/FAIL rules. Ambiguous drawings must not silently become strong requirements.
1793
+
1794
+ ### LLM and coding-agent consumption
1795
+
1796
+ The existing bounded agent-context system may include:
1797
+
1798
+ - original and annotated runtime screenshot references;
1799
+ - external reference and annotated-reference references;
1800
+ - structured observation evidence;
1801
+ - structured reference evidence;
1802
+ - structured annotations;
1803
+ - current relationships;
1804
+ - reference/candidate mismatches;
1805
+ - baseline contracts;
1806
+ - confirmed per-change scope;
1807
+ - relevant bounded static evidence.
1808
+
1809
+ Annotation adds an input mode to the proven workflow; it does not replace text/config requests, reference evidence, or contract confirmation.
1810
+
1811
+ ### Acceptance criteria
1812
+
1813
+ Milestone 9 is complete when:
1814
+
1815
+ - a user can annotate an existing observation in the viewer;
1816
+ - a user can annotate an external reference in the viewer;
1817
+ - annotations survive save/reload;
1818
+ - structured annotations remain associated with the correct runtime/reference source identity;
1819
+ - target/relationship/reference-region associations remain available where reliable;
1820
+ - reference regions and selected design requirements can be authored without turning every pixel into a contract;
1821
+ - preserve/resize/move/remove/inspect intent can be represented where supported;
1822
+ - ambiguous intent requires explicit interpretation or confirmation;
1823
+ - annotations can drive the existing coding-agent change-review workflow through the canonical reference and contract models;
1824
+ - original raw observations and reference images remain unchanged.
1825
+
1826
+ ## Milestone 10 — Full Visual Human–LLM Frontend Change Workflow
1827
+
1828
+ ### Objective
1829
+
1830
+ Complete the visual communication version of the already operational coding-agent workflow.
1831
+
1832
+ This milestone combines the proven Milestone 7 correction/reference loop with the Milestone 8 viewer and Milestone 9 dual-context structured annotation.
1833
+
1834
+ ### Intended visual entry modes
1835
+
1836
+ The system must support both of these entry modes.
1837
+
1838
+ Actual-frontend-driven:
1839
+
1840
+ ```text
1841
+ human views actual captured frontend
1842
+ → points/draws/annotates requested design change
1843
+ → observer binds intent to stable runtime regions
1844
+ ```
1845
+
1846
+ Reference-driven:
1847
+
1848
+ ```text
1849
+ human supplies or selects an approved external visual reference
1850
+ → viewer shows reference beside the actual captured candidate
1851
+ → human identifies/annotates relevant reference regions and design intent
1852
+ → observer binds confirmed reference intent to stable runtime regions
1853
+ ```
1854
+
1855
+ Both converge on the same canonical workflow:
1856
+
1857
+ ```text
1858
+ change scope is constructed and confirmed
1859
+ → bounded runtime evidence is produced
1860
+ → relevant bounded reference evidence is included where applicable
1861
+ → bounded static evidence is obtained
1862
+ → coding-agent context is assembled
1863
+ → external coding agent modifies source
1864
+ → observer rerenders
1865
+ → before/after comparison runs
1866
+ → reference-vs-candidate evaluation runs where applicable
1867
+ → requested/dependent/protected/preserved behavior is evaluated
1868
+ → baseline contracts rerun
1869
+ → unexpected changes remain explicit
1870
+ → viewer shows PASS or actionable failure evidence
1871
+ → human approves or requests correction
1872
+ → successful state may become the new approved baseline and/or explicitly
1873
+ supersede an approved reference according to project policy
1874
+ ```
1875
+
1876
+ ### Critical invariant
1877
+
1878
+ A visual request or reference does not erase existing baseline contracts.
1879
+
1880
+ Unless explicitly superseded:
1881
+
1882
+ ```text
1883
+ existing approved contracts
1884
+ +
1885
+ new visual/requested change contract
1886
+ +
1887
+ active reference requirements where applicable
1888
+ ```
1889
+
1890
+ must remain active in the final evaluation.
1891
+
1892
+ The system must preserve unexpected-change evidence and cannot treat visual/reference intent as authorization for unrelated rendered changes.
1893
+
1894
+ A reference-fidelity `PASS` with a protected or preserved contract `FAIL` is overall failure.
1895
+
1896
+ ### Reference and baseline governance
1897
+
1898
+ The workflow must keep separate:
1899
+
1900
+ - raw reference import;
1901
+ - reference approval;
1902
+ - active reference selection;
1903
+ - reference supersession;
1904
+ - baseline approval;
1905
+ - baseline supersession;
1906
+ - per-change approval;
1907
+ - final human acceptance.
1908
+
1909
+ No comparison or evaluation result silently performs another governance act.
1910
+
1911
+ ### Evidence and ownership model
1912
+
1913
+ The full workflow may combine:
1914
+
1915
+ ```text
1916
+ human visual intent
1917
+
1918
+ reference evidence
1919
+ → reference identity
1920
+ → reference image/regions
1921
+ → applicability
1922
+ → authored requirements
1923
+ → runtime binding
1924
+ → fidelity evidence
1925
+
1926
+ runtime evidence
1927
+ → screenshot
1928
+ → target identity
1929
+ → geometry and behavior
1930
+ → relationships
1931
+ → before/after comparison
1932
+ → contracts
1933
+
1934
+ static evidence
1935
+ → probable ownership
1936
+ → architecture and dependencies
1937
+ → bounded source retrieval
1938
+
1939
+ workflow evidence
1940
+ → request and confirmed scope
1941
+ → coding-agent context
1942
+ → implementation identity
1943
+ → verification
1944
+ → approval or correction
1945
+ ```
1946
+
1947
+ These domains remain separate and traceable. The observer remains non-mutating, the external coding agent edits source, the orchestrator coordinates bounded evidence, and the lab remains optional for normal edits outside compatibility/evaluation workflows.
1948
+
1949
+ ### Required demonstration
1950
+
1951
+ Demonstrate:
1952
+
1953
+ - a successful actual-frontend-driven visual change;
1954
+ - a successful reference-driven design-replication change;
1955
+ - a reference/candidate mismatch producing actionable measured failure evidence;
1956
+ - a requested visual/reference change that introduces a protected-property or preserved-invariant regression;
1957
+ - a reference-fidelity pass that still fails overall because an active baseline/per-change contract fails;
1958
+ - a correction cycle;
1959
+ - human approval and new-baseline/reference history;
1960
+ - compatible integrated ecosystem evidence using exact supported versions.
1961
+
1962
+ ### Acceptance criteria
1963
+
1964
+ Milestone 10 is complete when:
1965
+
1966
+ - a human can inspect the actual captured frontend and express structured visual intent;
1967
+ - a human can inspect/select an approved external reference and express structured reference intent;
1968
+ - annotation binds to stable runtime/reference evidence where reliable;
1969
+ - requested/dependent/protected/preserved scope is confirmed;
1970
+ - bounded runtime, reference, and static evidence form traceable coding-agent context;
1971
+ - an external coding agent changes the target;
1972
+ - the observer rerenders and runs before/after comparison;
1973
+ - reference-vs-candidate fidelity is reevaluated where applicable;
1974
+ - all active contracts are evaluated;
1975
+ - a protected/invariant regression fails despite local requested-change or reference-fidelity success;
1976
+ - the viewer presents actionable evidence;
1977
+ - the human can request correction and explicitly approve a successful new baseline/reference state;
1978
+ - all affected ecosystem contracts remain compatible;
1979
+ - no evidence producer's responsibility is merged into another project.
1980
+
1981
+ ## Cross-Milestone Architecture Rules
1982
+
1983
+ Every milestone must preserve these boundaries.
1984
+
1985
+ ### Observation engine ownership
1986
+
1987
+ One reusable observation engine owns browser capture.
1988
+
1989
+ Do not create separate browser-observation implementations for:
1990
+
1991
+ - command-line interface;
1992
+ - graphical viewer;
1993
+ - regression tests;
1994
+ - annotation viewer;
1995
+ - reference-driven workflows;
1996
+ - orchestrator adapter.
1997
+
1998
+ ### Browser adapter ownership
1999
+
2000
+ Browser-specific automation must remain behind a clear browser boundary.
2001
+
2002
+ Initial Chromium support must not require the entire domain model to depend directly on Playwright-specific objects.
2003
+
2004
+ Avoid speculative multi-browser abstraction before another browser is actually planned.
2005
+
2006
+ ### Runtime and reference identity ownership
2007
+
2008
+ The observer owns stable runtime target identities and future stable reference-region identities, but these remain separate domains.
2009
+
2010
+ Runtime target IDs must remain distinct from:
2011
+
2012
+ - reference-region IDs;
2013
+ - source-file paths;
2014
+ - static symbol IDs;
2015
+ - `my-dev-kit` graph-node IDs;
2016
+ - orchestrator stage IDs;
2017
+ - lab fixture IDs.
2018
+
2019
+ Reference-region IDs must likewise remain distinct from runtime and source identities.
2020
+
2021
+ Future binding/correlation may connect these identities explicitly.
2022
+
2023
+ Do not silently collapse them.
2024
+
2025
+ ### Artifact ownership
2026
+
2027
+ Observation artifacts must have one canonical schema/versioning owner.
2028
+
2029
+ Future external-reference artifacts/evaluation results may have their own canonical observer-owned contract families, but they must remain distinct from observation artifacts and refer back to authoritative reference/runtime evidence.
2030
+
2031
+ Do not create incompatible output structures for:
2032
+
2033
+ - command-line use;
2034
+ - graphical viewer;
2035
+ - comparison;
2036
+ - contracts;
2037
+ - references;
2038
+ - LLM packaging;
2039
+ - ecosystem adapters.
2040
+
2041
+ Derived artifacts may have their own contracts, but they must refer back to authoritative evidence rather than copying everything.
2042
+
2043
+ ### Evidence hierarchy
2044
+
2045
+ Preserve the distinction between:
2046
+
2047
+ ```text
2048
+ direct browser observation
2049
+ direct image/reference measurement
2050
+ authored reference requirement
2051
+ normalized evidence
2052
+ derived relationship
2053
+ before/after comparison result
2054
+ reference/candidate fidelity result
2055
+ contract interpretation
2056
+ bounded agent context or summary
2057
+ human visual interpretation/approval
2058
+ ```
2059
+
2060
+ Do not flatten these into one unexplained result.
2061
+
2062
+ ### Relationship ownership
2063
+
2064
+ Layout and behavior relationships must have one canonical interpretation layer where the relationship concept is shared.
2065
+
2066
+ Do not duplicate relationship logic in:
2067
+
2068
+ - viewer;
2069
+ - reference evaluator;
2070
+ - command-line interface;
2071
+ - comparison engine;
2072
+ - orchestrator adapter.
2073
+
2074
+ Reference relationships may need source-specific provenance but should reuse canonical relation semantics where appropriate.
2075
+
2076
+ ### Comparison and reference-evaluation ownership
2077
+
2078
+ Before/after comparison must have one canonical implementation.
2079
+
2080
+ Reference design vs candidate is a distinct evaluation category and may require its own canonical observer-owned engine, but the viewer, CLI, and orchestrator must consume that one implementation rather than recreating it.
2081
+
2082
+ Do not pretend reference-vs-candidate is ordinary before/after comparison by forging an observation from an image.
2083
+
2084
+ ### Contract ownership
2085
+
2086
+ Frontend baseline contracts and per-change contract evaluation must have one canonical engine.
2087
+
2088
+ Do not implement different PASS/FAIL semantics in:
2089
+
2090
+ - command-line validation;
2091
+ - reference-driven workflows;
2092
+ - viewer;
2093
+ - automated tests;
2094
+ - orchestrator integration.
2095
+
2096
+ Reference-derived executable intent feeds this engine rather than creating another contract system.
2097
+
2098
+ ### Change-scope ownership
2099
+
2100
+ Requested, expected-dependent, protected, preserved, and unexpected classifications must use one canonical semantic model.
2101
+
2102
+ A protected-region failure cannot become a warning merely because one consumer or reference workflow prefers a looser interpretation.
2103
+
2104
+ ### Reference approval ownership
2105
+
2106
+ Reference import, approval, active selection, and supersession require explicit observer-owned governance semantics when implemented.
2107
+
2108
+ Do not let:
2109
+
2110
+ - file import;
2111
+ - viewer display;
2112
+ - fidelity `PASS`;
2113
+ - baseline `PASS`;
2114
+ - coding-agent completion;
2115
+
2116
+ silently approve or supersede a reference.
2117
+
2118
+ ### Target separation
2119
+
2120
+ Observed applications remain external targets.
2121
+
2122
+ Do not install observer dependencies into target applications merely to perform ordinary observation or reference-driven validation.
2123
+
2124
+ Optional future instrumentation may exist only when explicitly designed and must not become a hidden requirement for ordinary observation.
2125
+
2126
+ ### my-dev-kit boundary
2127
+
2128
+ Do not duplicate:
2129
+
2130
+ - source indexing;
2131
+ - symbol graphs;
2132
+ - dependency graphs;
2133
+ - architecture analysis;
2134
+ - bounded source retrieval;
2135
+ - source ownership inference;
2136
+
2137
+ inside `my-frontend-observer`.
2138
+
2139
+ Any source association must use an explicit static/runtime integration boundary. Reference/runtime binding is not static source analysis.
2140
+
2141
+ ### Orchestrator boundary
2142
+
2143
+ Do not duplicate:
2144
+
2145
+ - workflow catalogs;
2146
+ - stage lifecycle;
2147
+ - readiness gates;
2148
+ - correction routing;
2149
+ - prompt orchestration;
2150
+
2151
+ inside `my-frontend-observer`.
2152
+
2153
+ The observer produces runtime/reference evidence.
2154
+
2155
+ The orchestrator coordinates workflows.
2156
+
2157
+ ### Lab boundary
2158
+
2159
+ Do not duplicate:
2160
+
2161
+ - ecosystem evaluation;
2162
+ - comparative experiment ownership;
2163
+ - compatibility verdicts;
2164
+ - release evaluation;
2165
+
2166
+ inside `my-frontend-observer`.
2167
+
2168
+ The observer owns production runtime/reference evidence and canonical reference/candidate evaluation.
2169
+
2170
+ The lab evaluates supported ecosystem behavior.
2171
+
2172
+ ### Shared-package restraint
2173
+
2174
+ Do not create a shared ecosystem abstraction merely because multiple projects contain similarly shaped metadata.
2175
+
2176
+ A shared package must have a concrete, justified owner and compatibility need.
2177
+
2178
+ ## Cross-Milestone Evidence Rules
2179
+
2180
+ ### Observed, referenced, authored, and derived
2181
+
2182
+ Every milestone must preserve:
2183
+
2184
+ ```text
2185
+ browser-observed fact
2186
+ ≠
2187
+ direct reference/image measurement
2188
+ ≠
2189
+ authored design requirement
2190
+ ≠
2191
+ derived interpretation
2192
+ ```
2193
+
2194
+ Example:
2195
+
2196
+ Observed:
2197
+
2198
+ ```text
2199
+ window.scrollY changed from 0 to 500
2200
+ ```
2201
+
2202
+ Derived:
2203
+
2204
+ ```text
2205
+ document appears to own page scrolling
2206
+ ```
2207
+
2208
+ Example:
2209
+
2210
+ Observed:
2211
+
2212
+ ```text
2213
+ navigation.width decreased
2214
+ workspace.width increased
2215
+ ```
2216
+
2217
+ Not automatically proven:
2218
+
2219
+ ```text
2220
+ navigation shrink caused workspace expansion
2221
+ ```
2222
+
2223
+ Expected dependency requires explicit contract or supported intent evidence.
2224
+
2225
+ Example reference:
2226
+
2227
+ ```text
2228
+ reference card width measured at 424px
2229
+ ```
2230
+
2231
+ does not automatically mean:
2232
+
2233
+ ```text
2234
+ candidate card width must always equal 424px
2235
+ ```
2236
+
2237
+ unless authored reference intent makes that measurement an executable requirement with an appropriate tolerance.
2238
+
2239
+ ### Missing evidence
2240
+
2241
+ Do not treat:
2242
+
2243
+ ```text
2244
+ unavailable
2245
+ not observed
2246
+ not applicable
2247
+ unassessed
2248
+ ambiguous
2249
+ incompatible/incomparable
2250
+ truncated
2251
+ ```
2252
+
2253
+ as interchangeable.
2254
+
2255
+ Do not substitute false, zero, or empty values for unavailable evidence.
2256
+
2257
+ ### Boundedness
2258
+
2259
+ Every evidence-producing milestone must define appropriate limits.
2260
+
2261
+ Bounded lists should expose enough metadata to distinguish:
2262
+
2263
+ ```text
2264
+ no items existed
2265
+ ```
2266
+
2267
+ from:
2268
+
2269
+ ```text
2270
+ items existed but were omitted
2271
+ ```
2272
+
2273
+ Reference evidence must also remain bounded. Do not embed an entire image or every region/style difference repeatedly when references and targeted mismatch records suffice.
2274
+
2275
+ ### Provenance
2276
+
2277
+ Every persistent evidence artifact must retain enough provenance to determine:
2278
+
2279
+ - which tool produced it;
2280
+ - which version produced it;
2281
+ - which schema applies;
2282
+ - what target/configuration was used;
2283
+ - what browser/environment matters;
2284
+ - what evidence was omitted;
2285
+ - what derived interpretation used which supporting facts.
2286
+
2287
+ Future reference artifacts/evaluations must additionally make it possible to determine which exact reference image/version, region definitions, authored requirements, applicability state, binding evidence, tolerance policy, candidate observation, and approval/supersession state were used.
2288
+
2289
+ ## Cross-Milestone Testing Rules
2290
+
2291
+ Every implemented capability must receive the narrowest meaningful automated coverage.
2292
+
2293
+ The project should progressively maintain:
2294
+
2295
+ ```text
2296
+ unit tests
2297
+ → schema/serialization tests
2298
+ → observation integration tests
2299
+ → browser fixture tests
2300
+ → runtime behavior tests
2301
+ → comparison tests
2302
+ → relationship tests
2303
+ → contract tests
2304
+ → bounded agent-context tests
2305
+ → static/runtime correlation tests
2306
+ → ecosystem compatibility fixtures
2307
+ → text/config-driven coding-agent workflow tests
2308
+ → external-reference identity/artifact/binding tests
2309
+ → reference applicability and structured fidelity tests
2310
+ → reference-driven coding-agent correction tests
2311
+ → graphical-interface tests
2312
+ → annotation tests for runtime and reference contexts
2313
+ → full visual workflow tests
2314
+ ```
2315
+
2316
+ Every previously passing milestone remains part of regression validation for later milestones.
2317
+
2318
+ Do not weaken earlier tests merely to accommodate a later implementation.
2319
+
2320
+ ### Browser-level evidence rule
2321
+
2322
+ Any browser/runtime feature requires browser-level validation.
2323
+
2324
+ Passing static typecheck or unit tests alone is not sufficient.
2325
+
2326
+ Reference-driven validation must also prove the candidate side against a real browser when the result depends on rendered runtime evidence.
2327
+
2328
+ ### Fixture rule
2329
+
2330
+ Use deterministic local fixtures for canonical behavior.
2331
+
2332
+ Do not make public internet pages the authoritative test environment.
2333
+
2334
+ Reference-driven fixtures should use stable project-local reference images/artifacts whose identity can be pinned for deterministic tests.
2335
+
2336
+ ### Cross-platform rule
2337
+
2338
+ Structured semantic evidence should be the primary portable contract.
2339
+
2340
+ Do not assume screenshot or reference/candidate image-diff byte identity across operating systems unless explicitly established.
2341
+
2342
+ Later ecosystem releases should satisfy the cross-platform validation expectations adopted by the ecosystem.
2343
+
2344
+ ## Cross-Milestone Documentation Rules
2345
+
2346
+ Documentation must remain synchronized with implementation.
2347
+
2348
+ At minimum, as capabilities become real, maintain appropriate documentation for:
2349
+
2350
+ - project overview;
2351
+ - architecture;
2352
+ - observation artifact/schema;
2353
+ - command interface;
2354
+ - workflows;
2355
+ - development/testing;
2356
+ - limitations;
2357
+ - browser/network safety;
2358
+ - external-reference artifact/evaluation and local-file privacy when implemented;
2359
+ - roadmap;
2360
+ - ecosystem integration when implemented.
2361
+
2362
+ Do not document future milestone behavior as if it already exists.
2363
+
2364
+ ### Forward-looking document rule
2365
+
2366
+ Forward-looking planning documents should be sufficiently self-contained for future LLM planning.
2367
+
2368
+ Important future design constraints should not exist only in scattered bookkeeping/reference documents.
2369
+
2370
+ The planning hierarchy is:
2371
+
2372
+ ```text
2373
+ Project Description
2374
+ → durable product intent
2375
+
2376
+ Project Milestones
2377
+ → ordered capability development
2378
+ → major design requirements
2379
+ → acceptance expectations
2380
+
2381
+ ROADMAP.md
2382
+ → version-level implementation direction
2383
+ → required capabilities
2384
+ → architectural constraints
2385
+ → dependencies
2386
+ → exclusions
2387
+ → acceptance expectations
2388
+ ```
2389
+
2390
+ `ROADMAP.md` must not contain prewritten implementation batches.
2391
+
2392
+ When implementation of a roadmap version begins, the implementation planner should:
2393
+
2394
+ ```text
2395
+ read relevant roadmap version
2396
+ → inspect current repository state
2397
+ → perform required my-dev-kit retrieval/architecture work
2398
+ → design implementation steps
2399
+ → divide those steps into batches
2400
+ → execute and validate
2401
+ ```
2402
+
2403
+ ## Cross-Milestone Validation Rules
2404
+
2405
+ Once established, every milestone must preserve the trusted validation chain:
2406
+
2407
+ ```text
2408
+ typecheck
2409
+ lint
2410
+ unit/integration tests
2411
+ browser tests
2412
+ applicable build/package validation
2413
+ documentation checks when implemented
2414
+ ```
2415
+
2416
+ Later ecosystem-integrated versions must additionally preserve:
2417
+
2418
+ ```text
2419
+ individual repository readiness
2420
+ → exact candidate identity verification
2421
+ → coordinated cross-repository compatibility validation
2422
+ ```
2423
+
2424
+ A coordinated ecosystem release must not validate downstream consumers against stale upstream versions when coordinated candidate versions are intended.
2425
+
2426
+ ## Milestone Ordering
2427
+
2428
+ The intended development sequence is:
2429
+
2430
+ ```text
2431
+ Milestone 1
2432
+ Runtime Observation Foundation
2433
+ ↓
2434
+ Milestone 2
2435
+ Stable Semantic Targets and Region Identity
2436
+ ↓
2437
+ Milestone 3
2438
+ Runtime Scrolling, Overflow, and Visibility Behavior
2439
+ ↓
2440
+ Milestone 4
2441
+ Layout Relationships, Dependency Evidence,
2442
+ and Before/After Comparison
2443
+ ↓
2444
+ Milestone 5
2445
+ Executable Frontend Contracts
2446
+ and Explicit Change Scope
2447
+ ↓
2448
+ Milestone 6
2449
+ Bounded Agent Context
2450
+ and Native my-dev-kit Ecosystem Integration
2451
+ ↓
2452
+ Milestone 7
2453
+ End-to-End Coding-Agent Frontend Change Review
2454
+ and External Reference Evidence Foundation
2455
+ ↓
2456
+ Milestone 8
2457
+ Interactive Local Observation and Reference Viewer
2458
+ ↓
2459
+ Milestone 9
2460
+ Human Visual Annotation
2461
+ and Design-Intent Capture
2462
+ ↓
2463
+ Milestone 10
2464
+ Full Visual Human–LLM Frontend Change Workflow
2465
+ ```
2466
+
2467
+ The critical path through Milestone 7 proves that browser/runtime evidence,
2468
+ safe-change contracts, bounded static/runtime context, an external coding
2469
+ agent, and optional approved external-reference evidence can complete a
2470
+ regression-aware frontend correction without a graphical viewer or annotation
2471
+ authoring.
2472
+
2473
+ Milestones 8–10 form the human visual branch. The viewer and annotation system
2474
+ enhance the proven coding-agent/reference workflow; they are not prerequisites
2475
+ for it. Milestone 8 displays the reference model created in Milestone 7,
2476
+ Milestone 9 adds dual-context annotation, and Milestone 10 combines actual-
2477
+ frontend-driven and reference-driven entry modes.
2478
+
2479
+ Do not reorder these milestones merely for implementation convenience.
2480
+
2481
+ A milestone may span more than one package version if necessary. Multiple
2482
+ milestones may be combined into one implementation version only when doing so
2483
+ preserves dependency order and does not create unnecessary coupling.
2484
+
2485
+ Version boundaries belong in `ROADMAP.md`. Concrete implementation steps and
2486
+ batches do not belong in this milestone document.
2487
+
2488
+ ## Initial bootstrap target
2489
+
2490
+ The greenfield bootstrap establishes the standardized project foundation and
2491
+ forward-looking documents. Milestone 1 remains the first roadmap implementation
2492
+ target after bootstrap; it must be planned from the then-current repository
2493
+ state before product code is written.
2494
+
2495
+ The eventual v0.1 vertical slice should remain intentionally small:
2496
+
2497
+ ```text
2498
+ target URL
2499
+ + viewport
2500
+ + explicitly configured targets
2501
+ ↓
2502
+ Chromium observation
2503
+ ↓
2504
+ screenshot
2505
+ + structured page evidence
2506
+ + structured target evidence
2507
+ ↓
2508
+ versioned local observation artifact
2509
+ ```
2510
+
2511
+ The bootstrap must preserve architecture and documentation for future milestones without implementing roadmap v0.1 or later capabilities prematurely.
2512
+
2513
+ Do not bootstrap:
2514
+
2515
+ - comparison;
2516
+ - regression contracts;
2517
+ - per-change contracts;
2518
+ - LLM context packaging;
2519
+ - external visual-reference evaluation;
2520
+ - graphical viewing;
2521
+ - annotation;
2522
+ - static/runtime source correlation;
2523
+ - orchestrator adapters;
2524
+ - lab adapters.
2525
+
2526
+ The purpose of the first milestone is to establish a clean, bounded, versioned, trustworthy runtime-evidence foundation from which every later capability can grow.