@dailephd/my-frontend-observer 0.9.0 → 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 +17 -0
- package/README.md +8 -6
- package/docs/CI_CD.md +22 -1
- package/docs/COMMANDS.md +1 -1
- package/docs/CURRENT_STATE.md +70 -3
- package/docs/DEVELOPMENT.md +32 -2
- package/docs/PROJECT_MILESTONES.md +28 -0
- package/docs/PROJECT_OVERVIEW.md +22 -5
- package/docs/RELEASE.md +4 -3
- package/docs/ROADMAP.md +54 -2
- package/docs/WORKFLOWS.md +1 -1
- package/docs/plans/v0.9.1-implementation-plan.md +468 -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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
Future development.
|
|
6
|
+
|
|
7
|
+
## 0.9.1 - 2026-09-21
|
|
8
|
+
|
|
9
|
+
Hardened PWA security-acceptance reproducibility as a maintenance release.
|
|
10
|
+
|
|
11
|
+
- Hardened the PWA server-down HARD GATE from fresh test-owned state, removing
|
|
12
|
+
hidden dependence on prior test order and persistent Chromium profile state.
|
|
13
|
+
- Corrected the false-ready service-worker predicate and separately proved
|
|
14
|
+
active registration and current-client control.
|
|
15
|
+
- Proved shell-cache readiness, `/api/` exclusion from Cache Storage,
|
|
16
|
+
origin-server unavailability, offline shell reload, and stale-evidence
|
|
17
|
+
absence.
|
|
18
|
+
- Added permanent `npm run test:pwa-hard-gate` and integrated it into
|
|
19
|
+
`npm run test:security`.
|
|
20
|
+
- No production PWA behavior, schema, or dependency changed.
|
|
21
|
+
|
|
5
22
|
## 0.9.0 - 2026-09-21
|
|
6
23
|
|
|
7
24
|
v0.9, Human Visual Annotation and Design-Intent Capture. Structured visual
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# my-frontend-observer
|
|
2
2
|
|
|
3
|
-
## Common project workflow (v0.9.
|
|
3
|
+
## Common project workflow (v0.9.1)
|
|
4
4
|
|
|
5
5
|
```powershell
|
|
6
6
|
my-frontend-observer init --url http://127.0.0.1:3000 --target app=#app
|
|
@@ -17,9 +17,10 @@ my-frontend-observer view
|
|
|
17
17
|
`1`, `2`, or `3` for `PASS`, `FAIL`, `REVIEW_REQUIRED`, or `BLOCKED`.
|
|
18
18
|
Canonical hashes remain available in viewer details and persisted provenance,
|
|
19
19
|
but are not normal workflow command inputs. The existing low-level commands
|
|
20
|
-
remain supported. v0.9.
|
|
20
|
+
remain supported. v0.9.1 is the current published release.
|
|
21
21
|
|
|
22
|
-
v0.9.
|
|
22
|
+
v0.9.1 is a maintenance release that hardens independent PWA security-gate
|
|
23
|
+
validation without changing production PWA behavior.
|
|
23
24
|
|
|
24
25
|
`my-frontend-observer` is the local-first rendered browser/runtime evidence
|
|
25
26
|
producer in the my-dev-kit ecosystem. Its durable product purpose is defined
|
|
@@ -28,8 +29,9 @@ composition is documented in the [my-dev-kit ecosystem guide](https://github.com
|
|
|
28
29
|
|
|
29
30
|
## Current status
|
|
30
31
|
|
|
31
|
-
`v0.9.
|
|
32
|
-
published release. It
|
|
32
|
+
`v0.9.1`, PWA Hard-Gate Isolation and Reproducible Security Acceptance, is the
|
|
33
|
+
current published release. It preserves the `v0.9.0` Human Visual Annotation
|
|
34
|
+
and Design-Intent Capture release and builds on `v0.8.1`, Project Workflow CLI and
|
|
33
35
|
Human-Readable Evidence Aliases, `v0.8.0`, Interactive Local Observation
|
|
34
36
|
Viewer, and `v0.7.0`, End-to-End Coding-Agent Frontend Change
|
|
35
37
|
Review, `v0.6.0`, Bounded Agent Context and Native my-dev-kit Ecosystem
|
|
@@ -347,7 +349,7 @@ Planning authorities:
|
|
|
347
349
|
intent and responsibility boundaries.
|
|
348
350
|
- [Project Milestones](docs/PROJECT_MILESTONES.md): complete ordered capability
|
|
349
351
|
design and cross-milestone rules.
|
|
350
|
-
- [ROADMAP](docs/ROADMAP.md): version-level requirements; v0.1-v0.9.
|
|
352
|
+
- [ROADMAP](docs/ROADMAP.md): version-level requirements; v0.1-v0.9.1 are
|
|
351
353
|
released; v0.10 remains future.
|
|
352
354
|
- [Current State](docs/CURRENT_STATE.md): retained scaffold and release state.
|
|
353
355
|
|
package/docs/CI_CD.md
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
# CI/CD
|
|
2
2
|
|
|
3
|
-
CI interprets `check` as PASS `0`, FAIL `1`, REVIEW_REQUIRED `2`, or BLOCKED `3`. The released package is `@dailephd/my-frontend-observer@0.9.
|
|
3
|
+
CI interprets `check` as PASS `0`, FAIL `1`, REVIEW_REQUIRED `2`, or BLOCKED `3`. The released package is `@dailephd/my-frontend-observer@0.9.1`; its CLI remains `my-frontend-observer`. Packed readiness installs one exact tarball and runs `runPackedViewerSmoke.mjs` as the single project/viewer smoke owner for `init`, `capture`, bounded `check --json` REVIEW_REQUIRED and unchanged-contract FAIL-to-PASS, alias-aware project `view`, and viewer security. `runPackedObservationSmoke.mjs` remains the lower-level legacy observation smoke.
|
|
4
|
+
|
|
5
|
+
## Gate isolation invariant
|
|
6
|
+
|
|
7
|
+
Cross-platform/full-suite success does not by itself prove that a security or
|
|
8
|
+
acceptance gate is independent. Any test explicitly labeled `HARD GATE`,
|
|
9
|
+
`SECURITY GATE`, or `ACCEPTANCE GATE` must also be able to run from fresh
|
|
10
|
+
state without relying on earlier test order, a previously warmed service-worker
|
|
11
|
+
cache, a persistent browser profile from an earlier run, or another test's
|
|
12
|
+
server/evidence setup.
|
|
13
|
+
|
|
14
|
+
v0.9.1 applies this rule to the PWA server-down
|
|
15
|
+
hard gate. `npm run test:pwa-hard-gate` runs that gate by itself. It is a
|
|
16
|
+
separate required proof in addition to the normal full-file execution in
|
|
17
|
+
`npm run test:browser` and `npm run test:security`.
|
|
18
|
+
|
|
19
|
+
`npm run test:security` now ends with `npm run test:pwa-hard-gate`. The
|
|
20
|
+
`candidate` job in `.github/workflows/pre-release-readiness.yml` already runs
|
|
21
|
+
`npm run test:security`, so release-readiness candidate validation receives
|
|
22
|
+
the isolated gate automatically. The workflow YAML did not need to change. The
|
|
23
|
+
released v0.9.1 suite contains the corrected isolated gate. No production PWA
|
|
24
|
+
regression was found.
|
|
4
25
|
|
|
5
26
|
A GitHub Actions pre-release readiness workflow exists at
|
|
6
27
|
`.github/workflows/pre-release-readiness.yml` (triggered manually via
|
package/docs/COMMANDS.md
CHANGED
|
@@ -783,7 +783,7 @@ the annotation workflow. The rest of this section describes the inspection
|
|
|
783
783
|
surface, which is unchanged.
|
|
784
784
|
|
|
785
785
|
**Current status: viewer behavior is released as package
|
|
786
|
-
`@dailephd/my-frontend-observer@0.9.
|
|
786
|
+
`@dailephd/my-frontend-observer@0.9.1`.** Starts one
|
|
787
787
|
loopback-only Node viewer server and serves the same React + TypeScript +
|
|
788
788
|
Vite application to a normal browser or an installed Progressive Web App.
|
|
789
789
|
`--root` is used as a bounded, read-only evidence-discovery root: the server
|
package/docs/CURRENT_STATE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Current State
|
|
2
2
|
|
|
3
|
-
v0.9.
|
|
3
|
+
v0.9.1 is released and published as `@dailephd/my-frontend-observer@0.9.1`.
|
|
4
4
|
v0.9 (Human Visual Annotation and Design-Intent Capture) adds structured visual
|
|
5
5
|
annotation to the project-aware viewer. It passed integrated real-Chromium
|
|
6
6
|
acceptance and final exact-candidate pre-release readiness on Windows, Linux
|
|
@@ -12,8 +12,10 @@ repository also holds a deterministic demo and four tutorial scenarios for
|
|
|
12
12
|
v0.9, recorded by the external `@dailephd/my-dev-kit-lab@0.4.9` tool. See
|
|
13
13
|
"v0.9 status" below.
|
|
14
14
|
|
|
15
|
-
The project is published at package version `0.9.
|
|
16
|
-
|
|
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`;
|
|
17
19
|
comparison schema `1.0.0`; frontend contract schema `1.0.0`; evaluation
|
|
18
20
|
artifact schema `1.0.0`; bounded-agent-context schema `1.0.0`;
|
|
19
21
|
external-reference schema `1.0.0`; visual annotation schema `1.0.0`). v0.9.0
|
|
@@ -22,6 +24,71 @@ evidence schema version. v0.8.1 did not change any canonical evidence schema
|
|
|
22
24
|
version either; see "v0.8 status" below for the final, complete v0.8 viewer
|
|
23
25
|
state.
|
|
24
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.
|
|
91
|
+
|
|
25
92
|
v0.8 (Interactive Local Observation Viewer) is fully implemented, tested,
|
|
26
93
|
formally cross-platform/security validated, and released. All eight v0.8
|
|
27
94
|
implementation batches, the hardened documentation/implementation-
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Development
|
|
2
2
|
|
|
3
|
-
The released v0.9.
|
|
4
|
-
`@dailephd/my-frontend-observer@0.9.
|
|
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
5
|
the v0.8.1 project workflow and adds structured visual annotation.
|
|
6
6
|
|
|
7
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.
|
|
@@ -38,6 +38,36 @@ first; it is kept out of `npm test` because it launches a real browser and
|
|
|
38
38
|
is slower. Exact counts drift as the suite grows - run the commands above
|
|
39
39
|
for the current numbers rather than trusting this document.
|
|
40
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
|
+
|
|
41
71
|
ROADMAP v0.1 and Project Milestone 1 require browser-level validation once the
|
|
42
72
|
observation capability is planned and implemented. Static checks must not later
|
|
43
73
|
be substituted for that required browser evidence. `npm run test:browser` is
|
|
@@ -1719,6 +1719,34 @@ Implementation status: implemented and released as `0.9.0`. The milestone
|
|
|
1719
1719
|
design below is unchanged and remains the capability authority. Milestone 10
|
|
1720
1720
|
remains future.
|
|
1721
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
|
+
|
|
1722
1750
|
### Objective
|
|
1723
1751
|
|
|
1724
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,9 @@
|
|
|
1
1
|
# Project Overview
|
|
2
2
|
|
|
3
|
-
The repository contains the complete v0.9.
|
|
4
|
-
`@dailephd/my-frontend-observer@0.9.
|
|
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`,
|
|
6
7
|
`capture`, `check`, project-aware `view`).
|
|
7
8
|
|
|
8
9
|
`my-frontend-observer` is the rendered browser/runtime evidence producer in
|
|
@@ -32,7 +33,7 @@ v0.6, Bounded Agent Context and Native my-dev-kit Ecosystem Integration;
|
|
|
32
33
|
v0.7, End-to-End Coding-Agent Frontend Change Review; v0.8, Interactive
|
|
33
34
|
Local Observation Viewer; v0.8.1, Project Workflow CLI and Human-Readable
|
|
34
35
|
Evidence Aliases; and v0.9, Human Visual Annotation and Design-Intent Capture,
|
|
35
|
-
are released and published to npm. The current package version is `0.9.
|
|
36
|
+
are released and published to npm. The current package version is `0.9.1` as
|
|
36
37
|
`@dailephd/my-frontend-observer` (observation schema `1.2.0`, comparison schema
|
|
37
38
|
`1.0.0`, frontend contract schema `1.0.0`, evaluation artifact schema `1.0.0`,
|
|
38
39
|
bounded-agent-context schema `1.0.0`, external-reference schema `1.0.0`,
|
|
@@ -96,7 +97,7 @@ artifact identifiers during ordinary use. Existing low-level commands remain
|
|
|
96
97
|
supported. The frozen plan is
|
|
97
98
|
`docs/plans/v0.8.1-cli-usability-patch-plan.md`.
|
|
98
99
|
|
|
99
|
-
The latest published release is v0.9.
|
|
100
|
+
The latest published release is v0.9.1. v0.9 added structured
|
|
100
101
|
visual annotation to the project-aware viewer for both runtime observations and
|
|
101
102
|
external references. People draw marks, explicitly associate them, and confirm
|
|
102
103
|
structured intent. Selected confirmed runtime intent can become a normal
|
|
@@ -110,6 +111,16 @@ The repository-owned deterministic demo and its four tutorial scenarios
|
|
|
110
111
|
`@dailephd/my-dev-kit-lab@0.4.9` tool) passed final cross-platform readiness
|
|
111
112
|
with the release. They are release support and documentation, not product
|
|
112
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
|
+
|
|
113
124
|
v0.10 remains future and unimplemented and completes the visual human-LLM
|
|
114
125
|
workflow on top of the v0.9 annotation model and v0.8.1 high-level acceptance
|
|
115
126
|
surface.
|
|
@@ -167,6 +178,12 @@ Repository-local authorities and navigation:
|
|
|
167
178
|
gates, and validation expectations for v0.9. It is planning authority only;
|
|
168
179
|
the v0.9 implementation state is recorded in CURRENT_STATE.md and the
|
|
169
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.
|
|
170
187
|
- [reports/v0.9-architecture-retrieval.md](reports/v0.9-architecture-retrieval.md)
|
|
171
188
|
preserves the bounded current-source retrieval that grounded the v0.9 plan.
|
|
172
189
|
|
package/docs/RELEASE.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Release
|
|
2
2
|
|
|
3
|
-
`v0.9.
|
|
4
|
-
published to npm as `@dailephd/my-frontend-observer`.
|
|
3
|
+
`v0.9.1` (PWA Hard-Gate Isolation and Reproducible Security Acceptance) is
|
|
4
|
+
released and published to npm as `@dailephd/my-frontend-observer`. This
|
|
5
|
+
maintenance release adds
|
|
5
6
|
structured visual annotation of runtime observations and external references
|
|
6
7
|
to the project-aware viewer, selected promotion of confirmed runtime intent
|
|
7
8
|
into canonical change contracts, and selected materialization of confirmed
|
|
@@ -14,7 +15,7 @@ independently from the npm package version.
|
|
|
14
15
|
|
|
15
16
|
Observation, comparison, frontend contract, evaluation artifact,
|
|
16
17
|
bounded-agent-context, external-reference, visual annotation, and package
|
|
17
|
-
version all remain separate: package version is `0.9.
|
|
18
|
+
version all remain separate: package version is `0.9.1`; observation schema is
|
|
18
19
|
`1.2.0`, comparison schema is `1.0.0`, frontend contract schema is `1.0.0`,
|
|
19
20
|
evaluation artifact schema is `1.0.0`, bounded-agent-context schema is
|
|
20
21
|
`1.0.0`, external-reference schema is `1.0.0`, and visual annotation schema is
|
package/docs/ROADMAP.md
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
# Roadmap
|
|
2
2
|
|
|
3
|
-
v0.9 status: released
|
|
4
|
-
`@dailephd/my-frontend-observer@0.9.
|
|
3
|
+
v0.9.1 status: released and published to npm as
|
|
4
|
+
`@dailephd/my-frontend-observer@0.9.1`. It is a bounded maintenance patch that
|
|
5
|
+
corrects the PWA hard-gate test-isolation defect discovered after the v0.9.0
|
|
6
|
+
release. No production PWA regression has been demonstrated. v0.10 remains
|
|
7
|
+
future work.
|
|
5
8
|
|
|
6
9
|
This is a version-level specification, not an implementation checklist.
|
|
7
10
|
Concrete steps and sequencing are designed only when a version begins, after
|
|
@@ -890,6 +893,55 @@ seven implementation prompts, and batch gates live in
|
|
|
890
893
|
version-level decisions above plus current repository inspection; this roadmap
|
|
891
894
|
intentionally does not duplicate batch-by-batch instructions.
|
|
892
895
|
|
|
896
|
+
## v0.9.1 — PWA Hard-Gate Isolation and Reproducible Security Acceptance
|
|
897
|
+
|
|
898
|
+
Current status: released as `0.9.1`. The concrete implementation plan remains
|
|
899
|
+
frozen in `docs/plans/v0.9.1-implementation-plan.md`.
|
|
900
|
+
This patch is maintenance work over the released v0.9.0 codebase and does not
|
|
901
|
+
change the v0.9 product capability model.
|
|
902
|
+
|
|
903
|
+
Objective/problem: make the PWA server-down hard acceptance proof genuinely
|
|
904
|
+
self-contained. The released test in `tests/browser/pwaHardening.test.ts`
|
|
905
|
+
passes in the normal full-file/full-suite order but fails when selected alone
|
|
906
|
+
because it can inherit service-worker/cache state from earlier tests and from a
|
|
907
|
+
fixed persistent Chromium profile. That is a test-isolation defect. It is not
|
|
908
|
+
evidence that the released PWA serves stale evidence or otherwise violates the
|
|
909
|
+
runtime safety contract.
|
|
910
|
+
|
|
911
|
+
Required capabilities: the hard gate must create and own fresh disposable
|
|
912
|
+
evidence state, a fresh viewer server, a fresh persistent Chromium profile, a
|
|
913
|
+
fresh BrowserContext, and its page; independently establish service-worker
|
|
914
|
+
registration and activation; prove that the current page is controlled by the
|
|
915
|
+
worker; prove the application shell needed for offline reload is precached;
|
|
916
|
+
prove `/api/` evidence responses are absent from Cache Storage; prove live
|
|
917
|
+
evidence is visible before shutdown; prove the server/network is actually
|
|
918
|
+
unavailable after shutdown; reload from the precached shell; then prove an
|
|
919
|
+
explicit unavailable state is shown and previously fetched evidence is absent.
|
|
920
|
+
All owned resources must be cleaned up even on failure.
|
|
921
|
+
|
|
922
|
+
Constraints and contracts: the hard/security acceptance experiment must not
|
|
923
|
+
depend on another `it()`, test order, a previously warmed Cache Storage, or a
|
|
924
|
+
profile retained under `.my-dev-kit-workflow`. Tests explicitly designated
|
|
925
|
+
`HARD GATE`, `SECURITY GATE`, or `ACCEPTANCE GATE` must be independently
|
|
926
|
+
runnable from fresh state. The dedicated isolated hard-gate command and the
|
|
927
|
+
normal full browser/security suites must exercise the same product behavior.
|
|
928
|
+
|
|
929
|
+
Exclusions: no production PWA/service-worker semantic change is authorized
|
|
930
|
+
merely to make the test green; no new user-facing feature, evidence schema,
|
|
931
|
+
CLI command, package dependency, tutorial behavior, or v0.10 capability belongs
|
|
932
|
+
in this patch. If the corrected clean-state experiment exposes a genuine
|
|
933
|
+
runtime defect, implementation must stop and reclassify the work as a product
|
|
934
|
+
defect before changing production behavior.
|
|
935
|
+
|
|
936
|
+
Acceptance: the PWA hard gate passes when run by itself from a fresh process and
|
|
937
|
+
fresh temporary profile, passes in the complete `pwaHardening.test.ts` file,
|
|
938
|
+
and passes in the normal browser/security validation chain. The test must prove
|
|
939
|
+
its own service-worker control, shell-cache, API-cache-exclusion, network-down,
|
|
940
|
+
and stale-evidence-absence prerequisites rather than infer them from another
|
|
941
|
+
test. Temporary browser profiles and evidence roots must be removed after both
|
|
942
|
+
success and failure. Release-readiness validation must preserve the v0.9.0
|
|
943
|
+
product/package behavior while proving the stronger test-isolation invariant.
|
|
944
|
+
|
|
893
945
|
## v0.10 — Full Visual Human–LLM Frontend Change Workflow
|
|
894
946
|
|
|
895
947
|
Objective/problem: complete the visual communication branch by combining the
|
package/docs/WORKFLOWS.md
CHANGED
|
@@ -764,7 +764,7 @@ external-reference services.
|
|
|
764
764
|
|
|
765
765
|
## Current release workflow
|
|
766
766
|
|
|
767
|
-
The published package is `@dailephd/my-frontend-observer@0.9.
|
|
767
|
+
The published package is `@dailephd/my-frontend-observer@0.9.1`; install it
|
|
768
768
|
with npm and use the `my-frontend-observer` CLI. The ordinary workflow is
|
|
769
769
|
`init`, `capture baseline`, `check baseline`, then `view`. Existing sections
|
|
770
770
|
below retain the historical low-level and viewer workflows for compatibility.
|