@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,69 @@
|
|
|
1
|
+
# v0.8.1 Check Orchestration, Prompt 2
|
|
2
|
+
|
|
3
|
+
## Repository and filesystem audit
|
|
4
|
+
|
|
5
|
+
Starting HEAD was `b8b2eff50dfc16dd836d3b0b37ae30c7e767da21` on `master`; package and lockfile remain `0.8.0`. The Prompt 1 report and source establish the project configuration, discovery, managed paths, alias catalog, `init`, `capture`, project-aware `view`, Chromium proof, packed proof, canonical identity preservation, and readiness for Prompt 2.
|
|
6
|
+
|
|
7
|
+
All correction-run state was confined to:
|
|
8
|
+
|
|
9
|
+
`C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-workflow\v0.8.1\prompt2-correction`
|
|
10
|
+
|
|
11
|
+
The resolved `tmp`, `logs`, `fixtures`, `consumer`, `pack`, `npm-cache`, `browser`, `evidence`, and `quarantine` paths were verified beneath that root. Process-local `TEMP`, `TMP`, and npm cache settings pointed there for validation. One ignored, untracked root-level `observations/` directory containing prior canonical runtime output was verified untracked and moved intact to `quarantine/observations`; no user or tracked file was deleted. `.claude/` remained ignored and untouched.
|
|
12
|
+
|
|
13
|
+
## Implementation
|
|
14
|
+
|
|
15
|
+
Project configuration now writes schema `1.1.0` while reading both `1.0.0` and `1.1.0`. Version `1.0.0` retains its exact Prompt 1 fields and rejects `acceptance`. Version `1.1.0` optionally accepts canonical comparison configuration, a paired baseline/change contract configuration, and an approved-reference configuration with optional explicit bindings. Paths are non-empty portable project-relative strings, reject absolute/drive/backslash/colon/NUL/dot/traversal forms, and are realpath-contained before use.
|
|
16
|
+
|
|
17
|
+
`current` remains rejected by human `capture`; the alias catalog accepts it only as system-managed state. `projectCheckService` resolves the explicit baseline or `defaultBaseline`, verifies catalog/artifact observation and request identity, captures one new immutable current observation, atomically updates `current`, calls the canonical comparison service once, and conditionally calls the existing contract and reference-fidelity services. It never invokes the CLI recursively, edits frontend source, infers bindings, or creates another evidence engine.
|
|
18
|
+
|
|
19
|
+
Canonical comparison artifacts persist under managed comparisons. Canonical contract evaluations persist under managed evaluations. Reference fidelity remains the existing in-memory result. There is no check artifact. The workflow precedence is BLOCKED, FAIL, PASS when every configured executable dimension passes, and REVIEW_REQUIRED when comparison succeeds without executable acceptance authority.
|
|
20
|
+
|
|
21
|
+
`checkResult` schema `1.0.0` projects project-relative artifact paths, canonical contract failures/unavailable/conflicts and unexpected changes, and canonical failed/unavailable reference requirements. Every problem collection is limited to 50; supporting evidence is limited to 10 per contract item; truncation is explicit. It embeds no image bytes or complete artifacts. Human output emphasizes `baseline`/`current`, concise failures/blockers, and `my-frontend-observer view`, without routine hashes or absolute paths. Exit codes are PASS 0, FAIL 1, REVIEW_REQUIRED 2, and BLOCKED 3.
|
|
22
|
+
|
|
23
|
+
## Acceptance evidence
|
|
24
|
+
|
|
25
|
+
`tests/browser/projectCheckWorkflow.test.ts` uses the planner-owned fixture roots and file-backed disposable frontend source:
|
|
26
|
+
|
|
27
|
+
- `review-required`: real Chromium captured a changed candidate and persisted a comparison; no executable acceptance returned REVIEW_REQUIRED/2.
|
|
28
|
+
- `contract-fail-pass`: a requested nav change and expected workspace change succeeded while a protected rail width regressed. `check baseline --json` returned FAIL/1 and preserved canonical clause id, source, category, primitive, status, and supporting evidence. Only `source/index.html` changed; the same command then returned PASS/0. Project config and both contract manifests were byte-identical across correction.
|
|
29
|
+
- `reference-fail-pass`: a canonically imported, explicitly approved reference with an explicit rail binding returned reference FAIL, then PASS after only frontend source correction, then BLOCKED from canonical viewport incompatibility.
|
|
30
|
+
- `comparison-blocked`: a viewport change produced canonical `incomparable`, workflow BLOCKED, and exit 3.
|
|
31
|
+
- `current-history`: repeated checks produced distinct immutable current observations, kept the old artifact, mapped `current` only to the newest exact path in the viewer, and preserved that mapping after a later capture failure.
|
|
32
|
+
- `symlink-security`: Windows successfully created a real directory junction from the project through `escaped/` to a directory outside that project. Realpath containment rejected the acceptance path.
|
|
33
|
+
|
|
34
|
+
Pure/unit projection tests deterministically created 52 failed clauses with 12 evidence references apiece and 52 failed plus 51 unavailable reference requirements. They proved the 50/10 bounds and global truncation flag. CLI tests cover help/grouping, syntax rejection, all four concise human statuses, and exactly one JSON line for a project-not-initialized BLOCKED outcome. Baseline tests cover explicit/default alias selection and invalid artifacts without absolute-path leakage.
|
|
35
|
+
|
|
36
|
+
## Packed clean-consumer evidence
|
|
37
|
+
|
|
38
|
+
One `npm pack --pack-destination <RunRoot>\pack` candidate was installed beneath exact paths `consumer\installed-package` and `consumer\target`. `scripts/ci/runPackedCheckSmoke.mjs` used only the installed binary and its installed Playwright dependency. It proved installed `init`, `capture baseline`, `check baseline --json`, project-aware `view`, REVIEW_REQUIRED, unchanged-contract protected-clause FAIL, source-only correction to PASS, `baseline` and `current` viewer labels, and canonical current identity in details. No artifact hash/path was a check input.
|
|
39
|
+
|
|
40
|
+
The same tarball also passed `runPackedObservationSmoke.mjs` and `runPackedViewerSmoke.mjs`, including the legacy low-level observation/comparison/contract/reference surfaces and real-Chromium viewer/PWA behavior.
|
|
41
|
+
|
|
42
|
+
## Documentation and security
|
|
43
|
+
|
|
44
|
+
README, QUICKSTART, COMMANDS, WORKFLOWS, ARCHITECTURE, CURRENT_STATE, PROJECT_OVERVIEW, ROADMAP, SECURITY, DEVELOPMENT, and CI/CD are reconciled to source-complete v0.8.1 behavior while retaining package version `0.8.0` and explicitly not claiming publication. The roadmap now makes v0.9 depend on project discovery, aliases, project-aware viewing, and canonical identity beneath aliases; mutable aliases cannot be persisted annotation identity. v0.10 must reuse `check <baseline> --json` rather than reconstruct canonical comparison, contract, fidelity, or workflow precedence.
|
|
45
|
+
|
|
46
|
+
Security evidence covers portable/contained acceptance paths, a real junction escape, project-relative JSON, no image bytes, approved-reference authority, explicit-only bindings, immutable current history, read-only viewer routes, and the absence of Observer source-edit behavior.
|
|
47
|
+
|
|
48
|
+
## Validation
|
|
49
|
+
|
|
50
|
+
Final commands:
|
|
51
|
+
|
|
52
|
+
- `npm run typecheck`
|
|
53
|
+
- `npm run lint`
|
|
54
|
+
- `npm test`
|
|
55
|
+
- `npm run build`
|
|
56
|
+
- `npm run check:docs`
|
|
57
|
+
- `npm run test:browser`
|
|
58
|
+
- `npm run test:security`
|
|
59
|
+
- `npm pack --pack-destination <RunRoot>\pack`
|
|
60
|
+
- `node scripts/ci/runPackedCheckSmoke.mjs <tarball> --consumer-root <RunRoot>\consumer`
|
|
61
|
+
- `node scripts/ci/runPackedObservationSmoke.mjs <tarball>`
|
|
62
|
+
- `node scripts/ci/runPackedViewerSmoke.mjs <tarball>`
|
|
63
|
+
- `git diff --check`
|
|
64
|
+
|
|
65
|
+
Final source-checkout counts: 68 unit files / 1,180 tests; 21 browser files / 185 tests; security subset 10 unit files / 97 tests plus 3 browser files / 76 tests (173 total). All passed. All three packed proofs passed.
|
|
66
|
+
|
|
67
|
+
## Remaining risk and readiness
|
|
68
|
+
|
|
69
|
+
The Windows junction proof ran successfully. Cross-platform behavior remains protected by Node path/realpath APIs and portable-path unit cases; formal multi-OS publication validation remains the later release-readiness workflow. No product blocker remains. The repository is ready for v0.8.1 pre-release readiness, not publication.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# v0.8.1 Hardened Documentation and Implementation-Completeness Audit
|
|
2
|
+
|
|
3
|
+
## Verdict
|
|
4
|
+
|
|
5
|
+
PASS_V081_HARDENED_DOCUMENTATION_AND_IMPLEMENTATION_COMPLETENESS_AUDIT
|
|
6
|
+
|
|
7
|
+
Starting candidate: `85ff1cbaa6c9cf86aa7de59cf3abeb09cbaa6877`.
|
|
8
|
+
Source-of-truth order was the task contract, current Git/package state,
|
|
9
|
+
preservation policy and durable product documents, frozen v0.8.1 plan,
|
|
10
|
+
current implementation/tests, then predecessor reports. The Prompt 1 and
|
|
11
|
+
Prompt 2 reports were corroborating evidence only.
|
|
12
|
+
|
|
13
|
+
## Capability matrix
|
|
14
|
+
|
|
15
|
+
| Capability | Plan source | Implementation | Tests | Documentation | Result |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| Config v1.0 compatibility | Plan §§3, 6 | `projectConfig.ts` | `projectWorkflow.test.ts` | COMMANDS | PASS |
|
|
18
|
+
| Config v1.1 acceptance | Plan §6 | `projectConfig.ts`, `checkAcceptance.ts` | project workflow/check tests | COMMANDS | PASS |
|
|
19
|
+
| Project discovery/managed state | Plan Prompt 1 | `projectDiscovery.ts`, `projectPaths.ts` | project workflow tests | ARCHITECTURE | PASS |
|
|
20
|
+
| Alias grammar/atomic catalog | Plan Prompt 1 | `projectConfig.ts`, `aliasCatalog.ts` | project workflow tests | COMMANDS | PASS |
|
|
21
|
+
| Immutable evidence/alias replacement | Plan Prompt 1 | project workflow service | browser workflow tests | WORKFLOWS | PASS |
|
|
22
|
+
| `init` and `capture` | Plan Prompt 1 | CLI/project workflow service | CLI/browser/packed tests | README, COMMANDS | PASS |
|
|
23
|
+
| Reserved `current` | Plan Prompt 2 | project workflow service/catalog validator | unit/browser tests | COMMANDS | PASS |
|
|
24
|
+
| Project-aware `view` | Plan Prompt 1 | CLI/viewer service/projection | viewer/browser/packed tests | README, COMMANDS | PASS |
|
|
25
|
+
| Standalone `view --root` | Plan Prompt 1 | existing view dispatch | viewer regression tests | COMMANDS | PASS |
|
|
26
|
+
| Alias-first navigation/provenance | Plan Prompt 1 | evidence projection/React list | real Chromium/packed tests | ARCHITECTURE | PASS |
|
|
27
|
+
| Explicit/default baseline | Plan Prompt 2 | `projectCheckService.ts` | check-service/browser tests | COMMANDS | PASS |
|
|
28
|
+
| Current capture/history | Plan Prompt 2 | capture workflow/check service | browser tests | WORKFLOWS | PASS |
|
|
29
|
+
| Canonical comparison/config reuse | Plan Prompt 2 | comparison service composition | browser/unit tests | ARCHITECTURE | PASS |
|
|
30
|
+
| Contract orchestration | Plan Prompt 2 | contract evaluator composition | browser/unit/packed tests | COMMANDS | PASS |
|
|
31
|
+
| Approved-reference governance/bindings/fidelity | Plan Prompt 2 | reference reader/fidelity composition | browser/unit tests | SECURITY, COMMANDS | PASS |
|
|
32
|
+
| PASS/FAIL/REVIEW_REQUIRED/BLOCKED precedence | Plan Prompt 2 | `checkResult.ts` | unit/CLI/browser tests | COMMANDS | PASS |
|
|
33
|
+
| Human check output | Plan Prompt 2 | CLI formatter | CLI/browser tests | WORKFLOWS | PASS |
|
|
34
|
+
| Bounded `check --json` | Plan Prompt 2 | `checkResult.ts` | bounded projection tests | COMMANDS | PASS |
|
|
35
|
+
| Check exit codes 0/1/2/3 | Plan Prompt 2 | CLI mapping | CLI/browser tests | COMMANDS, CI_CD | PASS |
|
|
36
|
+
| No check artifact/no second engine | Plan Prompt 2 | check application composition | architecture/source audit | ARCHITECTURE | PASS |
|
|
37
|
+
| Coding-agent FAIL-to-PASS loop | Plan Prompt 2 | check + canonical evaluators | browser/packed tests | WORKFLOWS | PASS |
|
|
38
|
+
| Acceptance paths/realpath containment | Plan Prompt 2 | config/acceptance resolver | unit/browser junction tests | SECURITY | PASS |
|
|
39
|
+
| Installed-package workflow | Plan Prompt 2 | packed viewer smoke | local/CI packed smoke | CI_CD, DEVELOPMENT | PASS |
|
|
40
|
+
| Advanced-command compatibility | Plan Prompt 1/2 | preserved CLI services | unit/browser/packed observation tests | COMMANDS | PASS |
|
|
41
|
+
|
|
42
|
+
No `MISSING_IMPLEMENTATION`, `MISSING_TEST`, `MISSING_DOCUMENTATION`, or
|
|
43
|
+
`IMPLEMENTATION_DOCUMENTATION_DRIFT` remained after the reconciliation.
|
|
44
|
+
|
|
45
|
+
## ROADMAP and CLI/help audit
|
|
46
|
+
|
|
47
|
+
ROADMAP now correctly says v0.8.1 is implemented in the repository, package
|
|
48
|
+
metadata remains `0.8.0`, and publication has not happened. v0.9 and v0.10
|
|
49
|
+
remain future work; the v0.9 alias/canonical-identity invariant and v0.10
|
|
50
|
+
reuse of `check <baseline> --json` are explicit.
|
|
51
|
+
|
|
52
|
+
Built CLI help was captured under the prerelease audit root for every public
|
|
53
|
+
command. The common surface is `init`, `capture`, `check`, `view`; advanced
|
|
54
|
+
commands remain `observe`, `compare`, `approve-baseline`,
|
|
55
|
+
`save-change-contract`, `evaluate-contract`, `import-reference`,
|
|
56
|
+
`approve-reference`, and `evaluate-reference-fidelity`. Documentation now
|
|
57
|
+
states that `view` discovers initialized project evidence without `--root`,
|
|
58
|
+
while `view --root` remains the standalone compatibility form.
|
|
59
|
+
|
|
60
|
+
Documentation records check exits exactly as PASS 0, FAIL 1,
|
|
61
|
+
REVIEW_REQUIRED 2, BLOCKED 3. Comparison alone is evidence and yields
|
|
62
|
+
REVIEW_REQUIRED, never PASS. JSON is documented as a bounded ephemeral
|
|
63
|
+
workflow projection rather than a persisted artifact.
|
|
64
|
+
|
|
65
|
+
## Architecture and code-rot audit
|
|
66
|
+
|
|
67
|
+
Direct source tracing found one canonical semantic owner for browser
|
|
68
|
+
observation (`observationPersistence`), comparison (`comparisonEngine`),
|
|
69
|
+
frontend-contract evaluation (`frontendContractEvaluation`), reference
|
|
70
|
+
compatibility, explicit binding, reference fidelity, bounded context,
|
|
71
|
+
runtime/static correlation, discovery, catalog persistence, project-check
|
|
72
|
+
orchestration, and check-result projection. `projectCheckService` composes
|
|
73
|
+
those owners; it neither spawns the CLI nor adds an evaluation engine.
|
|
74
|
+
|
|
75
|
+
The packed check helper that duplicated the viewer/project workflow was
|
|
76
|
+
removed. `runPackedViewerSmoke.mjs` is now the single installed-package
|
|
77
|
+
project/viewer smoke owner and covers REVIEW_REQUIRED plus unchanged-criteria
|
|
78
|
+
FAIL-to-PASS before alias-aware viewer checks. `runPackedObservationSmoke.mjs`
|
|
79
|
+
retains its lower-level legacy responsibility. Windows npm installation in
|
|
80
|
+
both smoke owners invokes npm's CLI through Node with `shell: false`; no
|
|
81
|
+
project-controlled value is shell command text.
|
|
82
|
+
|
|
83
|
+
Historical release reports and frozen plans retain their older descriptions as
|
|
84
|
+
historical evidence. Current-state documentation no longer presents v0.8.1 as
|
|
85
|
+
merely planned or `view --root` as universally required.
|
|
86
|
+
|
|
87
|
+
## Security and package truth
|
|
88
|
+
|
|
89
|
+
The audit reconfirmed portable acceptance paths, realpath/junction containment,
|
|
90
|
+
alias/catalog containment, immutable `current` replacement, project-relative
|
|
91
|
+
JSON, approved-reference-only governance, explicit bindings, loopback/read-only
|
|
92
|
+
viewer routing, media traversal containment, and PWA no-stale-evidence tests.
|
|
93
|
+
The dynamic-execution search found `spawn` only in controlled viewer opening
|
|
94
|
+
and CI/developer smoke infrastructure; production project/config/evidence
|
|
95
|
+
inputs do not become executable command text. A real-Chromium source-hash test
|
|
96
|
+
proves `capture`, `check`, and `view` do not modify target frontend source.
|
|
97
|
+
|
|
98
|
+
`npm pack --dry-run --json` is audited in Phase B. Package metadata remains
|
|
99
|
+
`0.8.0`; v0.8.1 is implemented in source but not released, tagged, or
|
|
100
|
+
published. CHANGELOG remains release history and has no released v0.8.1 entry.
|
|
101
|
+
|
|
102
|
+
## Validation and next gate
|
|
103
|
+
|
|
104
|
+
Phase A reruns typecheck, lint, unit tests, build, documentation checks,
|
|
105
|
+
browser tests, security tests, and `git diff --check` after reconciliation.
|
|
106
|
+
Results: typecheck PASS; lint PASS; build PASS; unit suite PASS (68 files,
|
|
107
|
+
1,180 tests); documentation check PASS; browser suite PASS (21 files,
|
|
108
|
+
186 tests); security subset PASS (97 unit plus 77 browser tests); and diff
|
|
109
|
+
whitespace check PASS.
|
|
110
|
+
Phase B starts only from the clean reconciliation commit and independently
|
|
111
|
+
repeats local/package/security/packed validation before exact-candidate
|
|
112
|
+
cross-platform CI.
|
|
113
|
+
|
|
114
|
+
Next stage: formal v0.8.1 pre-release readiness.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# v0.8.1 Pre-release Readiness
|
|
2
|
+
|
|
3
|
+
## 1. Purpose and scope
|
|
4
|
+
|
|
5
|
+
This report records formal readiness evidence for the source-complete v0.8.1
|
|
6
|
+
project workflow. It is not release preparation: package metadata remains
|
|
7
|
+
`0.8.0`; no npm publication, tag, GitHub Release, or master push occurs here.
|
|
8
|
+
|
|
9
|
+
## 2. Entry gate and starting state
|
|
10
|
+
|
|
11
|
+
The readiness branch began from master commit
|
|
12
|
+
`85ff1cbaa6c9cf86aa7de59cf3abeb09cbaa6877`, with a clean tracked worktree.
|
|
13
|
+
`origin/master` was an ancestor of local master. The documentation
|
|
14
|
+
reconciliation commit is `02a930d295c84fc0f47521bac226ab5fb3553542`.
|
|
15
|
+
|
|
16
|
+
## 3. Filesystem policy
|
|
17
|
+
|
|
18
|
+
All generated readiness state is confined to
|
|
19
|
+
`.my-dev-kit-workflow/v0.8.1/prerelease-readiness`, including temp/cache,
|
|
20
|
+
audit snapshots, logs, packed candidate, consumer, fixture, browser, and CI
|
|
21
|
+
state. Process-local TEMP/TMP/npm cache settings point there. No sibling
|
|
22
|
+
project or repository-root disposable frontend is used.
|
|
23
|
+
|
|
24
|
+
## 4. Documentation/completeness and architecture audits
|
|
25
|
+
|
|
26
|
+
The companion
|
|
27
|
+
`v0.8.1-implementation-completeness-documentation-reconciliation.md` report
|
|
28
|
+
passes the bidirectional capability matrix. It found one CI-readiness/code-rot
|
|
29
|
+
defect: v0.8.1 packed `check` proof was isolated in a separate helper rather
|
|
30
|
+
than the established packed viewer owner. The helper was removed and
|
|
31
|
+
`runPackedViewerSmoke.mjs` now proves installed `init`, `capture baseline`,
|
|
32
|
+
`check --json` REVIEW_REQUIRED, unchanged-contract FAIL-to-PASS, `baseline`
|
|
33
|
+
and `current` aliases, canonical-ID detail, and the viewer. The lower-level
|
|
34
|
+
packed observation smoke remains separate by responsibility.
|
|
35
|
+
|
|
36
|
+
Source tracing confirms one semantic owner each for browser observation,
|
|
37
|
+
relationships, comparison, contract evaluation, reference compatibility,
|
|
38
|
+
explicit binding, reference fidelity, bounded context, runtime/static
|
|
39
|
+
correlation, discovery, catalog persistence, project-check orchestration, and
|
|
40
|
+
check projection. `check` only composes canonical owners and creates no
|
|
41
|
+
persisted check artifact or second evaluation engine.
|
|
42
|
+
|
|
43
|
+
## 5. Local validation
|
|
44
|
+
|
|
45
|
+
From the clean reconciliation commit: typecheck PASS; lint PASS; build PASS;
|
|
46
|
+
unit PASS (68 files, 1,180 tests); browser PASS (21 files, 186 tests);
|
|
47
|
+
security PASS (97 unit plus 77 browser tests); documentation check PASS; and
|
|
48
|
+
`git diff --check` PASS. A real-Chromium source-hash regression test confirms
|
|
49
|
+
that capture, check, and view do not modify a target frontend source file.
|
|
50
|
+
|
|
51
|
+
## 6. Package-content and API audit
|
|
52
|
+
|
|
53
|
+
`npm pack --dry-run --json` reports 314 files and no workflow state, evidence,
|
|
54
|
+
consumer, fixture, browser profile, coverage, `.claude`, or nested tarball.
|
|
55
|
+
Required compiled CLI, library, project-check, check-result, and viewer files
|
|
56
|
+
are present. Built exports include `CHECK_RESULT_SCHEMA_VERSION` and
|
|
57
|
+
`CHECK_WORKFLOW_STATUSES`; type-only check result interfaces are present in the
|
|
58
|
+
published declarations.
|
|
59
|
+
|
|
60
|
+
## 7. Security and code-rot audit
|
|
61
|
+
|
|
62
|
+
Project discovery stops at the nearest config. Alias/catalog validation and
|
|
63
|
+
atomic catalog persistence are fail-closed. Acceptance paths are portable and
|
|
64
|
+
realpath-contained; a Windows junction escape is rejected by real browser
|
|
65
|
+
coverage. `current` replacement changes catalog metadata only and preserves
|
|
66
|
+
canonical history. Check JSON uses project-relative paths, bounded collections,
|
|
67
|
+
and no image bytes. Imported references are not approved authority; bindings
|
|
68
|
+
remain explicit; contract FAIL cannot be overridden by reference PASS.
|
|
69
|
+
|
|
70
|
+
Viewer security regressions cover loopback binding, read-only methods,
|
|
71
|
+
traversal/media containment, symlink/junction containment, and no stale PWA
|
|
72
|
+
evidence. Production source has no eval/new-Function/vm execution. The only
|
|
73
|
+
process spawns are controlled viewer opening and development/CI smoke tooling;
|
|
74
|
+
Windows packed npm invocation uses Node's npm CLI with `shell: false`.
|
|
75
|
+
|
|
76
|
+
## 8. Local packed candidate and workflow audit
|
|
77
|
+
|
|
78
|
+
LOCAL_CANDIDATE_TARBALL: `my-frontend-observer-0.8.0.tgz`
|
|
79
|
+
|
|
80
|
+
LOCAL_CANDIDATE_SHA256: `5e9ded9170c59de0f7c0205144fb1d6bb375ce6c6a5b70adef57f5223db43e3a`
|
|
81
|
+
|
|
82
|
+
Local installed-package observation smoke: PASS (final candidate).
|
|
83
|
+
|
|
84
|
+
Local installed-package project/viewer smoke: PASS (final candidate).
|
|
85
|
+
|
|
86
|
+
The GitHub workflow builds and hashes one candidate in its Linux candidate job,
|
|
87
|
+
uploads that tarball, downloads it on Windows/Linux/macOS, verifies the
|
|
88
|
+
candidate SHA on every matrix runner, and runs both installed-package smokes.
|
|
89
|
+
|
|
90
|
+
## 9. Historical failed exact-candidate evidence
|
|
91
|
+
|
|
92
|
+
The latest candidate run was `35015180719` for commit
|
|
93
|
+
`b32fe9759187c024cc5828b73cf0c6a682de95b0`. Its candidate job completed all
|
|
94
|
+
validation, packaging, and artifact-hash steps successfully; the exact
|
|
95
|
+
downloaded candidate passed both installed-package smokes on Windows and
|
|
96
|
+
Ubuntu. macOS failed only the project/viewer smoke because that test compares
|
|
97
|
+
the logical temporary path returned by Node (`/var/...`) to the physical path
|
|
98
|
+
reported by the viewer (`/private/var/...`) in `/api/status`.
|
|
99
|
+
|
|
100
|
+
This is a smoke-harness realpath presentation mismatch, not an evidence,
|
|
101
|
+
containment, or product-workflow failure. It is nevertheless a formal matrix
|
|
102
|
+
failure and therefore cannot be represented as cross-platform PASS.
|
|
103
|
+
|
|
104
|
+
Previous run `35012678176` identified the original raw CLI artifact-path
|
|
105
|
+
assumption. Run `35013965786` validated the first correction through candidate
|
|
106
|
+
and Windows/Ubuntu, then identified the macOS logical/physical temporary-root
|
|
107
|
+
mismatch.
|
|
108
|
+
|
|
109
|
+
## 10. Authorized macOS realpath correction
|
|
110
|
+
|
|
111
|
+
Classification: **TEST/READINESS PORTABILITY DEFECT**.
|
|
112
|
+
|
|
113
|
+
Product behavior affected: **NO**.
|
|
114
|
+
|
|
115
|
+
The viewer is permitted to report the physical evidence root. The defect was
|
|
116
|
+
only the readiness smoke's raw string comparison of the caller-visible
|
|
117
|
+
`/var/...` spelling with the physical `/private/var/...` spelling. The smoke
|
|
118
|
+
now compares canonical physical identity with `fs.realpath()` and reports both
|
|
119
|
+
the original spellings and canonical paths if a genuine mismatch occurs. On
|
|
120
|
+
Windows, a smoke-local junction regression self-check proves that an alias and
|
|
121
|
+
its target compare equal while a distinct directory compares unequal.
|
|
122
|
+
|
|
123
|
+
Security semantics weakened: **NO**. This helper is limited to an
|
|
124
|
+
already-authorized smoke assertion; project acceptance-path containment remains
|
|
125
|
+
owned by production realpath validation and is unchanged.
|
|
126
|
+
|
|
127
|
+
MACOS_REALPATH_TARGETED_CORRECTION: PASS
|
|
128
|
+
|
|
129
|
+
## 11. Exact-candidate and cross-platform results
|
|
130
|
+
|
|
131
|
+
OLD_FAILED_RUN: `35015180719`
|
|
132
|
+
|
|
133
|
+
OLD_FAILED_COMMIT: `b32fe9759187c024cc5828b73cf0c6a682de95b0`
|
|
134
|
+
|
|
135
|
+
ROOT_CAUSE: logical-vs-physical temporary path comparison on macOS
|
|
136
|
+
|
|
137
|
+
The next run must build a new candidate once and validate that exact SHA on
|
|
138
|
+
Windows, Linux, and macOS. This historical failed candidate is never rewritten
|
|
139
|
+
as passing evidence.
|
|
140
|
+
|
|
141
|
+
## 12. Corrected formal exact-candidate result
|
|
142
|
+
|
|
143
|
+
CORRECTION_COMMIT: `d5986b5297a2b466b3373a6c896a447cdabe2bdb`
|
|
144
|
+
|
|
145
|
+
NEW_GITHUB_ACTIONS_RUN_ID: `35018400346`
|
|
146
|
+
|
|
147
|
+
FINAL_VALIDATED_COMMIT: `d5986b5297a2b466b3373a6c896a447cdabe2bdb`
|
|
148
|
+
|
|
149
|
+
FORMAL_CANDIDATE_TARBALL: `my-frontend-observer-0.8.0.tgz`
|
|
150
|
+
|
|
151
|
+
FORMAL_CANDIDATE_SHA256:
|
|
152
|
+
`1ae46575595451e56f7c851273387ee4808e546940077e08a40cebcc1c4f8d30`
|
|
153
|
+
|
|
154
|
+
WINDOWS: PASS
|
|
155
|
+
|
|
156
|
+
LINUX: PASS
|
|
157
|
+
|
|
158
|
+
MACOS: PASS
|
|
159
|
+
|
|
160
|
+
CANDIDATE_SHA_PARITY: PASS
|
|
161
|
+
|
|
162
|
+
The candidate job and all three exact-candidate jobs passed. The macOS packed
|
|
163
|
+
project/viewer smoke passed the corrected filesystem-identity assertion.
|
|
164
|
+
|
|
165
|
+
## 13. Release-state truth and next decision
|
|
166
|
+
|
|
167
|
+
The source is not released as v0.8.1. Package version is `0.8.0`; npm
|
|
168
|
+
publication, tag, GitHub Release, and master push are all absent. The final
|
|
169
|
+
verdict is `PASS_V081_PRERELEASE_READINESS`; the next authorized stage is
|
|
170
|
+
release preparation, not publication.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# v0.8.1 Project Workflow Foundation, Prompt 1
|
|
2
|
+
|
|
3
|
+
## 1. Verdict and repository state
|
|
4
|
+
|
|
5
|
+
Verdict: PASS.
|
|
6
|
+
|
|
7
|
+
Repository: `C:\Users\daile\Projects\my-frontend-observer`.
|
|
8
|
+
|
|
9
|
+
Branch: `master`.
|
|
10
|
+
|
|
11
|
+
Starting HEAD: `00c9c1e9c6080067c5ec812c98253cce25c7280f`.
|
|
12
|
+
|
|
13
|
+
Required planning commit `056db1a0881c4f40fe0a968f022c27fbde8a117f` was fetched and fast-forwarded before implementation. The frozen two-prompt plan was verified and preserved. Package and lockfile version remain `0.8.0`.
|
|
14
|
+
|
|
15
|
+
## 2. Recovered instruction-file state
|
|
16
|
+
|
|
17
|
+
The intentional untracked `AGENTS.md`, `CLAUDE.md`, `agents.txt`, `claude.txt`, and `.claude/` paths were moved to `.my-dev-kit-workflow/v0.8.1/preflight-preservation`, the repository was fast-forwarded, and the paths were restored. The four portable project instruction files were committed as `b8ead5aa2300f29c4a97aa2a27832962adad61eb` (`chore: add coding agent project instructions`). `.claude/settings.json` was identified as local runtime permission state, preserved locally, and ignored through `.gitignore`.
|
|
18
|
+
|
|
19
|
+
## 3. Implementation
|
|
20
|
+
|
|
21
|
+
New ownership modules are `src/projectWorkflow/projectConfig.ts`, `projectDiscovery.ts`, `projectPaths.ts`, `aliasCatalog.ts`, and `src/application/projectWorkflowService.ts`.
|
|
22
|
+
|
|
23
|
+
The project configuration schema is `1.0.0` with exactly `schemaVersion`, `url`, `viewport`, `targets`, and `defaultBaseline`. It reuses `RawNamedTarget` and validates URL, viewport, targets, locators, and output safety through `normalizeRequest()` with `.frontend-observer/evidence/_validation`. The default baseline is `baseline`.
|
|
24
|
+
|
|
25
|
+
Aliases use exactly `^[a-z0-9][a-z0-9._-]{0,63}$`; traversal-like double-dot values are rejected and `current` is reserved. Catalog schema `1.0.0` maps aliases to canonical observation ID, request ID, and POSIX evidence-relative artifact directory. Readers fail closed. Writers serialize schema first, sort aliases, use two-space indentation and a trailing newline, write a sibling temporary file, and rename only after completion.
|
|
26
|
+
|
|
27
|
+
Discovery walks upward from a resolved directory to the filesystem root and stops at the nearest `frontend-observer.json`. Managed paths are centrally derived for configuration, `.frontend-observer`, catalog, evidence, and observation output.
|
|
28
|
+
|
|
29
|
+
`init` shares the existing viewport, CSS target, and structured target-file parsing owners. It creates configuration, catalog, and evidence state and inserts exactly one `.frontend-observer/` ignore entry. `--replace` replaces configuration only.
|
|
30
|
+
|
|
31
|
+
`capture <alias>` discovers the project, validates configuration and catalog, normalizes one canonical observation request, calls `observe()` once with `{ cwd: projectRoot }`, and updates the alias only after persistence. Replacement leaves old evidence intact; failed replacement leaves the old mapping intact.
|
|
32
|
+
|
|
33
|
+
`view` without `--root` discovers and validates project state, uses the managed evidence root, and supplies an in-memory exact-relative-directory alias map. Explicit `view --root` follows the existing standalone path with an empty alias map. `/api/index` adds only optional ephemeral `alias`; canonical handles, logical IDs, artifacts, and provenance are unchanged. The React list displays alias first while detail views retain canonical identity.
|
|
34
|
+
|
|
35
|
+
Top-level help now groups `init`, `capture`, and `view` under Common workflow and all existing commands under Advanced. No `check` command was added.
|
|
36
|
+
|
|
37
|
+
## 4. Tests and compatibility evidence
|
|
38
|
+
|
|
39
|
+
Unit coverage includes configuration validation, exact fields and versions, root/nested/nearest discovery, not-initialized behavior, alias grammar and reservation, catalog versions/IDs/path traversal/determinism/atomic replacement, failed capture replacement transaction, path derivation, init help and behavior, target input forms, ignore idempotence, capture help, and updated view project behavior. Final unit result: 66 files and 1170 tests passed.
|
|
40
|
+
|
|
41
|
+
Real Chromium test `tests/browser/projectWorkflowViewer.test.ts` initializes a disposable project, captures `baseline`, replaces it, verifies both immutable artifacts, verifies the exact new catalog mapping, starts the alias-aware viewer, confirms only the new record receives `baseline`, loads its screenshot workspace, and confirms the canonical ID remains in details. The final complete browser suite passed 20 files and 179 tests. Browser file concurrency is bounded to one worker to prevent Windows Chromium screenshot protocol exhaustion observed during full-suite validation.
|
|
42
|
+
|
|
43
|
+
The packed viewer smoke now checks installed `init --help`, `capture --help`, and `view --help`, initializes through the installed CLI, captures `baseline`, launches installed project-aware `view` without `--root`, verifies exact alias index projection, and verifies alias-first real-Chromium display. The existing packed observation smoke and packed viewer smoke both passed against one tarball with SHA-256 `EB2C5ED27B61C367F21D3BA6393132634BAE69EE7E85E80831916AD6DEC61825`. Packed generated state is under `.my-dev-kit-workflow/v0.8.1/packed-proof` and is ignored.
|
|
44
|
+
|
|
45
|
+
Existing low-level command unit and packed smoke coverage passed unchanged in semantics. Explicit-root viewer tests remain independent of project configuration. No canonical schema or evidence engine changed.
|
|
46
|
+
|
|
47
|
+
## 5. Validation
|
|
48
|
+
|
|
49
|
+
The final validation set includes:
|
|
50
|
+
|
|
51
|
+
- `npm run typecheck`: PASS.
|
|
52
|
+
- `npm run lint`: PASS.
|
|
53
|
+
- `npm test`: PASS, 1170 tests.
|
|
54
|
+
- `npm run build`: PASS.
|
|
55
|
+
- `npm run check:docs`: PASS.
|
|
56
|
+
- `npm run test:browser`: PASS, 179 tests.
|
|
57
|
+
- `npm run test:security`: PASS, 150 tests.
|
|
58
|
+
- packed observation smoke: PASS.
|
|
59
|
+
- packed viewer/project-workflow smoke: PASS.
|
|
60
|
+
- `git diff --check`: PASS.
|
|
61
|
+
|
|
62
|
+
## 6. Remaining risks and Prompt 2 readiness
|
|
63
|
+
|
|
64
|
+
No product blocker remains. Alias catalog update failure after successful canonical capture intentionally reports failure while leaving the newly persisted canonical artifact unaliased; it never rolls back or deletes evidence. This is consistent with evidence immutability and fail-closed catalog semantics.
|
|
65
|
+
|
|
66
|
+
Prompt 1 does not implement `check`, acceptance orchestration, coding-agent JSON output, annotation, editing, correction, or new evidence semantics. The project/alias foundation is ready for Prompt 2.
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dailephd/my-frontend-observer",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"description": "Local-first browser runtime evidence producer",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/dailephd/my-frontend-observer.git"
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"my-frontend-observer": "dist/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"README.md",
|
|
23
|
+
"CHANGELOG.md",
|
|
24
|
+
"docs",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=24"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"prebuild": "node scripts/clean.mjs",
|
|
32
|
+
"build": "tsc -p tsconfig.json && vite build --config viewer/vite.config.ts",
|
|
33
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p viewer/tsconfig.json --noEmit",
|
|
34
|
+
"lint": "eslint .",
|
|
35
|
+
"test": "vitest run --passWithNoTests",
|
|
36
|
+
"test:browser": "vitest run --config vitest.browser.config.ts --passWithNoTests",
|
|
37
|
+
"test:security": "vitest run tests/unit/policy.test.ts tests/unit/viewerServer.test.ts tests/unit/viewerEvidenceServer.test.ts tests/unit/referenceViewerServer.test.ts tests/unit/contextViewerServer.test.ts tests/unit/paths.test.ts tests/unit/evidenceDiscovery.test.ts tests/unit/projectWorkflow.test.ts tests/unit/projectCheckService.test.ts tests/unit/projectCheckResult.test.ts && vitest run --config vitest.browser.config.ts tests/browser/chromiumAdapter.test.ts tests/browser/pwaHardening.test.ts tests/browser/projectCheckWorkflow.test.ts",
|
|
38
|
+
"check:docs": "node scripts/check-docs.mjs"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@eslint/js": "10.0.1",
|
|
42
|
+
"@types/node": "24.13.3",
|
|
43
|
+
"@types/react": "19.2.18",
|
|
44
|
+
"@types/react-dom": "19.2.7",
|
|
45
|
+
"@vitejs/plugin-react": "6.1.1",
|
|
46
|
+
"eslint": "10.8.1",
|
|
47
|
+
"react": "19.2.8",
|
|
48
|
+
"react-dom": "19.2.8",
|
|
49
|
+
"typescript": "6.0.3",
|
|
50
|
+
"typescript-eslint": "8.66.0",
|
|
51
|
+
"vite": "8.2.2",
|
|
52
|
+
"vite-plugin-pwa": "1.3.0",
|
|
53
|
+
"vitest": "4.1.11"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"playwright": "^1.62.1"
|
|
57
|
+
}
|
|
58
|
+
}
|