@dailephd/my-frontend-observer 0.9.0 → 0.10.0
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 +25 -0
- package/README.md +17 -7
- package/dist/application/visualChangeAgentHandoffService.d.ts +28 -0
- package/dist/application/visualChangeAgentHandoffService.js +111 -0
- package/dist/application/visualChangeAgentHandoffService.js.map +1 -0
- package/dist/application/visualChangeProjectWorkflowService.d.ts +95 -0
- package/dist/application/visualChangeProjectWorkflowService.js +376 -0
- package/dist/application/visualChangeProjectWorkflowService.js.map +1 -0
- package/dist/application/visualChangeReviewService.d.ts +50 -0
- package/dist/application/visualChangeReviewService.js +69 -0
- package/dist/application/visualChangeReviewService.js.map +1 -0
- package/dist/application/visualChangeWorkflowPersistenceService.d.ts +26 -0
- package/dist/application/visualChangeWorkflowPersistenceService.js +15 -0
- package/dist/application/visualChangeWorkflowPersistenceService.js.map +1 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.d.ts +9 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.js +47 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.js.map +1 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.d.ts +20 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.js +41 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.js.map +1 -0
- package/dist/cli.js +510 -508
- package/dist/cli.js.map +1 -1
- package/dist/domain/visualChangeAgentHandoff.d.ts +82 -0
- package/dist/domain/visualChangeAgentHandoff.js +80 -0
- package/dist/domain/visualChangeAgentHandoff.js.map +1 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.d.ts +2 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.js +11 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.js.map +1 -0
- package/dist/domain/visualChangeCycle.d.ts +8 -0
- package/dist/domain/visualChangeCycle.js +7 -0
- package/dist/domain/visualChangeCycle.js.map +1 -0
- package/dist/domain/visualChangeWorkflow.d.ts +125 -0
- package/dist/domain/visualChangeWorkflow.js +109 -0
- package/dist/domain/visualChangeWorkflow.js.map +1 -0
- package/dist/domain/visualChangeWorkflowIdentity.d.ts +5 -0
- package/dist/domain/visualChangeWorkflowIdentity.js +24 -0
- package/dist/domain/visualChangeWorkflowIdentity.js.map +1 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/projectWorkflow/projectPaths.d.ts +3 -0
- package/dist/projectWorkflow/projectPaths.js +7 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -1
- package/dist/viewer/assets/index-DglJ6f28.css +1 -0
- package/dist/viewer/assets/index-DsODREY5.js +9 -0
- package/dist/viewer/index.html +2 -2
- package/dist/viewer/sw.js +1 -1
- package/dist/viewerServer/evidence/classify.d.ts +3 -1
- package/dist/viewerServer/evidence/classify.js +10 -0
- package/dist/viewerServer/evidence/classify.js.map +1 -1
- package/dist/viewerServer/evidence/handles.js +1 -0
- package/dist/viewerServer/evidence/handles.js.map +1 -1
- package/dist/viewerServer/evidence/projection.d.ts +5 -0
- package/dist/viewerServer/evidence/projection.js +19 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -1
- package/dist/viewerServer/evidence/visualChangeWorkflowView.d.ts +31 -0
- package/dist/viewerServer/evidence/visualChangeWorkflowView.js +36 -0
- package/dist/viewerServer/evidence/visualChangeWorkflowView.js.map +1 -0
- package/dist/viewerServer/httpServer.js +323 -1
- package/dist/viewerServer/httpServer.js.map +1 -1
- package/dist/viewerServer/referenceApproval.d.ts +22 -0
- package/dist/viewerServer/referenceApproval.js +42 -0
- package/dist/viewerServer/referenceApproval.js.map +1 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.d.ts +28 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.js +134 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.d.ts +33 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.js +81 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/visualChangeAuthoring.d.ts +46 -0
- package/dist/viewerServer/visualChangeAuthoring.js +63 -0
- package/dist/viewerServer/visualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/visualChangeHandoff.d.ts +23 -0
- package/dist/viewerServer/visualChangeHandoff.js +31 -0
- package/dist/viewerServer/visualChangeHandoff.js.map +1 -0
- package/dist/viewerServer/visualChangeReview.d.ts +30 -0
- package/dist/viewerServer/visualChangeReview.js +46 -0
- package/dist/viewerServer/visualChangeReview.js.map +1 -0
- package/docs/ARCHITECTURE.md +17 -5
- package/docs/CI_CD.md +33 -1
- package/docs/COMMANDS.md +19 -5
- package/docs/CONTRACTS.md +38 -4
- package/docs/CURRENT_STATE.md +92 -11
- package/docs/DEVELOPMENT.md +32 -2
- package/docs/PROJECT_MILESTONES.md +28 -0
- package/docs/PROJECT_OVERVIEW.md +36 -14
- package/docs/QUICKSTART.md +7 -3
- package/docs/RELEASE.md +15 -11
- package/docs/ROADMAP.md +55 -2
- package/docs/SECURITY.md +25 -3
- package/docs/WORKFLOWS.md +29 -3
- package/docs/plans/v0.10-implementation-plan.md +1509 -0
- package/docs/plans/v0.9.1-implementation-plan.md +468 -0
- package/docs/reports/v0.10-batch1-visual-change-workflow-foundation.md +102 -0
- package/docs/reports/v0.10-batch2-project-composition-check-recording.md +103 -0
- package/docs/reports/v0.10-batch3-viewer-visual-change-workspace.md +93 -0
- package/docs/reports/v0.10-batch4-actual-frontend-entry.md +59 -0
- package/docs/reports/v0.10-batch5-reference-driven-entry.md +238 -0
- package/docs/reports/v0.10-batch6-coding-agent-handoff.md +85 -0
- package/docs/reports/v0.10-batch7-correction-review-acceptance.md +145 -0
- package/docs/reports/v0.10-batch8-integrated-acceptance.md +109 -0
- package/docs/reports/v0.10-implementation-completeness-documentation-reconciliation.md +344 -0
- package/docs/reports/v0.10-pre-release-readiness.md +120 -0
- package/docs/reports/v0.10-release-preparation.md +70 -0
- package/docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md +359 -0
- package/docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md +262 -0
- package/docs/reports/v0.9.1-pre-release-readiness.md +206 -0
- package/package.json +3 -2
- package/dist/viewer/assets/index-BN41MI7m.css +0 -1
- package/dist/viewer/assets/index-CkKXnlrI.js +0 -9
|
@@ -0,0 +1,1509 @@
|
|
|
1
|
+
# v0.10 Implementation Plan — Full Visual Human–LLM Frontend Change Workflow
|
|
2
|
+
|
|
3
|
+
## 1. Status and authority
|
|
4
|
+
|
|
5
|
+
This document is the frozen concrete implementation plan for
|
|
6
|
+
`my-frontend-observer` v0.10.
|
|
7
|
+
|
|
8
|
+
It was created during v0.10 version-start planning after reviewing:
|
|
9
|
+
|
|
10
|
+
- `docs/PROJECT_DESCRIPTION.md`;
|
|
11
|
+
- `docs/PROJECT_MILESTONES.md`;
|
|
12
|
+
- `docs/ROADMAP.md`;
|
|
13
|
+
- `docs/CURRENT_STATE.md`;
|
|
14
|
+
- `docs/ARCHITECTURE.md`;
|
|
15
|
+
- `docs/CONTRACTS.md`;
|
|
16
|
+
- `docs/WORKFLOWS.md`;
|
|
17
|
+
- the frozen v0.8, v0.8.1, v0.9, and v0.9.1 plans;
|
|
18
|
+
- the read-only Observer v0.10 architecture/seam reconnaissance at tagged
|
|
19
|
+
`v0.9.1`;
|
|
20
|
+
- the read-only `my-dev-kit-orchestrator@1.3.3` seam reconnaissance used to
|
|
21
|
+
settle the cross-project ownership boundary.
|
|
22
|
+
|
|
23
|
+
The Observer reconnaissance used the published
|
|
24
|
+
`@dailephd/my-dev-kit@1.12.3` and established the current v0.9.1 owners for
|
|
25
|
+
project workflow, `checkProject`, canonical Chromium capture, correction
|
|
26
|
+
preparation/review, annotation persistence, contract promotion, reference
|
|
27
|
+
materialization, and bounded-context projection.
|
|
28
|
+
|
|
29
|
+
The orchestrator reconnaissance independently resolved the same published
|
|
30
|
+
`@dailephd/my-dev-kit@1.12.3` and established that
|
|
31
|
+
`my-dev-kit-orchestrator` owns run/stage lifecycle, prompts, readiness,
|
|
32
|
+
correction routing, artifact staleness, judge integrity, and final-report
|
|
33
|
+
eligibility, but does not execute coding agents, edit source, run Observer,
|
|
34
|
+
perform runtime/reference evaluation, or own baseline/reference approval.
|
|
35
|
+
|
|
36
|
+
This document governs v0.10 implementation scope, architecture, public and
|
|
37
|
+
internal contracts, batch order, and validation expectations unless the user
|
|
38
|
+
explicitly revises it.
|
|
39
|
+
|
|
40
|
+
This document is planning authority only. It does not prove that any v0.10
|
|
41
|
+
batch has been implemented. Actual implementation and release state remain
|
|
42
|
+
owned by repository evidence and `docs/CURRENT_STATE.md`.
|
|
43
|
+
|
|
44
|
+
The package remains `0.9.1` until a separate release-preparation workflow
|
|
45
|
+
explicitly changes it after implementation, documentation reconciliation, and
|
|
46
|
+
pre-release readiness.
|
|
47
|
+
|
|
48
|
+
## 2. Version objective
|
|
49
|
+
|
|
50
|
+
Complete the visual communication branch by combining the already released:
|
|
51
|
+
|
|
52
|
+
- v0.7 correction/reference loop;
|
|
53
|
+
- v0.8 viewer;
|
|
54
|
+
- v0.8.1 project workflow and canonical `check` surface;
|
|
55
|
+
- v0.9 dual-context structured annotation;
|
|
56
|
+
|
|
57
|
+
into one complete human–LLM frontend-change workflow.
|
|
58
|
+
|
|
59
|
+
Two human entry modes must coexist.
|
|
60
|
+
|
|
61
|
+
Actual-frontend-driven:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
human views a captured runtime frontend
|
|
65
|
+
→ annotates requested visual change
|
|
66
|
+
→ confirms structured runtime intent
|
|
67
|
+
→ executable change scope is frozen
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Reference-driven:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
human selects an approved external visual reference
|
|
74
|
+
→ views reference beside current runtime frontend
|
|
75
|
+
→ annotates reference intent
|
|
76
|
+
→ confirms reference requirements
|
|
77
|
+
→ explicitly binds reference regions to runtime targets
|
|
78
|
+
→ executable reference scope is frozen
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Both converge on:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
frozen visual-change scope
|
|
85
|
+
→ bounded runtime/reference evidence
|
|
86
|
+
→ bounded static evidence when supplied by the external coordination layer
|
|
87
|
+
→ coding-agent handoff
|
|
88
|
+
→ external coding agent changes target source
|
|
89
|
+
→ Observer captures the new runtime state
|
|
90
|
+
→ canonical check runs
|
|
91
|
+
→ comparison + contract evaluation + reference fidelity run as applicable
|
|
92
|
+
→ immutable correction-attempt history is recorded
|
|
93
|
+
→ human accepts, requests another correction, or abandons
|
|
94
|
+
→ optional baseline/reference governance actions remain explicit
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
v0.10 does not turn Observer into a source editor, coding-agent executor,
|
|
98
|
+
workflow orchestrator, or autonomous image-to-code system.
|
|
99
|
+
|
|
100
|
+
## 3. Frozen cross-project responsibility split
|
|
101
|
+
|
|
102
|
+
### 3.1 Observer owns visual/product semantics
|
|
103
|
+
|
|
104
|
+
Observer remains the canonical owner of:
|
|
105
|
+
|
|
106
|
+
- runtime observations;
|
|
107
|
+
- screenshots and rendered evidence;
|
|
108
|
+
- external-reference evidence;
|
|
109
|
+
- reference applicability and runtime binding;
|
|
110
|
+
- annotation and confirmation;
|
|
111
|
+
- frontend contracts and contract evaluation;
|
|
112
|
+
- reference fidelity;
|
|
113
|
+
- project-level `check` result semantics;
|
|
114
|
+
- visual-change request/attempt identity;
|
|
115
|
+
- immutable visual-change history;
|
|
116
|
+
- final human disposition for the visual change;
|
|
117
|
+
- baseline/reference approval and supersession operations.
|
|
118
|
+
|
|
119
|
+
### 3.2 my-dev-kit remains the static-evidence owner
|
|
120
|
+
|
|
121
|
+
Observer must not duplicate:
|
|
122
|
+
|
|
123
|
+
- repository indexing;
|
|
124
|
+
- symbol graphs;
|
|
125
|
+
- dependency graphs;
|
|
126
|
+
- architecture analysis;
|
|
127
|
+
- static source ownership inference;
|
|
128
|
+
- bounded source retrieval.
|
|
129
|
+
|
|
130
|
+
v0.10 may consume bounded static evidence through the existing context/correlation
|
|
131
|
+
boundary, but Observer must not invoke or embed a second my-dev-kit runtime.
|
|
132
|
+
|
|
133
|
+
### 3.3 my-dev-kit-orchestrator remains the workflow lifecycle owner
|
|
134
|
+
|
|
135
|
+
Orchestrator may coordinate:
|
|
136
|
+
|
|
137
|
+
- run and stage progression;
|
|
138
|
+
- generated prompts;
|
|
139
|
+
- context readiness;
|
|
140
|
+
- implementation/test/verification artifact lifecycle;
|
|
141
|
+
- correction routing;
|
|
142
|
+
- downstream staleness;
|
|
143
|
+
- judge integrity;
|
|
144
|
+
- final-report eligibility.
|
|
145
|
+
|
|
146
|
+
Observer must not reimplement those lifecycle concepts.
|
|
147
|
+
|
|
148
|
+
Orchestrator workflow PASS remains distinct from Observer product approval.
|
|
149
|
+
|
|
150
|
+
### 3.4 External coding agent remains the source editor
|
|
151
|
+
|
|
152
|
+
Neither Observer nor the v0.10 workflow artifact may edit target source.
|
|
153
|
+
|
|
154
|
+
The source-edit boundary remains:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
Observer visual-change evidence / handoff
|
|
158
|
+
→ external coding agent or orchestrator-managed prompt workflow
|
|
159
|
+
→ target source changes
|
|
160
|
+
→ Observer rerender/check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 3.5 Lab remains optional
|
|
164
|
+
|
|
165
|
+
`my-dev-kit-lab` is not a production dependency and is not required for every
|
|
166
|
+
normal visual change.
|
|
167
|
+
|
|
168
|
+
It may be used later for ecosystem compatibility, tutorial, regression, or
|
|
169
|
+
release-readiness validation.
|
|
170
|
+
|
|
171
|
+
## 4. Frozen version-start architecture decisions
|
|
172
|
+
|
|
173
|
+
### 4.1 One new persisted Observer evidence family
|
|
174
|
+
|
|
175
|
+
v0.10 introduces exactly one new persisted Observer-owned evidence family for
|
|
176
|
+
workflow/history traceability:
|
|
177
|
+
|
|
178
|
+
```text
|
|
179
|
+
VisualChangeWorkflowArtifact
|
|
180
|
+
artifactKind: my-frontend-observer/visual-change-workflow
|
|
181
|
+
schemaVersion: 1.0.0
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Its responsibility is narrow:
|
|
185
|
+
|
|
186
|
+
- freeze the exact visual-change request scope;
|
|
187
|
+
- retain immutable attempt history;
|
|
188
|
+
- connect existing canonical evidence by identity/reference;
|
|
189
|
+
- retain final human disposition;
|
|
190
|
+
- optionally retain an external coordinator reference.
|
|
191
|
+
|
|
192
|
+
It must not become a second:
|
|
193
|
+
|
|
194
|
+
- observation artifact;
|
|
195
|
+
- comparison artifact;
|
|
196
|
+
- evaluation artifact;
|
|
197
|
+
- frontend contract;
|
|
198
|
+
- external-reference artifact;
|
|
199
|
+
- visual annotation artifact;
|
|
200
|
+
- bounded-agent-context artifact;
|
|
201
|
+
- orchestrator run log.
|
|
202
|
+
|
|
203
|
+
Canonical evidence is referenced, not copied wholesale.
|
|
204
|
+
|
|
205
|
+
### 4.2 Existing canonical schemas remain unchanged
|
|
206
|
+
|
|
207
|
+
v0.10 does not plan a version bump for:
|
|
208
|
+
|
|
209
|
+
- observation schema `1.2.0`;
|
|
210
|
+
- comparison schema `1.0.0`;
|
|
211
|
+
- frontend contract schema `1.0.0`;
|
|
212
|
+
- evaluation artifact schema `1.0.0`;
|
|
213
|
+
- bounded-agent-context schema `1.0.0`;
|
|
214
|
+
- external-reference schema `1.0.0`;
|
|
215
|
+
- visual annotation schema `1.0.0`;
|
|
216
|
+
- Viewer protocol `1.3.0` unless an actual protocol-incompatible change is
|
|
217
|
+
discovered during implementation.
|
|
218
|
+
|
|
219
|
+
Adding the new visual-change artifact family does not require modifying those
|
|
220
|
+
existing families.
|
|
221
|
+
|
|
222
|
+
If implementation discovers a concrete incompatibility, stop the affected
|
|
223
|
+
batch and revise this plan before changing an existing schema/protocol version.
|
|
224
|
+
|
|
225
|
+
### 4.3 Project-aware Viewer is the human visual workflow entry point
|
|
226
|
+
|
|
227
|
+
Normal v0.10 human interaction continues through:
|
|
228
|
+
|
|
229
|
+
```text
|
|
230
|
+
my-frontend-observer view
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
The project-aware Viewer gains a Visual Change workspace.
|
|
234
|
+
|
|
235
|
+
Standalone:
|
|
236
|
+
|
|
237
|
+
```text
|
|
238
|
+
my-frontend-observer view --root <evidence-root>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
remains read-only.
|
|
242
|
+
|
|
243
|
+
Do not add a second graphical application.
|
|
244
|
+
|
|
245
|
+
### 4.4 Both entry modes use one workflow/history model
|
|
246
|
+
|
|
247
|
+
`VisualChangeWorkflowArtifact.entryMode` is exactly:
|
|
248
|
+
|
|
249
|
+
```text
|
|
250
|
+
actual-frontend
|
|
251
|
+
reference
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
The two modes differ only in how the frozen request scope is constructed.
|
|
255
|
+
|
|
256
|
+
After scope confirmation, both use the same:
|
|
257
|
+
|
|
258
|
+
- handoff boundary;
|
|
259
|
+
- external edit boundary;
|
|
260
|
+
- canonical `check` path;
|
|
261
|
+
- immutable attempt record;
|
|
262
|
+
- human review/disposition model.
|
|
263
|
+
|
|
264
|
+
### 4.5 Canonical post-edit evaluation remains `checkProject`
|
|
265
|
+
|
|
266
|
+
The normal post-edit acceptance path remains the existing canonical project
|
|
267
|
+
check implementation.
|
|
268
|
+
|
|
269
|
+
The v0.10 Viewer or application service must call the same
|
|
270
|
+
`checkProject` owner used by:
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
my-frontend-observer check <baseline> --json
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Do not recreate:
|
|
277
|
+
|
|
278
|
+
- before/after comparison;
|
|
279
|
+
- frontend-contract verdicts;
|
|
280
|
+
- reference fidelity;
|
|
281
|
+
- unexpected-change handling;
|
|
282
|
+
- overall PASS / FAIL / REVIEW_REQUIRED / BLOCKED precedence.
|
|
283
|
+
|
|
284
|
+
The machine-facing CLI command remains available and its existing behavior
|
|
285
|
+
without a visual workflow remains unchanged.
|
|
286
|
+
|
|
287
|
+
### 4.6 Visual workflow activation is explicit
|
|
288
|
+
|
|
289
|
+
Creating a visual-change workflow artifact does not silently mutate project
|
|
290
|
+
acceptance state.
|
|
291
|
+
|
|
292
|
+
Before the canonical check loop can evaluate workflow-specific executable
|
|
293
|
+
scope, the user must explicitly activate the workflow's relevant project
|
|
294
|
+
acceptance inputs through one bounded project-aware operation.
|
|
295
|
+
|
|
296
|
+
Activation may set only the already-supported project acceptance inputs needed
|
|
297
|
+
for the workflow:
|
|
298
|
+
|
|
299
|
+
- the promoted per-change contract for actual-frontend mode;
|
|
300
|
+
- the selected approved reference and explicit binding input for reference
|
|
301
|
+
mode.
|
|
302
|
+
|
|
303
|
+
Activation is not approval.
|
|
304
|
+
|
|
305
|
+
The workflow revision must record enough project-relative before/after
|
|
306
|
+
acceptance state to make the change auditable and to support explicit restore.
|
|
307
|
+
|
|
308
|
+
No activation operation may modify baseline/reference artifacts themselves.
|
|
309
|
+
|
|
310
|
+
### 4.7 Reference selection does not require a second project reference registry
|
|
311
|
+
|
|
312
|
+
Approved references remain discoverable through the existing evidence index.
|
|
313
|
+
|
|
314
|
+
The reference-driven workflow freezes one exact approved reference identity and
|
|
315
|
+
one explicit binding set in the workflow artifact.
|
|
316
|
+
|
|
317
|
+
v0.10 does not introduce a second multi-reference approval registry merely for
|
|
318
|
+
selection.
|
|
319
|
+
|
|
320
|
+
Selecting a reference for one workflow is distinct from:
|
|
321
|
+
|
|
322
|
+
- importing it;
|
|
323
|
+
- approving it;
|
|
324
|
+
- superseding it.
|
|
325
|
+
|
|
326
|
+
### 4.8 Bindings remain explicit
|
|
327
|
+
|
|
328
|
+
Reference-region ↔ runtime-target bindings are never inferred from:
|
|
329
|
+
|
|
330
|
+
- matching names;
|
|
331
|
+
- geometry;
|
|
332
|
+
- visual proximity;
|
|
333
|
+
- annotation overlap.
|
|
334
|
+
|
|
335
|
+
The visual-change workflow may persist the exact bounded binding declarations
|
|
336
|
+
needed to reproduce its request because there is currently no separate
|
|
337
|
+
canonical binding artifact family.
|
|
338
|
+
|
|
339
|
+
### 4.9 Correction attempts are Observer-domain evidence, not orchestrator stage attempts
|
|
340
|
+
|
|
341
|
+
Orchestrator stage artifacts are mutable, path-based, and may be regenerated
|
|
342
|
+
during correction.
|
|
343
|
+
|
|
344
|
+
Therefore they are not the authority for immutable visual correction history.
|
|
345
|
+
|
|
346
|
+
Observer persists an immutable visual-change attempt record for every checked
|
|
347
|
+
candidate.
|
|
348
|
+
|
|
349
|
+
An orchestrator run may be referenced by ID, but its mutable stage files do not
|
|
350
|
+
replace Observer attempt identity/history.
|
|
351
|
+
|
|
352
|
+
### 4.10 Orchestrator integration is optional and reference-based
|
|
353
|
+
|
|
354
|
+
v0.10 must not add `my-dev-kit-orchestrator` as a runtime dependency.
|
|
355
|
+
|
|
356
|
+
A visual workflow may carry an optional external coordination reference:
|
|
357
|
+
|
|
358
|
+
```text
|
|
359
|
+
provider: my-dev-kit-orchestrator
|
|
360
|
+
runId: <opaque run id>
|
|
361
|
+
packageVersion: <optional version>
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
Observer does not:
|
|
365
|
+
|
|
366
|
+
- read orchestrator run folders as canonical evidence;
|
|
367
|
+
- mutate orchestrator lifecycle state;
|
|
368
|
+
- decide orchestrator judge verdicts;
|
|
369
|
+
- treat final-report PASS as product approval.
|
|
370
|
+
|
|
371
|
+
The first v0.10 integration should use the existing file/CLI/report boundary.
|
|
372
|
+
Do not create a new orchestrator public lifecycle API unless a later concrete
|
|
373
|
+
implementation blocker proves it necessary.
|
|
374
|
+
|
|
375
|
+
### 4.11 Final human acceptance is an Observer action
|
|
376
|
+
|
|
377
|
+
Workflow completion and product acceptance remain distinct.
|
|
378
|
+
|
|
379
|
+
A human may accept a visual-change attempt only when the latest canonical
|
|
380
|
+
Observer check result is `PASS`.
|
|
381
|
+
|
|
382
|
+
`FAIL`, `BLOCKED`, and `REVIEW_REQUIRED` cannot be silently accepted as a
|
|
383
|
+
successful v0.10 final state.
|
|
384
|
+
|
|
385
|
+
Final human acceptance records a disposition on the workflow history.
|
|
386
|
+
|
|
387
|
+
It does not automatically:
|
|
388
|
+
|
|
389
|
+
- approve a baseline;
|
|
390
|
+
- approve a reference;
|
|
391
|
+
- supersede a reference;
|
|
392
|
+
- activate a contract.
|
|
393
|
+
|
|
394
|
+
Those remain separate explicit governance operations.
|
|
395
|
+
|
|
396
|
+
### 4.12 Scope changes create a new request identity
|
|
397
|
+
|
|
398
|
+
Changing any frozen executable request input after attempts have begun creates
|
|
399
|
+
a new visual-change request identity.
|
|
400
|
+
|
|
401
|
+
Examples include:
|
|
402
|
+
|
|
403
|
+
- changing the confirmed annotation;
|
|
404
|
+
- changing the promoted contract;
|
|
405
|
+
- selecting a different approved reference;
|
|
406
|
+
- changing reference bindings;
|
|
407
|
+
- changing the canonical baseline observation used to define the request.
|
|
408
|
+
|
|
409
|
+
Do not append attempts produced under materially different request scope to the
|
|
410
|
+
same request identity.
|
|
411
|
+
|
|
412
|
+
A new workflow revision may point to an earlier workflow artifact for history,
|
|
413
|
+
but its new request identity and attempt sequence remain explicit.
|
|
414
|
+
|
|
415
|
+
## 5. VisualChangeWorkflowArtifact contract
|
|
416
|
+
|
|
417
|
+
Exact helper names may follow repository conventions. The semantic ownership and
|
|
418
|
+
rules below are frozen.
|
|
419
|
+
|
|
420
|
+
### 5.1 Constants
|
|
421
|
+
|
|
422
|
+
Conceptually:
|
|
423
|
+
|
|
424
|
+
```ts
|
|
425
|
+
export const VISUAL_CHANGE_WORKFLOW_ARTIFACT_KIND =
|
|
426
|
+
'my-frontend-observer/visual-change-workflow' as const;
|
|
427
|
+
|
|
428
|
+
export const VISUAL_CHANGE_WORKFLOW_SCHEMA_VERSION = '1.0.0' as const;
|
|
429
|
+
|
|
430
|
+
export const MAX_VISUAL_CHANGE_ATTEMPTS = 20;
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
The attempt bound prevents indefinite unbounded history growth inside one
|
|
434
|
+
artifact lineage.
|
|
435
|
+
|
|
436
|
+
### 5.2 Request scope
|
|
437
|
+
|
|
438
|
+
Conceptually:
|
|
439
|
+
|
|
440
|
+
```ts
|
|
441
|
+
type VisualChangeEntryMode =
|
|
442
|
+
| 'actual-frontend'
|
|
443
|
+
| 'reference';
|
|
444
|
+
|
|
445
|
+
interface VisualChangeBaselineRef {
|
|
446
|
+
observationId: string;
|
|
447
|
+
requestId: string;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
interface VisualChangeActualScope {
|
|
451
|
+
entryMode: 'actual-frontend';
|
|
452
|
+
annotationId: string;
|
|
453
|
+
changeContractId: string;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
interface VisualChangeReferenceScope {
|
|
457
|
+
entryMode: 'reference';
|
|
458
|
+
annotationId: string;
|
|
459
|
+
approvedReferenceId: string;
|
|
460
|
+
approvedReferenceRequestId: string;
|
|
461
|
+
bindings: ExternalReferenceRuntimeBindingDeclaration[];
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
type VisualChangeScope =
|
|
465
|
+
| VisualChangeActualScope
|
|
466
|
+
| VisualChangeReferenceScope;
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
The workflow also freezes:
|
|
470
|
+
|
|
471
|
+
- canonical baseline observation identity;
|
|
472
|
+
- persistent baseline contract identity when configured;
|
|
473
|
+
- exact project change-contract identity when applicable;
|
|
474
|
+
- exact selected approved-reference identity when applicable;
|
|
475
|
+
- exact binding declarations when applicable.
|
|
476
|
+
|
|
477
|
+
Mutable aliases and absolute paths are not request identity.
|
|
478
|
+
|
|
479
|
+
### 5.3 Request and revision identity
|
|
480
|
+
|
|
481
|
+
`visualChangeRequestId` is deterministic over canonical semantic request scope.
|
|
482
|
+
|
|
483
|
+
It must include, as applicable:
|
|
484
|
+
|
|
485
|
+
- entry mode;
|
|
486
|
+
- canonical baseline observation identity;
|
|
487
|
+
- confirmed annotation identity;
|
|
488
|
+
- promoted per-change contract identity and clause content identity;
|
|
489
|
+
- selected approved reference request/instance identity;
|
|
490
|
+
- explicit binding declarations;
|
|
491
|
+
- configured persistent baseline contract identity relevant to evaluation.
|
|
492
|
+
|
|
493
|
+
Repeated canonical promotion of semantically equivalent runtime intent may
|
|
494
|
+
produce the same per-change `contractRequestId`, but every promotion produces
|
|
495
|
+
a fresh `contractId`. Because the visual-change request freezes the exact
|
|
496
|
+
promoted per-change contract instance, `contractId` remains part of
|
|
497
|
+
`visualChangeRequestId`. A new promotion therefore produces a new
|
|
498
|
+
`visualChangeRequestId` even when its `contractRequestId` is semantically
|
|
499
|
+
equivalent to an earlier promotion.
|
|
500
|
+
|
|
501
|
+
`contractRequestId` expresses semantic contract-request equivalence.
|
|
502
|
+
`contractId` expresses exact immutable contract-instance identity.
|
|
503
|
+
`visualChangeRequestId` expresses the frozen visual-change request bound to
|
|
504
|
+
that exact contract instance. v0.10 must not deduplicate, reuse, or silently
|
|
505
|
+
substitute an earlier promoted contract merely to preserve a
|
|
506
|
+
`visualChangeRequestId`.
|
|
507
|
+
|
|
508
|
+
It excludes:
|
|
509
|
+
|
|
510
|
+
- timestamps;
|
|
511
|
+
- output directories;
|
|
512
|
+
- Viewer handles;
|
|
513
|
+
- browser ports;
|
|
514
|
+
- absolute paths;
|
|
515
|
+
- orchestrator run-folder paths.
|
|
516
|
+
|
|
517
|
+
`visualChangeWorkflowId` is a fresh persisted instance identity.
|
|
518
|
+
|
|
519
|
+
A new artifact revision uses:
|
|
520
|
+
|
|
521
|
+
```text
|
|
522
|
+
supersedesVisualChangeWorkflowId
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
and never rewrites its parent.
|
|
526
|
+
|
|
527
|
+
### 5.4 Attempt identity
|
|
528
|
+
|
|
529
|
+
v0.10 adds one visual-workflow attempt identity valid for both entry modes:
|
|
530
|
+
|
|
531
|
+
```text
|
|
532
|
+
visualChangeAttemptId
|
|
533
|
+
= deterministic hash(
|
|
534
|
+
visualChangeRequestId,
|
|
535
|
+
candidateObservationId
|
|
536
|
+
)
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
The same request plus the same candidate observation must produce the same
|
|
540
|
+
attempt identity.
|
|
541
|
+
|
|
542
|
+
A different candidate observation must produce a different attempt identity.
|
|
543
|
+
|
|
544
|
+
Reference-driven attempts may additionally retain the existing v0.7
|
|
545
|
+
`referenceCorrectionAttemptId` for cross-version traceability.
|
|
546
|
+
|
|
547
|
+
Do not replace the v0.7 identity.
|
|
548
|
+
|
|
549
|
+
### 5.5 Attempt record
|
|
550
|
+
|
|
551
|
+
Conceptually:
|
|
552
|
+
|
|
553
|
+
```ts
|
|
554
|
+
interface VisualChangeAttemptRecord {
|
|
555
|
+
visualChangeAttemptId: string;
|
|
556
|
+
priorVisualChangeAttemptId?: string;
|
|
557
|
+
|
|
558
|
+
candidateObservation: {
|
|
559
|
+
observationId: string;
|
|
560
|
+
requestId: string;
|
|
561
|
+
artifactRef: string;
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
check: VisualChangeCheckSnapshot;
|
|
565
|
+
|
|
566
|
+
referenceCorrectionAttemptId?: string;
|
|
567
|
+
|
|
568
|
+
coordination?: {
|
|
569
|
+
provider: 'my-dev-kit-orchestrator';
|
|
570
|
+
runId: string;
|
|
571
|
+
packageVersion?: string;
|
|
572
|
+
};
|
|
573
|
+
|
|
574
|
+
review: {
|
|
575
|
+
state: 'pending' | 'correction-requested' | 'accepted' | 'abandoned';
|
|
576
|
+
decidedAt?: string;
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
recordedAt: string;
|
|
580
|
+
}
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
`artifactRef` is project-relative and portable.
|
|
584
|
+
|
|
585
|
+
### 5.6 Check snapshot
|
|
586
|
+
|
|
587
|
+
The attempt stores a bounded normalized snapshot of the canonical
|
|
588
|
+
`CheckWorkflowResult`.
|
|
589
|
+
|
|
590
|
+
It must preserve enough identity/status evidence to establish exactly what was
|
|
591
|
+
evaluated without copying full comparison/evaluation/reference artifacts.
|
|
592
|
+
|
|
593
|
+
At minimum preserve:
|
|
594
|
+
|
|
595
|
+
- overall check status;
|
|
596
|
+
- baseline observation ID;
|
|
597
|
+
- candidate observation ID;
|
|
598
|
+
- comparison ID and project-relative artifact reference when produced;
|
|
599
|
+
- contract evaluation ID/reference when produced;
|
|
600
|
+
- active baseline/per-change contract identities;
|
|
601
|
+
- reference ID when applicable;
|
|
602
|
+
- reference-fidelity state;
|
|
603
|
+
- failed/unavailable contract clause identifiers or bounded counts according
|
|
604
|
+
to the existing check contract;
|
|
605
|
+
- failed/unavailable reference requirement identifiers or bounded counts
|
|
606
|
+
according to the existing check contract;
|
|
607
|
+
- unexpected-change summary already exposed by check;
|
|
608
|
+
- blocker codes/reasons.
|
|
609
|
+
|
|
610
|
+
Do not persist absolute operational paths from CLI JSON.
|
|
611
|
+
|
|
612
|
+
The snapshot is traceability evidence only. The referenced canonical artifacts
|
|
613
|
+
remain authoritative.
|
|
614
|
+
|
|
615
|
+
### 5.7 Activation record
|
|
616
|
+
|
|
617
|
+
A workflow may include an explicit project-acceptance activation record.
|
|
618
|
+
|
|
619
|
+
It records project-relative before/after values required to show:
|
|
620
|
+
|
|
621
|
+
- which per-change contract was activated;
|
|
622
|
+
- which approved reference/binding configuration was activated;
|
|
623
|
+
- when activation occurred;
|
|
624
|
+
- whether an explicit restore later occurred.
|
|
625
|
+
|
|
626
|
+
Activation does not imply approval.
|
|
627
|
+
|
|
628
|
+
### 5.8 Human disposition
|
|
629
|
+
|
|
630
|
+
A workflow is not accepted merely because a check passed.
|
|
631
|
+
|
|
632
|
+
The human review operation explicitly records:
|
|
633
|
+
|
|
634
|
+
```text
|
|
635
|
+
pending
|
|
636
|
+
correction-requested
|
|
637
|
+
accepted
|
|
638
|
+
abandoned
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
Rules:
|
|
642
|
+
|
|
643
|
+
- `accepted` requires the latest attempt check status to be `PASS`;
|
|
644
|
+
- `correction-requested` may follow a non-passing or passing attempt;
|
|
645
|
+
- `abandoned` ends the human workflow without approving baseline/reference;
|
|
646
|
+
- a new correction attempt after `correction-requested` must point to the
|
|
647
|
+
prior visual-change attempt ID;
|
|
648
|
+
- no attempt may be silently overwritten.
|
|
649
|
+
|
|
650
|
+
### 5.9 Governance references
|
|
651
|
+
|
|
652
|
+
After final acceptance, optional explicit governance actions may be recorded by
|
|
653
|
+
identity/reference:
|
|
654
|
+
|
|
655
|
+
- baseline approval artifact;
|
|
656
|
+
- approved/superseding external-reference artifact;
|
|
657
|
+
- restored/replaced project acceptance state.
|
|
658
|
+
|
|
659
|
+
The workflow artifact records these results only after the existing canonical
|
|
660
|
+
governance services succeed.
|
|
661
|
+
|
|
662
|
+
It never performs them implicitly.
|
|
663
|
+
|
|
664
|
+
## 6. Persistence architecture
|
|
665
|
+
|
|
666
|
+
Follow the established immutable-artifact pattern.
|
|
667
|
+
|
|
668
|
+
Expected ownership:
|
|
669
|
+
|
|
670
|
+
```text
|
|
671
|
+
src/domain/visualChangeWorkflow.ts
|
|
672
|
+
src/domain/visualChangeWorkflowIdentity.ts
|
|
673
|
+
src/artifacts/visualChangeWorkflowArtifactWriter.ts
|
|
674
|
+
src/artifacts/visualChangeWorkflowArtifactReader.ts
|
|
675
|
+
src/application/visualChangeWorkflowPersistenceService.ts
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
The writer must:
|
|
679
|
+
|
|
680
|
+
1. validate the complete workflow artifact;
|
|
681
|
+
2. derive the final directory from `visualChangeWorkflowId`;
|
|
682
|
+
3. refuse overwrite of an existing final directory;
|
|
683
|
+
4. write through a sibling temporary directory;
|
|
684
|
+
5. write `manifest.json`;
|
|
685
|
+
6. atomically rename the temporary directory;
|
|
686
|
+
7. remove temporary output on failure.
|
|
687
|
+
|
|
688
|
+
No screenshot, source image, observation manifest, contract manifest, comparison
|
|
689
|
+
artifact, evaluation artifact, or external-reference image is copied into the
|
|
690
|
+
workflow directory.
|
|
691
|
+
|
|
692
|
+
Reference-mode binding declarations may be written as bounded workflow-owned
|
|
693
|
+
input when needed by the existing project check/reference-evaluation path.
|
|
694
|
+
|
|
695
|
+
Managed layout:
|
|
696
|
+
|
|
697
|
+
```text
|
|
698
|
+
.frontend-observer/
|
|
699
|
+
evidence/
|
|
700
|
+
visual-changes/
|
|
701
|
+
<visualChangeWorkflowId>/
|
|
702
|
+
manifest.json
|
|
703
|
+
bindings.json # reference mode only, when required
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
The workflow reader must validate all references structurally and fail closed on
|
|
707
|
+
unsafe project-relative paths.
|
|
708
|
+
|
|
709
|
+
## 7. Project acceptance activation
|
|
710
|
+
|
|
711
|
+
### 7.1 No hidden activation
|
|
712
|
+
|
|
713
|
+
Creating or saving a workflow does not change project acceptance configuration.
|
|
714
|
+
|
|
715
|
+
### 7.2 Actual-frontend activation
|
|
716
|
+
|
|
717
|
+
Actual mode requires a canonical per-change contract produced through the v0.9
|
|
718
|
+
promotion path.
|
|
719
|
+
|
|
720
|
+
The user explicitly activates that contract through the existing project
|
|
721
|
+
change-contract activation owner.
|
|
722
|
+
|
|
723
|
+
If another per-change contract is currently active, the UI must disclose the
|
|
724
|
+
replacement before the user confirms it.
|
|
725
|
+
|
|
726
|
+
### 7.3 Reference activation
|
|
727
|
+
|
|
728
|
+
Reference mode requires:
|
|
729
|
+
|
|
730
|
+
- lifecycle `approved`;
|
|
731
|
+
- exact applicability/compatibility semantics;
|
|
732
|
+
- explicit binding declarations.
|
|
733
|
+
|
|
734
|
+
Add one narrow application service that activates the selected approved
|
|
735
|
+
reference and binding input in the already-existing project acceptance
|
|
736
|
+
configuration.
|
|
737
|
+
|
|
738
|
+
It must not approve the reference.
|
|
739
|
+
|
|
740
|
+
It must preserve the previous project-relative reference configuration in the
|
|
741
|
+
workflow activation record.
|
|
742
|
+
|
|
743
|
+
### 7.4 Restore
|
|
744
|
+
|
|
745
|
+
A workflow may offer an explicit restore action that reapplies the recorded
|
|
746
|
+
pre-activation project acceptance values.
|
|
747
|
+
|
|
748
|
+
Restore is not automatic on failure or abandonment.
|
|
749
|
+
|
|
750
|
+
## 8. Coding-agent handoff contract
|
|
751
|
+
|
|
752
|
+
v0.10 adds a pure bounded handoff projection, not a new persisted evidence
|
|
753
|
+
family.
|
|
754
|
+
|
|
755
|
+
Conceptually:
|
|
756
|
+
|
|
757
|
+
```ts
|
|
758
|
+
interface VisualChangeAgentHandoff {
|
|
759
|
+
visualChangeRequestId: string;
|
|
760
|
+
visualChangeWorkflowId: string;
|
|
761
|
+
entryMode: VisualChangeEntryMode;
|
|
762
|
+
|
|
763
|
+
confirmedScope: ...; // canonical references only
|
|
764
|
+
runtimeEvidence: ...; // bounded canonical references
|
|
765
|
+
referenceEvidence?: ...; // bounded canonical references
|
|
766
|
+
boundedAgentContext?: BoundedAgentContext;
|
|
767
|
+
|
|
768
|
+
expectedPostEditCheck: {
|
|
769
|
+
baseline: string;
|
|
770
|
+
command: 'check';
|
|
771
|
+
json: true;
|
|
772
|
+
};
|
|
773
|
+
|
|
774
|
+
externalCoordination?: {
|
|
775
|
+
provider: 'my-dev-kit-orchestrator';
|
|
776
|
+
runId: string;
|
|
777
|
+
};
|
|
778
|
+
}
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
Rules:
|
|
782
|
+
|
|
783
|
+
- reuse existing `BoundedAgentContext` unchanged when supplied/constructed
|
|
784
|
+
through the existing v0.6 owner;
|
|
785
|
+
- do not add visual-workflow fields to the bounded-agent-context schema solely
|
|
786
|
+
for convenience;
|
|
787
|
+
- reference mode may reuse `prepareReferenceCorrection` and its deterministic
|
|
788
|
+
review identity;
|
|
789
|
+
- actual mode projects the confirmed contract/runtime scope through the
|
|
790
|
+
existing bounded-context machinery;
|
|
791
|
+
- static/source evidence remains externally produced;
|
|
792
|
+
- handoff preparation never edits target source;
|
|
793
|
+
- handoff preparation never starts or drives an orchestrator run.
|
|
794
|
+
|
|
795
|
+
The handoff must make the required post-edit acceptance operation explicit:
|
|
796
|
+
|
|
797
|
+
```text
|
|
798
|
+
my-frontend-observer check <baseline> --json
|
|
799
|
+
```
|
|
800
|
+
|
|
801
|
+
## 9. Viewer read model
|
|
802
|
+
|
|
803
|
+
Extend evidence discovery/classification for the new artifact family.
|
|
804
|
+
|
|
805
|
+
Bounded index metadata should include:
|
|
806
|
+
|
|
807
|
+
- workflow ID;
|
|
808
|
+
- request ID;
|
|
809
|
+
- entry mode;
|
|
810
|
+
- baseline observation ID;
|
|
811
|
+
- confirmed annotation ID;
|
|
812
|
+
- selected reference ID when applicable;
|
|
813
|
+
- attempt count;
|
|
814
|
+
- latest attempt status;
|
|
815
|
+
- latest human review state;
|
|
816
|
+
- superseded workflow ID when present.
|
|
817
|
+
|
|
818
|
+
Full history remains on-demand.
|
|
819
|
+
|
|
820
|
+
Add one visual-change view projection that resolves:
|
|
821
|
+
|
|
822
|
+
```text
|
|
823
|
+
workflow
|
|
824
|
+
→ baseline observation
|
|
825
|
+
→ annotation
|
|
826
|
+
→ promoted contract when applicable
|
|
827
|
+
→ selected approved reference when applicable
|
|
828
|
+
→ attempt candidate observations
|
|
829
|
+
→ comparison/evaluation/reference evidence referenced by check snapshots
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
The Viewer must treat unavailable referenced evidence honestly and must not guess
|
|
833
|
+
replacement evidence.
|
|
834
|
+
|
|
835
|
+
## 10. Project-aware Viewer write boundary
|
|
836
|
+
|
|
837
|
+
v0.10 extends the existing project-aware authoring boundary.
|
|
838
|
+
|
|
839
|
+
All new write routes require the existing:
|
|
840
|
+
|
|
841
|
+
- valid initialized project;
|
|
842
|
+
- loopback host boundary;
|
|
843
|
+
- same-origin checks;
|
|
844
|
+
- in-memory authoring capability token;
|
|
845
|
+
- JSON content type;
|
|
846
|
+
- body bounds;
|
|
847
|
+
- no-store responses;
|
|
848
|
+
- safe project-contained path validation.
|
|
849
|
+
|
|
850
|
+
Standalone `view --root` remains read-only.
|
|
851
|
+
|
|
852
|
+
Conceptual project-aware operations:
|
|
853
|
+
|
|
854
|
+
```text
|
|
855
|
+
POST /api/visual-changes
|
|
856
|
+
POST /api/visual-changes/:handle/activate
|
|
857
|
+
POST /api/visual-changes/:handle/prepare-handoff
|
|
858
|
+
POST /api/visual-changes/:handle/check
|
|
859
|
+
POST /api/visual-changes/:handle/review
|
|
860
|
+
POST /api/visual-changes/:handle/restore-acceptance
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
Exact route spelling may follow existing server conventions, but these operations
|
|
864
|
+
must remain distinct.
|
|
865
|
+
|
|
866
|
+
Do not add generic filesystem mutation endpoints.
|
|
867
|
+
|
|
868
|
+
## 11. Actual-frontend-driven workflow
|
|
869
|
+
|
|
870
|
+
The first mode must implement:
|
|
871
|
+
|
|
872
|
+
```text
|
|
873
|
+
project-aware Viewer
|
|
874
|
+
→ select runtime observation used as visual request baseline
|
|
875
|
+
→ create/load runtime annotation
|
|
876
|
+
→ explicitly associate marks with runtime targets/relationships
|
|
877
|
+
→ confirm supported change intent
|
|
878
|
+
→ promote selected confirmed intent to canonical per-change contract
|
|
879
|
+
→ explicitly activate that contract
|
|
880
|
+
→ create/freeze VisualChangeWorkflowArtifact
|
|
881
|
+
→ prepare bounded coding-agent handoff
|
|
882
|
+
→ external edit
|
|
883
|
+
→ check current frontend through canonical checkProject
|
|
884
|
+
→ persist immutable attempt revision
|
|
885
|
+
→ inspect PASS/FAIL/REVIEW_REQUIRED/BLOCKED evidence
|
|
886
|
+
→ request correction or accept
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
Rules:
|
|
890
|
+
|
|
891
|
+
- only confirmed, promotable runtime intent may enter executable scope;
|
|
892
|
+
- confirmed `remove` remains non-promotable under the current contract
|
|
893
|
+
vocabulary;
|
|
894
|
+
- informational marks may remain in annotation but are not executable scope;
|
|
895
|
+
- the selected runtime observation and contract identities are frozen into the
|
|
896
|
+
request identity;
|
|
897
|
+
- a later scope change creates a new request identity.
|
|
898
|
+
|
|
899
|
+
## 12. Reference-driven workflow
|
|
900
|
+
|
|
901
|
+
The second mode must implement:
|
|
902
|
+
|
|
903
|
+
```text
|
|
904
|
+
project-aware Viewer
|
|
905
|
+
→ discover/select an existing approved reference
|
|
906
|
+
→ inspect reference beside current runtime frontend
|
|
907
|
+
→ create/load reference annotation
|
|
908
|
+
→ confirm reference regions/requirements
|
|
909
|
+
→ materialize a new reference revision if needed
|
|
910
|
+
→ explicitly approve that revision if the user wants it to become the selected
|
|
911
|
+
approved reference
|
|
912
|
+
→ explicitly bind selected reference regions to runtime targets
|
|
913
|
+
→ create/freeze VisualChangeWorkflowArtifact
|
|
914
|
+
→ explicitly activate selected reference/bindings for project check
|
|
915
|
+
→ prepare bounded coding-agent handoff
|
|
916
|
+
→ external edit
|
|
917
|
+
→ canonical checkProject
|
|
918
|
+
→ persist immutable attempt revision
|
|
919
|
+
→ inspect fidelity + contract + overall evidence
|
|
920
|
+
→ request correction or accept
|
|
921
|
+
```
|
|
922
|
+
|
|
923
|
+
Rules:
|
|
924
|
+
|
|
925
|
+
- workflow start requires lifecycle `approved`;
|
|
926
|
+
- imported/materialized references do not qualify until explicitly approved;
|
|
927
|
+
- applicability/compatibility rules remain canonical;
|
|
928
|
+
- bindings remain explicit;
|
|
929
|
+
- reference-fidelity PASS cannot override a contract failure;
|
|
930
|
+
- no raster-to-code interpretation is introduced.
|
|
931
|
+
|
|
932
|
+
## 13. Correction iteration model
|
|
933
|
+
|
|
934
|
+
One visual-change request may contain up to
|
|
935
|
+
`MAX_VISUAL_CHANGE_ATTEMPTS` immutable attempts.
|
|
936
|
+
|
|
937
|
+
Each attempt is:
|
|
938
|
+
|
|
939
|
+
```text
|
|
940
|
+
same frozen request identity
|
|
941
|
+
+ new candidate observation
|
|
942
|
+
+ canonical check result
|
|
943
|
+
+ optional existing reference-correction attempt identity
|
|
944
|
+
+ optional external coordinator run reference
|
|
945
|
+
+ human review decision
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
The normal loop is:
|
|
949
|
+
|
|
950
|
+
```text
|
|
951
|
+
attempt N check
|
|
952
|
+
→ FAIL / REVIEW_REQUIRED / BLOCKED
|
|
953
|
+
→ human requests correction
|
|
954
|
+
→ external coding-agent correction
|
|
955
|
+
→ fresh candidate capture/check
|
|
956
|
+
→ attempt N+1
|
|
957
|
+
```
|
|
958
|
+
|
|
959
|
+
No retry occurs automatically inside Observer.
|
|
960
|
+
|
|
961
|
+
A failed attempt remains inspectable after later success.
|
|
962
|
+
|
|
963
|
+
## 14. Human acceptance and governance
|
|
964
|
+
|
|
965
|
+
### 14.1 Accept result
|
|
966
|
+
|
|
967
|
+
The Viewer may enable `Accept result` only when the latest check status is
|
|
968
|
+
`PASS`.
|
|
969
|
+
|
|
970
|
+
Acceptance creates a new immutable workflow revision.
|
|
971
|
+
|
|
972
|
+
### 14.2 Baseline governance remains separate
|
|
973
|
+
|
|
974
|
+
After acceptance, the user may separately invoke the existing canonical
|
|
975
|
+
baseline-approval path against the accepted candidate according to the existing
|
|
976
|
+
baseline contract semantics.
|
|
977
|
+
|
|
978
|
+
The workflow may record the resulting baseline artifact identity.
|
|
979
|
+
|
|
980
|
+
It must not fabricate new baseline rules.
|
|
981
|
+
|
|
982
|
+
### 14.3 Reference governance remains separate
|
|
983
|
+
|
|
984
|
+
If reference authoring/materialization produced a successor reference, the user
|
|
985
|
+
may separately approve/supersede it through the existing canonical reference
|
|
986
|
+
service.
|
|
987
|
+
|
|
988
|
+
The workflow may record the resulting approved reference identity.
|
|
989
|
+
|
|
990
|
+
Acceptance alone does not approve or supersede a reference.
|
|
991
|
+
|
|
992
|
+
### 14.4 Orchestrator workflow success remains separate
|
|
993
|
+
|
|
994
|
+
An orchestrator final-report PASS may be displayed as coordination evidence when
|
|
995
|
+
linked, but cannot:
|
|
996
|
+
|
|
997
|
+
- mark the visual change accepted;
|
|
998
|
+
- approve a baseline;
|
|
999
|
+
- approve/supersede a reference;
|
|
1000
|
+
- activate a contract.
|
|
1001
|
+
|
|
1002
|
+
## 15. Orchestrator compatibility boundary
|
|
1003
|
+
|
|
1004
|
+
The initial v0.10 product implementation does not require an orchestrator code
|
|
1005
|
+
change.
|
|
1006
|
+
|
|
1007
|
+
Observer exposes enough bounded handoff/reference information for an external
|
|
1008
|
+
caller to:
|
|
1009
|
+
|
|
1010
|
+
1. start/continue a normal orchestrator run;
|
|
1011
|
+
2. provide Observer evidence to the run through existing file/report/context
|
|
1012
|
+
seams;
|
|
1013
|
+
3. let the external coding agent perform the edit;
|
|
1014
|
+
4. run Observer `check <baseline> --json`;
|
|
1015
|
+
5. reference the resulting Observer attempt/evidence in verification/judge
|
|
1016
|
+
reporting.
|
|
1017
|
+
|
|
1018
|
+
A v0.10 compatibility test may exercise the published orchestrator CLI from a
|
|
1019
|
+
disposable fixture, but Observer must not depend on its internal APIs or mutable
|
|
1020
|
+
run-file format.
|
|
1021
|
+
|
|
1022
|
+
If implementation proves that the existing CLI/file boundary cannot preserve
|
|
1023
|
+
required identity/provenance, stop and revise this plan before adding a new
|
|
1024
|
+
orchestrator public integration contract.
|
|
1025
|
+
|
|
1026
|
+
## 16. PWA and acceptance-gate rule carried from v0.9.1
|
|
1027
|
+
|
|
1028
|
+
Any test explicitly designated:
|
|
1029
|
+
|
|
1030
|
+
```text
|
|
1031
|
+
HARD GATE
|
|
1032
|
+
SECURITY GATE
|
|
1033
|
+
ACCEPTANCE GATE
|
|
1034
|
+
```
|
|
1035
|
+
|
|
1036
|
+
must establish every material prerequisite itself from fresh state.
|
|
1037
|
+
|
|
1038
|
+
It must not rely on:
|
|
1039
|
+
|
|
1040
|
+
- previous test order;
|
|
1041
|
+
- warmed browser/service-worker cache;
|
|
1042
|
+
- a reused browser profile;
|
|
1043
|
+
- another test's server;
|
|
1044
|
+
- another test's evidence fixture.
|
|
1045
|
+
|
|
1046
|
+
Do not copy the old weak service-worker readiness expression into new gates.
|
|
1047
|
+
|
|
1048
|
+
v0.10 does not otherwise redesign PWA caching.
|
|
1049
|
+
|
|
1050
|
+
## 17. Implementation sequence
|
|
1051
|
+
|
|
1052
|
+
### Batch 1 — Visual-change workflow domain, identity, persistence, and discovery
|
|
1053
|
+
|
|
1054
|
+
#### Goal
|
|
1055
|
+
|
|
1056
|
+
Introduce the one new persisted workflow/history family without changing
|
|
1057
|
+
existing evidence schemas or Viewer behavior.
|
|
1058
|
+
|
|
1059
|
+
#### Production scope
|
|
1060
|
+
|
|
1061
|
+
- `VisualChangeWorkflowArtifact` contract and validator;
|
|
1062
|
+
- request/revision/attempt identity helpers;
|
|
1063
|
+
- bounded attempt/history rules;
|
|
1064
|
+
- immutable writer/reader/persistence service;
|
|
1065
|
+
- project-managed `evidence/visual-changes/` layout;
|
|
1066
|
+
- optional workflow-owned reference binding file;
|
|
1067
|
+
- evidence discovery/classification metadata;
|
|
1068
|
+
- on-demand workflow read projection.
|
|
1069
|
+
|
|
1070
|
+
#### Mandatory tests
|
|
1071
|
+
|
|
1072
|
+
- schema/validator positives and negatives;
|
|
1073
|
+
- deterministic request identity;
|
|
1074
|
+
- fresh workflow revision identity;
|
|
1075
|
+
- deterministic attempt identity;
|
|
1076
|
+
- changed candidate changes attempt identity;
|
|
1077
|
+
- changed scope changes request identity;
|
|
1078
|
+
- immutable revision/supersession behavior;
|
|
1079
|
+
- attempt bound;
|
|
1080
|
+
- unsafe path/reference rejection;
|
|
1081
|
+
- writer cleanup on failure;
|
|
1082
|
+
- discovery metadata;
|
|
1083
|
+
- no mutation/copy of referenced canonical artifacts.
|
|
1084
|
+
|
|
1085
|
+
#### Gate
|
|
1086
|
+
|
|
1087
|
+
The new family persists and reloads independently while all prior artifact
|
|
1088
|
+
families and schemas remain unchanged.
|
|
1089
|
+
|
|
1090
|
+
### Batch 2 — Project workflow composition, activation, and canonical check recording
|
|
1091
|
+
|
|
1092
|
+
#### Goal
|
|
1093
|
+
|
|
1094
|
+
Connect the new workflow history to existing project acceptance and
|
|
1095
|
+
`checkProject` without adding a second evaluator.
|
|
1096
|
+
|
|
1097
|
+
#### Production scope
|
|
1098
|
+
|
|
1099
|
+
- create/freeze actual/reference workflow application service;
|
|
1100
|
+
- explicit project acceptance activation;
|
|
1101
|
+
- explicit restore operation;
|
|
1102
|
+
- canonical check invocation through `checkProject`;
|
|
1103
|
+
- normalized check snapshot;
|
|
1104
|
+
- append immutable attempt revision;
|
|
1105
|
+
- verify check result identities match frozen request scope;
|
|
1106
|
+
- reject hidden scope/config drift;
|
|
1107
|
+
- preserve existing `check` behavior outside v0.10 workflow use.
|
|
1108
|
+
|
|
1109
|
+
#### Mandatory tests
|
|
1110
|
+
|
|
1111
|
+
- actual-mode scope creation;
|
|
1112
|
+
- reference-mode scope creation;
|
|
1113
|
+
- activation is explicit;
|
|
1114
|
+
- activation is not approval;
|
|
1115
|
+
- restore is explicit;
|
|
1116
|
+
- canonical check called once through existing owner;
|
|
1117
|
+
- baseline contract remains active;
|
|
1118
|
+
- selected workflow contract/reference is evaluated;
|
|
1119
|
+
- reference PASS + contract FAIL remains overall FAIL;
|
|
1120
|
+
- mismatched scope/config blocks attempt recording;
|
|
1121
|
+
- existing CLI/project check regressions remain unchanged.
|
|
1122
|
+
|
|
1123
|
+
#### Gate
|
|
1124
|
+
|
|
1125
|
+
A caller can create a frozen workflow, explicitly activate it, run the canonical
|
|
1126
|
+
check path, and persist one immutable attempt without Viewer UI.
|
|
1127
|
+
|
|
1128
|
+
### Batch 3 — Viewer discovery, visual-change workspace, and secure API boundary
|
|
1129
|
+
|
|
1130
|
+
#### Goal
|
|
1131
|
+
|
|
1132
|
+
Expose the workflow/history family in the existing project-aware Viewer and add
|
|
1133
|
+
only the bounded write operations required by v0.10.
|
|
1134
|
+
|
|
1135
|
+
#### Production scope
|
|
1136
|
+
|
|
1137
|
+
- workflow metadata in `/api/index`;
|
|
1138
|
+
- on-demand visual-change view projection;
|
|
1139
|
+
- Visual Change navigation/workspace;
|
|
1140
|
+
- project-aware API operations for create/activate/check/review/restore;
|
|
1141
|
+
- reuse existing authoring token/origin/body/security guards;
|
|
1142
|
+
- standalone `view --root` remains read-only;
|
|
1143
|
+
- unavailable linked evidence displayed honestly.
|
|
1144
|
+
|
|
1145
|
+
#### Mandatory tests
|
|
1146
|
+
|
|
1147
|
+
- project-aware operations authorized;
|
|
1148
|
+
- standalone operations rejected;
|
|
1149
|
+
- missing/invalid/stale workflow source evidence reported honestly;
|
|
1150
|
+
- no arbitrary filesystem paths;
|
|
1151
|
+
- no token/path leakage;
|
|
1152
|
+
- no-store behavior;
|
|
1153
|
+
- existing annotation POST routes unchanged;
|
|
1154
|
+
- keyboard/accessibility basics for new workspace shell.
|
|
1155
|
+
|
|
1156
|
+
#### Gate
|
|
1157
|
+
|
|
1158
|
+
The Viewer can load and inspect a workflow artifact and exercise bounded project
|
|
1159
|
+
operations without yet completing either human entry mode.
|
|
1160
|
+
|
|
1161
|
+
### Batch 4 — Actual-frontend-driven visual change flow
|
|
1162
|
+
|
|
1163
|
+
#### Goal
|
|
1164
|
+
|
|
1165
|
+
Complete the human runtime-screenshot entry mode from annotation through
|
|
1166
|
+
handoff-ready frozen executable scope.
|
|
1167
|
+
|
|
1168
|
+
#### Production scope
|
|
1169
|
+
|
|
1170
|
+
- choose runtime baseline/source observation;
|
|
1171
|
+
- reuse runtime annotation authoring;
|
|
1172
|
+
- confirm executable runtime intent;
|
|
1173
|
+
- promote selected supported intent;
|
|
1174
|
+
- explicit contract activation;
|
|
1175
|
+
- create/freeze actual-mode workflow;
|
|
1176
|
+
- show request identity and active scope;
|
|
1177
|
+
- block unsupported/unconfirmed requested scope;
|
|
1178
|
+
- prepare mode-independent workflow state for later handoff/check.
|
|
1179
|
+
|
|
1180
|
+
#### Mandatory browser tests
|
|
1181
|
+
|
|
1182
|
+
- successful actual-mode scope creation;
|
|
1183
|
+
- marks without explicit association stay non-executable;
|
|
1184
|
+
- candidate/unconfirmed intent cannot start executable workflow;
|
|
1185
|
+
- confirmed `remove` remains non-promotable;
|
|
1186
|
+
- explicit activation replaces no contract silently;
|
|
1187
|
+
- changing scope produces a new request identity;
|
|
1188
|
+
- existing annotation save/revision behavior preserved.
|
|
1189
|
+
|
|
1190
|
+
#### Gate
|
|
1191
|
+
|
|
1192
|
+
A human can create a frozen actual-frontend visual-change request in the Viewer
|
|
1193
|
+
without any external reference.
|
|
1194
|
+
|
|
1195
|
+
### Batch 5 — Reference-driven visual change flow
|
|
1196
|
+
|
|
1197
|
+
#### Goal
|
|
1198
|
+
|
|
1199
|
+
Complete the reference entry mode using only approved references, explicit
|
|
1200
|
+
applicability/bindings, and existing reference semantics.
|
|
1201
|
+
|
|
1202
|
+
#### Production scope
|
|
1203
|
+
|
|
1204
|
+
- discover/select approved references from existing evidence;
|
|
1205
|
+
- reuse reference annotation/materialization;
|
|
1206
|
+
- explicit approval required for a materialized revision before workflow use;
|
|
1207
|
+
- explicit runtime binding authoring/selection;
|
|
1208
|
+
- create/freeze reference-mode workflow;
|
|
1209
|
+
- persist bounded binding declarations;
|
|
1210
|
+
- explicit project reference activation;
|
|
1211
|
+
- compatibility/applicability display;
|
|
1212
|
+
- request identity includes exact reference/binding scope.
|
|
1213
|
+
|
|
1214
|
+
#### Mandatory browser tests
|
|
1215
|
+
|
|
1216
|
+
- imported reference cannot start executable workflow;
|
|
1217
|
+
- approved reference can;
|
|
1218
|
+
- changing selected reference changes request identity;
|
|
1219
|
+
- changing bindings changes request identity;
|
|
1220
|
+
- name similarity never creates binding;
|
|
1221
|
+
- incompatible applicability blocks workflow/check;
|
|
1222
|
+
- activation does not approve/supersede;
|
|
1223
|
+
- reference and runtime coordinate systems remain separate.
|
|
1224
|
+
|
|
1225
|
+
#### Gate
|
|
1226
|
+
|
|
1227
|
+
A human can create a frozen reference-driven visual-change request using an
|
|
1228
|
+
approved reference and explicit bindings.
|
|
1229
|
+
|
|
1230
|
+
### Batch 6 — Coding-agent handoff and optional orchestrator correlation
|
|
1231
|
+
|
|
1232
|
+
#### Goal
|
|
1233
|
+
|
|
1234
|
+
Produce one bounded external implementation handoff for either entry mode while
|
|
1235
|
+
preserving project boundaries.
|
|
1236
|
+
|
|
1237
|
+
#### Production scope
|
|
1238
|
+
|
|
1239
|
+
- pure `VisualChangeAgentHandoff` projection;
|
|
1240
|
+
- actual mode uses existing bounded context/project contract evidence;
|
|
1241
|
+
- reference mode reuses existing `prepareReferenceCorrection` where
|
|
1242
|
+
applicable;
|
|
1243
|
+
- retain/reference deterministic v0.7 review identity;
|
|
1244
|
+
- optional external coordinator reference
|
|
1245
|
+
(`my-dev-kit-orchestrator` run ID/version);
|
|
1246
|
+
- no orchestrator package/runtime dependency;
|
|
1247
|
+
- Viewer exposes/copies/downloads bounded handoff;
|
|
1248
|
+
- exact required post-edit `check <baseline> --json` operation is included.
|
|
1249
|
+
|
|
1250
|
+
#### Mandatory tests
|
|
1251
|
+
|
|
1252
|
+
- actual and reference handoff projections bounded/deterministic;
|
|
1253
|
+
- existing `BoundedAgentContext` schema unchanged;
|
|
1254
|
+
- no target source read/write;
|
|
1255
|
+
- no orchestrator execution;
|
|
1256
|
+
- no absolute orchestrator run path persisted;
|
|
1257
|
+
- optional run reference round-trips;
|
|
1258
|
+
- reference handoff preserves protected/preserved constraints;
|
|
1259
|
+
- producer/static evidence remains externally owned.
|
|
1260
|
+
|
|
1261
|
+
#### Compatibility proof
|
|
1262
|
+
|
|
1263
|
+
Run one disposable integration proof against the current published
|
|
1264
|
+
`my-dev-kit-orchestrator` CLI/file boundary without importing orchestrator
|
|
1265
|
+
internals.
|
|
1266
|
+
|
|
1267
|
+
The proof must show that Observer evidence can be referenced in a run while
|
|
1268
|
+
Observer remains the runtime/reference evaluator and orchestrator remains the
|
|
1269
|
+
workflow lifecycle owner.
|
|
1270
|
+
|
|
1271
|
+
#### Gate
|
|
1272
|
+
|
|
1273
|
+
A coding agent or external orchestrator workflow can receive one bounded
|
|
1274
|
+
traceable handoff without direct artifact-path reconstruction by the human.
|
|
1275
|
+
|
|
1276
|
+
### Batch 7 — Correction loop, immutable attempt history, and human acceptance
|
|
1277
|
+
|
|
1278
|
+
#### Goal
|
|
1279
|
+
|
|
1280
|
+
Complete repeated correction and explicit human review/governance.
|
|
1281
|
+
|
|
1282
|
+
#### Production scope
|
|
1283
|
+
|
|
1284
|
+
- Viewer action to run canonical project check after an external edit;
|
|
1285
|
+
- persist immutable attempt record;
|
|
1286
|
+
- show complete attempt timeline;
|
|
1287
|
+
- correction-requested action;
|
|
1288
|
+
- next attempt links to prior attempt;
|
|
1289
|
+
- reference mode retains existing reference-correction attempt identity;
|
|
1290
|
+
- accepted only on latest canonical PASS;
|
|
1291
|
+
- abandoned state;
|
|
1292
|
+
- explicit restore action;
|
|
1293
|
+
- optional recording of later baseline/reference governance results;
|
|
1294
|
+
- no automatic approval or retry.
|
|
1295
|
+
|
|
1296
|
+
#### Mandatory browser/integration tests
|
|
1297
|
+
|
|
1298
|
+
- attempt 1 FAIL -> correction requested -> attempt 2 PASS;
|
|
1299
|
+
- attempt 1 remains inspectable byte-for-byte;
|
|
1300
|
+
- candidate IDs/attempt IDs remain distinct;
|
|
1301
|
+
- protected regression fails even when requested/reference goal succeeds;
|
|
1302
|
+
- reference fidelity PASS + contract FAIL remains overall FAIL;
|
|
1303
|
+
- BLOCKED/REVIEW_REQUIRED cannot be accepted;
|
|
1304
|
+
- orchestrator PASS reference cannot cause Observer acceptance;
|
|
1305
|
+
- acceptance does not approve baseline/reference;
|
|
1306
|
+
- explicit governance action references are recorded only after canonical
|
|
1307
|
+
services succeed.
|
|
1308
|
+
|
|
1309
|
+
#### Gate
|
|
1310
|
+
|
|
1311
|
+
Both visual entry modes can complete a human-reviewed correction cycle with
|
|
1312
|
+
immutable attempt history and explicit acceptance.
|
|
1313
|
+
|
|
1314
|
+
### Batch 8 — Integrated acceptance, packed-candidate proof, and implementation documentation
|
|
1315
|
+
|
|
1316
|
+
#### Goal
|
|
1317
|
+
|
|
1318
|
+
Prove the complete v0.10 product surface as one integrated system and prepare
|
|
1319
|
+
for the separate documentation-reconciliation/readiness workflows.
|
|
1320
|
+
|
|
1321
|
+
#### Required integrated scenarios
|
|
1322
|
+
|
|
1323
|
+
1. Successful actual-frontend-driven visual change.
|
|
1324
|
+
2. Successful reference-driven design-replication change.
|
|
1325
|
+
3. Measurable actionable reference/candidate failure.
|
|
1326
|
+
4. Requested visual change succeeds locally but introduces a protected or
|
|
1327
|
+
preserved regression -> overall FAIL.
|
|
1328
|
+
5. Reference fidelity passes while an active contract fails -> overall FAIL.
|
|
1329
|
+
6. Two-attempt correction history: first failure retained, second PASS.
|
|
1330
|
+
7. Human acceptance on PASS.
|
|
1331
|
+
8. Explicit baseline/reference governance remains separate.
|
|
1332
|
+
9. Optional orchestrator run reference remains traceable without becoming
|
|
1333
|
+
product approval.
|
|
1334
|
+
10. Standalone Viewer remains read-only.
|
|
1335
|
+
11. Existing v0.9 annotation, v0.8 Viewer, v0.8.1 project workflow, and v0.7
|
|
1336
|
+
correction behavior remain regression-safe.
|
|
1337
|
+
|
|
1338
|
+
#### Browser acceptance
|
|
1339
|
+
|
|
1340
|
+
Add one deterministic real-Chromium v0.10 integrated acceptance suite using the
|
|
1341
|
+
existing demo/fixture substrate where appropriate.
|
|
1342
|
+
|
|
1343
|
+
Any test labeled `ACCEPTANCE GATE` must establish all material prerequisites
|
|
1344
|
+
from fresh state.
|
|
1345
|
+
|
|
1346
|
+
#### Packed candidate
|
|
1347
|
+
|
|
1348
|
+
Extend the existing same-candidate pre-release smoke architecture additively.
|
|
1349
|
+
|
|
1350
|
+
Add a v0.10 packed workflow smoke that uses only the installed package and
|
|
1351
|
+
proves:
|
|
1352
|
+
|
|
1353
|
+
- the new artifact reader/writer surface is packaged;
|
|
1354
|
+
- project-aware Viewer visual-change routes are present;
|
|
1355
|
+
- actual and reference workflow creation works;
|
|
1356
|
+
- at least one correction attempt is persisted;
|
|
1357
|
+
- acceptance rules hold;
|
|
1358
|
+
- prior evidence remains immutable;
|
|
1359
|
+
- no authoring token, note text, absolute project path, or local orchestrator
|
|
1360
|
+
path leaks into the smoke summary.
|
|
1361
|
+
|
|
1362
|
+
Do not create a second candidate tarball or parallel release matrix.
|
|
1363
|
+
|
|
1364
|
+
#### Documentation
|
|
1365
|
+
|
|
1366
|
+
Update current implementation documentation only after the integrated behavior
|
|
1367
|
+
exists.
|
|
1368
|
+
|
|
1369
|
+
Do not mark v0.10 published.
|
|
1370
|
+
|
|
1371
|
+
#### Gate
|
|
1372
|
+
|
|
1373
|
+
All v0.10 implementation batches are complete and the version is ready for the
|
|
1374
|
+
separate hardened documentation/implementation-completeness workflow.
|
|
1375
|
+
|
|
1376
|
+
## 18. Cross-batch invariants
|
|
1377
|
+
|
|
1378
|
+
Every batch must preserve:
|
|
1379
|
+
|
|
1380
|
+
1. Observer never edits target source.
|
|
1381
|
+
2. Canonical Chromium capture remains single-owner.
|
|
1382
|
+
3. `checkProject` remains the one project post-edit evaluation owner.
|
|
1383
|
+
4. Existing comparison, contract, relationship, reference, fidelity, and
|
|
1384
|
+
bounded-context engines are reused.
|
|
1385
|
+
5. Visual annotations remain evidence, not contracts.
|
|
1386
|
+
6. Promotion remains separate from activation.
|
|
1387
|
+
7. Materialization remains separate from reference approval.
|
|
1388
|
+
8. Workflow creation remains separate from project acceptance activation.
|
|
1389
|
+
9. Workflow PASS/human acceptance remains separate from baseline/reference
|
|
1390
|
+
approval.
|
|
1391
|
+
10. Orchestrator lifecycle remains externally owned.
|
|
1392
|
+
11. No existing canonical evidence schema is changed without an explicit plan
|
|
1393
|
+
revision.
|
|
1394
|
+
12. Existing evidence remains immutable.
|
|
1395
|
+
13. Workflow revisions and attempts are immutable.
|
|
1396
|
+
14. Reference/runtime/static/annotation/workflow identities remain distinct.
|
|
1397
|
+
15. Missing/unavailable/ambiguous/incompatible evidence is never fabricated.
|
|
1398
|
+
16. Standalone `view --root` remains read-only.
|
|
1399
|
+
17. Project-aware write routes remain narrow and security-guarded.
|
|
1400
|
+
18. No automatic retry, coding-agent execution, baseline approval, or reference
|
|
1401
|
+
approval is introduced.
|
|
1402
|
+
19. New acceptance/security gates are independently runnable from fresh state.
|
|
1403
|
+
20. Generated/local integration state remains outside the npm package.
|
|
1404
|
+
|
|
1405
|
+
## 19. Version-wide validation
|
|
1406
|
+
|
|
1407
|
+
After Batch 8, implementation validation must include the repository's complete
|
|
1408
|
+
current validation chain:
|
|
1409
|
+
|
|
1410
|
+
```text
|
|
1411
|
+
npm run typecheck
|
|
1412
|
+
npm run lint
|
|
1413
|
+
npm test
|
|
1414
|
+
npm run test:browser
|
|
1415
|
+
npm run test:security
|
|
1416
|
+
npm run build
|
|
1417
|
+
npm run check:docs
|
|
1418
|
+
git diff --check
|
|
1419
|
+
npm pack --dry-run
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
Also run:
|
|
1423
|
+
|
|
1424
|
+
- the v0.10 integrated browser acceptance suite;
|
|
1425
|
+
- the installed packed v0.10 workflow smoke;
|
|
1426
|
+
- any focused compatibility proof required for the external orchestrator
|
|
1427
|
+
boundary.
|
|
1428
|
+
|
|
1429
|
+
Do not treat this implementation validation as formal release readiness.
|
|
1430
|
+
|
|
1431
|
+
After implementation passes, follow the established workflow:
|
|
1432
|
+
|
|
1433
|
+
```text
|
|
1434
|
+
implementation complete
|
|
1435
|
+
→ hardened documentation + implementation-completeness reconciliation
|
|
1436
|
+
→ pre-release readiness / cross-platform / security
|
|
1437
|
+
→ release prep
|
|
1438
|
+
→ publication only after explicit user approval
|
|
1439
|
+
```
|
|
1440
|
+
|
|
1441
|
+
## 20. Explicit v0.10 exclusions
|
|
1442
|
+
|
|
1443
|
+
v0.10 does not include:
|
|
1444
|
+
|
|
1445
|
+
- Observer editing application source;
|
|
1446
|
+
- built-in LLM/provider execution;
|
|
1447
|
+
- autonomous coding-agent execution;
|
|
1448
|
+
- automatic retry loops;
|
|
1449
|
+
- automatic baseline approval;
|
|
1450
|
+
- automatic reference approval/supersession;
|
|
1451
|
+
- automatic contract activation without explicit human action;
|
|
1452
|
+
- raster-to-code generation;
|
|
1453
|
+
- OCR/CV segmentation;
|
|
1454
|
+
- automatic binding from geometry/name similarity;
|
|
1455
|
+
- a second comparison engine;
|
|
1456
|
+
- a second contract evaluator;
|
|
1457
|
+
- a second reference-fidelity engine;
|
|
1458
|
+
- a second bounded-context engine;
|
|
1459
|
+
- a second orchestrator lifecycle;
|
|
1460
|
+
- a generic public orchestrator lifecycle API unless a concrete implementation
|
|
1461
|
+
blocker forces a later plan revision;
|
|
1462
|
+
- a new cross-project shared package merely for symmetry;
|
|
1463
|
+
- changing existing evidence schema versions without proven need;
|
|
1464
|
+
- multi-user/server-hosted workflow state;
|
|
1465
|
+
- cloud synchronization;
|
|
1466
|
+
- public-internet canonical test fixtures.
|
|
1467
|
+
|
|
1468
|
+
## 21. Prompt count and implementation order
|
|
1469
|
+
|
|
1470
|
+
The implementation order is frozen as eight context-sharing batches:
|
|
1471
|
+
|
|
1472
|
+
```text
|
|
1473
|
+
Batch 1
|
|
1474
|
+
Visual-change domain / identity / persistence / discovery
|
|
1475
|
+
|
|
1476
|
+
Batch 2
|
|
1477
|
+
Project composition / activation / canonical check attempt recording
|
|
1478
|
+
|
|
1479
|
+
Batch 3
|
|
1480
|
+
Viewer workspace / secure project-aware API
|
|
1481
|
+
|
|
1482
|
+
Batch 4
|
|
1483
|
+
Actual-frontend-driven entry mode
|
|
1484
|
+
|
|
1485
|
+
Batch 5
|
|
1486
|
+
Reference-driven entry mode
|
|
1487
|
+
|
|
1488
|
+
Batch 6
|
|
1489
|
+
Coding-agent handoff / optional orchestrator correlation
|
|
1490
|
+
|
|
1491
|
+
Batch 7
|
|
1492
|
+
Correction loop / immutable history / human acceptance
|
|
1493
|
+
|
|
1494
|
+
Batch 8
|
|
1495
|
+
Integrated acceptance / packed candidate / implementation docs
|
|
1496
|
+
```
|
|
1497
|
+
|
|
1498
|
+
Do not combine later-batch work into an earlier batch merely because adjacent
|
|
1499
|
+
owners are already open.
|
|
1500
|
+
|
|
1501
|
+
Do not split release readiness, release preparation, or publication into these
|
|
1502
|
+
implementation batches.
|
|
1503
|
+
|
|
1504
|
+
After each passing batch, the next coding-agent prompt must use the current
|
|
1505
|
+
repository state and this frozen plan as authority.
|
|
1506
|
+
|
|
1507
|
+
If implementation evidence shows that a frozen architecture decision is
|
|
1508
|
+
incorrect or impossible, stop and revise this document explicitly before
|
|
1509
|
+
continuing.
|