@dailephd/my-frontend-observer 0.8.1 → 0.9.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 +74 -0
- package/README.md +109 -7
- package/dist/application/projectWorkflowService.d.ts +18 -1
- package/dist/application/projectWorkflowService.js +40 -2
- package/dist/application/projectWorkflowService.js.map +1 -1
- package/dist/application/visualAnnotationContractPromotionService.d.ts +41 -0
- package/dist/application/visualAnnotationContractPromotionService.js +143 -0
- package/dist/application/visualAnnotationContractPromotionService.js.map +1 -0
- package/dist/application/visualAnnotationPersistenceService.d.ts +34 -0
- package/dist/application/visualAnnotationPersistenceService.js +68 -0
- package/dist/application/visualAnnotationPersistenceService.js.map +1 -0
- package/dist/application/visualAnnotationReferenceMaterializationService.d.ts +53 -0
- package/dist/application/visualAnnotationReferenceMaterializationService.js +194 -0
- package/dist/application/visualAnnotationReferenceMaterializationService.js.map +1 -0
- package/dist/artifacts/visualAnnotationArtifactReader.d.ts +19 -0
- package/dist/artifacts/visualAnnotationArtifactReader.js +66 -0
- package/dist/artifacts/visualAnnotationArtifactReader.js.map +1 -0
- package/dist/artifacts/visualAnnotationArtifactWriter.d.ts +42 -0
- package/dist/artifacts/visualAnnotationArtifactWriter.js +85 -0
- package/dist/artifacts/visualAnnotationArtifactWriter.js.map +1 -0
- package/dist/cli.js +464 -454
- package/dist/cli.js.map +1 -1
- package/dist/domain/visualAnnotation.d.ts +217 -0
- package/dist/domain/visualAnnotation.js +584 -0
- package/dist/domain/visualAnnotation.js.map +1 -0
- package/dist/domain/visualAnnotationIdentity.d.ts +17 -0
- package/dist/domain/visualAnnotationIdentity.js +47 -0
- package/dist/domain/visualAnnotationIdentity.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/projectWorkflow/projectPaths.d.ts +9 -0
- package/dist/projectWorkflow/projectPaths.js +21 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -1
- package/dist/viewer/assets/{index-CN_yb9Uf.css → index-BN41MI7m.css} +1 -1
- package/dist/viewer/assets/index-CkKXnlrI.js +9 -0
- package/dist/viewer/index.html +2 -2
- package/dist/viewer/sw.js +1 -1
- package/dist/viewerServer/annotationAuthoring.d.ts +64 -0
- package/dist/viewerServer/annotationAuthoring.js +230 -0
- package/dist/viewerServer/annotationAuthoring.js.map +1 -0
- package/dist/viewerServer/annotationContractPromotion.d.ts +51 -0
- package/dist/viewerServer/annotationContractPromotion.js +105 -0
- package/dist/viewerServer/annotationContractPromotion.js.map +1 -0
- package/dist/viewerServer/annotationReferenceMaterialization.d.ts +40 -0
- package/dist/viewerServer/annotationReferenceMaterialization.js +91 -0
- package/dist/viewerServer/annotationReferenceMaterialization.js.map +1 -0
- package/dist/viewerServer/authoringSecurity.d.ts +59 -0
- package/dist/viewerServer/authoringSecurity.js +112 -0
- package/dist/viewerServer/authoringSecurity.js.map +1 -0
- package/dist/viewerServer/evidence/annotationView.d.ts +28 -0
- package/dist/viewerServer/evidence/annotationView.js +43 -0
- package/dist/viewerServer/evidence/annotationView.js.map +1 -0
- package/dist/viewerServer/evidence/classify.d.ts +3 -1
- package/dist/viewerServer/evidence/classify.js +12 -0
- package/dist/viewerServer/evidence/classify.js.map +1 -1
- package/dist/viewerServer/evidence/discovery.d.ts +2 -0
- package/dist/viewerServer/evidence/discovery.js +6 -0
- package/dist/viewerServer/evidence/discovery.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/index.d.ts +29 -0
- package/dist/viewerServer/evidence/index.js +43 -1
- package/dist/viewerServer/evidence/index.js.map +1 -1
- package/dist/viewerServer/evidence/mediaResolver.d.ts +1 -1
- package/dist/viewerServer/evidence/mediaResolver.js +28 -2
- package/dist/viewerServer/evidence/mediaResolver.js.map +1 -1
- package/dist/viewerServer/evidence/projection.d.ts +5 -1
- package/dist/viewerServer/evidence/projection.js +19 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -1
- package/dist/viewerServer/httpServer.d.ts +13 -2
- package/dist/viewerServer/httpServer.js +278 -4
- package/dist/viewerServer/httpServer.js.map +1 -1
- package/dist/viewerServer/viewerService.d.ts +8 -0
- package/dist/viewerServer/viewerService.js +38 -2
- package/dist/viewerServer/viewerService.js.map +1 -1
- package/docs/ARCHITECTURE.md +108 -21
- package/docs/CI_CD.md +78 -1
- package/docs/COMMANDS.md +44 -4
- package/docs/CONTRACTS.md +78 -8
- package/docs/CURRENT_STATE.md +224 -35
- package/docs/DEVELOPMENT.md +38 -3
- package/docs/PROJECT_DESCRIPTION.md +4 -1
- package/docs/PROJECT_MILESTONES.md +32 -0
- package/docs/PROJECT_OVERVIEW.md +58 -17
- package/docs/QUICKSTART.md +52 -39
- package/docs/RELEASE.md +17 -11
- package/docs/ROADMAP.md +458 -66
- package/docs/SECURITY.md +71 -14
- package/docs/WORKFLOWS.md +151 -23
- package/docs/plans/v0.9-implementation-plan.md +1529 -0
- package/docs/plans/v0.9.1-implementation-plan.md +468 -0
- package/docs/reports/v0.9-architecture-retrieval.md +567 -0
- package/docs/reports/v0.9-batch1-visual-annotation-foundation.md +351 -0
- package/docs/reports/v0.9-batch2-viewer-annotation-authoring-boundary.md +438 -0
- package/docs/reports/v0.9-batch3-runtime-screenshot-annotation-authoring.md +412 -0
- package/docs/reports/v0.9-batch4-external-reference-annotation-authoring.md +452 -0
- package/docs/reports/v0.9-batch5-runtime-intent-contract-promotion.md +535 -0
- package/docs/reports/v0.9-batch6-reference-materialization.md +514 -0
- package/docs/reports/v0.9-batch7-integrated-acceptance.md +644 -0
- package/docs/reports/v0.9-demo-foundation.md +589 -0
- package/docs/reports/v0.9-final-pre-release-readiness.md +209 -0
- package/docs/reports/v0.9-final-readiness-corrections.md +530 -0
- package/docs/reports/v0.9-pre-release-readiness.md +170 -0
- package/docs/reports/v0.9-tutorial-end-to-end-acceptance.md +980 -0
- package/docs/reports/v0.9-tutorial-integration.md +731 -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-D98S1_2d.js +0 -9
package/docs/CURRENT_STATE.md
CHANGED
|
@@ -1,15 +1,93 @@
|
|
|
1
1
|
# Current State
|
|
2
2
|
|
|
3
|
-
v0.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
the
|
|
3
|
+
v0.9.1 is released and published as `@dailephd/my-frontend-observer@0.9.1`.
|
|
4
|
+
v0.9 (Human Visual Annotation and Design-Intent Capture) adds structured visual
|
|
5
|
+
annotation to the project-aware viewer. It passed integrated real-Chromium
|
|
6
|
+
acceptance and final exact-candidate pre-release readiness on Windows, Linux
|
|
7
|
+
and macOS, including all four tutorials. The viewer protocol is `1.3.0` and the
|
|
8
|
+
visual annotation schema is `1.0.0`. Project aliases, `init`, `capture`,
|
|
9
|
+
project-aware `view`, and `check` orchestration from v0.8.1 remain implemented,
|
|
10
|
+
and the package is MIT licensed. The
|
|
11
|
+
repository also holds a deterministic demo and four tutorial scenarios for
|
|
12
|
+
v0.9, recorded by the external `@dailephd/my-dev-kit-lab@0.4.9` tool. See
|
|
13
|
+
"v0.9 status" below.
|
|
14
|
+
|
|
15
|
+
The project is published at package version `0.9.1` (roadmap v0.9.1, PWA
|
|
16
|
+
Hard-Gate Isolation and Reproducible Security Acceptance; the preceding v0.9
|
|
17
|
+
release was Human Visual Annotation and Design-Intent Capture; observation
|
|
18
|
+
schema `1.2.0`;
|
|
19
|
+
comparison schema `1.0.0`; frontend contract schema `1.0.0`; evaluation
|
|
20
|
+
artifact schema `1.0.0`; bounded-agent-context schema `1.0.0`;
|
|
21
|
+
external-reference schema `1.0.0`; visual annotation schema `1.0.0`). v0.9.0
|
|
22
|
+
added the visual annotation schema and did not change any other canonical
|
|
23
|
+
evidence schema version. v0.8.1 did not change any canonical evidence schema
|
|
24
|
+
version either; see "v0.8 status" below for the final, complete v0.8 viewer
|
|
25
|
+
state.
|
|
26
|
+
|
|
27
|
+
## v0.9.1 maintenance status
|
|
28
|
+
|
|
29
|
+
Status: released and published as `@dailephd/my-frontend-observer@0.9.1`.
|
|
30
|
+
No production code changed.
|
|
31
|
+
|
|
32
|
+
Result of the implementation:
|
|
33
|
+
|
|
34
|
+
1. The original failure was reproduced. Selected alone, the hard gate failed at
|
|
35
|
+
the offline reload with `net::ERR_CONNECTION_REFUSED`.
|
|
36
|
+
2. Root cause, part one: the old readiness check was
|
|
37
|
+
`registration?.active !== undefined`. While the worker was still installing,
|
|
38
|
+
`active` was `null` and the page had no controller. Because
|
|
39
|
+
`null !== undefined` is true, the check passed and the server was closed
|
|
40
|
+
before the worker controlled the page or finished precaching.
|
|
41
|
+
3. Root cause, part two: the gate shared a server, evidence root, and a fixed
|
|
42
|
+
persistent Chromium profile with earlier tests. In normal file order those
|
|
43
|
+
tests had already activated a controlling worker, which hid the defect.
|
|
44
|
+
4. The hard gate now owns a fresh evidence root, viewer server, temporary
|
|
45
|
+
persistent profile, and BrowserContext. No PWA test uses the fixed
|
|
46
|
+
`.my-dev-kit-workflow` profile any more.
|
|
47
|
+
5. The gate proves service-worker activation (`registration.active !== null`)
|
|
48
|
+
and current-page control (`navigator.serviceWorker.controller !== null`)
|
|
49
|
+
as separate facts.
|
|
50
|
+
6. It proves the app shell is in the Workbox precache and that no `/api/`
|
|
51
|
+
request is in Cache Storage.
|
|
52
|
+
7. It proves the server is down with a direct Node-side request before the
|
|
53
|
+
offline reload.
|
|
54
|
+
8. After the reload, the shell renders, the evidence list shows its explicit
|
|
55
|
+
unavailable state, and the previously visible evidence identity is absent.
|
|
56
|
+
9. `npm run test:pwa-hard-gate` runs the gate alone. `npm run test:security`
|
|
57
|
+
now ends with it. It passes repeatedly, and the full PWA file, browser suite,
|
|
58
|
+
and security suite pass.
|
|
59
|
+
10. Production PWA behavior is unchanged.
|
|
60
|
+
|
|
61
|
+
Evidence: `docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md` and
|
|
62
|
+
`docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md`.
|
|
63
|
+
|
|
64
|
+
The historical planning background follows.
|
|
65
|
+
|
|
66
|
+
A post-release test-isolation defect has been identified in
|
|
67
|
+
`tests/browser/pwaHardening.test.ts`. The PWA server-down test labeled
|
|
68
|
+
`HARD GATE` passes in the normal full-file/full-suite execution but fails
|
|
69
|
+
when selected independently with Vitest `-t`. The current test shares a
|
|
70
|
+
persistent Chromium context/profile with earlier tests, and its own setup proves
|
|
71
|
+
that a service-worker registration is active without independently proving all
|
|
72
|
+
of the state the server-down experiment needs: that the current page is
|
|
73
|
+
controlled, that the application shell is actually precached, and that no
|
|
74
|
+
historical profile/cache state was inherited.
|
|
75
|
+
|
|
76
|
+
This is currently classified as a test-isolation defect, not a demonstrated
|
|
77
|
+
production PWA regression. The released safety contract remains unchanged:
|
|
78
|
+
application-shell caching may keep the viewer shell available while evidence
|
|
79
|
+
and media remain server-backed, and stale evidence must never be presented as
|
|
80
|
+
current after the server is unavailable. No production PWA code change is
|
|
81
|
+
authorized unless a corrected fresh-state hard-gate experiment first
|
|
82
|
+
demonstrates a real runtime failure.
|
|
83
|
+
|
|
84
|
+
The completed v0.9.1 maintenance patch was governed by the frozen implementation
|
|
85
|
+
plan `docs/plans/v0.9.1-implementation-plan.md`. It made the hard gate own fresh
|
|
86
|
+
disposable evidence/server/browser-profile state, explicitly prove service-worker
|
|
87
|
+
control and shell/API cache preconditions, explicitly prove the server is
|
|
88
|
+
unavailable before the offline reload, and add an isolated execution gate so the
|
|
89
|
+
same test passes by itself as well as inside the full browser and security
|
|
90
|
+
suites.
|
|
13
91
|
|
|
14
92
|
v0.8 (Interactive Local Observation Viewer) is fully implemented, tested,
|
|
15
93
|
formally cross-platform/security validated, and released. All eight v0.8
|
|
@@ -38,13 +116,14 @@ The retained repository contains:
|
|
|
38
116
|
and standardized documentation.
|
|
39
117
|
|
|
40
118
|
The package bin (`src/cli.ts`) now exposes the real current public CLI
|
|
41
|
-
surface described below
|
|
119
|
+
surface described below: the five low-level commands released through `0.6.0`
|
|
42
120
|
(`observe`, `compare`, `approve-baseline`, `save-change-contract`,
|
|
43
|
-
`evaluate-contract`)
|
|
44
|
-
|
|
45
|
-
`
|
|
46
|
-
|
|
47
|
-
|
|
121
|
+
`evaluate-contract`); three reference commands released in `0.7.0`
|
|
122
|
+
(`import-reference`, `approve-reference`, `evaluate-reference-fidelity`);
|
|
123
|
+
`view`, released in `0.8.0`; and the v0.8.1 high-level `init`, `capture`, and
|
|
124
|
+
`check` commands. v0.8.1 also makes `view` project-aware while preserving its
|
|
125
|
+
standalone `--root` form. `src/cli.ts` remains a thin parsing/dispatch/
|
|
126
|
+
presentation boundary; it is no longer the not-implemented placeholder.
|
|
48
127
|
|
|
49
128
|
## v0.1 progress (Batch 1–6; implemented and released as 0.1.0)
|
|
50
129
|
|
|
@@ -546,13 +625,11 @@ binding, or fidelity evaluation yet.
|
|
|
546
625
|
extends outside the owning image's bounds.
|
|
547
626
|
- **Domain** (`src/domain/externalReferenceRegionRelationships.ts`): reuses
|
|
548
627
|
the exact pure geometry predicates `deriveLayoutRelationships` uses for
|
|
549
|
-
runtime targets (now exported additively from `relationships.ts
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
on demand against an artifact's own `regions`, bounded at
|
|
555
|
-
`MAX_REFERENCE_REGION_RELATIONSHIP_RECORDS`.
|
|
628
|
+
runtime targets (now exported additively) from `relationships.ts` rather
|
|
629
|
+
than reimplemented, so reference-region geometry and runtime-target
|
|
630
|
+
geometry can never diverge on the same underlying formula; only the
|
|
631
|
+
geometry-only relationship families apply, since a static image exposes
|
|
632
|
+
no DOM, scroll, or viewport evidence.
|
|
556
633
|
- **Schema**: `ExternalReferenceArtifact` gained one additive, optional
|
|
557
634
|
`regions?: ReferenceRegion[]` field. No schema version bump
|
|
558
635
|
(`EXTERNAL_REFERENCE_SCHEMA_VERSION` remains `'1.0.0'`) - every Prompt 1
|
|
@@ -980,7 +1057,9 @@ most one designated server-side call site, and several (`compareObservations`,
|
|
|
980
1057
|
never called by the viewer at all. The viewer never runs
|
|
981
1058
|
`@dailephd/my-dev-kit`, never mutates target source or any Observer
|
|
982
1059
|
artifact, never persists a new viewer-owned evidence family, and every route
|
|
983
|
-
rejects non-`GET`/`HEAD` methods.
|
|
1060
|
+
rejects non-`GET`/`HEAD` methods. (That was the complete v0.8 surface. v0.9
|
|
1061
|
+
later adds exactly three project-aware authoring `POST` routes. See "v0.9
|
|
1062
|
+
status" below.)
|
|
984
1063
|
|
|
985
1064
|
**Validated on the canonical worktree**: `npm run typecheck`, `npm run
|
|
986
1065
|
lint`, `npm test`, `npm run build`, `npm run check:docs`, `npm run
|
|
@@ -998,25 +1077,132 @@ viewer surface both passed - see the readiness report above, including the
|
|
|
998
1077
|
one security finding it found and fixed (a symlinked-media evidence-root
|
|
999
1078
|
escape in the viewer's media route).
|
|
1000
1079
|
|
|
1080
|
+
## v0.9 status (Human Visual Annotation and Design-Intent Capture) - released as 0.9.0
|
|
1081
|
+
|
|
1082
|
+
v0.9 is implemented against the frozen plan
|
|
1083
|
+
`docs/plans/v0.9-implementation-plan.md` and released as
|
|
1084
|
+
`@dailephd/my-frontend-observer@0.9.0`.
|
|
1085
|
+
|
|
1086
|
+
- **Prompt 1** (`docs/reports/v0.9-batch1-visual-annotation-foundation.md`)
|
|
1087
|
+
added the `VisualAnnotationArtifact` domain (schema `1.0.0`), structured
|
|
1088
|
+
point/rectangle/line/arrow/note marks, runtime and reference coordinate
|
|
1089
|
+
spaces, explicit associations, candidate/confirmed interpretation,
|
|
1090
|
+
deterministic identity, the atomic writer, the canonical reader, the
|
|
1091
|
+
persistence service, and the derived overlay SVG.
|
|
1092
|
+
- **Prompt 2**
|
|
1093
|
+
(`docs/reports/v0.9-batch2-viewer-annotation-authoring-boundary.md`) added
|
|
1094
|
+
viewer discovery of annotations, the source-resolving annotation view
|
|
1095
|
+
route, the verified overlay media role, and the project-aware authoring
|
|
1096
|
+
boundary with `POST /api/annotations`. `view --root` stays read-only.
|
|
1097
|
+
- **Prompt 3**
|
|
1098
|
+
(`docs/reports/v0.9-batch3-runtime-screenshot-annotation-authoring.md`)
|
|
1099
|
+
added runtime screenshot annotation in runtime CSS pixels with zoom, pan,
|
|
1100
|
+
keyboard selection, save, reload, revisions, and stale-parent conflicts.
|
|
1101
|
+
- **Prompt 4**
|
|
1102
|
+
(`docs/reports/v0.9-batch4-external-reference-annotation-authoring.md`)
|
|
1103
|
+
added external-reference annotation in reference-image pixels, candidate
|
|
1104
|
+
region create and refine proposals, candidate reference requirements, and
|
|
1105
|
+
informational and asset-sensitive intent.
|
|
1106
|
+
- **Prompt 5**
|
|
1107
|
+
(`docs/reports/v0.9-batch5-runtime-intent-contract-promotion.md`) added
|
|
1108
|
+
runtime intent, explicit confirmation, promotion of selected confirmed
|
|
1109
|
+
`move`/`resize`/`preserve` intent into a canonical per-change contract
|
|
1110
|
+
(`POST /api/annotations/:handle/promote-contract`), optional explicit
|
|
1111
|
+
project contract activation, and `.tmp-*` discovery exclusion. Confirmed
|
|
1112
|
+
`remove` intent is honestly non-promotable.
|
|
1113
|
+
- **Prompt 6** (`docs/reports/v0.9-batch6-reference-materialization.md`)
|
|
1114
|
+
added materialization of selected confirmed reference regions and
|
|
1115
|
+
requirements into a new imported external-reference revision
|
|
1116
|
+
(`POST /api/annotations/:handle/materialize-reference`). The source is never
|
|
1117
|
+
changed and nothing is approved automatically.
|
|
1118
|
+
- **Prompt 7** (`docs/reports/v0.9-batch7-integrated-acceptance.md`) added the
|
|
1119
|
+
integrated real-Chromium acceptance suite
|
|
1120
|
+
(`tests/browser/v09IntegratedAcceptance.test.ts`), the packed installed
|
|
1121
|
+
annotation smoke (`scripts/ci/runPackedV09AnnotationSmoke.mjs`), its step in
|
|
1122
|
+
the pre-release readiness matrix, and this documentation reconciliation.
|
|
1123
|
+
|
|
1124
|
+
Current versions: package `0.9.0`, viewer protocol `1.3.0`, visual annotation
|
|
1125
|
+
schema `1.0.0`, frontend contract schema `1.0.0`, external-reference schema
|
|
1126
|
+
`1.0.0`. No other schema changed.
|
|
1127
|
+
|
|
1128
|
+
Invariants: annotations are evidence, not contracts. Only selected confirmed
|
|
1129
|
+
supported intent is promoted or materialized, always through the existing
|
|
1130
|
+
canonical contract and external-reference services. The existing contract,
|
|
1131
|
+
reference relationship, adequacy, and fidelity evaluators remain the only
|
|
1132
|
+
source of verdicts. Observer never edits target source, never approves a
|
|
1133
|
+
baseline or reference automatically, and never updates project reference
|
|
1134
|
+
acceptance.
|
|
1135
|
+
|
|
1136
|
+
Validation state: the full local validation suite, the integrated acceptance
|
|
1137
|
+
suite, and all three packed installed-candidate smokes passed locally on
|
|
1138
|
+
Windows. See the Prompt 7 report for exact results. A cross-platform
|
|
1139
|
+
pre-release readiness run passed on Windows, Linux, and macOS for the Prompt 7
|
|
1140
|
+
commit `a78a058` (`docs/reports/v0.9-pre-release-readiness.md`). That run is
|
|
1141
|
+
historical evidence only. It did not contain the demo and tutorial commits
|
|
1142
|
+
described below, so it is not readiness evidence for the final candidate.
|
|
1143
|
+
|
|
1144
|
+
### v0.9 demo and tutorials (release support, not product behavior)
|
|
1145
|
+
|
|
1146
|
+
- **Demo foundation** (commit `59ae009`,
|
|
1147
|
+
`docs/reports/v0.9-demo-foundation.md`): a deterministic demo application
|
|
1148
|
+
in `examples/v09-demo/` with ten stable region names, nine frozen states, a
|
|
1149
|
+
loopback-only demo server, a disposable-target materializer, and a fixed
|
|
1150
|
+
1440x900 reference PNG.
|
|
1151
|
+
- **Tutorial integration** (commit `6895b30`,
|
|
1152
|
+
`docs/reports/v0.9-tutorial-integration.md`): four `TutorialScenarioV1`
|
|
1153
|
+
scenarios in `examples/v09-demo/tutorials/`, a per-run target-contract
|
|
1154
|
+
generator, and a prepare command that builds each disposable target through
|
|
1155
|
+
the canonical `init`, `capture`, contract, and reference commands. The only
|
|
1156
|
+
product change was two optional `data-testid` attributes on the viewer
|
|
1157
|
+
drawing surfaces.
|
|
1158
|
+
- **End-to-end acceptance**
|
|
1159
|
+
(`docs/reports/v0.9-tutorial-end-to-end-acceptance.md`): all four tutorials
|
|
1160
|
+
regenerated from clean targets with `@dailephd/my-dev-kit-lab@0.4.9`,
|
|
1161
|
+
structural and content acceptance, canonical evidence checks, and a full
|
|
1162
|
+
local regression. Scenario narration, reading pauses, and screenshot
|
|
1163
|
+
requests were corrected in this stage. Human visual review of the videos
|
|
1164
|
+
was completed and approved before release.
|
|
1165
|
+
- **Final pre-release readiness**
|
|
1166
|
+
(`docs/reports/v0.9-final-pre-release-readiness.md`, with corrections in
|
|
1167
|
+
`docs/reports/v0.9-final-readiness-corrections.md`): one exact candidate
|
|
1168
|
+
package passed the packed observation, viewer and v0.9 annotation smokes and
|
|
1169
|
+
all four tutorials on Windows, Linux and macOS, using
|
|
1170
|
+
`@dailephd/my-dev-kit-lab@0.4.9` semantic `select-option` for native
|
|
1171
|
+
selects.
|
|
1172
|
+
|
|
1173
|
+
The four scenarios are annotation basics, runtime intent to an active change
|
|
1174
|
+
contract, reference authoring, and reference materialization. After each run
|
|
1175
|
+
the canonical evidence is read directly from the disposable target. The checks
|
|
1176
|
+
prove, for example, that only the two selected clauses were promoted, that
|
|
1177
|
+
`remove` and `inspect` never became clauses, and that a materialized reference
|
|
1178
|
+
revision is `imported`, supersedes its approved source, and reuses the source
|
|
1179
|
+
image bytes unchanged.
|
|
1180
|
+
|
|
1181
|
+
`my-dev-kit-lab` is an external tool invoked through `npx`. It is not an
|
|
1182
|
+
Observer dependency, and Observer has no tutorial command, recorder, subtitle
|
|
1183
|
+
writer, or tutorial manifest schema. `examples/v09-demo/` is excluded from the
|
|
1184
|
+
npm package.
|
|
1185
|
+
|
|
1001
1186
|
## Not implemented
|
|
1002
1187
|
|
|
1003
1188
|
- v0.5 baseline-selection/discovery policy (the caller must supply which
|
|
1004
1189
|
baseline to approve/evaluate against; there is no "find the current
|
|
1005
|
-
baseline" command), source ownership, orchestrator/lab product
|
|
1006
|
-
integration
|
|
1190
|
+
baseline" command), source ownership, and orchestrator/lab product
|
|
1191
|
+
integration all remain unimplemented in this repository.
|
|
1007
1192
|
(v0.6's bounded runtime projection and runtime/static correlation, the
|
|
1008
1193
|
complete v0.7 external-reference correction workflow described above, and
|
|
1009
1194
|
the v0.8 interactive viewer described in "v0.8 status" above, *are* now
|
|
1010
1195
|
implemented.) A CLI surface for Prompt 8's correction workflow specifically
|
|
1011
1196
|
remains unimplemented by design (programmatic-only, library-level use is
|
|
1012
1197
|
the current supported entry point) - see "v0.7 Prompt 8 status" above.
|
|
1013
|
-
|
|
1014
|
-
|
|
1198
|
+
The full graphical human-LLM workflow (v0.10) remains future and
|
|
1199
|
+
unimplemented. Structured visual annotation (v0.9) is implemented and
|
|
1200
|
+
released as `0.9.0` - see "v0.9 status" above.
|
|
1015
1201
|
|
|
1016
1202
|
## Next target
|
|
1017
1203
|
|
|
1018
|
-
v0.1-v0.
|
|
1019
|
-
`0.3.0`, `0.4.0`, `0.5.0`, `0.6.0`, `0.7.0`, `0.8.0`). v0.7 (End-to-End
|
|
1204
|
+
v0.1-v0.9 are implemented, validated, and released (`0.1.0`, `0.2.0`,
|
|
1205
|
+
`0.3.0`, `0.4.0`, `0.5.0`, `0.6.0`, `0.7.0`, `0.8.0`, `0.8.1`, `0.9.0`). v0.7 (End-to-End
|
|
1020
1206
|
Coding-Agent Frontend Change Review) is fully implemented and released: the
|
|
1021
1207
|
external-reference artifact foundation, explicit reference
|
|
1022
1208
|
regions/relationships, selected design requirements/tolerance
|
|
@@ -1035,8 +1221,8 @@ for the completeness audit, and
|
|
|
1035
1221
|
readiness validation that preceded this release.
|
|
1036
1222
|
|
|
1037
1223
|
v0.8 (Interactive Local Observation Viewer) is fully implemented, tested,
|
|
1038
|
-
and released - see "v0.8 status" above. v0.8.1
|
|
1039
|
-
|
|
1224
|
+
and released - see "v0.8 status" above. v0.8.1 was released as
|
|
1225
|
+
`@dailephd/my-frontend-observer@0.8.1`. All
|
|
1040
1226
|
eight implementation batches, the hardened documentation/implementation-
|
|
1041
1227
|
completeness audit, and formal pre-release readiness (cross-platform and
|
|
1042
1228
|
security validation) have passed - see `docs/ROADMAP.md` for v0.8's full
|
|
@@ -1044,6 +1230,9 @@ scope,
|
|
|
1044
1230
|
`docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md`
|
|
1045
1231
|
for the completeness audit, and
|
|
1046
1232
|
`docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md`
|
|
1047
|
-
for the cross-platform readiness validation that preceded this release.
|
|
1048
|
-
|
|
1049
|
-
|
|
1233
|
+
for the cross-platform readiness validation that preceded this release.
|
|
1234
|
+
|
|
1235
|
+
v0.9 (structured visual annotation) is released as
|
|
1236
|
+
`@dailephd/my-frontend-observer@0.9.0` - see "v0.9 status" above. The next
|
|
1237
|
+
target is v0.10 (full graphical human-LLM workflow), which remains future and
|
|
1238
|
+
unimplemented - see `docs/ROADMAP.md`.
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Development
|
|
2
2
|
|
|
3
|
-
The released v0.
|
|
4
|
-
`@dailephd/my-frontend-observer@0.
|
|
3
|
+
The released v0.9.1 package is published as
|
|
4
|
+
`@dailephd/my-frontend-observer@0.9.1` (CLI `my-frontend-observer`). It keeps
|
|
5
|
+
the v0.8.1 project workflow and adds structured visual annotation.
|
|
5
6
|
|
|
6
7
|
The v0.8.1 workflow is exercised through unit and real-Chromium tests. Project fixtures use `init`, `capture baseline`, and `check`; coding-agent consumers use bounded `check --json`. `tests/browser/projectCheckWorkflow.test.ts` covers REVIEW_REQUIRED, contract FAIL-to-PASS, reference FAIL/PASS/BLOCKED, incomparable BLOCKED, current history, and contained acceptance paths. `scripts/ci/runPackedViewerSmoke.mjs` is the single installed-package viewer/project-workflow smoke owner: it repeats REVIEW_REQUIRED and unchanged-contract FAIL-to-PASS before alias-aware viewer proof. Run the full unit, browser, security, build, documentation, and packed-consumer validations before release readiness.
|
|
7
8
|
|
|
@@ -37,6 +38,36 @@ first; it is kept out of `npm test` because it launches a real browser and
|
|
|
37
38
|
is slower. Exact counts drift as the suite grows - run the commands above
|
|
38
39
|
for the current numbers rather than trusting this document.
|
|
39
40
|
|
|
41
|
+
## Hard/security/acceptance gate isolation
|
|
42
|
+
|
|
43
|
+
Tests explicitly designated `HARD GATE`, `SECURITY GATE`, or
|
|
44
|
+
`ACCEPTANCE GATE` must be independently reproducible. A passing full suite is
|
|
45
|
+
not sufficient evidence if the gate itself only succeeds because another test
|
|
46
|
+
ran first or because a prior run left browser/cache/filesystem state behind.
|
|
47
|
+
|
|
48
|
+
For browser-based gates, the gate must own or explicitly establish every
|
|
49
|
+
precondition material to its claim. That includes disposable evidence state,
|
|
50
|
+
servers, browser profiles/contexts, service-worker control, relevant cache
|
|
51
|
+
state, and cleanup. Fixed persistent profiles must not be used as hidden
|
|
52
|
+
fixtures for a hard acceptance claim.
|
|
53
|
+
|
|
54
|
+
v0.9.1 applies this rule to the PWA server-down safety proof in
|
|
55
|
+
`tests/browser/pwaHardening.test.ts`. The hard gate owns its evidence root,
|
|
56
|
+
viewer server, temporary Chromium profile, and context. It must pass when
|
|
57
|
+
selected alone and must also continue to pass in the complete browser and
|
|
58
|
+
security suites.
|
|
59
|
+
|
|
60
|
+
Run the gate by itself with:
|
|
61
|
+
|
|
62
|
+
```powershell
|
|
63
|
+
npm run test:pwa-hard-gate
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Run this command when working on PWA, service-worker, viewer-server, or
|
|
67
|
+
security behavior. It must pass on its own, not only after other tests have
|
|
68
|
+
run. `npm run test:security` also runs it after the rest of the security
|
|
69
|
+
suite. See `docs/plans/v0.9.1-implementation-plan.md`.
|
|
70
|
+
|
|
40
71
|
ROADMAP v0.1 and Project Milestone 1 require browser-level validation once the
|
|
41
72
|
observation capability is planned and implemented. Static checks must not later
|
|
42
73
|
be substituted for that required browser evidence. `npm run test:browser` is
|
|
@@ -187,7 +218,11 @@ This starts a real, loopback-only server serving the actual built PWA. As of
|
|
|
187
218
|
v0.8 (all eight implementation batches), it reads `--root` only for bounded,
|
|
188
219
|
read-only evidence discovery through the existing canonical
|
|
189
220
|
readers/classifiers - it never writes to `--root` or modifies any artifact
|
|
190
|
-
under it.
|
|
221
|
+
under it. The v0.9 annotation authoring surface (implemented, not yet
|
|
222
|
+
released) is available only from the project-aware `node dist/cli.js view`
|
|
223
|
+
inside an initialized project, never from `--root`. Its end-to-end browser
|
|
224
|
+
proof is `tests/browser/v09IntegratedAcceptance.test.ts`, and its packed
|
|
225
|
+
installed proof is `scripts/ci/runPackedV09AnnotationSmoke.mjs`.
|
|
191
226
|
|
|
192
227
|
Unlike `scripts/ci/runPackedObservationSmoke.mjs`, none of these five dev
|
|
193
228
|
smokes is wired into any CI workflow or is a release gate - they are
|
|
@@ -1357,7 +1357,10 @@ The viewer must consume the reusable observation, reference, comparison, contrac
|
|
|
1357
1357
|
|
|
1358
1358
|
It must not contain a second browser-observation implementation, a second reference model, a second binding engine, a second reference-evaluation implementation, a second contract engine, or a second bounded-context builder.
|
|
1359
1359
|
|
|
1360
|
-
##
|
|
1360
|
+
## Implemented capability (v0.9) — Human visual annotation
|
|
1361
|
+
|
|
1362
|
+
Status: implemented and released as `0.9.0`. The intent below is unchanged and
|
|
1363
|
+
remains the capability authority.
|
|
1361
1364
|
|
|
1362
1365
|
A later phase should allow the user to communicate visual intent directly on top of either an observed frontend or an approved external reference.
|
|
1363
1366
|
|
|
@@ -1715,6 +1715,38 @@ Milestone 8 is complete when:
|
|
|
1715
1715
|
|
|
1716
1716
|
## Milestone 9 — Human Visual Annotation and Design-Intent Capture
|
|
1717
1717
|
|
|
1718
|
+
Implementation status: implemented and released as `0.9.0`. The milestone
|
|
1719
|
+
design below is unchanged and remains the capability authority. Milestone 10
|
|
1720
|
+
remains future.
|
|
1721
|
+
|
|
1722
|
+
### v0.9.1 maintenance acceptance note
|
|
1723
|
+
|
|
1724
|
+
v0.9.1 is a bounded maintenance patch over Milestone 9 rather than a new
|
|
1725
|
+
capability milestone. A post-release PWA hard-gate test-isolation defect was
|
|
1726
|
+
found: the server-down safety test can pass only after earlier tests have
|
|
1727
|
+
prepared persistent service-worker/cache state. No production PWA regression has
|
|
1728
|
+
been demonstrated.
|
|
1729
|
+
|
|
1730
|
+
The durable acceptance rule added by this maintenance patch is broader than the
|
|
1731
|
+
single PWA test: any test explicitly designated `HARD GATE`, `SECURITY GATE`,
|
|
1732
|
+
or `ACCEPTANCE GATE` must be able to establish its own prerequisites and pass
|
|
1733
|
+
when selected independently from fresh state. Such a gate must not rely on
|
|
1734
|
+
another test running first, a fixed browser profile, historical cache state, or
|
|
1735
|
+
test ordering. For browser gates, owned servers, evidence roots, browser
|
|
1736
|
+
profiles, contexts, and other state must be scoped and cleaned up explicitly.
|
|
1737
|
+
|
|
1738
|
+
The v0.9.1 correction is test/validation work unless the corrected isolated
|
|
1739
|
+
experiment demonstrates a genuine product failure. In that case the work must
|
|
1740
|
+
stop and be reclassified before production semantics change. The concrete
|
|
1741
|
+
implementation details live in
|
|
1742
|
+
`docs/plans/v0.9.1-implementation-plan.md`; the Milestone 9 product capability
|
|
1743
|
+
design below remains unchanged.
|
|
1744
|
+
|
|
1745
|
+
Status: the maintenance invariant is implemented and released in v0.9.1 for the PWA hard gate, which
|
|
1746
|
+
now passes alone through `npm run test:pwa-hard-gate` and inside the full
|
|
1747
|
+
browser and security suites. No genuine product failure was found. Release of
|
|
1748
|
+
v0.9.1 is released and published.
|
|
1749
|
+
|
|
1718
1750
|
### Objective
|
|
1719
1751
|
|
|
1720
1752
|
Add visual human intent to the already working Milestone 7 coding-agent/reference workflow through the Milestone 8 viewer.
|
package/docs/PROJECT_OVERVIEW.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Project Overview
|
|
2
2
|
|
|
3
|
-
The repository contains the complete v0.
|
|
4
|
-
`
|
|
5
|
-
|
|
3
|
+
The repository contains the complete v0.9.1 release, published as
|
|
4
|
+
`@dailephd/my-frontend-observer@0.9.1` under the MIT license. It hardens
|
|
5
|
+
independent PWA security acceptance while preserving the structured visual
|
|
6
|
+
annotation added to the v0.8.1 project workflow (`init`,
|
|
7
|
+
`capture`, `check`, project-aware `view`).
|
|
6
8
|
|
|
7
9
|
`my-frontend-observer` is the rendered browser/runtime evidence producer in
|
|
8
10
|
the my-dev-kit ecosystem. It addresses the gap between source-level evidence
|
|
@@ -28,13 +30,16 @@ Region Identity; v0.3, Runtime Scrolling, Overflow, and Visibility Behavior;
|
|
|
28
30
|
v0.4, Layout Relationships, Dependency Evidence, and Before/After
|
|
29
31
|
Comparison; v0.5, Executable Frontend Contracts and Explicit Change Scope;
|
|
30
32
|
v0.6, Bounded Agent Context and Native my-dev-kit Ecosystem Integration;
|
|
31
|
-
v0.7, End-to-End Coding-Agent Frontend Change Review;
|
|
32
|
-
Local Observation Viewer,
|
|
33
|
-
|
|
33
|
+
v0.7, End-to-End Coding-Agent Frontend Change Review; v0.8, Interactive
|
|
34
|
+
Local Observation Viewer; v0.8.1, Project Workflow CLI and Human-Readable
|
|
35
|
+
Evidence Aliases; and v0.9, Human Visual Annotation and Design-Intent Capture,
|
|
36
|
+
are released and published to npm. The current package version is `0.9.1` as
|
|
37
|
+
`@dailephd/my-frontend-observer` (observation schema `1.2.0`, comparison schema
|
|
34
38
|
`1.0.0`, frontend contract schema `1.0.0`, evaluation artifact schema `1.0.0`,
|
|
35
|
-
bounded-agent-context schema `1.0.0`, external-reference schema `1.0.0
|
|
36
|
-
released package was validated as a
|
|
37
|
-
environment across Windows, Linux, and
|
|
39
|
+
bounded-agent-context schema `1.0.0`, external-reference schema `1.0.0`,
|
|
40
|
+
visual annotation schema `1.0.0`). The released package was validated as a
|
|
41
|
+
packed npm tarball in a clean consumer environment across Windows, Linux, and
|
|
42
|
+
macOS.
|
|
38
43
|
|
|
39
44
|
The released low-level command surface remains artifact-oriented: a real
|
|
40
45
|
`observe` command launches Chromium, enforces loopback-only safety, captures
|
|
@@ -81,8 +86,8 @@ engines used by the CLI, never a second implementation of them. See
|
|
|
81
86
|
and `docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md`
|
|
82
87
|
for the implementation and release evidence.
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
89
|
+
v0.8.1 was a project-workflow CLI usability patch published as
|
|
90
|
+
`@dailephd/my-frontend-observer@0.8.1`. It does
|
|
86
91
|
not introduce a new evidence model. It adds project configuration,
|
|
87
92
|
human-readable aliases, managed project-local Observer state, and a small
|
|
88
93
|
high-level `init` / `capture` / `check` / project-aware `view` workflow above
|
|
@@ -92,10 +97,33 @@ artifact identifiers during ordinary use. Existing low-level commands remain
|
|
|
92
97
|
supported. The frozen plan is
|
|
93
98
|
`docs/plans/v0.8.1-cli-usability-patch-plan.md`.
|
|
94
99
|
|
|
95
|
-
|
|
96
|
-
annotation
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
The latest published release is v0.9.1. v0.9 added structured
|
|
101
|
+
visual annotation to the project-aware viewer for both runtime observations and
|
|
102
|
+
external references. People draw marks, explicitly associate them, and confirm
|
|
103
|
+
structured intent. Selected confirmed runtime intent can become a normal
|
|
104
|
+
per-change contract, and selected confirmed reference intent can become a new
|
|
105
|
+
imported external-reference revision. The existing contract and reference
|
|
106
|
+
evaluators stay authoritative. It followed the frozen plan in
|
|
107
|
+
`docs/plans/v0.9-implementation-plan.md`, grounded by
|
|
108
|
+
`docs/reports/v0.9-architecture-retrieval.md`.
|
|
109
|
+
The repository-owned deterministic demo and its four tutorial scenarios
|
|
110
|
+
(`examples/v09-demo/`, recorded by the external
|
|
111
|
+
`@dailephd/my-dev-kit-lab@0.4.9` tool) passed final cross-platform readiness
|
|
112
|
+
with the release. They are release support and documentation, not product
|
|
113
|
+
behavior, and they are not shipped in the npm package.
|
|
114
|
+
|
|
115
|
+
The v0.9.1 maintenance release hardens the
|
|
116
|
+
PWA server-down hard acceptance test so the gate is reproducible from a fresh
|
|
117
|
+
browser profile and fresh test-owned state. PWA hard/security acceptance no
|
|
118
|
+
longer depends on prior test order or persistent browser state, and
|
|
119
|
+
`npm run test:security` now also runs the gate by itself through
|
|
120
|
+
`npm run test:pwa-hard-gate`. This was a test-isolation correction, not a
|
|
121
|
+
production PWA defect. No production behavior changed. The frozen concrete plan
|
|
122
|
+
is `docs/plans/v0.9.1-implementation-plan.md`.
|
|
123
|
+
|
|
124
|
+
v0.10 remains future and unimplemented and completes the visual human-LLM
|
|
125
|
+
workflow on top of the v0.9 annotation model and v0.8.1 high-level acceptance
|
|
126
|
+
surface.
|
|
99
127
|
|
|
100
128
|
The revised dependency path reaches practical coding-agent use before graphical
|
|
101
129
|
interaction and keeps later visual work on the same canonical evidence system:
|
|
@@ -109,9 +137,9 @@ runtime observation and stable identity
|
|
|
109
137
|
+ reference-vs-candidate structured fidelity evaluation
|
|
110
138
|
+ controlled end-to-end correction workflow (released as 0.7.0)
|
|
111
139
|
→ interactive viewer with reference/candidate inspection (released as 0.8.0)
|
|
112
|
-
→ project workflow CLI + human-readable evidence aliases (
|
|
140
|
+
→ project workflow CLI + human-readable evidence aliases (released as 0.8.1)
|
|
113
141
|
→ structured visual annotation on runtime screenshots and external references
|
|
114
|
-
(
|
|
142
|
+
(released as 0.9.0)
|
|
115
143
|
→ full visual human-LLM workflow with actual-frontend-driven and
|
|
116
144
|
reference-driven entry modes (planned v0.10)
|
|
117
145
|
```
|
|
@@ -145,6 +173,19 @@ Repository-local authorities and navigation:
|
|
|
145
173
|
release state.
|
|
146
174
|
- [plans/v0.8.1-cli-usability-patch-plan.md](plans/v0.8.1-cli-usability-patch-plan.md)
|
|
147
175
|
freezes the concrete implementation plan for the v0.8.1 patch.
|
|
176
|
+
- [plans/v0.9-implementation-plan.md](plans/v0.9-implementation-plan.md)
|
|
177
|
+
freezes the concrete implementation architecture, seven ordered batches,
|
|
178
|
+
gates, and validation expectations for v0.9. It is planning authority only;
|
|
179
|
+
the v0.9 implementation state is recorded in CURRENT_STATE.md and the
|
|
180
|
+
`reports/v0.9-*.md` reports.
|
|
181
|
+
- [plans/v0.9.1-implementation-plan.md](plans/v0.9.1-implementation-plan.md)
|
|
182
|
+
freezes the bounded maintenance plan for independent PWA hard-gate
|
|
183
|
+
reproduction, fresh browser-profile ownership, explicit service-worker/cache
|
|
184
|
+
precondition proof, and isolated-gate validation. It does not authorize a
|
|
185
|
+
production PWA change unless the corrected experiment demonstrates a real
|
|
186
|
+
product defect.
|
|
187
|
+
- [reports/v0.9-architecture-retrieval.md](reports/v0.9-architecture-retrieval.md)
|
|
188
|
+
preserves the bounded current-source retrieval that grounded the v0.9 plan.
|
|
148
189
|
|
|
149
190
|
Historical greenfield artifacts and reports are retained as evidence that an
|
|
150
191
|
earlier run overreached into v0.1; they are not current-state authority.
|