@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.
- package/CHANGELOG.md +397 -0
- package/LICENSE +21 -0
- package/README.md +255 -0
- package/dist/application/browserCaptureService.d.ts +11 -0
- package/dist/application/browserCaptureService.js +12 -0
- package/dist/application/browserCaptureService.js.map +1 -0
- package/dist/application/comparisonService.d.ts +56 -0
- package/dist/application/comparisonService.js +77 -0
- package/dist/application/comparisonService.js.map +1 -0
- package/dist/application/externalReferencePersistenceService.d.ts +75 -0
- package/dist/application/externalReferencePersistenceService.js +182 -0
- package/dist/application/externalReferencePersistenceService.js.map +1 -0
- package/dist/application/frontendContractEvaluationService.d.ts +49 -0
- package/dist/application/frontendContractEvaluationService.js +112 -0
- package/dist/application/frontendContractEvaluationService.js.map +1 -0
- package/dist/application/frontendContractPersistenceService.d.ts +56 -0
- package/dist/application/frontendContractPersistenceService.js +91 -0
- package/dist/application/frontendContractPersistenceService.js.map +1 -0
- package/dist/application/observationPersistence.d.ts +59 -0
- package/dist/application/observationPersistence.js +79 -0
- package/dist/application/observationPersistence.js.map +1 -0
- package/dist/application/projectCheckService.d.ts +3 -0
- package/dist/application/projectCheckService.js +169 -0
- package/dist/application/projectCheckService.js.map +1 -0
- package/dist/application/projectWorkflowService.d.ts +46 -0
- package/dist/application/projectWorkflowService.js +92 -0
- package/dist/application/projectWorkflowService.js.map +1 -0
- package/dist/application/referenceFidelityEvaluationService.d.ts +28 -0
- package/dist/application/referenceFidelityEvaluationService.js +45 -0
- package/dist/application/referenceFidelityEvaluationService.js.map +1 -0
- package/dist/artifacts/artifactReader.d.ts +19 -0
- package/dist/artifacts/artifactReader.js +36 -0
- package/dist/artifacts/artifactReader.js.map +1 -0
- package/dist/artifacts/artifactWriter.d.ts +25 -0
- package/dist/artifacts/artifactWriter.js +68 -0
- package/dist/artifacts/artifactWriter.js.map +1 -0
- package/dist/artifacts/comparisonArtifactReader.d.ts +18 -0
- package/dist/artifacts/comparisonArtifactReader.js +35 -0
- package/dist/artifacts/comparisonArtifactReader.js.map +1 -0
- package/dist/artifacts/comparisonArtifactWriter.d.ts +41 -0
- package/dist/artifacts/comparisonArtifactWriter.js +67 -0
- package/dist/artifacts/comparisonArtifactWriter.js.map +1 -0
- package/dist/artifacts/externalReferenceArtifactReader.d.ts +18 -0
- package/dist/artifacts/externalReferenceArtifactReader.js +35 -0
- package/dist/artifacts/externalReferenceArtifactReader.js.map +1 -0
- package/dist/artifacts/externalReferenceArtifactWriter.d.ts +44 -0
- package/dist/artifacts/externalReferenceArtifactWriter.js +77 -0
- package/dist/artifacts/externalReferenceArtifactWriter.js.map +1 -0
- package/dist/artifacts/frontendContractArtifactReader.d.ts +24 -0
- package/dist/artifacts/frontendContractArtifactReader.js +47 -0
- package/dist/artifacts/frontendContractArtifactReader.js.map +1 -0
- package/dist/artifacts/frontendContractArtifactWriter.d.ts +34 -0
- package/dist/artifacts/frontendContractArtifactWriter.js +70 -0
- package/dist/artifacts/frontendContractArtifactWriter.js.map +1 -0
- package/dist/artifacts/frontendContractEvaluationArtifactReader.d.ts +17 -0
- package/dist/artifacts/frontendContractEvaluationArtifactReader.js +34 -0
- package/dist/artifacts/frontendContractEvaluationArtifactReader.js.map +1 -0
- package/dist/artifacts/frontendContractEvaluationArtifactWriter.d.ts +32 -0
- package/dist/artifacts/frontendContractEvaluationArtifactWriter.js +58 -0
- package/dist/artifacts/frontendContractEvaluationArtifactWriter.js.map +1 -0
- package/dist/artifacts/types.d.ts +17 -0
- package/dist/artifacts/types.js +2 -0
- package/dist/artifacts/types.js.map +1 -0
- package/dist/browser/chromiumAdapter.d.ts +21 -0
- package/dist/browser/chromiumAdapter.js +204 -0
- package/dist/browser/chromiumAdapter.js.map +1 -0
- package/dist/browser/evidenceCapture.d.ts +62 -0
- package/dist/browser/evidenceCapture.js +500 -0
- package/dist/browser/evidenceCapture.js.map +1 -0
- package/dist/browser/scrollCapture.d.ts +32 -0
- package/dist/browser/scrollCapture.js +163 -0
- package/dist/browser/scrollCapture.js.map +1 -0
- package/dist/browser/types.d.ts +24 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +2411 -0
- package/dist/cli.js.map +1 -0
- package/dist/domain/boundedAgentContext.d.ts +226 -0
- package/dist/domain/boundedAgentContext.js +355 -0
- package/dist/domain/boundedAgentContext.js.map +1 -0
- package/dist/domain/boundedAgentContextCorrelation.d.ts +74 -0
- package/dist/domain/boundedAgentContextCorrelation.js +441 -0
- package/dist/domain/boundedAgentContextCorrelation.js.map +1 -0
- package/dist/domain/boundedAgentContextIdentity.d.ts +26 -0
- package/dist/domain/boundedAgentContextIdentity.js +69 -0
- package/dist/domain/boundedAgentContextIdentity.js.map +1 -0
- package/dist/domain/boundedAgentContextProjection.d.ts +71 -0
- package/dist/domain/boundedAgentContextProjection.js +477 -0
- package/dist/domain/boundedAgentContextProjection.js.map +1 -0
- package/dist/domain/comparison.d.ts +220 -0
- package/dist/domain/comparison.js +350 -0
- package/dist/domain/comparison.js.map +1 -0
- package/dist/domain/comparisonEngine.d.ts +76 -0
- package/dist/domain/comparisonEngine.js +734 -0
- package/dist/domain/comparisonEngine.js.map +1 -0
- package/dist/domain/comparisonIdentity.d.ts +13 -0
- package/dist/domain/comparisonIdentity.js +46 -0
- package/dist/domain/comparisonIdentity.js.map +1 -0
- package/dist/domain/completion.d.ts +30 -0
- package/dist/domain/completion.js +22 -0
- package/dist/domain/completion.js.map +1 -0
- package/dist/domain/diagnostics.d.ts +17 -0
- package/dist/domain/diagnostics.js +77 -0
- package/dist/domain/diagnostics.js.map +1 -0
- package/dist/domain/evidence.d.ts +29 -0
- package/dist/domain/evidence.js +59 -0
- package/dist/domain/evidence.js.map +1 -0
- package/dist/domain/explicitState.d.ts +40 -0
- package/dist/domain/explicitState.js +54 -0
- package/dist/domain/explicitState.js.map +1 -0
- package/dist/domain/externalReference.d.ts +158 -0
- package/dist/domain/externalReference.js +167 -0
- package/dist/domain/externalReference.js.map +1 -0
- package/dist/domain/externalReferenceApplicability.d.ts +43 -0
- package/dist/domain/externalReferenceApplicability.js +52 -0
- package/dist/domain/externalReferenceApplicability.js.map +1 -0
- package/dist/domain/externalReferenceCompatibility.d.ts +40 -0
- package/dist/domain/externalReferenceCompatibility.js +48 -0
- package/dist/domain/externalReferenceCompatibility.js.map +1 -0
- package/dist/domain/externalReferenceFidelity.d.ts +171 -0
- package/dist/domain/externalReferenceFidelity.js +419 -0
- package/dist/domain/externalReferenceFidelity.js.map +1 -0
- package/dist/domain/externalReferenceIdentity.d.ts +38 -0
- package/dist/domain/externalReferenceIdentity.js +70 -0
- package/dist/domain/externalReferenceIdentity.js.map +1 -0
- package/dist/domain/externalReferenceImage.d.ts +35 -0
- package/dist/domain/externalReferenceImage.js +160 -0
- package/dist/domain/externalReferenceImage.js.map +1 -0
- package/dist/domain/externalReferenceRegionRelationships.d.ts +63 -0
- package/dist/domain/externalReferenceRegionRelationships.js +98 -0
- package/dist/domain/externalReferenceRegionRelationships.js.map +1 -0
- package/dist/domain/externalReferenceRegions.d.ts +65 -0
- package/dist/domain/externalReferenceRegions.js +105 -0
- package/dist/domain/externalReferenceRegions.js.map +1 -0
- package/dist/domain/externalReferenceRequirementIdentity.d.ts +12 -0
- package/dist/domain/externalReferenceRequirementIdentity.js +35 -0
- package/dist/domain/externalReferenceRequirementIdentity.js.map +1 -0
- package/dist/domain/externalReferenceRequirements.d.ts +215 -0
- package/dist/domain/externalReferenceRequirements.js +401 -0
- package/dist/domain/externalReferenceRequirements.js.map +1 -0
- package/dist/domain/externalReferenceRuntimeBinding.d.ts +146 -0
- package/dist/domain/externalReferenceRuntimeBinding.js +183 -0
- package/dist/domain/externalReferenceRuntimeBinding.js.map +1 -0
- package/dist/domain/frontendContractEvaluation.d.ts +57 -0
- package/dist/domain/frontendContractEvaluation.js +454 -0
- package/dist/domain/frontendContractEvaluation.js.map +1 -0
- package/dist/domain/frontendContractEvaluationArtifact.d.ts +65 -0
- package/dist/domain/frontendContractEvaluationArtifact.js +108 -0
- package/dist/domain/frontendContractEvaluationArtifact.js.map +1 -0
- package/dist/domain/frontendContractIdentity.d.ts +39 -0
- package/dist/domain/frontendContractIdentity.js +70 -0
- package/dist/domain/frontendContractIdentity.js.map +1 -0
- package/dist/domain/frontendContracts.d.ts +188 -0
- package/dist/domain/frontendContracts.js +260 -0
- package/dist/domain/frontendContracts.js.map +1 -0
- package/dist/domain/identity.d.ts +21 -0
- package/dist/domain/identity.js +47 -0
- package/dist/domain/identity.js.map +1 -0
- package/dist/domain/referenceCorrectionIdentity.d.ts +40 -0
- package/dist/domain/referenceCorrectionIdentity.js +77 -0
- package/dist/domain/referenceCorrectionIdentity.js.map +1 -0
- package/dist/domain/referenceCorrectionWorkflow.d.ts +160 -0
- package/dist/domain/referenceCorrectionWorkflow.js +165 -0
- package/dist/domain/referenceCorrectionWorkflow.js.map +1 -0
- package/dist/domain/referenceFidelityProjection.d.ts +65 -0
- package/dist/domain/referenceFidelityProjection.js +135 -0
- package/dist/domain/referenceFidelityProjection.js.map +1 -0
- package/dist/domain/relationships.d.ts +210 -0
- package/dist/domain/relationships.js +352 -0
- package/dist/domain/relationships.js.map +1 -0
- package/dist/domain/schema.d.ts +269 -0
- package/dist/domain/schema.js +442 -0
- package/dist/domain/schema.js.map +1 -0
- package/dist/domain/scrollEvidence.d.ts +51 -0
- package/dist/domain/scrollEvidence.js +134 -0
- package/dist/domain/scrollEvidence.js.map +1 -0
- package/dist/index.d.ts +114 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/projectWorkflow/aliasCatalog.d.ts +21 -0
- package/dist/projectWorkflow/aliasCatalog.js +67 -0
- package/dist/projectWorkflow/aliasCatalog.js.map +1 -0
- package/dist/projectWorkflow/checkAcceptance.d.ts +25 -0
- package/dist/projectWorkflow/checkAcceptance.js +55 -0
- package/dist/projectWorkflow/checkAcceptance.js.map +1 -0
- package/dist/projectWorkflow/checkResult.d.ts +85 -0
- package/dist/projectWorkflow/checkResult.js +101 -0
- package/dist/projectWorkflow/checkResult.js.map +1 -0
- package/dist/projectWorkflow/projectConfig.d.ts +43 -0
- package/dist/projectWorkflow/projectConfig.js +84 -0
- package/dist/projectWorkflow/projectConfig.js.map +1 -0
- package/dist/projectWorkflow/projectDiscovery.d.ts +9 -0
- package/dist/projectWorkflow/projectDiscovery.js +20 -0
- package/dist/projectWorkflow/projectDiscovery.js.map +1 -0
- package/dist/projectWorkflow/projectPaths.d.ts +8 -0
- package/dist/projectWorkflow/projectPaths.js +23 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -0
- package/dist/request/paths.d.ts +14 -0
- package/dist/request/paths.js +33 -0
- package/dist/request/paths.js.map +1 -0
- package/dist/request/request.d.ts +111 -0
- package/dist/request/request.js +464 -0
- package/dist/request/request.js.map +1 -0
- package/dist/safety/policy.d.ts +14 -0
- package/dist/safety/policy.js +81 -0
- package/dist/safety/policy.js.map +1 -0
- package/dist/viewer/assets/index-CN_yb9Uf.css +1 -0
- package/dist/viewer/assets/index-D98S1_2d.js +9 -0
- package/dist/viewer/icons/icon-192.png +0 -0
- package/dist/viewer/icons/icon-512.png +0 -0
- package/dist/viewer/index.html +15 -0
- package/dist/viewer/manifest.webmanifest +1 -0
- package/dist/viewer/registerSW.js +1 -0
- package/dist/viewer/sw.js +1 -0
- package/dist/viewer/workbox-9c191d2f.js +1 -0
- package/dist/viewerServer/context.d.ts +48 -0
- package/dist/viewerServer/context.js +60 -0
- package/dist/viewerServer/context.js.map +1 -0
- package/dist/viewerServer/evidence/classify.d.ts +59 -0
- package/dist/viewerServer/evidence/classify.js +124 -0
- package/dist/viewerServer/evidence/classify.js.map +1 -0
- package/dist/viewerServer/evidence/comparisonView.d.ts +28 -0
- package/dist/viewerServer/evidence/comparisonView.js +43 -0
- package/dist/viewerServer/evidence/comparisonView.js.map +1 -0
- package/dist/viewerServer/evidence/contextSourceView.d.ts +25 -0
- package/dist/viewerServer/evidence/contextSourceView.js +20 -0
- package/dist/viewerServer/evidence/contextSourceView.js.map +1 -0
- package/dist/viewerServer/evidence/discovery.d.ts +31 -0
- package/dist/viewerServer/evidence/discovery.js +78 -0
- package/dist/viewerServer/evidence/discovery.js.map +1 -0
- package/dist/viewerServer/evidence/evaluationView.d.ts +32 -0
- package/dist/viewerServer/evidence/evaluationView.js +50 -0
- package/dist/viewerServer/evidence/evaluationView.js.map +1 -0
- package/dist/viewerServer/evidence/handles.d.ts +21 -0
- package/dist/viewerServer/evidence/handles.js +43 -0
- package/dist/viewerServer/evidence/handles.js.map +1 -0
- package/dist/viewerServer/evidence/index.d.ts +41 -0
- package/dist/viewerServer/evidence/index.js +82 -0
- package/dist/viewerServer/evidence/index.js.map +1 -0
- package/dist/viewerServer/evidence/limits.d.ts +27 -0
- package/dist/viewerServer/evidence/limits.js +28 -0
- package/dist/viewerServer/evidence/limits.js.map +1 -0
- package/dist/viewerServer/evidence/linkedEvidence.d.ts +43 -0
- package/dist/viewerServer/evidence/linkedEvidence.js +151 -0
- package/dist/viewerServer/evidence/linkedEvidence.js.map +1 -0
- package/dist/viewerServer/evidence/mediaResolver.d.ts +16 -0
- package/dist/viewerServer/evidence/mediaResolver.js +85 -0
- package/dist/viewerServer/evidence/mediaResolver.js.map +1 -0
- package/dist/viewerServer/evidence/observationView.d.ts +29 -0
- package/dist/viewerServer/evidence/observationView.js +46 -0
- package/dist/viewerServer/evidence/observationView.js.map +1 -0
- package/dist/viewerServer/evidence/pathSafety.d.ts +11 -0
- package/dist/viewerServer/evidence/pathSafety.js +31 -0
- package/dist/viewerServer/evidence/pathSafety.js.map +1 -0
- package/dist/viewerServer/evidence/projection.d.ts +55 -0
- package/dist/viewerServer/evidence/projection.js +152 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -0
- package/dist/viewerServer/evidence/referenceView.d.ts +133 -0
- package/dist/viewerServer/evidence/referenceView.js +169 -0
- package/dist/viewerServer/evidence/referenceView.js.map +1 -0
- package/dist/viewerServer/httpServer.d.ts +27 -0
- package/dist/viewerServer/httpServer.js +381 -0
- package/dist/viewerServer/httpServer.js.map +1 -0
- package/dist/viewerServer/openBrowser.d.ts +7 -0
- package/dist/viewerServer/openBrowser.js +32 -0
- package/dist/viewerServer/openBrowser.js.map +1 -0
- package/dist/viewerServer/port.d.ts +16 -0
- package/dist/viewerServer/port.js +19 -0
- package/dist/viewerServer/port.js.map +1 -0
- package/dist/viewerServer/viewerService.d.ts +62 -0
- package/dist/viewerServer/viewerService.js +88 -0
- package/dist/viewerServer/viewerService.js.map +1 -0
- package/docs/ARCHITECTURE.md +1286 -0
- package/docs/CI_CD.md +250 -0
- package/docs/COMMANDS.md +972 -0
- package/docs/CONTRACTS.md +1856 -0
- package/docs/CURRENT_STATE.md +1049 -0
- package/docs/DEVELOPMENT.md +202 -0
- package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -0
- package/docs/PROJECT_DESCRIPTION.md +2221 -0
- package/docs/PROJECT_MILESTONES.md +2526 -0
- package/docs/PROJECT_OVERVIEW.md +150 -0
- package/docs/QUICKSTART.md +83 -0
- package/docs/RELEASE.md +27 -0
- package/docs/ROADMAP.md +641 -0
- package/docs/SECURITY.md +218 -0
- package/docs/WORKFLOWS.md +642 -0
- package/docs/plans/v0.8-implementation-plan.md +655 -0
- package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -0
- package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -0
- package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -0
- package/docs/reports/v0.7-pre-release-readiness.md +337 -0
- package/docs/reports/v0.7-reference-binding-prompt5.md +223 -0
- package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -0
- package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -0
- package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -0
- package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -0
- package/docs/reports/v0.7-reference-regions-prompt2.md +195 -0
- package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -0
- package/docs/reports/v0.7-release-prep.md +423 -0
- package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -0
- package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -0
- package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -0
- package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -0
- package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -0
- package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -0
- package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -0
- package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -0
- package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -0
- package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -0
- package/docs/reports/v0.8.1-check-orchestration-prompt2.md +69 -0
- package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -0
- package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -0
- package/docs/reports/v0.8.1-project-workflow-foundation-prompt1.md +66 -0
- 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.
|