@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,655 @@
|
|
|
1
|
+
# v0.8 Implementation Plan — Interactive Local Observation Viewer
|
|
2
|
+
|
|
3
|
+
## 1. Status and authority
|
|
4
|
+
|
|
5
|
+
This document is the frozen concrete implementation plan for
|
|
6
|
+
`my-frontend-observer` v0.8.
|
|
7
|
+
|
|
8
|
+
It was created during v0.8 version-start planning after reviewing the current
|
|
9
|
+
v0.7 repository state and the v0.8 roadmap/milestone requirements. It governs
|
|
10
|
+
implementation scope, architecture decisions, batch order, batch gates, and
|
|
11
|
+
validation expectations unless the user explicitly revises it.
|
|
12
|
+
|
|
13
|
+
This document is planning authority only. It does not prove that any v0.8 batch
|
|
14
|
+
has been implemented. Actual implementation/release state remains owned by
|
|
15
|
+
repository evidence and `docs/CURRENT_STATE.md`.
|
|
16
|
+
|
|
17
|
+
The package remains `0.7.0` until the separate release-preparation workflow
|
|
18
|
+
explicitly bumps it after implementation and pre-release readiness pass.
|
|
19
|
+
|
|
20
|
+
## 2. Version objective
|
|
21
|
+
|
|
22
|
+
Build an interactive local graphical viewer over the existing v0.1-v0.7
|
|
23
|
+
Observer evidence system so a developer can understand runtime observations,
|
|
24
|
+
before/after comparisons, frontend contracts, external references,
|
|
25
|
+
reference/candidate fidelity, runtime/reference bindings, bounded agent context,
|
|
26
|
+
and runtime/static correlation without manually opening raw artifacts.
|
|
27
|
+
|
|
28
|
+
The viewer is a presentation and inspection layer over existing Observer-owned
|
|
29
|
+
evidence. It must not become a second implementation of any existing evidence
|
|
30
|
+
engine.
|
|
31
|
+
|
|
32
|
+
## 3. Frozen planning decisions
|
|
33
|
+
|
|
34
|
+
The following version-start decisions are frozen for v0.8.
|
|
35
|
+
|
|
36
|
+
1. UI technology: React + TypeScript + Vite.
|
|
37
|
+
2. Application boundary: normal browser + Node-backed local server + installable
|
|
38
|
+
Progressive Web App (PWA), using the same React application in browser and
|
|
39
|
+
installed modes.
|
|
40
|
+
3. Reader architecture: existing canonical readers -> ephemeral viewer adapter
|
|
41
|
+
-> viewer protocol/UI projection. The projection is not persisted evidence.
|
|
42
|
+
4. Reference/candidate display: side-by-side by default, with independently
|
|
43
|
+
toggleable structured overlays.
|
|
44
|
+
5. Geometry rendering: SVG using each source artifact/image's original
|
|
45
|
+
coordinate domain.
|
|
46
|
+
6. Interaction: explicit-binding cross-selection + independent zoom/pan +
|
|
47
|
+
conditional synchronized/locked viewing only when existing compatibility
|
|
48
|
+
evidence permits it.
|
|
49
|
+
7. Loading: metadata/index first + on-demand artifact and image loading.
|
|
50
|
+
|
|
51
|
+
No paid, premium-only, proprietary hosted, or cloud dependency is required for
|
|
52
|
+
this plan. The viewer remains local-first.
|
|
53
|
+
|
|
54
|
+
## 4. Derived architecture decisions
|
|
55
|
+
|
|
56
|
+
The frozen decisions above imply the following implementation boundaries.
|
|
57
|
+
|
|
58
|
+
### 4.1 Public viewer entry point
|
|
59
|
+
|
|
60
|
+
Add one thin public CLI entry point for launching the viewer:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
my-frontend-observer view --root <evidence-root>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The command starts the local viewer server and exposes the same React viewer to
|
|
67
|
+
a normal browser or an installed PWA. Exact optional operational flags may be
|
|
68
|
+
added only when needed for deterministic testing or local operation, but they
|
|
69
|
+
must not create a second evidence workflow.
|
|
70
|
+
|
|
71
|
+
The CLI remains a parsing/dispatch/presentation boundary. It must not contain
|
|
72
|
+
artifact semantics, comparison logic, contract logic, fidelity logic, binding
|
|
73
|
+
logic, or browser observation logic.
|
|
74
|
+
|
|
75
|
+
### 4.2 Stable local PWA origin
|
|
76
|
+
|
|
77
|
+
The default viewer server must bind only to loopback and use one stable default
|
|
78
|
+
origin so an installed PWA has a stable identity. The implementation batch must
|
|
79
|
+
select and document one fixed default loopback port after checking current repo
|
|
80
|
+
and test-fixture conflicts.
|
|
81
|
+
|
|
82
|
+
Do not silently fall back to a random port when the default port is occupied.
|
|
83
|
+
Return an actionable error. An explicit alternate port may be supported for
|
|
84
|
+
advanced/testing use, with the consequence that it is a different web origin.
|
|
85
|
+
|
|
86
|
+
### 4.3 Read-only server boundary
|
|
87
|
+
|
|
88
|
+
The v0.8 viewer server is read-only with respect to target applications and
|
|
89
|
+
persisted Observer evidence.
|
|
90
|
+
|
|
91
|
+
Permitted responsibilities include:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
serve viewer application assets
|
|
95
|
+
index supported evidence under the explicitly allowed evidence root
|
|
96
|
+
read and validate existing artifacts through canonical readers
|
|
97
|
+
produce ephemeral viewer projections
|
|
98
|
+
serve referenced screenshots/reference images safely
|
|
99
|
+
run existing pure/in-memory evaluation functions when the required explicit
|
|
100
|
+
inputs are supplied and the result is intentionally non-persisted in v0.7
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The viewer server must not add approval, supersession, source editing, capture,
|
|
104
|
+
contract mutation, annotation authoring, automatic binding, or workflow-control
|
|
105
|
+
endpoints.
|
|
106
|
+
|
|
107
|
+
Opening or inspecting evidence never changes it.
|
|
108
|
+
|
|
109
|
+
### 4.4 Filesystem boundary
|
|
110
|
+
|
|
111
|
+
`--root` is an explicit local filesystem trust boundary.
|
|
112
|
+
|
|
113
|
+
The server may expose only recognized files and media reachable through
|
|
114
|
+
validated Observer evidence under that allowed root. Path traversal, arbitrary
|
|
115
|
+
absolute-path reads, and unrelated filesystem browsing must fail closed.
|
|
116
|
+
|
|
117
|
+
### 4.5 Existing readers and ephemeral viewer adapter
|
|
118
|
+
|
|
119
|
+
Existing artifact readers and validators remain the only artifact semantic
|
|
120
|
+
readers. The viewer may add narrow missing reader wrappers only when a current
|
|
121
|
+
artifact family lacks one, and such a reader must call that artifact family's
|
|
122
|
+
existing structural validator rather than introduce a second validator.
|
|
123
|
+
|
|
124
|
+
The viewer adapter converts already-validated domain values into UI-friendly
|
|
125
|
+
in-memory projections. These projections are not new evidence contracts and are
|
|
126
|
+
not persisted.
|
|
127
|
+
|
|
128
|
+
Do not create `viewer.json`, a viewer manifest artifact, a viewer cache artifact,
|
|
129
|
+
or another durable evidence family in v0.8.
|
|
130
|
+
|
|
131
|
+
### 4.6 PWA caching boundary
|
|
132
|
+
|
|
133
|
+
The PWA/service worker may cache the application shell and immutable built
|
|
134
|
+
assets required for the viewer UI.
|
|
135
|
+
|
|
136
|
+
It must not make screenshots, external reference images, observation manifests,
|
|
137
|
+
comparison artifacts, contract/evaluation evidence, bounded-agent-context data,
|
|
138
|
+
or source-correlation evidence available as stale cached truth after the local
|
|
139
|
+
server/evidence source changes.
|
|
140
|
+
|
|
141
|
+
Evidence remains server-backed and current to the selected local root.
|
|
142
|
+
|
|
143
|
+
If the installed PWA is opened while the local Observer viewer server is not
|
|
144
|
+
running, show an actionable local-server-not-running state rather than a blank
|
|
145
|
+
or misleading stale evidence screen.
|
|
146
|
+
|
|
147
|
+
### 4.7 SVG coordinate rule
|
|
148
|
+
|
|
149
|
+
Runtime screenshot overlays use the runtime screenshot/artifact coordinate
|
|
150
|
+
space. External-reference overlays use the external reference image coordinate
|
|
151
|
+
space. The viewer uses SVG `viewBox`/display transforms to scale for presentation
|
|
152
|
+
without rewriting the underlying evidence coordinates.
|
|
153
|
+
|
|
154
|
+
Reference-image pixels and runtime/CSS coordinates remain distinct domains.
|
|
155
|
+
Existing v0.7 applicability/fidelity mapping remains the only authority for
|
|
156
|
+
cross-domain measurement interpretation.
|
|
157
|
+
|
|
158
|
+
### 4.8 Interaction rule
|
|
159
|
+
|
|
160
|
+
Cross-highlighting between a reference region and runtime target is driven only
|
|
161
|
+
by existing explicit binding results/declarations. Name similarity, spatial
|
|
162
|
+
proximity, rectangle overlap, or UI heuristics must never create a binding.
|
|
163
|
+
|
|
164
|
+
Independent zoom/pan is always available. Locked/synchronized viewing is enabled
|
|
165
|
+
only when existing applicability/compatibility evidence makes coordinated
|
|
166
|
+
viewing meaningful. If it is not safe, the UI must show why lock is unavailable.
|
|
167
|
+
|
|
168
|
+
### 4.9 Loading rule
|
|
169
|
+
|
|
170
|
+
Initial viewer navigation loads bounded metadata only. Full artifact payloads,
|
|
171
|
+
screenshots, and reference images are fetched on demand for the selected view.
|
|
172
|
+
|
|
173
|
+
Do not add virtualization, workers, databases, or complex caching unless
|
|
174
|
+
measured v0.8 performance evidence demonstrates a need. The architecture should
|
|
175
|
+
leave room for later optimization without making it part of this version by
|
|
176
|
+
default.
|
|
177
|
+
|
|
178
|
+
## 5. Planned viewer structure
|
|
179
|
+
|
|
180
|
+
The expected responsibility flow is:
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
my-frontend-observer view --root <evidence-root>
|
|
184
|
+
|
|
|
185
|
+
v
|
|
186
|
+
Node local viewer server
|
|
187
|
+
loopback only
|
|
188
|
+
|
|
|
189
|
+
+----------+----------+
|
|
190
|
+
| |
|
|
191
|
+
v v
|
|
192
|
+
canonical readers safe media serving
|
|
193
|
+
|
|
|
194
|
+
v
|
|
195
|
+
ephemeral viewer adapters
|
|
196
|
+
|
|
|
197
|
+
v
|
|
198
|
+
viewer protocol/API
|
|
199
|
+
|
|
|
200
|
+
v
|
|
201
|
+
React + TypeScript + Vite PWA
|
|
202
|
+
|
|
|
203
|
+
+------+------+----------------+----------------+
|
|
204
|
+
| | | |
|
|
205
|
+
v v v v
|
|
206
|
+
Observation Comparison Reference Context/
|
|
207
|
+
inspection + contracts /candidate provenance
|
|
208
|
+
inspection
|
|
209
|
+
|
|
|
210
|
+
v
|
|
211
|
+
SVG overlays + explicit-binding interaction
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
The PWA contains presentation logic. It does not contain replacement Observer
|
|
215
|
+
engines.
|
|
216
|
+
|
|
217
|
+
## 6. Implementation batches
|
|
218
|
+
|
|
219
|
+
v0.8 is implemented in eight ordered batches. Each batch is part of the same
|
|
220
|
+
version. Later batches assume earlier batches are implemented and merged. A
|
|
221
|
+
coding-agent prompt must not redesign the version or pull later-version features
|
|
222
|
+
forward.
|
|
223
|
+
|
|
224
|
+
### Batch 1 — Viewer runtime and PWA foundation
|
|
225
|
+
|
|
226
|
+
#### Goal
|
|
227
|
+
|
|
228
|
+
Establish the build/runtime shell for a local browser viewer and installable PWA
|
|
229
|
+
without yet implementing evidence interpretation.
|
|
230
|
+
|
|
231
|
+
#### In scope
|
|
232
|
+
|
|
233
|
+
- Add React + TypeScript + Vite viewer build configuration.
|
|
234
|
+
- Add PWA manifest/service-worker infrastructure and installability support.
|
|
235
|
+
- Add a Node local viewer server bound to loopback only.
|
|
236
|
+
- Select and freeze one stable default loopback port after checking current
|
|
237
|
+
repo/test fixture conflicts.
|
|
238
|
+
- Add the thin `view --root <evidence-root>` CLI dispatch path.
|
|
239
|
+
- Serve built viewer assets from the npm package.
|
|
240
|
+
- Establish viewer protocol/version identity if needed for safe client/server
|
|
241
|
+
compatibility.
|
|
242
|
+
- Establish a basic three-area viewer shell suitable for evidence navigation,
|
|
243
|
+
visual inspection, and details/diagnostics.
|
|
244
|
+
- Integrate viewer build output into package build/packing without splitting the
|
|
245
|
+
project into another npm package.
|
|
246
|
+
|
|
247
|
+
#### Out of scope
|
|
248
|
+
|
|
249
|
+
- artifact interpretation beyond minimal server health/root identity;
|
|
250
|
+
- screenshot geometry overlays;
|
|
251
|
+
- comparison/contract/reference/fidelity inspection;
|
|
252
|
+
- source editing;
|
|
253
|
+
- approval/supersession;
|
|
254
|
+
- annotation;
|
|
255
|
+
- automatic binding;
|
|
256
|
+
- cloud hosting.
|
|
257
|
+
|
|
258
|
+
#### Gate
|
|
259
|
+
|
|
260
|
+
A built/packed candidate can start `my-frontend-observer view --root <fixture>`
|
|
261
|
+
and serve the same working React shell to a normal browser and PWA-capable
|
|
262
|
+
browser from the fixed loopback origin. Existing CLI/library behavior remains
|
|
263
|
+
unchanged.
|
|
264
|
+
|
|
265
|
+
### Batch 2 — Evidence indexing, canonical readers, and lazy data boundary
|
|
266
|
+
|
|
267
|
+
#### Goal
|
|
268
|
+
|
|
269
|
+
Create the safe read-only data boundary from local Observer evidence into the
|
|
270
|
+
viewer while preserving existing validators and artifact semantics.
|
|
271
|
+
|
|
272
|
+
#### In scope
|
|
273
|
+
|
|
274
|
+
- Bounded recognition/indexing of supported Observer evidence under the allowed
|
|
275
|
+
root.
|
|
276
|
+
- Reuse existing canonical readers for observation, comparison, external
|
|
277
|
+
reference, frontend contract, and frontend contract evaluation artifacts.
|
|
278
|
+
- Add only narrow missing reader wrappers required for currently persisted
|
|
279
|
+
artifact/context families, delegating to existing validators.
|
|
280
|
+
- Add ephemeral viewer adapter/projection types for UI consumption.
|
|
281
|
+
- Add metadata-first index responses.
|
|
282
|
+
- Add on-demand full-artifact and media retrieval.
|
|
283
|
+
- Represent supported, unsupported-version, malformed, missing, partial, and
|
|
284
|
+
unavailable states explicitly.
|
|
285
|
+
- Enforce safe evidence-root/media-path resolution.
|
|
286
|
+
|
|
287
|
+
#### Out of scope
|
|
288
|
+
|
|
289
|
+
- new persistent viewer artifacts;
|
|
290
|
+
- schema migration/upgrading;
|
|
291
|
+
- silently accepting unsupported future schema versions;
|
|
292
|
+
- full-directory arbitrary file browsing;
|
|
293
|
+
- presentation-specific reimplementation of validators.
|
|
294
|
+
|
|
295
|
+
#### Gate
|
|
296
|
+
|
|
297
|
+
The viewer can enumerate recognized fixture evidence from metadata, load one
|
|
298
|
+
selected artifact on demand through its existing validation boundary, load its
|
|
299
|
+
owned/referenced media safely, and visibly distinguish malformed/unsupported/
|
|
300
|
+
missing evidence rather than silently dropping it.
|
|
301
|
+
|
|
302
|
+
### Batch 3 — Runtime observation inspection and SVG overlays
|
|
303
|
+
|
|
304
|
+
#### Goal
|
|
305
|
+
|
|
306
|
+
Make one current `ObservationArtifact` understandable graphically.
|
|
307
|
+
|
|
308
|
+
#### In scope
|
|
309
|
+
|
|
310
|
+
- Display the observation screenshot on demand.
|
|
311
|
+
- Render stable target geometry through SVG in the original source coordinate
|
|
312
|
+
domain.
|
|
313
|
+
- Add selectable runtime-target overlays and labels.
|
|
314
|
+
- Add independently toggleable runtime overlays for evidence already present,
|
|
315
|
+
such as relationships, visibility, overflow, and scroll behavior where
|
|
316
|
+
meaningful.
|
|
317
|
+
- Show stable target identity, resolution status, semantics, geometry,
|
|
318
|
+
visibility, overflow, scrolling, containment, relationships, diagnostics,
|
|
319
|
+
evidence source/provenance, and completion state in the inspector.
|
|
320
|
+
- Preserve unavailable/not-found/ambiguous/partial states without fabricated
|
|
321
|
+
zero rectangles.
|
|
322
|
+
|
|
323
|
+
#### Out of scope
|
|
324
|
+
|
|
325
|
+
- before/after comparison UI;
|
|
326
|
+
- contracts;
|
|
327
|
+
- external references;
|
|
328
|
+
- reference/runtime binding;
|
|
329
|
+
- new browser queries or target resolution from the viewer.
|
|
330
|
+
|
|
331
|
+
#### Gate
|
|
332
|
+
|
|
333
|
+
A real existing observation fixture renders screenshot and target overlays whose
|
|
334
|
+
positions are traceable to the artifact's existing geometry. Unresolved targets
|
|
335
|
+
produce honest non-geometric states, not invented boxes.
|
|
336
|
+
|
|
337
|
+
### Batch 4 — Before/after comparison and contract/change-scope inspection
|
|
338
|
+
|
|
339
|
+
#### Goal
|
|
340
|
+
|
|
341
|
+
Expose the existing v0.4 comparison and v0.5 contract/evaluation results through
|
|
342
|
+
the viewer without recomputing alternate semantics.
|
|
343
|
+
|
|
344
|
+
#### In scope
|
|
345
|
+
|
|
346
|
+
- Before/after visual mode using the source observations referenced by an
|
|
347
|
+
existing comparison.
|
|
348
|
+
- Display existing appeared/disappeared/moved/resized, visibility, clipping,
|
|
349
|
+
overflow, relationship, page-size, scroll-owner, and comparability evidence
|
|
350
|
+
as available.
|
|
351
|
+
- Display baseline and per-change contract/evaluation results.
|
|
352
|
+
- Display requested, expected-dependent, protected, preserved, and unexpected
|
|
353
|
+
classifications.
|
|
354
|
+
- Cross-highlight relevant runtime targets only where existing target identity
|
|
355
|
+
supports it.
|
|
356
|
+
- Make overall failures visually clear when a requested/local change passes but
|
|
357
|
+
a protected/preserved condition fails.
|
|
358
|
+
|
|
359
|
+
#### Out of scope
|
|
360
|
+
|
|
361
|
+
- a second before/after comparison engine;
|
|
362
|
+
- a second contract evaluator;
|
|
363
|
+
- reference/candidate fidelity;
|
|
364
|
+
- editing contracts or approving baselines.
|
|
365
|
+
|
|
366
|
+
#### Gate
|
|
367
|
+
|
|
368
|
+
Controlled fixtures prove the viewer can explain both an all-pass change and the
|
|
369
|
+
required safety case where a requested change passes but an active protected or
|
|
370
|
+
preserved requirement fails overall.
|
|
371
|
+
|
|
372
|
+
### Batch 5 — External reference and reference/candidate inspection
|
|
373
|
+
|
|
374
|
+
#### Goal
|
|
375
|
+
|
|
376
|
+
Expose the existing v0.7 external-reference model beside a browser-rendered
|
|
377
|
+
candidate using the frozen side-by-side and toggleable-overlay design.
|
|
378
|
+
|
|
379
|
+
#### In scope
|
|
380
|
+
|
|
381
|
+
- Load imported/approved external-reference artifacts through canonical readers.
|
|
382
|
+
- Resolve approved-reference image ownership/source references safely.
|
|
383
|
+
- Side-by-side reference and candidate panels as the default layout.
|
|
384
|
+
- Reference-side SVG region overlays in original reference-image coordinates.
|
|
385
|
+
- Candidate-side runtime-target overlays in original runtime coordinates.
|
|
386
|
+
- Independent overlay toggles for regions/labels/relationships/requirement
|
|
387
|
+
status on the reference side and targets/labels/relationships/contract status
|
|
388
|
+
on the candidate side.
|
|
389
|
+
- Display reference lifecycle, provenance, image metadata, regions,
|
|
390
|
+
relationships, selected requirements, tolerances, adequacy, applicability,
|
|
391
|
+
supersession, diagnostics, and approval information.
|
|
392
|
+
- Display existing reference/candidate compatibility and fidelity state/results
|
|
393
|
+
when supplied/computable through the existing v0.7 engines.
|
|
394
|
+
|
|
395
|
+
#### Out of scope
|
|
396
|
+
|
|
397
|
+
- pixel-difference scoring as a success mechanism;
|
|
398
|
+
- automatic computer-vision region discovery;
|
|
399
|
+
- automatic binding;
|
|
400
|
+
- changing/importing/approving/superseding references through the viewer;
|
|
401
|
+
- graphical region authoring.
|
|
402
|
+
|
|
403
|
+
#### Gate
|
|
404
|
+
|
|
405
|
+
A reference/candidate fixture can be inspected side by side with source-domain
|
|
406
|
+
SVG overlays and existing structured reference/fidelity evidence. Imported and
|
|
407
|
+
approved lifecycle states and image ownership remain distinguishable.
|
|
408
|
+
|
|
409
|
+
### Batch 6 — Explicit-binding interaction, zoom/pan, and conditional lock
|
|
410
|
+
|
|
411
|
+
#### Goal
|
|
412
|
+
|
|
413
|
+
Add the synchronized inspection behavior required for useful reference/candidate
|
|
414
|
+
analysis while preserving explicit identity and compatibility rules.
|
|
415
|
+
|
|
416
|
+
#### In scope
|
|
417
|
+
|
|
418
|
+
- Explicit-binding-driven cross-selection in both directions.
|
|
419
|
+
- Visible `bound`, `ambiguous`, and `unavailable` binding states.
|
|
420
|
+
- Independent zoom, pan, reset, and fit controls for both visual panes.
|
|
421
|
+
- Conditional view lock/synchronization only when existing applicability and
|
|
422
|
+
compatibility evidence permits it.
|
|
423
|
+
- Clear explanation when synchronization is unavailable.
|
|
424
|
+
- On-demand use of the existing v0.7 in-memory reference-fidelity evaluator
|
|
425
|
+
where its required reference/candidate/binding inputs are available.
|
|
426
|
+
- No persistence of a new fidelity artifact when the existing v0.7 contract is
|
|
427
|
+
intentionally in-memory.
|
|
428
|
+
|
|
429
|
+
#### Out of scope
|
|
430
|
+
|
|
431
|
+
- name-based or geometry-based inferred binding;
|
|
432
|
+
- unconditional zoom synchronization;
|
|
433
|
+
- a viewer-only fidelity evaluator;
|
|
434
|
+
- automatic correction or source mutation.
|
|
435
|
+
|
|
436
|
+
#### Gate
|
|
437
|
+
|
|
438
|
+
Selecting a bound reference region highlights exactly its declared runtime
|
|
439
|
+
target and vice versa. Ambiguous/unavailable bindings never auto-select a target.
|
|
440
|
+
Independent zoom/pan always works, and locked viewing is enabled only for a
|
|
441
|
+
compatible case and visibly blocked for an incompatible case.
|
|
442
|
+
|
|
443
|
+
### Batch 7 — Bounded agent context, correlation, provenance, and raw evidence navigation
|
|
444
|
+
|
|
445
|
+
#### Goal
|
|
446
|
+
|
|
447
|
+
Complete the nonvisual evidence inspection needed to understand why the coding
|
|
448
|
+
agent received a particular bounded context and how runtime targets relate to
|
|
449
|
+
static/source candidates.
|
|
450
|
+
|
|
451
|
+
#### In scope
|
|
452
|
+
|
|
453
|
+
- Display bounded-agent-context identity/profile and supported version.
|
|
454
|
+
- Display adequacy, omissions, truncations, required-evidence loss, and
|
|
455
|
+
reference-fidelity projection where present.
|
|
456
|
+
- Display runtime/static correlation status, competing candidates, evidence
|
|
457
|
+
references, and uncertainty without asserting false ownership.
|
|
458
|
+
- Display provenance/source references relevant to the selected evidence.
|
|
459
|
+
- Provide safe navigation to relevant raw structured evidence within the allowed
|
|
460
|
+
evidence root.
|
|
461
|
+
- Preserve correlated/ambiguous/unavailable and adequate/partial/inadequate
|
|
462
|
+
distinctions exactly as existing domain evidence represents them.
|
|
463
|
+
|
|
464
|
+
#### Out of scope
|
|
465
|
+
|
|
466
|
+
- running `my-dev-kit` from the viewer;
|
|
467
|
+
- inventing static/source ownership;
|
|
468
|
+
- rebuilding bounded-agent-context;
|
|
469
|
+
- arbitrary filesystem browsing;
|
|
470
|
+
- editing raw evidence.
|
|
471
|
+
|
|
472
|
+
#### Gate
|
|
473
|
+
|
|
474
|
+
A developer can trace a selected runtime/reference problem through the bounded
|
|
475
|
+
context and existing source-correlation evidence, including ambiguity,
|
|
476
|
+
omissions, and truncation, and can inspect the associated raw evidence without
|
|
477
|
+
leaving the allowed evidence root.
|
|
478
|
+
|
|
479
|
+
### Batch 8 — Integrated viewer acceptance, PWA hardening, and packaged proof
|
|
480
|
+
|
|
481
|
+
#### Goal
|
|
482
|
+
|
|
483
|
+
Prove the complete v0.8 viewer works as one packaged, local-first product while
|
|
484
|
+
preserving all earlier CLI/programmatic workflows and architectural boundaries.
|
|
485
|
+
|
|
486
|
+
#### Required integrated proof set
|
|
487
|
+
|
|
488
|
+
Use deterministic evidence covering, as applicable:
|
|
489
|
+
|
|
490
|
+
```text
|
|
491
|
+
baseline observation
|
|
492
|
+
candidate observation
|
|
493
|
+
comparison
|
|
494
|
+
persistent baseline contract
|
|
495
|
+
per-change contract
|
|
496
|
+
contract evaluation
|
|
497
|
+
imported external reference
|
|
498
|
+
approved external reference/reference image ownership
|
|
499
|
+
reference regions and requirements
|
|
500
|
+
reference applicability
|
|
501
|
+
explicit reference/runtime bindings
|
|
502
|
+
reference/candidate fidelity
|
|
503
|
+
bounded agent context
|
|
504
|
+
runtime/static correlation, including ambiguity
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
#### Required acceptance scenarios
|
|
508
|
+
|
|
509
|
+
1. Normal observation: screenshot -> target -> geometry/semantics/behavior/
|
|
510
|
+
relationships.
|
|
511
|
+
2. Successful requested change: before -> after -> comparison -> contract pass.
|
|
512
|
+
3. Protected/preserved regression: requested change passes locally while an
|
|
513
|
+
active protected/preserved condition fails overall.
|
|
514
|
+
4. Reference mismatch: approved reference -> explicit binding -> structured
|
|
515
|
+
fidelity failure.
|
|
516
|
+
5. Reference fidelity passes while an active contract fails, producing overall
|
|
517
|
+
failure rather than apparent success.
|
|
518
|
+
6. Reference/candidate incompatibility produces an explicit blocked/
|
|
519
|
+
incomparable state rather than fabricated visual failures.
|
|
520
|
+
7. Ambiguous/unavailable binding remains visible and produces no automatic
|
|
521
|
+
candidate selection.
|
|
522
|
+
8. Missing/malformed/unsupported evidence remains visible and actionable.
|
|
523
|
+
9. Normal browser mode works against the packaged candidate.
|
|
524
|
+
10. PWA manifest/service worker/installability behavior works in a supported
|
|
525
|
+
PWA-capable browser.
|
|
526
|
+
11. Installed/standalone viewer mode connects to the same local server and same
|
|
527
|
+
canonical evidence boundary.
|
|
528
|
+
12. PWA shell caching never makes stale evidence appear available when the local
|
|
529
|
+
server/evidence source is unavailable.
|
|
530
|
+
13. Existing observation, comparison, contract, external-reference, and
|
|
531
|
+
programmatic workflows still pass their current validation.
|
|
532
|
+
|
|
533
|
+
#### Gate
|
|
534
|
+
|
|
535
|
+
The packaged candidate satisfies the v0.8 roadmap/milestone acceptance criteria
|
|
536
|
+
through a real local viewer, while all pre-v0.8 CLI/programmatic paths remain
|
|
537
|
+
independently functional and no second evidence engine has been introduced.
|
|
538
|
+
|
|
539
|
+
## 7. Cross-batch invariants
|
|
540
|
+
|
|
541
|
+
Every implementation prompt must preserve these invariants.
|
|
542
|
+
|
|
543
|
+
- Assume all earlier prompts in this milestone are already implemented and
|
|
544
|
+
merged in the current repo state. Do not re-create their architecture.
|
|
545
|
+
- Inspect current implementation before editing.
|
|
546
|
+
- Reuse current Observer artifact/domain/application ownership boundaries.
|
|
547
|
+
- Do not move v0.9 annotation authoring into v0.8.
|
|
548
|
+
- Do not add source editing or automatic design generation.
|
|
549
|
+
- Do not add a second browser observer, relationship engine, comparison engine,
|
|
550
|
+
contract engine, reference model, reference evaluator, binding engine,
|
|
551
|
+
correlation implementation, or bounded-context builder.
|
|
552
|
+
- Runtime target identity, reference-region identity, static/source identity,
|
|
553
|
+
and filesystem identity remain distinct.
|
|
554
|
+
- Viewer state is presentation state, not evidence state.
|
|
555
|
+
- Unsupported, partial, unavailable, derived, ambiguous, and incomparable states
|
|
556
|
+
remain honest and visible.
|
|
557
|
+
- Reference-fidelity success cannot override an active contract failure.
|
|
558
|
+
- Existing approved references/baselines are never implicitly approved,
|
|
559
|
+
superseded, or mutated by viewing.
|
|
560
|
+
- Heavy images are referenced/served on demand rather than embedded into every
|
|
561
|
+
data response.
|
|
562
|
+
- The local viewer remains optional. CLI/programmatic workflows must continue to
|
|
563
|
+
work without it.
|
|
564
|
+
|
|
565
|
+
## 8. Version-wide validation expectations
|
|
566
|
+
|
|
567
|
+
Implementation batches should add focused tests as they introduce each layer.
|
|
568
|
+
The completed implementation must ultimately pass the repository's applicable
|
|
569
|
+
validation, including:
|
|
570
|
+
|
|
571
|
+
```text
|
|
572
|
+
npm run typecheck
|
|
573
|
+
npm run lint
|
|
574
|
+
npm test
|
|
575
|
+
npm run test:browser
|
|
576
|
+
npm run build
|
|
577
|
+
npm run check:docs
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
v0.8 must additionally include viewer-specific tests for:
|
|
581
|
+
|
|
582
|
+
- loopback-only server behavior and filesystem-root safety;
|
|
583
|
+
- viewer protocol/readers/adapters;
|
|
584
|
+
- unsupported/malformed/missing evidence states;
|
|
585
|
+
- metadata-first/on-demand loading;
|
|
586
|
+
- SVG coordinate/display transforms;
|
|
587
|
+
- target/region selection;
|
|
588
|
+
- explicit-binding cross-selection;
|
|
589
|
+
- independent zoom/pan and conditional lock;
|
|
590
|
+
- PWA manifest/service-worker/installability behavior;
|
|
591
|
+
- packaged viewer asset presence and launch;
|
|
592
|
+
- complete deterministic integrated viewer flows.
|
|
593
|
+
|
|
594
|
+
Cross-platform pre-release validation must exercise the packed candidate on
|
|
595
|
+
Windows, Linux, and macOS where the existing release workflow requires it.
|
|
596
|
+
Browser/PWA behavior that cannot be proven identically on all three runners must
|
|
597
|
+
be reported precisely rather than overstated.
|
|
598
|
+
|
|
599
|
+
## 9. Explicit v0.8 exclusions
|
|
600
|
+
|
|
601
|
+
The following are not part of v0.8:
|
|
602
|
+
|
|
603
|
+
```text
|
|
604
|
+
visual annotation authoring
|
|
605
|
+
drawing, moving, or resizing reference regions
|
|
606
|
+
interactive requirement authoring
|
|
607
|
+
source editing
|
|
608
|
+
automatic frontend correction
|
|
609
|
+
automatic region/target binding
|
|
610
|
+
computer-vision target discovery
|
|
611
|
+
image-to-code or raster-to-HTML/CSS/SVG generation
|
|
612
|
+
pixel-diff-only acceptance
|
|
613
|
+
a second workflow engine
|
|
614
|
+
cloud hosting
|
|
615
|
+
accounts/authentication for the viewer
|
|
616
|
+
collaboration/comments
|
|
617
|
+
a database
|
|
618
|
+
mandatory viewer use for observation or coding-agent review
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
These exclusions must not be pulled into a batch merely because the new UI makes
|
|
622
|
+
them technically convenient.
|
|
623
|
+
|
|
624
|
+
## 10. Post-implementation workflow
|
|
625
|
+
|
|
626
|
+
After all eight implementation batches pass, follow the existing fixed version
|
|
627
|
+
workflow rather than treating Batch 8 as release authorization:
|
|
628
|
+
|
|
629
|
+
```text
|
|
630
|
+
8 implementation batches
|
|
631
|
+
->
|
|
632
|
+
hardened documentation update + implementation-completeness audit
|
|
633
|
+
->
|
|
634
|
+
pre-release readiness + cross-platform/security validation
|
|
635
|
+
->
|
|
636
|
+
release preparation/version bump/package hygiene
|
|
637
|
+
->
|
|
638
|
+
user-approved publication
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
The implementation batches must not bump package version to `0.8.0`, publish to
|
|
642
|
+
npm, create the release tag, or create the GitHub release. Those actions belong
|
|
643
|
+
to the later release workflow.
|
|
644
|
+
|
|
645
|
+
## 11. Plan change control
|
|
646
|
+
|
|
647
|
+
If implementation evidence proves that this plan cannot be executed safely or
|
|
648
|
+
that one of its frozen assumptions is wrong, stop the affected batch and report
|
|
649
|
+
the concrete evidence. Do not silently reorder batches, replace the selected
|
|
650
|
+
viewer architecture, pull in future-version scope, or redefine an existing
|
|
651
|
+
Observer engine.
|
|
652
|
+
|
|
653
|
+
A material change becomes authoritative only after the user explicitly accepts
|
|
654
|
+
it and this file is revised to record the new plan before subsequent batches are
|
|
655
|
+
executed against that revision.
|