@dailephd/my-frontend-observer 0.10.0 → 0.10.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 +490 -479
- package/LICENSE +21 -21
- package/README.md +375 -365
- package/dist/application/projectCheckService.d.ts +6 -0
- package/dist/application/projectCheckService.js +8 -1
- package/dist/application/projectCheckService.js.map +1 -1
- package/dist/application/projectWorkflowService.d.ts +7 -2
- package/dist/application/projectWorkflowService.js +10 -3
- package/dist/application/projectWorkflowService.js.map +1 -1
- package/dist/cli.js +510 -510
- package/dist/viewer/index.html +13 -13
- package/dist/viewer/sw.js +1 -1
- package/docs/ARCHITECTURE.md +1394 -1385
- package/docs/CI_CD.md +349 -338
- package/docs/COMMANDS.md +1035 -1026
- package/docs/CONTRACTS.md +1971 -1960
- package/docs/CURRENT_STATE.md +1277 -1252
- package/docs/DEVELOPMENT.md +240 -237
- package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -50
- package/docs/PROJECT_DESCRIPTION.md +2248 -2224
- package/docs/PROJECT_MILESTONES.md +2681 -2558
- package/docs/PROJECT_OVERVIEW.md +200 -196
- package/docs/QUICKSTART.md +100 -100
- package/docs/RELEASE.md +37 -36
- package/docs/ROADMAP.md +1105 -1034
- package/docs/SECURITY.md +297 -297
- package/docs/WORKFLOWS.md +806 -796
- package/docs/plans/v0.10-implementation-plan.md +1509 -1509
- package/docs/plans/v0.8-implementation-plan.md +655 -655
- package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -505
- package/docs/plans/v0.9-implementation-plan.md +1529 -1529
- package/docs/plans/v0.9.1-implementation-plan.md +468 -468
- package/docs/reports/v0.10-batch1-visual-change-workflow-foundation.md +102 -102
- package/docs/reports/v0.10-batch2-project-composition-check-recording.md +103 -103
- package/docs/reports/v0.10-batch3-viewer-visual-change-workspace.md +93 -93
- package/docs/reports/v0.10-batch4-actual-frontend-entry.md +59 -59
- package/docs/reports/v0.10-batch5-reference-driven-entry.md +238 -238
- package/docs/reports/v0.10-batch6-coding-agent-handoff.md +85 -85
- package/docs/reports/v0.10-batch7-correction-review-acceptance.md +145 -145
- package/docs/reports/v0.10-batch8-integrated-acceptance.md +109 -109
- package/docs/reports/v0.10-implementation-completeness-documentation-reconciliation.md +344 -344
- package/docs/reports/v0.10-pre-release-readiness.md +120 -120
- package/docs/reports/v0.10-release-preparation.md +70 -70
- package/docs/reports/v0.10.1-project-check-baseline-context-implementation.md +86 -0
- package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -243
- package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -497
- package/docs/reports/v0.7-pre-release-readiness.md +337 -337
- package/docs/reports/v0.7-reference-binding-prompt5.md +223 -223
- package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -234
- package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -222
- package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -216
- package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -151
- package/docs/reports/v0.7-reference-regions-prompt2.md +195 -195
- package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -217
- package/docs/reports/v0.7-release-prep.md +423 -423
- package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -279
- package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -233
- package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -279
- package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -247
- package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -741
- package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -128
- package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -223
- package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -687
- package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -232
- package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -278
- package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -114
- package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -170
- package/docs/reports/v0.9-architecture-retrieval.md +14 -37
- package/docs/reports/v0.9-final-pre-release-readiness.md +209 -209
- package/docs/reports/v0.9-final-readiness-corrections.md +530 -530
- package/docs/reports/v0.9-pre-release-readiness.md +169 -169
- package/docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md +359 -359
- package/docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md +262 -262
- package/docs/reports/v0.9.1-pre-release-readiness.md +206 -206
- package/package.json +59 -59
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
# v0.10 Batch 1 Visual-Change Workflow Foundation
|
|
2
|
-
|
|
3
|
-
## 1. Verdict
|
|
4
|
-
|
|
5
|
-
PASS after the validation recorded below.
|
|
6
|
-
|
|
7
|
-
## 2. Repository and Git state
|
|
8
|
-
|
|
9
|
-
- Repository: `C:\Users\daile\Projects\my-frontend-observer`
|
|
10
|
-
- Starting commit: `0ca6a686ee16447052845227a86f685b91aa54c1`
|
|
11
|
-
- Branch: `feature/v0.10-full-visual-workflow`
|
|
12
|
-
- Intended commit: `feat: add v0.10 visual change workflow foundation`
|
|
13
|
-
|
|
14
|
-
## 3. Retrieval and index
|
|
15
|
-
|
|
16
|
-
- Published my-dev-kit version: `1.12.3`
|
|
17
|
-
- Index: `.my-dev-kit-context/indexes/my-frontend-observer-v0.9.1-20260922T070928-v010-batch1`
|
|
18
|
-
- Command: `my-dev-kit index --root C:\Users\daile\Projects\my-frontend-observer --src src --src viewer/src --src tests --src scripts --out <index> --call-graph --json`
|
|
19
|
-
- Roots: `src`, `viewer/src`, `tests`, `scripts`
|
|
20
|
-
- Summary: 162 files, 1,606 symbols, 3,471 edges, zero index-level warnings/errors.
|
|
21
|
-
- Partial analyzers: data-model (758 warnings) and classification (1,568 warnings). Syntax, call graph, frontend semantic, and frontend reachability completed.
|
|
22
|
-
|
|
23
|
-
Canonical precedents confirmed:
|
|
24
|
-
|
|
25
|
-
- `src/domain/visualAnnotation.ts` and `visualAnnotationIdentity.ts`: closed validation, sorted-key canonical JSON, SHA-256 request identity, nonce-backed instance identity, producer/provenance, and forward supersession.
|
|
26
|
-
- `src/domain/externalReference.ts`, `externalReferenceIdentity.ts`, and `frontendContractIdentity.ts`: exact request/instance and immutable supersession conventions.
|
|
27
|
-
- `src/domain/externalReferenceRuntimeBinding.ts`: the exact reusable explicit binding declaration type and its identifier, bound, and duplicate semantics.
|
|
28
|
-
- `src/artifacts/visualAnnotationArtifactWriter.ts` and reader: sibling temporary directory, overwrite refusal, cleanup, manifest/media digest validation, and atomic rename.
|
|
29
|
-
- `src/projectWorkflow/projectPaths.ts`: the project evidence-root/path owner.
|
|
30
|
-
- `src/viewerServer/evidence/classify.ts`, `index.ts`, `projection.ts`, `handles.ts`, and `annotationView.ts`: the existing support-state classifier, metadata-first index, safe handles, bounded exact identity lookup, and honest unavailable projection.
|
|
31
|
-
- Existing `EvidenceReference` is structured evaluation provenance and explicitly is not a filesystem reference. Therefore a small workflow-owned project-relative artifact reference was required; no generalized cross-project framework was added.
|
|
32
|
-
|
|
33
|
-
Full source/test file reads: none.
|
|
34
|
-
|
|
35
|
-
## 4. Production implementation
|
|
36
|
-
|
|
37
|
-
Created:
|
|
38
|
-
|
|
39
|
-
- `src/domain/visualChangeWorkflow.ts`
|
|
40
|
-
- `src/domain/visualChangeWorkflowIdentity.ts`
|
|
41
|
-
- `src/artifacts/visualChangeWorkflowArtifactWriter.ts`
|
|
42
|
-
- `src/artifacts/visualChangeWorkflowArtifactReader.ts`
|
|
43
|
-
- `src/application/visualChangeWorkflowPersistenceService.ts`
|
|
44
|
-
- `src/viewerServer/evidence/visualChangeWorkflowView.ts`
|
|
45
|
-
|
|
46
|
-
Modified:
|
|
47
|
-
|
|
48
|
-
- `src/projectWorkflow/projectPaths.ts`
|
|
49
|
-
- `src/viewerServer/evidence/classify.ts`
|
|
50
|
-
- `src/viewerServer/evidence/handles.ts`
|
|
51
|
-
- `src/viewerServer/evidence/projection.ts`
|
|
52
|
-
- `src/index.ts`
|
|
53
|
-
- `docs/CONTRACTS.md`
|
|
54
|
-
|
|
55
|
-
The artifact kind is exactly `my-frontend-observer/visual-change-workflow`; schema is exactly `1.0.0`; attempts are bounded at 20. The closed domain union contains the two frozen entry modes, exact evidence references, check snapshots, coordination metadata, review state, activation, and governance-result references.
|
|
56
|
-
|
|
57
|
-
Request identity is deterministic over semantic evidence identities and binding content. Storage paths, timestamps, output roots, temp roots, Viewer handles/ports, and coordination filesystem details are excluded. Workflow instance IDs are fresh. Attempt IDs hash request ID plus candidate observation ID. Revisions use `supersedesVisualChangeWorkflowId`; parents are never rewritten.
|
|
58
|
-
|
|
59
|
-
The writer validates, refuses existing final output, uses `.tmp-<workflowId>`, writes canonical bindings when required, verifies its digest, writes the manifest, and atomically renames. The reader checks kind/version/domain validity, exact `bindings.json` path, regular-file status, SHA-256, canonical bytes, declaration equality, and count. No referenced artifact or media is copied.
|
|
60
|
-
|
|
61
|
-
Discovery classifies the new family through the existing support-state machinery. Metadata includes workflow/request identity, mode, baseline, annotation, selected reference, attempt count, latest check/review state, and supersession without embedding attempts. The read projection resolves exact identities using canonical classification and returns explicit unavailable state for missing or ambiguous links.
|
|
62
|
-
|
|
63
|
-
## 5. Tests
|
|
64
|
-
|
|
65
|
-
Created `tests/unit/visualChangeWorkflow.test.ts`. Its ten focused cases protect:
|
|
66
|
-
|
|
67
|
-
1. minimal actual/reference validation, closed shapes, wrong kind, and unsupported schema;
|
|
68
|
-
2. request identity determinism and semantic-scope changes, including operational path exclusion;
|
|
69
|
-
3. fresh workflow identity and deterministic attempt identity invariants;
|
|
70
|
-
4. attempt bounds, revision lineage, path safety, and review vocabulary;
|
|
71
|
-
5. actual-mode round trip, absent bindings file, and overwrite refusal;
|
|
72
|
-
6. deterministic bindings bytes, digest/count round trip, and tamper rejection;
|
|
73
|
-
7. temporary-output cleanup on injected failure;
|
|
74
|
-
8. same-request/different-instance persistence and byte-immutable parent revision;
|
|
75
|
-
9. supported classification and bounded index metadata;
|
|
76
|
-
10. exact linked-evidence resolution and honest missing evidence.
|
|
77
|
-
|
|
78
|
-
Existing focused annotation, external-reference, contract, and discovery suites remained unchanged and passed.
|
|
79
|
-
|
|
80
|
-
## 6. Validation
|
|
81
|
-
|
|
82
|
-
- `npm run typecheck`: PASS.
|
|
83
|
-
- `npm run lint`: PASS after removal of one unused import.
|
|
84
|
-
- Focused five-file Vitest run: PASS, 51 tests.
|
|
85
|
-
- `npm test`: PASS.
|
|
86
|
-
- `npm run build`: PASS.
|
|
87
|
-
- `npm run check:docs`: PASS.
|
|
88
|
-
- `git diff --check`: PASS.
|
|
89
|
-
|
|
90
|
-
Existing constants remain observation `1.2.0`, comparison `1.0.0`, frontend contract `1.0.0`, evaluation `1.0.0`, bounded-agent-context `1.0.0`, external-reference `1.0.0`, visual annotation `1.0.0`, and Viewer protocol `1.3.0`.
|
|
91
|
-
|
|
92
|
-
## 7. Exclusions and risk
|
|
93
|
-
|
|
94
|
-
No project activation/restoration, live `checkProject` mapping, Viewer UI/POST routes, entry-mode UI, handoff, orchestrator execution, rerender/correction loop, acceptance action, governance operation, tutorial, version bump, or release work was implemented.
|
|
95
|
-
|
|
96
|
-
Remaining risk is limited to later-batch composition: Batch 2 must map canonical `CheckWorkflowResult` into the frozen snapshot, activate/restore project acceptance explicitly, and record attempts without scope drift. Batch 1 deliberately does not enforce accepted-requires-PASS.
|
|
97
|
-
|
|
98
|
-
## 8. Batch 2 handoff
|
|
99
|
-
|
|
100
|
-
Start from this Batch 1 commit. Reuse `persistVisualChangeWorkflow`, `readVisualChangeWorkflowArtifact`, `buildVisualChangeAttemptIdentity`, `visualChangeOutputLocation`, and the existing `checkProject` owner. Implement only explicit acceptance activation/restore and canonical check-to-snapshot attempt recording, preserving all Batch 1 identities and schema `1.0.0`.
|
|
101
|
-
|
|
102
|
-
Generated state is confined to `.my-dev-kit-workflow/` and `.my-dev-kit-context/`; neither path is staged.
|
|
1
|
+
# v0.10 Batch 1 Visual-Change Workflow Foundation
|
|
2
|
+
|
|
3
|
+
## 1. Verdict
|
|
4
|
+
|
|
5
|
+
PASS after the validation recorded below.
|
|
6
|
+
|
|
7
|
+
## 2. Repository and Git state
|
|
8
|
+
|
|
9
|
+
- Repository: `C:\Users\daile\Projects\my-frontend-observer`
|
|
10
|
+
- Starting commit: `0ca6a686ee16447052845227a86f685b91aa54c1`
|
|
11
|
+
- Branch: `feature/v0.10-full-visual-workflow`
|
|
12
|
+
- Intended commit: `feat: add v0.10 visual change workflow foundation`
|
|
13
|
+
|
|
14
|
+
## 3. Retrieval and index
|
|
15
|
+
|
|
16
|
+
- Published my-dev-kit version: `1.12.3`
|
|
17
|
+
- Index: `.my-dev-kit-context/indexes/my-frontend-observer-v0.9.1-20260922T070928-v010-batch1`
|
|
18
|
+
- Command: `my-dev-kit index --root C:\Users\daile\Projects\my-frontend-observer --src src --src viewer/src --src tests --src scripts --out <index> --call-graph --json`
|
|
19
|
+
- Roots: `src`, `viewer/src`, `tests`, `scripts`
|
|
20
|
+
- Summary: 162 files, 1,606 symbols, 3,471 edges, zero index-level warnings/errors.
|
|
21
|
+
- Partial analyzers: data-model (758 warnings) and classification (1,568 warnings). Syntax, call graph, frontend semantic, and frontend reachability completed.
|
|
22
|
+
|
|
23
|
+
Canonical precedents confirmed:
|
|
24
|
+
|
|
25
|
+
- `src/domain/visualAnnotation.ts` and `visualAnnotationIdentity.ts`: closed validation, sorted-key canonical JSON, SHA-256 request identity, nonce-backed instance identity, producer/provenance, and forward supersession.
|
|
26
|
+
- `src/domain/externalReference.ts`, `externalReferenceIdentity.ts`, and `frontendContractIdentity.ts`: exact request/instance and immutable supersession conventions.
|
|
27
|
+
- `src/domain/externalReferenceRuntimeBinding.ts`: the exact reusable explicit binding declaration type and its identifier, bound, and duplicate semantics.
|
|
28
|
+
- `src/artifacts/visualAnnotationArtifactWriter.ts` and reader: sibling temporary directory, overwrite refusal, cleanup, manifest/media digest validation, and atomic rename.
|
|
29
|
+
- `src/projectWorkflow/projectPaths.ts`: the project evidence-root/path owner.
|
|
30
|
+
- `src/viewerServer/evidence/classify.ts`, `index.ts`, `projection.ts`, `handles.ts`, and `annotationView.ts`: the existing support-state classifier, metadata-first index, safe handles, bounded exact identity lookup, and honest unavailable projection.
|
|
31
|
+
- Existing `EvidenceReference` is structured evaluation provenance and explicitly is not a filesystem reference. Therefore a small workflow-owned project-relative artifact reference was required; no generalized cross-project framework was added.
|
|
32
|
+
|
|
33
|
+
Full source/test file reads: none.
|
|
34
|
+
|
|
35
|
+
## 4. Production implementation
|
|
36
|
+
|
|
37
|
+
Created:
|
|
38
|
+
|
|
39
|
+
- `src/domain/visualChangeWorkflow.ts`
|
|
40
|
+
- `src/domain/visualChangeWorkflowIdentity.ts`
|
|
41
|
+
- `src/artifacts/visualChangeWorkflowArtifactWriter.ts`
|
|
42
|
+
- `src/artifacts/visualChangeWorkflowArtifactReader.ts`
|
|
43
|
+
- `src/application/visualChangeWorkflowPersistenceService.ts`
|
|
44
|
+
- `src/viewerServer/evidence/visualChangeWorkflowView.ts`
|
|
45
|
+
|
|
46
|
+
Modified:
|
|
47
|
+
|
|
48
|
+
- `src/projectWorkflow/projectPaths.ts`
|
|
49
|
+
- `src/viewerServer/evidence/classify.ts`
|
|
50
|
+
- `src/viewerServer/evidence/handles.ts`
|
|
51
|
+
- `src/viewerServer/evidence/projection.ts`
|
|
52
|
+
- `src/index.ts`
|
|
53
|
+
- `docs/CONTRACTS.md`
|
|
54
|
+
|
|
55
|
+
The artifact kind is exactly `my-frontend-observer/visual-change-workflow`; schema is exactly `1.0.0`; attempts are bounded at 20. The closed domain union contains the two frozen entry modes, exact evidence references, check snapshots, coordination metadata, review state, activation, and governance-result references.
|
|
56
|
+
|
|
57
|
+
Request identity is deterministic over semantic evidence identities and binding content. Storage paths, timestamps, output roots, temp roots, Viewer handles/ports, and coordination filesystem details are excluded. Workflow instance IDs are fresh. Attempt IDs hash request ID plus candidate observation ID. Revisions use `supersedesVisualChangeWorkflowId`; parents are never rewritten.
|
|
58
|
+
|
|
59
|
+
The writer validates, refuses existing final output, uses `.tmp-<workflowId>`, writes canonical bindings when required, verifies its digest, writes the manifest, and atomically renames. The reader checks kind/version/domain validity, exact `bindings.json` path, regular-file status, SHA-256, canonical bytes, declaration equality, and count. No referenced artifact or media is copied.
|
|
60
|
+
|
|
61
|
+
Discovery classifies the new family through the existing support-state machinery. Metadata includes workflow/request identity, mode, baseline, annotation, selected reference, attempt count, latest check/review state, and supersession without embedding attempts. The read projection resolves exact identities using canonical classification and returns explicit unavailable state for missing or ambiguous links.
|
|
62
|
+
|
|
63
|
+
## 5. Tests
|
|
64
|
+
|
|
65
|
+
Created `tests/unit/visualChangeWorkflow.test.ts`. Its ten focused cases protect:
|
|
66
|
+
|
|
67
|
+
1. minimal actual/reference validation, closed shapes, wrong kind, and unsupported schema;
|
|
68
|
+
2. request identity determinism and semantic-scope changes, including operational path exclusion;
|
|
69
|
+
3. fresh workflow identity and deterministic attempt identity invariants;
|
|
70
|
+
4. attempt bounds, revision lineage, path safety, and review vocabulary;
|
|
71
|
+
5. actual-mode round trip, absent bindings file, and overwrite refusal;
|
|
72
|
+
6. deterministic bindings bytes, digest/count round trip, and tamper rejection;
|
|
73
|
+
7. temporary-output cleanup on injected failure;
|
|
74
|
+
8. same-request/different-instance persistence and byte-immutable parent revision;
|
|
75
|
+
9. supported classification and bounded index metadata;
|
|
76
|
+
10. exact linked-evidence resolution and honest missing evidence.
|
|
77
|
+
|
|
78
|
+
Existing focused annotation, external-reference, contract, and discovery suites remained unchanged and passed.
|
|
79
|
+
|
|
80
|
+
## 6. Validation
|
|
81
|
+
|
|
82
|
+
- `npm run typecheck`: PASS.
|
|
83
|
+
- `npm run lint`: PASS after removal of one unused import.
|
|
84
|
+
- Focused five-file Vitest run: PASS, 51 tests.
|
|
85
|
+
- `npm test`: PASS.
|
|
86
|
+
- `npm run build`: PASS.
|
|
87
|
+
- `npm run check:docs`: PASS.
|
|
88
|
+
- `git diff --check`: PASS.
|
|
89
|
+
|
|
90
|
+
Existing constants remain observation `1.2.0`, comparison `1.0.0`, frontend contract `1.0.0`, evaluation `1.0.0`, bounded-agent-context `1.0.0`, external-reference `1.0.0`, visual annotation `1.0.0`, and Viewer protocol `1.3.0`.
|
|
91
|
+
|
|
92
|
+
## 7. Exclusions and risk
|
|
93
|
+
|
|
94
|
+
No project activation/restoration, live `checkProject` mapping, Viewer UI/POST routes, entry-mode UI, handoff, orchestrator execution, rerender/correction loop, acceptance action, governance operation, tutorial, version bump, or release work was implemented.
|
|
95
|
+
|
|
96
|
+
Remaining risk is limited to later-batch composition: Batch 2 must map canonical `CheckWorkflowResult` into the frozen snapshot, activate/restore project acceptance explicitly, and record attempts without scope drift. Batch 1 deliberately does not enforce accepted-requires-PASS.
|
|
97
|
+
|
|
98
|
+
## 8. Batch 2 handoff
|
|
99
|
+
|
|
100
|
+
Start from this Batch 1 commit. Reuse `persistVisualChangeWorkflow`, `readVisualChangeWorkflowArtifact`, `buildVisualChangeAttemptIdentity`, `visualChangeOutputLocation`, and the existing `checkProject` owner. Implement only explicit acceptance activation/restore and canonical check-to-snapshot attempt recording, preserving all Batch 1 identities and schema `1.0.0`.
|
|
101
|
+
|
|
102
|
+
Generated state is confined to `.my-dev-kit-workflow/` and `.my-dev-kit-context/`; neither path is staged.
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
# v0.10 Batch 2 Project Composition and Check Recording
|
|
2
|
-
|
|
3
|
-
## 1. Verdict
|
|
4
|
-
|
|
5
|
-
PASS. Batch 2 project composition, explicit activation and restoration, drift gates, canonical project-check reuse, and immutable attempt recording are implemented.
|
|
6
|
-
|
|
7
|
-
## 2. Repository and Git state
|
|
8
|
-
|
|
9
|
-
- Repository: `C:\Users\daile\Projects\my-frontend-observer`
|
|
10
|
-
- Starting commit: `62c4df47dd278c1fbd431824ca6e773366f1d1fb`
|
|
11
|
-
- Branch: `feature/v0.10-full-visual-workflow`
|
|
12
|
-
- Commit message: `feat: add v0.10 project visual change composition`
|
|
13
|
-
|
|
14
|
-
The preflight worktree was clean. Local and remote shared branches both pointed to the authoritative Batch 1 commit.
|
|
15
|
-
|
|
16
|
-
## 3. my-dev-kit retrieval
|
|
17
|
-
|
|
18
|
-
- Resolved published version: `1.12.3`
|
|
19
|
-
- Install: `.my-dev-kit-workflow/tools/v0.10-batch2/`
|
|
20
|
-
- CLI version: `1.12.3`
|
|
21
|
-
- Verified commands: `index`, `search`, `lookup`, `slice`, `source`, `graph-diff`, and `context`
|
|
22
|
-
- Fresh index: `.my-dev-kit-context/indexes/my-frontend-observer-v0.10-batch2-20260922`
|
|
23
|
-
- Exact index command: `node .my-dev-kit-workflow/tools/v0.10-batch2/node_modules/@dailephd/my-dev-kit/dist/cli.js index --root C:\Users\daile\Projects\my-frontend-observer --src src --src viewer/src --src tests --src scripts --out C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-context\indexes\my-frontend-observer-v0.10-batch2-20260922 --call-graph --json`
|
|
24
|
-
- Index summary: 168 files, 1,669 symbols, 3,581 edges, zero index-level warnings or errors.
|
|
25
|
-
- Complete analyzers: syntax, call graph, frontend semantic, frontend reachability.
|
|
26
|
-
- Partial analyzers: data model with 790 warnings; classification with 1,621 warnings.
|
|
27
|
-
- Skipped/not-run analyzers were Android-specific and model-view lineage.
|
|
28
|
-
|
|
29
|
-
Retrieval used search, lookup, slice, exact symbol source, local dependency expansion, bounded file ranges, and continuation markers. It verified `activateProjectChangeContract`, `FrontendObserverAcceptanceConfig`, `checkProject`, `CheckWorkflowResult`, the alias catalog, canonical observation/contract/reference readers, `persistVisualChangeWorkflow`, `readVisualChangeWorkflowArtifact`, and `buildVisualChangeAttemptIdentity`.
|
|
30
|
-
|
|
31
|
-
## 4. Reused owners
|
|
32
|
-
|
|
33
|
-
- `src/application/projectWorkflowService.ts`: existing atomic activation precedent; unchanged behavior.
|
|
34
|
-
- `src/projectWorkflow/projectConfig.ts`: unchanged project schema and validation.
|
|
35
|
-
- `src/projectWorkflow/aliasCatalog.ts`: exact baseline alias identity and location.
|
|
36
|
-
- `src/application/projectCheckService.ts`: sole capture, comparison, contract, reference, blocker, and final-status owner.
|
|
37
|
-
- `src/projectWorkflow/checkResult.ts`: canonical bounded result fields and truncation.
|
|
38
|
-
- Canonical artifact readers for observations, annotations, baseline/change contracts, external references, and visual-change workflows.
|
|
39
|
-
- `src/application/visualChangeWorkflowPersistenceService.ts`: all new immutable workflow revisions.
|
|
40
|
-
- `src/domain/visualChangeWorkflowIdentity.ts`: existing attempt identity helper.
|
|
41
|
-
|
|
42
|
-
## 5. Application service
|
|
43
|
-
|
|
44
|
-
Created `src/application/visualChangeProjectWorkflowService.ts`. It exports project-aware create/freeze, activation, restoration, canonical check recording, and the pure snapshot mapper. `src/index.ts` exposes the application surface through the established public convention.
|
|
45
|
-
|
|
46
|
-
Create/freeze validates the project configuration and every referenced project-contained artifact. It checks baseline observation ID, request ID, and path, annotation identity, optional baseline-contract identity, actual-mode change-contract identity/request identity, and reference identity/request identity. It persists through the Batch 1 owner without activation, attempts, or project-config mutation.
|
|
47
|
-
|
|
48
|
-
## 6. Activation and rollback
|
|
49
|
-
|
|
50
|
-
Actual activation requires an existing contract block, exact frozen baseline-contract path and identity, and exact change-contract evidence. It changes only `acceptance.contract.changeArtifact`.
|
|
51
|
-
|
|
52
|
-
Reference activation requires an existing reference block, the exact frozen approved reference, reader-verified workflow bindings, and contract/baseline consistency. It changes only the approved reference artifact and the source workflow's project-relative `bindings.json`.
|
|
53
|
-
|
|
54
|
-
Both modes snapshot all represented mutable acceptance selection fields. They atomically write a validated updated configuration and then persist a new workflow revision with the same request ID, unchanged attempts/governance data, activation before/after/activatedAt, and forward supersession. A persistence failure restores the exact original config bytes. A failed compensation returns distinct `partial-state-failure` language stating manual repair may be required.
|
|
55
|
-
|
|
56
|
-
## 7. Restore
|
|
57
|
-
|
|
58
|
-
Restore requires a live activation and exact equality with `activation.after`. Drift is non-mutating. Actual restore changes only the prior change-contract selection. Reference restore restores the prior reference and exact optional bindings presence/value. The successful immutable revision adds only `restoredAt` and forward supersession. Persistence failure compensates back to the exact activated configuration.
|
|
59
|
-
|
|
60
|
-
## 8. Baseline and drift rules
|
|
61
|
-
|
|
62
|
-
Baseline resolution first prefers `defaultBaseline` only when observation ID, request ID, and exact project-relative artifact location all match. Otherwise it chooses the lexicographically first exact matching alias. No exact alias returns `baseline-drift` before `checkProject`.
|
|
63
|
-
|
|
64
|
-
The pre-check gate requires a valid active non-restored workflow, exact acceptance selection, exact baseline, exact baseline/change contract identities where active, exact approved reference identity, exact bindings selection, and reader-verified frozen bindings bytes. Represented changes return `acceptance-drift` or `baseline-drift` without evaluation.
|
|
65
|
-
|
|
66
|
-
## 9. Canonical check and snapshot
|
|
67
|
-
|
|
68
|
-
The service calls only `checkProject(projectRoot, resolvedAlias)`. The pure mapper directly projects status, baseline/candidate IDs, complete comparison/evaluation references, verified active contract IDs, canonical reference ID/fidelity state, ordered failed/unavailable clause and requirement IDs, bounded unexpected-change count, and blockers. Blockers are capped at 50. Snapshot truncation combines canonical overall, contract, reference, and blocker projection truncation.
|
|
69
|
-
|
|
70
|
-
A result without both baseline and candidate is returned as `candidate-not-produced` and is not recorded. Post-check baseline or reference mismatch returns `check-scope-mismatch`.
|
|
71
|
-
|
|
72
|
-
## 10. Attempt persistence
|
|
73
|
-
|
|
74
|
-
Candidate identity/path comes only from the canonical result and is containment checked. Attempt identity uses `buildVisualChangeAttemptIdentity`. New attempts are pending, timestamped, and link to the immediately prior attempt. Duplicate IDs and a twenty-first attempt are rejected without truncation. Persistence produces a new revision with identical scope/request identity and immutable parent bytes. Persistence failure retains canonical check evidence and reports that history was not updated.
|
|
75
|
-
|
|
76
|
-
## 11. Tests and validation
|
|
77
|
-
|
|
78
|
-
Created `tests/unit/visualChangeProjectWorkflowService.test.ts`. It covers direct PASS/FAIL/BLOCKED/REVIEW_REQUIRED projection, comparison/evaluation references, clause and reference-requirement ordering, bounded unexpected changes, blocker bounds, canonical truncation, create-without-activation, immutable activation and restore revisions, rollback after persistence failure, and one-call canonical check recording of a pending candidate attempt. Real application tests use canonical artifact writers/readers.
|
|
79
|
-
|
|
80
|
-
Focused validation: 3 files, 25 tests, PASS. This includes the new service, existing Batch 1 visual-change workflow, and existing project check tests.
|
|
81
|
-
|
|
82
|
-
Full validation:
|
|
83
|
-
|
|
84
|
-
- `npm run typecheck`: PASS.
|
|
85
|
-
- `npm run lint`: PASS.
|
|
86
|
-
- `npm test`: PASS, 91 files and 1,477 tests.
|
|
87
|
-
- `npm run build`: PASS.
|
|
88
|
-
- `npm run check:docs`: PASS.
|
|
89
|
-
- `git diff --check`: PASS.
|
|
90
|
-
|
|
91
|
-
Existing `activateProjectChangeContract`, `checkProject`, Batch 1 workflow behavior, schema constants, and Viewer protocol remain unchanged and pass the full suite.
|
|
92
|
-
|
|
93
|
-
## 12. Full-file read accounting
|
|
94
|
-
|
|
95
|
-
Full source/test file reads: none. my-dev-kit bounded retrieval supplied every required implementation shape. Its symbol index lacks reliable symbol end lines for some declarations, so continuation markers and bounded explicit file ranges were used instead of whole-file reads. Canonical documentation reads are excluded by task rule.
|
|
96
|
-
|
|
97
|
-
## 13. Exclusions and handoff
|
|
98
|
-
|
|
99
|
-
No Viewer workspace, POST route, annotation UI composition, coding-agent handoff, orchestrator integration, automatic retry, correction action, human acceptance, governance approval, version bump, release, tag, publication, or PR work was implemented.
|
|
100
|
-
|
|
101
|
-
Batch 3 should start from this commit and add only the secure project-aware Viewer workspace/API specified by the frozen plan. It can call this application service without reconstructing activation, drift, check, snapshot, or attempt semantics.
|
|
102
|
-
|
|
103
|
-
Generated state is confined to `.my-dev-kit-workflow/` and `.my-dev-kit-context/`. Neither path is staged.
|
|
1
|
+
# v0.10 Batch 2 Project Composition and Check Recording
|
|
2
|
+
|
|
3
|
+
## 1. Verdict
|
|
4
|
+
|
|
5
|
+
PASS. Batch 2 project composition, explicit activation and restoration, drift gates, canonical project-check reuse, and immutable attempt recording are implemented.
|
|
6
|
+
|
|
7
|
+
## 2. Repository and Git state
|
|
8
|
+
|
|
9
|
+
- Repository: `C:\Users\daile\Projects\my-frontend-observer`
|
|
10
|
+
- Starting commit: `62c4df47dd278c1fbd431824ca6e773366f1d1fb`
|
|
11
|
+
- Branch: `feature/v0.10-full-visual-workflow`
|
|
12
|
+
- Commit message: `feat: add v0.10 project visual change composition`
|
|
13
|
+
|
|
14
|
+
The preflight worktree was clean. Local and remote shared branches both pointed to the authoritative Batch 1 commit.
|
|
15
|
+
|
|
16
|
+
## 3. my-dev-kit retrieval
|
|
17
|
+
|
|
18
|
+
- Resolved published version: `1.12.3`
|
|
19
|
+
- Install: `.my-dev-kit-workflow/tools/v0.10-batch2/`
|
|
20
|
+
- CLI version: `1.12.3`
|
|
21
|
+
- Verified commands: `index`, `search`, `lookup`, `slice`, `source`, `graph-diff`, and `context`
|
|
22
|
+
- Fresh index: `.my-dev-kit-context/indexes/my-frontend-observer-v0.10-batch2-20260922`
|
|
23
|
+
- Exact index command: `node .my-dev-kit-workflow/tools/v0.10-batch2/node_modules/@dailephd/my-dev-kit/dist/cli.js index --root C:\Users\daile\Projects\my-frontend-observer --src src --src viewer/src --src tests --src scripts --out C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-context\indexes\my-frontend-observer-v0.10-batch2-20260922 --call-graph --json`
|
|
24
|
+
- Index summary: 168 files, 1,669 symbols, 3,581 edges, zero index-level warnings or errors.
|
|
25
|
+
- Complete analyzers: syntax, call graph, frontend semantic, frontend reachability.
|
|
26
|
+
- Partial analyzers: data model with 790 warnings; classification with 1,621 warnings.
|
|
27
|
+
- Skipped/not-run analyzers were Android-specific and model-view lineage.
|
|
28
|
+
|
|
29
|
+
Retrieval used search, lookup, slice, exact symbol source, local dependency expansion, bounded file ranges, and continuation markers. It verified `activateProjectChangeContract`, `FrontendObserverAcceptanceConfig`, `checkProject`, `CheckWorkflowResult`, the alias catalog, canonical observation/contract/reference readers, `persistVisualChangeWorkflow`, `readVisualChangeWorkflowArtifact`, and `buildVisualChangeAttemptIdentity`.
|
|
30
|
+
|
|
31
|
+
## 4. Reused owners
|
|
32
|
+
|
|
33
|
+
- `src/application/projectWorkflowService.ts`: existing atomic activation precedent; unchanged behavior.
|
|
34
|
+
- `src/projectWorkflow/projectConfig.ts`: unchanged project schema and validation.
|
|
35
|
+
- `src/projectWorkflow/aliasCatalog.ts`: exact baseline alias identity and location.
|
|
36
|
+
- `src/application/projectCheckService.ts`: sole capture, comparison, contract, reference, blocker, and final-status owner.
|
|
37
|
+
- `src/projectWorkflow/checkResult.ts`: canonical bounded result fields and truncation.
|
|
38
|
+
- Canonical artifact readers for observations, annotations, baseline/change contracts, external references, and visual-change workflows.
|
|
39
|
+
- `src/application/visualChangeWorkflowPersistenceService.ts`: all new immutable workflow revisions.
|
|
40
|
+
- `src/domain/visualChangeWorkflowIdentity.ts`: existing attempt identity helper.
|
|
41
|
+
|
|
42
|
+
## 5. Application service
|
|
43
|
+
|
|
44
|
+
Created `src/application/visualChangeProjectWorkflowService.ts`. It exports project-aware create/freeze, activation, restoration, canonical check recording, and the pure snapshot mapper. `src/index.ts` exposes the application surface through the established public convention.
|
|
45
|
+
|
|
46
|
+
Create/freeze validates the project configuration and every referenced project-contained artifact. It checks baseline observation ID, request ID, and path, annotation identity, optional baseline-contract identity, actual-mode change-contract identity/request identity, and reference identity/request identity. It persists through the Batch 1 owner without activation, attempts, or project-config mutation.
|
|
47
|
+
|
|
48
|
+
## 6. Activation and rollback
|
|
49
|
+
|
|
50
|
+
Actual activation requires an existing contract block, exact frozen baseline-contract path and identity, and exact change-contract evidence. It changes only `acceptance.contract.changeArtifact`.
|
|
51
|
+
|
|
52
|
+
Reference activation requires an existing reference block, the exact frozen approved reference, reader-verified workflow bindings, and contract/baseline consistency. It changes only the approved reference artifact and the source workflow's project-relative `bindings.json`.
|
|
53
|
+
|
|
54
|
+
Both modes snapshot all represented mutable acceptance selection fields. They atomically write a validated updated configuration and then persist a new workflow revision with the same request ID, unchanged attempts/governance data, activation before/after/activatedAt, and forward supersession. A persistence failure restores the exact original config bytes. A failed compensation returns distinct `partial-state-failure` language stating manual repair may be required.
|
|
55
|
+
|
|
56
|
+
## 7. Restore
|
|
57
|
+
|
|
58
|
+
Restore requires a live activation and exact equality with `activation.after`. Drift is non-mutating. Actual restore changes only the prior change-contract selection. Reference restore restores the prior reference and exact optional bindings presence/value. The successful immutable revision adds only `restoredAt` and forward supersession. Persistence failure compensates back to the exact activated configuration.
|
|
59
|
+
|
|
60
|
+
## 8. Baseline and drift rules
|
|
61
|
+
|
|
62
|
+
Baseline resolution first prefers `defaultBaseline` only when observation ID, request ID, and exact project-relative artifact location all match. Otherwise it chooses the lexicographically first exact matching alias. No exact alias returns `baseline-drift` before `checkProject`.
|
|
63
|
+
|
|
64
|
+
The pre-check gate requires a valid active non-restored workflow, exact acceptance selection, exact baseline, exact baseline/change contract identities where active, exact approved reference identity, exact bindings selection, and reader-verified frozen bindings bytes. Represented changes return `acceptance-drift` or `baseline-drift` without evaluation.
|
|
65
|
+
|
|
66
|
+
## 9. Canonical check and snapshot
|
|
67
|
+
|
|
68
|
+
The service calls only `checkProject(projectRoot, resolvedAlias)`. The pure mapper directly projects status, baseline/candidate IDs, complete comparison/evaluation references, verified active contract IDs, canonical reference ID/fidelity state, ordered failed/unavailable clause and requirement IDs, bounded unexpected-change count, and blockers. Blockers are capped at 50. Snapshot truncation combines canonical overall, contract, reference, and blocker projection truncation.
|
|
69
|
+
|
|
70
|
+
A result without both baseline and candidate is returned as `candidate-not-produced` and is not recorded. Post-check baseline or reference mismatch returns `check-scope-mismatch`.
|
|
71
|
+
|
|
72
|
+
## 10. Attempt persistence
|
|
73
|
+
|
|
74
|
+
Candidate identity/path comes only from the canonical result and is containment checked. Attempt identity uses `buildVisualChangeAttemptIdentity`. New attempts are pending, timestamped, and link to the immediately prior attempt. Duplicate IDs and a twenty-first attempt are rejected without truncation. Persistence produces a new revision with identical scope/request identity and immutable parent bytes. Persistence failure retains canonical check evidence and reports that history was not updated.
|
|
75
|
+
|
|
76
|
+
## 11. Tests and validation
|
|
77
|
+
|
|
78
|
+
Created `tests/unit/visualChangeProjectWorkflowService.test.ts`. It covers direct PASS/FAIL/BLOCKED/REVIEW_REQUIRED projection, comparison/evaluation references, clause and reference-requirement ordering, bounded unexpected changes, blocker bounds, canonical truncation, create-without-activation, immutable activation and restore revisions, rollback after persistence failure, and one-call canonical check recording of a pending candidate attempt. Real application tests use canonical artifact writers/readers.
|
|
79
|
+
|
|
80
|
+
Focused validation: 3 files, 25 tests, PASS. This includes the new service, existing Batch 1 visual-change workflow, and existing project check tests.
|
|
81
|
+
|
|
82
|
+
Full validation:
|
|
83
|
+
|
|
84
|
+
- `npm run typecheck`: PASS.
|
|
85
|
+
- `npm run lint`: PASS.
|
|
86
|
+
- `npm test`: PASS, 91 files and 1,477 tests.
|
|
87
|
+
- `npm run build`: PASS.
|
|
88
|
+
- `npm run check:docs`: PASS.
|
|
89
|
+
- `git diff --check`: PASS.
|
|
90
|
+
|
|
91
|
+
Existing `activateProjectChangeContract`, `checkProject`, Batch 1 workflow behavior, schema constants, and Viewer protocol remain unchanged and pass the full suite.
|
|
92
|
+
|
|
93
|
+
## 12. Full-file read accounting
|
|
94
|
+
|
|
95
|
+
Full source/test file reads: none. my-dev-kit bounded retrieval supplied every required implementation shape. Its symbol index lacks reliable symbol end lines for some declarations, so continuation markers and bounded explicit file ranges were used instead of whole-file reads. Canonical documentation reads are excluded by task rule.
|
|
96
|
+
|
|
97
|
+
## 13. Exclusions and handoff
|
|
98
|
+
|
|
99
|
+
No Viewer workspace, POST route, annotation UI composition, coding-agent handoff, orchestrator integration, automatic retry, correction action, human acceptance, governance approval, version bump, release, tag, publication, or PR work was implemented.
|
|
100
|
+
|
|
101
|
+
Batch 3 should start from this commit and add only the secure project-aware Viewer workspace/API specified by the frozen plan. It can call this application service without reconstructing activation, drift, check, snapshot, or attempt semantics.
|
|
102
|
+
|
|
103
|
+
Generated state is confined to `.my-dev-kit-workflow/` and `.my-dev-kit-context/`. Neither path is staged.
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
# v0.10 Batch 3 Viewer Visual-Change Workspace
|
|
2
|
-
|
|
3
|
-
## 1. Verdict and repository
|
|
4
|
-
|
|
5
|
-
PASS.
|
|
6
|
-
|
|
7
|
-
- Repository: `C:\Users\daile\Projects\my-frontend-observer`
|
|
8
|
-
- Starting commit: `a7613d7520ca77523514daae3632dbe579e68cf7`
|
|
9
|
-
- Branch: `feature/v0.10-full-visual-workflow`
|
|
10
|
-
- Commit message: `feat: add v0.10 visual change viewer workspace`
|
|
11
|
-
|
|
12
|
-
## 2. Retrieval and tooling
|
|
13
|
-
|
|
14
|
-
- Latest published my-dev-kit: `1.12.3`
|
|
15
|
-
- Local install: `.my-dev-kit-workflow/tools/v0.10-batch3/`
|
|
16
|
-
- Fresh index: `.my-dev-kit-context/indexes/my-frontend-observer-v0.10-batch3-20260922`
|
|
17
|
-
- Command: `node C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-workflow\tools\v0.10-batch3\node_modules\@dailephd\my-dev-kit\dist\cli.js index --root C:\Users\daile\Projects\my-frontend-observer --src src --src viewer/src --src tests --src scripts --out C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-context\indexes\my-frontend-observer-v0.10-batch3-20260922 --call-graph --json`
|
|
18
|
-
- Summary: 169 files, 1,700 symbols, 3,639 edges, zero index warnings/errors.
|
|
19
|
-
- Complete: syntax, call graph, frontend semantic, frontend reachability.
|
|
20
|
-
- Partial: data model, 802 warnings; classification, 1,647 warnings.
|
|
21
|
-
|
|
22
|
-
Bounded search, lookup, slice, exact symbol source, dependency expansion, continuation, and line ranges verified the one HTTP dispatcher, shared authoring gate, project-aware startup, annotation adapter precedent, memory-only authoring hook, explicit mutation hooks, top-level shell, workflow projection, index metadata, and Batch 2 application owner.
|
|
23
|
-
|
|
24
|
-
## 3. Server surface
|
|
25
|
-
|
|
26
|
-
Created `src/viewerServer/visualChangeAuthoring.ts` and extended the existing `httpServer.ts` dispatcher with exactly:
|
|
27
|
-
|
|
28
|
-
- `GET /api/visual-changes/:handle/view`
|
|
29
|
-
- `POST /api/visual-changes`
|
|
30
|
-
- `POST /api/visual-changes/:handle/activate`
|
|
31
|
-
- `POST /api/visual-changes/:handle/check`
|
|
32
|
-
- `POST /api/visual-changes/:handle/restore-acceptance`
|
|
33
|
-
|
|
34
|
-
No handoff or review route exists. GET uses `getVisualChangeWorkflowView`. Handle mutations resolve one supported workflow through the existing safe handle boundary and never accept paths. Create accepts exactly `{scope}`; mutation bodies accept exactly `{}`.
|
|
35
|
-
|
|
36
|
-
The frozen failure mapping is 409 for activation/state/drift/scope/candidate/duplicate/limit/config conflicts, 422 for invalid workflows/references, and 500 for write/persistence/partial-state failures. Candidate-not-produced retains the canonical check body. Partial-state wording comes unchanged from the application service.
|
|
37
|
-
|
|
38
|
-
Every POST passes through `readAuthoringJsonRequest`, which reuses exact Host, Origin, in-memory token, JSON content type, no-compression, and 256 KiB body guards. Standalone state has no authoring session and fails closed before application calls. All responses use `Cache-Control: no-store`.
|
|
39
|
-
|
|
40
|
-
## 4. Viewer workspace
|
|
41
|
-
|
|
42
|
-
The existing shell now has Evidence, Bounded context, and Visual changes modes using native `aria-pressed` buttons. `VisualChangeWorkspace` filters `/api/index` metadata to workflow records, loads only the exact selected handle, and shows bounded summary fields, all stored attempts in order, and honest linked-evidence availability. Available linked evidence navigates through its exact supported handle.
|
|
43
|
-
|
|
44
|
-
Project-aware sessions expose only Activate, Run check, and Restore acceptance with server-authoritative eligibility. Check has a disabled `Running check…` pending state. There is no retry, automatic restore, review, handoff, approval, or coding-agent control. Standalone and capability-error sessions retain inspection and omit mutations.
|
|
45
|
-
|
|
46
|
-
The action hook keeps the token only as an argument from the existing memory-only session hook. Mutation success explicitly refreshes `/api/index`, finds the exact returned workflow ID, and selects only that supported revision. Missing exact revisions produce a warning rather than fuzzy selection.
|
|
47
|
-
|
|
48
|
-
The workspace uses keyboard-operable native controls, semantic lists and definition lists, textual status, `aria-live` mutation feedback, disabled states, and no focus trap.
|
|
49
|
-
|
|
50
|
-
## 5. Leakage and protocol audit
|
|
51
|
-
|
|
52
|
-
New success responses contain workflow/request IDs and bounded canonical evidence only. They expose no project root, absolute manifest/bindings/temp path, token, stack trace, or orchestrator path. Tests verify error output does not contain the project root and browser storage/visible text do not contain the token mechanism.
|
|
53
|
-
|
|
54
|
-
`VIEWER_PROTOCOL_VERSION` remains exactly `1.3.0`; `/api/status` behavior is unchanged. The service worker continues to exclude `/api/` responses.
|
|
55
|
-
|
|
56
|
-
## 6. Tests and validation
|
|
57
|
-
|
|
58
|
-
Created:
|
|
59
|
-
|
|
60
|
-
- `tests/unit/visualChangeAuthoring.test.ts`
|
|
61
|
-
- `tests/unit/viewerVisualChangeAuthoring.test.ts`
|
|
62
|
-
- `tests/browser/visualChangeWorkspace.test.ts`
|
|
63
|
-
|
|
64
|
-
These cover closed parsers, frozen failure mapping, supported/unknown/wrong-family GET handling, standalone GET/read-only behavior, project-only POSTs, Host/Origin/token/content-type/compression/body bounds, no-store, path leakage, the third navigation mode, aria-pressed and keyboard operation, common actual-mode identities, honest unavailable links, read-only versus project-aware actions, prohibited later-batch actions, and browser storage/token visibility.
|
|
65
|
-
|
|
66
|
-
Validation:
|
|
67
|
-
|
|
68
|
-
- Focused unit/application tests: PASS.
|
|
69
|
-
- `npm run typecheck`: PASS.
|
|
70
|
-
- `npm run lint`: PASS.
|
|
71
|
-
- `npm test`: PASS.
|
|
72
|
-
- `npm run test:browser`: PASS.
|
|
73
|
-
- `npm run test:security`: PASS.
|
|
74
|
-
- `npm run test:pwa-hard-gate`: PASS.
|
|
75
|
-
- `npm run build`: PASS.
|
|
76
|
-
- `npm run check:docs`: PASS.
|
|
77
|
-
- `git diff --check`: PASS.
|
|
78
|
-
|
|
79
|
-
The initial browser command failed before meaningful assertions because the isolated project-local Playwright directory had no Chromium. Playwright Chromium 151.0.7922.34 was installed under `.my-dev-kit-workflow/playwright-browsers`, after which the complete browser gate passed.
|
|
80
|
-
|
|
81
|
-
Existing annotation save, contract promotion, reference materialization, authoring security, standalone read-only mode, Evidence, Bounded context, Batch 1, and Batch 2 suites remain passing.
|
|
82
|
-
|
|
83
|
-
## 7. Full-file read accounting
|
|
84
|
-
|
|
85
|
-
Full source/test file reads: none. Bounded my-dev-kit retrieval provided the necessary route, security, startup, projection, hook, component, and test precedent. Where symbol end lines were unavailable, explicit bounded ranges and continuation markers supplied the missing local context.
|
|
86
|
-
|
|
87
|
-
## 8. Exclusions and Batch 4 handoff
|
|
88
|
-
|
|
89
|
-
No actual/reference entry composition, annotation-to-workflow creation UI, reference selection, binding authoring, handoff, orchestrator integration, retry loop, review/correction/acceptance, baseline/reference governance, version bump, release, PR, or publication was implemented.
|
|
90
|
-
|
|
91
|
-
Batch 4 can add the actual-frontend entry workflow inside the existing Visual changes shell and call the already-secured create/activate boundaries. It must not replace the Batch 2 application service or Batch 3 security/reselection mechanisms.
|
|
92
|
-
|
|
93
|
-
Generated tool, index, browser, cache, and temporary state remains beneath `.my-dev-kit-workflow/` and `.my-dev-kit-context/` and is not staged.
|
|
1
|
+
# v0.10 Batch 3 Viewer Visual-Change Workspace
|
|
2
|
+
|
|
3
|
+
## 1. Verdict and repository
|
|
4
|
+
|
|
5
|
+
PASS.
|
|
6
|
+
|
|
7
|
+
- Repository: `C:\Users\daile\Projects\my-frontend-observer`
|
|
8
|
+
- Starting commit: `a7613d7520ca77523514daae3632dbe579e68cf7`
|
|
9
|
+
- Branch: `feature/v0.10-full-visual-workflow`
|
|
10
|
+
- Commit message: `feat: add v0.10 visual change viewer workspace`
|
|
11
|
+
|
|
12
|
+
## 2. Retrieval and tooling
|
|
13
|
+
|
|
14
|
+
- Latest published my-dev-kit: `1.12.3`
|
|
15
|
+
- Local install: `.my-dev-kit-workflow/tools/v0.10-batch3/`
|
|
16
|
+
- Fresh index: `.my-dev-kit-context/indexes/my-frontend-observer-v0.10-batch3-20260922`
|
|
17
|
+
- Command: `node C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-workflow\tools\v0.10-batch3\node_modules\@dailephd\my-dev-kit\dist\cli.js index --root C:\Users\daile\Projects\my-frontend-observer --src src --src viewer/src --src tests --src scripts --out C:\Users\daile\Projects\my-frontend-observer\.my-dev-kit-context\indexes\my-frontend-observer-v0.10-batch3-20260922 --call-graph --json`
|
|
18
|
+
- Summary: 169 files, 1,700 symbols, 3,639 edges, zero index warnings/errors.
|
|
19
|
+
- Complete: syntax, call graph, frontend semantic, frontend reachability.
|
|
20
|
+
- Partial: data model, 802 warnings; classification, 1,647 warnings.
|
|
21
|
+
|
|
22
|
+
Bounded search, lookup, slice, exact symbol source, dependency expansion, continuation, and line ranges verified the one HTTP dispatcher, shared authoring gate, project-aware startup, annotation adapter precedent, memory-only authoring hook, explicit mutation hooks, top-level shell, workflow projection, index metadata, and Batch 2 application owner.
|
|
23
|
+
|
|
24
|
+
## 3. Server surface
|
|
25
|
+
|
|
26
|
+
Created `src/viewerServer/visualChangeAuthoring.ts` and extended the existing `httpServer.ts` dispatcher with exactly:
|
|
27
|
+
|
|
28
|
+
- `GET /api/visual-changes/:handle/view`
|
|
29
|
+
- `POST /api/visual-changes`
|
|
30
|
+
- `POST /api/visual-changes/:handle/activate`
|
|
31
|
+
- `POST /api/visual-changes/:handle/check`
|
|
32
|
+
- `POST /api/visual-changes/:handle/restore-acceptance`
|
|
33
|
+
|
|
34
|
+
No handoff or review route exists. GET uses `getVisualChangeWorkflowView`. Handle mutations resolve one supported workflow through the existing safe handle boundary and never accept paths. Create accepts exactly `{scope}`; mutation bodies accept exactly `{}`.
|
|
35
|
+
|
|
36
|
+
The frozen failure mapping is 409 for activation/state/drift/scope/candidate/duplicate/limit/config conflicts, 422 for invalid workflows/references, and 500 for write/persistence/partial-state failures. Candidate-not-produced retains the canonical check body. Partial-state wording comes unchanged from the application service.
|
|
37
|
+
|
|
38
|
+
Every POST passes through `readAuthoringJsonRequest`, which reuses exact Host, Origin, in-memory token, JSON content type, no-compression, and 256 KiB body guards. Standalone state has no authoring session and fails closed before application calls. All responses use `Cache-Control: no-store`.
|
|
39
|
+
|
|
40
|
+
## 4. Viewer workspace
|
|
41
|
+
|
|
42
|
+
The existing shell now has Evidence, Bounded context, and Visual changes modes using native `aria-pressed` buttons. `VisualChangeWorkspace` filters `/api/index` metadata to workflow records, loads only the exact selected handle, and shows bounded summary fields, all stored attempts in order, and honest linked-evidence availability. Available linked evidence navigates through its exact supported handle.
|
|
43
|
+
|
|
44
|
+
Project-aware sessions expose only Activate, Run check, and Restore acceptance with server-authoritative eligibility. Check has a disabled `Running check…` pending state. There is no retry, automatic restore, review, handoff, approval, or coding-agent control. Standalone and capability-error sessions retain inspection and omit mutations.
|
|
45
|
+
|
|
46
|
+
The action hook keeps the token only as an argument from the existing memory-only session hook. Mutation success explicitly refreshes `/api/index`, finds the exact returned workflow ID, and selects only that supported revision. Missing exact revisions produce a warning rather than fuzzy selection.
|
|
47
|
+
|
|
48
|
+
The workspace uses keyboard-operable native controls, semantic lists and definition lists, textual status, `aria-live` mutation feedback, disabled states, and no focus trap.
|
|
49
|
+
|
|
50
|
+
## 5. Leakage and protocol audit
|
|
51
|
+
|
|
52
|
+
New success responses contain workflow/request IDs and bounded canonical evidence only. They expose no project root, absolute manifest/bindings/temp path, token, stack trace, or orchestrator path. Tests verify error output does not contain the project root and browser storage/visible text do not contain the token mechanism.
|
|
53
|
+
|
|
54
|
+
`VIEWER_PROTOCOL_VERSION` remains exactly `1.3.0`; `/api/status` behavior is unchanged. The service worker continues to exclude `/api/` responses.
|
|
55
|
+
|
|
56
|
+
## 6. Tests and validation
|
|
57
|
+
|
|
58
|
+
Created:
|
|
59
|
+
|
|
60
|
+
- `tests/unit/visualChangeAuthoring.test.ts`
|
|
61
|
+
- `tests/unit/viewerVisualChangeAuthoring.test.ts`
|
|
62
|
+
- `tests/browser/visualChangeWorkspace.test.ts`
|
|
63
|
+
|
|
64
|
+
These cover closed parsers, frozen failure mapping, supported/unknown/wrong-family GET handling, standalone GET/read-only behavior, project-only POSTs, Host/Origin/token/content-type/compression/body bounds, no-store, path leakage, the third navigation mode, aria-pressed and keyboard operation, common actual-mode identities, honest unavailable links, read-only versus project-aware actions, prohibited later-batch actions, and browser storage/token visibility.
|
|
65
|
+
|
|
66
|
+
Validation:
|
|
67
|
+
|
|
68
|
+
- Focused unit/application tests: PASS.
|
|
69
|
+
- `npm run typecheck`: PASS.
|
|
70
|
+
- `npm run lint`: PASS.
|
|
71
|
+
- `npm test`: PASS.
|
|
72
|
+
- `npm run test:browser`: PASS.
|
|
73
|
+
- `npm run test:security`: PASS.
|
|
74
|
+
- `npm run test:pwa-hard-gate`: PASS.
|
|
75
|
+
- `npm run build`: PASS.
|
|
76
|
+
- `npm run check:docs`: PASS.
|
|
77
|
+
- `git diff --check`: PASS.
|
|
78
|
+
|
|
79
|
+
The initial browser command failed before meaningful assertions because the isolated project-local Playwright directory had no Chromium. Playwright Chromium 151.0.7922.34 was installed under `.my-dev-kit-workflow/playwright-browsers`, after which the complete browser gate passed.
|
|
80
|
+
|
|
81
|
+
Existing annotation save, contract promotion, reference materialization, authoring security, standalone read-only mode, Evidence, Bounded context, Batch 1, and Batch 2 suites remain passing.
|
|
82
|
+
|
|
83
|
+
## 7. Full-file read accounting
|
|
84
|
+
|
|
85
|
+
Full source/test file reads: none. Bounded my-dev-kit retrieval provided the necessary route, security, startup, projection, hook, component, and test precedent. Where symbol end lines were unavailable, explicit bounded ranges and continuation markers supplied the missing local context.
|
|
86
|
+
|
|
87
|
+
## 8. Exclusions and Batch 4 handoff
|
|
88
|
+
|
|
89
|
+
No actual/reference entry composition, annotation-to-workflow creation UI, reference selection, binding authoring, handoff, orchestrator integration, retry loop, review/correction/acceptance, baseline/reference governance, version bump, release, PR, or publication was implemented.
|
|
90
|
+
|
|
91
|
+
Batch 4 can add the actual-frontend entry workflow inside the existing Visual changes shell and call the already-secured create/activate boundaries. It must not replace the Batch 2 application service or Batch 3 security/reselection mechanisms.
|
|
92
|
+
|
|
93
|
+
Generated tool, index, browser, cache, and temporary state remains beneath `.my-dev-kit-workflow/` and `.my-dev-kit-context/` and is not staged.
|