@dailephd/my-frontend-observer 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CHANGELOG.md +397 -0
  2. package/LICENSE +21 -0
  3. package/README.md +255 -0
  4. package/dist/application/browserCaptureService.d.ts +11 -0
  5. package/dist/application/browserCaptureService.js +12 -0
  6. package/dist/application/browserCaptureService.js.map +1 -0
  7. package/dist/application/comparisonService.d.ts +56 -0
  8. package/dist/application/comparisonService.js +77 -0
  9. package/dist/application/comparisonService.js.map +1 -0
  10. package/dist/application/externalReferencePersistenceService.d.ts +75 -0
  11. package/dist/application/externalReferencePersistenceService.js +182 -0
  12. package/dist/application/externalReferencePersistenceService.js.map +1 -0
  13. package/dist/application/frontendContractEvaluationService.d.ts +49 -0
  14. package/dist/application/frontendContractEvaluationService.js +112 -0
  15. package/dist/application/frontendContractEvaluationService.js.map +1 -0
  16. package/dist/application/frontendContractPersistenceService.d.ts +56 -0
  17. package/dist/application/frontendContractPersistenceService.js +91 -0
  18. package/dist/application/frontendContractPersistenceService.js.map +1 -0
  19. package/dist/application/observationPersistence.d.ts +59 -0
  20. package/dist/application/observationPersistence.js +79 -0
  21. package/dist/application/observationPersistence.js.map +1 -0
  22. package/dist/application/projectCheckService.d.ts +3 -0
  23. package/dist/application/projectCheckService.js +169 -0
  24. package/dist/application/projectCheckService.js.map +1 -0
  25. package/dist/application/projectWorkflowService.d.ts +46 -0
  26. package/dist/application/projectWorkflowService.js +92 -0
  27. package/dist/application/projectWorkflowService.js.map +1 -0
  28. package/dist/application/referenceFidelityEvaluationService.d.ts +28 -0
  29. package/dist/application/referenceFidelityEvaluationService.js +45 -0
  30. package/dist/application/referenceFidelityEvaluationService.js.map +1 -0
  31. package/dist/artifacts/artifactReader.d.ts +19 -0
  32. package/dist/artifacts/artifactReader.js +36 -0
  33. package/dist/artifacts/artifactReader.js.map +1 -0
  34. package/dist/artifacts/artifactWriter.d.ts +25 -0
  35. package/dist/artifacts/artifactWriter.js +68 -0
  36. package/dist/artifacts/artifactWriter.js.map +1 -0
  37. package/dist/artifacts/comparisonArtifactReader.d.ts +18 -0
  38. package/dist/artifacts/comparisonArtifactReader.js +35 -0
  39. package/dist/artifacts/comparisonArtifactReader.js.map +1 -0
  40. package/dist/artifacts/comparisonArtifactWriter.d.ts +41 -0
  41. package/dist/artifacts/comparisonArtifactWriter.js +67 -0
  42. package/dist/artifacts/comparisonArtifactWriter.js.map +1 -0
  43. package/dist/artifacts/externalReferenceArtifactReader.d.ts +18 -0
  44. package/dist/artifacts/externalReferenceArtifactReader.js +35 -0
  45. package/dist/artifacts/externalReferenceArtifactReader.js.map +1 -0
  46. package/dist/artifacts/externalReferenceArtifactWriter.d.ts +44 -0
  47. package/dist/artifacts/externalReferenceArtifactWriter.js +77 -0
  48. package/dist/artifacts/externalReferenceArtifactWriter.js.map +1 -0
  49. package/dist/artifacts/frontendContractArtifactReader.d.ts +24 -0
  50. package/dist/artifacts/frontendContractArtifactReader.js +47 -0
  51. package/dist/artifacts/frontendContractArtifactReader.js.map +1 -0
  52. package/dist/artifacts/frontendContractArtifactWriter.d.ts +34 -0
  53. package/dist/artifacts/frontendContractArtifactWriter.js +70 -0
  54. package/dist/artifacts/frontendContractArtifactWriter.js.map +1 -0
  55. package/dist/artifacts/frontendContractEvaluationArtifactReader.d.ts +17 -0
  56. package/dist/artifacts/frontendContractEvaluationArtifactReader.js +34 -0
  57. package/dist/artifacts/frontendContractEvaluationArtifactReader.js.map +1 -0
  58. package/dist/artifacts/frontendContractEvaluationArtifactWriter.d.ts +32 -0
  59. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js +58 -0
  60. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js.map +1 -0
  61. package/dist/artifacts/types.d.ts +17 -0
  62. package/dist/artifacts/types.js +2 -0
  63. package/dist/artifacts/types.js.map +1 -0
  64. package/dist/browser/chromiumAdapter.d.ts +21 -0
  65. package/dist/browser/chromiumAdapter.js +204 -0
  66. package/dist/browser/chromiumAdapter.js.map +1 -0
  67. package/dist/browser/evidenceCapture.d.ts +62 -0
  68. package/dist/browser/evidenceCapture.js +500 -0
  69. package/dist/browser/evidenceCapture.js.map +1 -0
  70. package/dist/browser/scrollCapture.d.ts +32 -0
  71. package/dist/browser/scrollCapture.js +163 -0
  72. package/dist/browser/scrollCapture.js.map +1 -0
  73. package/dist/browser/types.d.ts +24 -0
  74. package/dist/browser/types.js +2 -0
  75. package/dist/browser/types.js.map +1 -0
  76. package/dist/cli.d.ts +8 -0
  77. package/dist/cli.js +2411 -0
  78. package/dist/cli.js.map +1 -0
  79. package/dist/domain/boundedAgentContext.d.ts +226 -0
  80. package/dist/domain/boundedAgentContext.js +355 -0
  81. package/dist/domain/boundedAgentContext.js.map +1 -0
  82. package/dist/domain/boundedAgentContextCorrelation.d.ts +74 -0
  83. package/dist/domain/boundedAgentContextCorrelation.js +441 -0
  84. package/dist/domain/boundedAgentContextCorrelation.js.map +1 -0
  85. package/dist/domain/boundedAgentContextIdentity.d.ts +26 -0
  86. package/dist/domain/boundedAgentContextIdentity.js +69 -0
  87. package/dist/domain/boundedAgentContextIdentity.js.map +1 -0
  88. package/dist/domain/boundedAgentContextProjection.d.ts +71 -0
  89. package/dist/domain/boundedAgentContextProjection.js +477 -0
  90. package/dist/domain/boundedAgentContextProjection.js.map +1 -0
  91. package/dist/domain/comparison.d.ts +220 -0
  92. package/dist/domain/comparison.js +350 -0
  93. package/dist/domain/comparison.js.map +1 -0
  94. package/dist/domain/comparisonEngine.d.ts +76 -0
  95. package/dist/domain/comparisonEngine.js +734 -0
  96. package/dist/domain/comparisonEngine.js.map +1 -0
  97. package/dist/domain/comparisonIdentity.d.ts +13 -0
  98. package/dist/domain/comparisonIdentity.js +46 -0
  99. package/dist/domain/comparisonIdentity.js.map +1 -0
  100. package/dist/domain/completion.d.ts +30 -0
  101. package/dist/domain/completion.js +22 -0
  102. package/dist/domain/completion.js.map +1 -0
  103. package/dist/domain/diagnostics.d.ts +17 -0
  104. package/dist/domain/diagnostics.js +77 -0
  105. package/dist/domain/diagnostics.js.map +1 -0
  106. package/dist/domain/evidence.d.ts +29 -0
  107. package/dist/domain/evidence.js +59 -0
  108. package/dist/domain/evidence.js.map +1 -0
  109. package/dist/domain/explicitState.d.ts +40 -0
  110. package/dist/domain/explicitState.js +54 -0
  111. package/dist/domain/explicitState.js.map +1 -0
  112. package/dist/domain/externalReference.d.ts +158 -0
  113. package/dist/domain/externalReference.js +167 -0
  114. package/dist/domain/externalReference.js.map +1 -0
  115. package/dist/domain/externalReferenceApplicability.d.ts +43 -0
  116. package/dist/domain/externalReferenceApplicability.js +52 -0
  117. package/dist/domain/externalReferenceApplicability.js.map +1 -0
  118. package/dist/domain/externalReferenceCompatibility.d.ts +40 -0
  119. package/dist/domain/externalReferenceCompatibility.js +48 -0
  120. package/dist/domain/externalReferenceCompatibility.js.map +1 -0
  121. package/dist/domain/externalReferenceFidelity.d.ts +171 -0
  122. package/dist/domain/externalReferenceFidelity.js +419 -0
  123. package/dist/domain/externalReferenceFidelity.js.map +1 -0
  124. package/dist/domain/externalReferenceIdentity.d.ts +38 -0
  125. package/dist/domain/externalReferenceIdentity.js +70 -0
  126. package/dist/domain/externalReferenceIdentity.js.map +1 -0
  127. package/dist/domain/externalReferenceImage.d.ts +35 -0
  128. package/dist/domain/externalReferenceImage.js +160 -0
  129. package/dist/domain/externalReferenceImage.js.map +1 -0
  130. package/dist/domain/externalReferenceRegionRelationships.d.ts +63 -0
  131. package/dist/domain/externalReferenceRegionRelationships.js +98 -0
  132. package/dist/domain/externalReferenceRegionRelationships.js.map +1 -0
  133. package/dist/domain/externalReferenceRegions.d.ts +65 -0
  134. package/dist/domain/externalReferenceRegions.js +105 -0
  135. package/dist/domain/externalReferenceRegions.js.map +1 -0
  136. package/dist/domain/externalReferenceRequirementIdentity.d.ts +12 -0
  137. package/dist/domain/externalReferenceRequirementIdentity.js +35 -0
  138. package/dist/domain/externalReferenceRequirementIdentity.js.map +1 -0
  139. package/dist/domain/externalReferenceRequirements.d.ts +215 -0
  140. package/dist/domain/externalReferenceRequirements.js +401 -0
  141. package/dist/domain/externalReferenceRequirements.js.map +1 -0
  142. package/dist/domain/externalReferenceRuntimeBinding.d.ts +146 -0
  143. package/dist/domain/externalReferenceRuntimeBinding.js +183 -0
  144. package/dist/domain/externalReferenceRuntimeBinding.js.map +1 -0
  145. package/dist/domain/frontendContractEvaluation.d.ts +57 -0
  146. package/dist/domain/frontendContractEvaluation.js +454 -0
  147. package/dist/domain/frontendContractEvaluation.js.map +1 -0
  148. package/dist/domain/frontendContractEvaluationArtifact.d.ts +65 -0
  149. package/dist/domain/frontendContractEvaluationArtifact.js +108 -0
  150. package/dist/domain/frontendContractEvaluationArtifact.js.map +1 -0
  151. package/dist/domain/frontendContractIdentity.d.ts +39 -0
  152. package/dist/domain/frontendContractIdentity.js +70 -0
  153. package/dist/domain/frontendContractIdentity.js.map +1 -0
  154. package/dist/domain/frontendContracts.d.ts +188 -0
  155. package/dist/domain/frontendContracts.js +260 -0
  156. package/dist/domain/frontendContracts.js.map +1 -0
  157. package/dist/domain/identity.d.ts +21 -0
  158. package/dist/domain/identity.js +47 -0
  159. package/dist/domain/identity.js.map +1 -0
  160. package/dist/domain/referenceCorrectionIdentity.d.ts +40 -0
  161. package/dist/domain/referenceCorrectionIdentity.js +77 -0
  162. package/dist/domain/referenceCorrectionIdentity.js.map +1 -0
  163. package/dist/domain/referenceCorrectionWorkflow.d.ts +160 -0
  164. package/dist/domain/referenceCorrectionWorkflow.js +165 -0
  165. package/dist/domain/referenceCorrectionWorkflow.js.map +1 -0
  166. package/dist/domain/referenceFidelityProjection.d.ts +65 -0
  167. package/dist/domain/referenceFidelityProjection.js +135 -0
  168. package/dist/domain/referenceFidelityProjection.js.map +1 -0
  169. package/dist/domain/relationships.d.ts +210 -0
  170. package/dist/domain/relationships.js +352 -0
  171. package/dist/domain/relationships.js.map +1 -0
  172. package/dist/domain/schema.d.ts +269 -0
  173. package/dist/domain/schema.js +442 -0
  174. package/dist/domain/schema.js.map +1 -0
  175. package/dist/domain/scrollEvidence.d.ts +51 -0
  176. package/dist/domain/scrollEvidence.js +134 -0
  177. package/dist/domain/scrollEvidence.js.map +1 -0
  178. package/dist/index.d.ts +114 -0
  179. package/dist/index.js +64 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/projectWorkflow/aliasCatalog.d.ts +21 -0
  182. package/dist/projectWorkflow/aliasCatalog.js +67 -0
  183. package/dist/projectWorkflow/aliasCatalog.js.map +1 -0
  184. package/dist/projectWorkflow/checkAcceptance.d.ts +25 -0
  185. package/dist/projectWorkflow/checkAcceptance.js +55 -0
  186. package/dist/projectWorkflow/checkAcceptance.js.map +1 -0
  187. package/dist/projectWorkflow/checkResult.d.ts +85 -0
  188. package/dist/projectWorkflow/checkResult.js +101 -0
  189. package/dist/projectWorkflow/checkResult.js.map +1 -0
  190. package/dist/projectWorkflow/projectConfig.d.ts +43 -0
  191. package/dist/projectWorkflow/projectConfig.js +84 -0
  192. package/dist/projectWorkflow/projectConfig.js.map +1 -0
  193. package/dist/projectWorkflow/projectDiscovery.d.ts +9 -0
  194. package/dist/projectWorkflow/projectDiscovery.js +20 -0
  195. package/dist/projectWorkflow/projectDiscovery.js.map +1 -0
  196. package/dist/projectWorkflow/projectPaths.d.ts +8 -0
  197. package/dist/projectWorkflow/projectPaths.js +23 -0
  198. package/dist/projectWorkflow/projectPaths.js.map +1 -0
  199. package/dist/request/paths.d.ts +14 -0
  200. package/dist/request/paths.js +33 -0
  201. package/dist/request/paths.js.map +1 -0
  202. package/dist/request/request.d.ts +111 -0
  203. package/dist/request/request.js +464 -0
  204. package/dist/request/request.js.map +1 -0
  205. package/dist/safety/policy.d.ts +14 -0
  206. package/dist/safety/policy.js +81 -0
  207. package/dist/safety/policy.js.map +1 -0
  208. package/dist/viewer/assets/index-CN_yb9Uf.css +1 -0
  209. package/dist/viewer/assets/index-D98S1_2d.js +9 -0
  210. package/dist/viewer/icons/icon-192.png +0 -0
  211. package/dist/viewer/icons/icon-512.png +0 -0
  212. package/dist/viewer/index.html +15 -0
  213. package/dist/viewer/manifest.webmanifest +1 -0
  214. package/dist/viewer/registerSW.js +1 -0
  215. package/dist/viewer/sw.js +1 -0
  216. package/dist/viewer/workbox-9c191d2f.js +1 -0
  217. package/dist/viewerServer/context.d.ts +48 -0
  218. package/dist/viewerServer/context.js +60 -0
  219. package/dist/viewerServer/context.js.map +1 -0
  220. package/dist/viewerServer/evidence/classify.d.ts +59 -0
  221. package/dist/viewerServer/evidence/classify.js +124 -0
  222. package/dist/viewerServer/evidence/classify.js.map +1 -0
  223. package/dist/viewerServer/evidence/comparisonView.d.ts +28 -0
  224. package/dist/viewerServer/evidence/comparisonView.js +43 -0
  225. package/dist/viewerServer/evidence/comparisonView.js.map +1 -0
  226. package/dist/viewerServer/evidence/contextSourceView.d.ts +25 -0
  227. package/dist/viewerServer/evidence/contextSourceView.js +20 -0
  228. package/dist/viewerServer/evidence/contextSourceView.js.map +1 -0
  229. package/dist/viewerServer/evidence/discovery.d.ts +31 -0
  230. package/dist/viewerServer/evidence/discovery.js +78 -0
  231. package/dist/viewerServer/evidence/discovery.js.map +1 -0
  232. package/dist/viewerServer/evidence/evaluationView.d.ts +32 -0
  233. package/dist/viewerServer/evidence/evaluationView.js +50 -0
  234. package/dist/viewerServer/evidence/evaluationView.js.map +1 -0
  235. package/dist/viewerServer/evidence/handles.d.ts +21 -0
  236. package/dist/viewerServer/evidence/handles.js +43 -0
  237. package/dist/viewerServer/evidence/handles.js.map +1 -0
  238. package/dist/viewerServer/evidence/index.d.ts +41 -0
  239. package/dist/viewerServer/evidence/index.js +82 -0
  240. package/dist/viewerServer/evidence/index.js.map +1 -0
  241. package/dist/viewerServer/evidence/limits.d.ts +27 -0
  242. package/dist/viewerServer/evidence/limits.js +28 -0
  243. package/dist/viewerServer/evidence/limits.js.map +1 -0
  244. package/dist/viewerServer/evidence/linkedEvidence.d.ts +43 -0
  245. package/dist/viewerServer/evidence/linkedEvidence.js +151 -0
  246. package/dist/viewerServer/evidence/linkedEvidence.js.map +1 -0
  247. package/dist/viewerServer/evidence/mediaResolver.d.ts +16 -0
  248. package/dist/viewerServer/evidence/mediaResolver.js +85 -0
  249. package/dist/viewerServer/evidence/mediaResolver.js.map +1 -0
  250. package/dist/viewerServer/evidence/observationView.d.ts +29 -0
  251. package/dist/viewerServer/evidence/observationView.js +46 -0
  252. package/dist/viewerServer/evidence/observationView.js.map +1 -0
  253. package/dist/viewerServer/evidence/pathSafety.d.ts +11 -0
  254. package/dist/viewerServer/evidence/pathSafety.js +31 -0
  255. package/dist/viewerServer/evidence/pathSafety.js.map +1 -0
  256. package/dist/viewerServer/evidence/projection.d.ts +55 -0
  257. package/dist/viewerServer/evidence/projection.js +152 -0
  258. package/dist/viewerServer/evidence/projection.js.map +1 -0
  259. package/dist/viewerServer/evidence/referenceView.d.ts +133 -0
  260. package/dist/viewerServer/evidence/referenceView.js +169 -0
  261. package/dist/viewerServer/evidence/referenceView.js.map +1 -0
  262. package/dist/viewerServer/httpServer.d.ts +27 -0
  263. package/dist/viewerServer/httpServer.js +381 -0
  264. package/dist/viewerServer/httpServer.js.map +1 -0
  265. package/dist/viewerServer/openBrowser.d.ts +7 -0
  266. package/dist/viewerServer/openBrowser.js +32 -0
  267. package/dist/viewerServer/openBrowser.js.map +1 -0
  268. package/dist/viewerServer/port.d.ts +16 -0
  269. package/dist/viewerServer/port.js +19 -0
  270. package/dist/viewerServer/port.js.map +1 -0
  271. package/dist/viewerServer/viewerService.d.ts +62 -0
  272. package/dist/viewerServer/viewerService.js +88 -0
  273. package/dist/viewerServer/viewerService.js.map +1 -0
  274. package/docs/ARCHITECTURE.md +1286 -0
  275. package/docs/CI_CD.md +250 -0
  276. package/docs/COMMANDS.md +972 -0
  277. package/docs/CONTRACTS.md +1856 -0
  278. package/docs/CURRENT_STATE.md +1049 -0
  279. package/docs/DEVELOPMENT.md +202 -0
  280. package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -0
  281. package/docs/PROJECT_DESCRIPTION.md +2221 -0
  282. package/docs/PROJECT_MILESTONES.md +2526 -0
  283. package/docs/PROJECT_OVERVIEW.md +150 -0
  284. package/docs/QUICKSTART.md +83 -0
  285. package/docs/RELEASE.md +27 -0
  286. package/docs/ROADMAP.md +641 -0
  287. package/docs/SECURITY.md +218 -0
  288. package/docs/WORKFLOWS.md +642 -0
  289. package/docs/plans/v0.8-implementation-plan.md +655 -0
  290. package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -0
  291. package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -0
  292. package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -0
  293. package/docs/reports/v0.7-pre-release-readiness.md +337 -0
  294. package/docs/reports/v0.7-reference-binding-prompt5.md +223 -0
  295. package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -0
  296. package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -0
  297. package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -0
  298. package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -0
  299. package/docs/reports/v0.7-reference-regions-prompt2.md +195 -0
  300. package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -0
  301. package/docs/reports/v0.7-release-prep.md +423 -0
  302. package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -0
  303. package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -0
  304. package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -0
  305. package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -0
  306. package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -0
  307. package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -0
  308. package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -0
  309. package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -0
  310. package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -0
  311. package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -0
  312. package/docs/reports/v0.8.1-check-orchestration-prompt2.md +69 -0
  313. package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -0
  314. package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -0
  315. package/docs/reports/v0.8.1-project-workflow-foundation-prompt1.md +66 -0
  316. package/package.json +58 -0
@@ -0,0 +1,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
+ }