docs(01-14): state + roadmap + requirements — Plan 01-14 closure
- STATE.md: advance plan counter, update progress (12/14 = 86%), record metric (Plan 01-14: 49m, 1 task, 7 files), add decision, record session. - ROADMAP.md: update phase-01 progress table (plan_count=14, summary_count=12). - REQUIREMENTS.md: mark REQ-video-ring-buffer complete (final closure for the Phase-01 video-pipeline charter). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ Requirements for the Phase 1 SPEC. Each maps to one phase in ROADMAP.md.
|
|||||||
|
|
||||||
### Video
|
### Video
|
||||||
|
|
||||||
- [ ] **REQ-video-ring-buffer**: The extension maintains an in-memory ring
|
- [x] **REQ-video-ring-buffer**: The extension maintains an in-memory ring
|
||||||
buffer containing the most recent 30 seconds of captured video. AMENDED in
|
buffer containing the most recent 30 seconds of captured video. AMENDED in
|
||||||
Phase 01: video is acquired via `navigator.mediaDevices.getDisplayMedia()`
|
Phase 01: video is acquired via `navigator.mediaDevices.getDisplayMedia()`
|
||||||
invoked from the offscreen document (with `chrome.offscreen.Reason.DISPLAY_MEDIA`),
|
invoked from the offscreen document (with `chrome.offscreen.Reason.DISPLAY_MEDIA`),
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ directory + `vite.config.ts` inline string + `src/background/`.
|
|||||||
- [x] 01-11-PLAN.md — UAT harness Approach-A spike (PIVOTED to 01-13; carries forward Wave 0 infrastructure + Tier-1 grep gate; falsified hypotheses recorded)
|
- [x] 01-11-PLAN.md — UAT harness Approach-A spike (PIVOTED to 01-13; carries forward Wave 0 infrastructure + Tier-1 grep gate; falsified hypotheses recorded)
|
||||||
- [ ] 01-12-PLAN.md — Design integration (R2 Lora self-host, src/shared/tokens.css canonical, 8 i18n strings + 4 supporting keys, branded Loom icons, manifest i18n; harness A18-A22)
|
- [ ] 01-12-PLAN.md — Design integration (R2 Lora self-host, src/shared/tokens.css canonical, 8 i18n strings + 4 supporting keys, branded Loom icons, manifest i18n; harness A18-A22)
|
||||||
- [x] 01-13-PLAN.md — UAT harness via Approach B (extension-internal-page driver + offscreen synthetic stream; 15/15 GREEN; Plan 01-09 functional closure)
|
- [x] 01-13-PLAN.md — UAT harness via Approach B (extension-internal-page driver + offscreen synthetic stream; 15/15 GREEN; Plan 01-09 functional closure)
|
||||||
- [ ] 01-14-PLAN.md — Picker narrowing via monitorTypeSurfaces:'include' (Chrome 119+ picker enhancement; A23 harness regression)
|
- [x] 01-14-PLAN.md — Picker narrowing via monitorTypeSurfaces:'include' (Chrome 119+ picker enhancement; A23 harness regression)
|
||||||
|
|
||||||
### Phase 2: Stabilize DOM + event capture privacy
|
### Phase 2: Stabilize DOM + event capture privacy
|
||||||
**Goal**: rrweb captures DOM events on typical pages and the user-event log
|
**Goal**: rrweb captures DOM events on typical pages and the user-event log
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v2.0.0
|
milestone: v2.0.0
|
||||||
milestone_name: milestone
|
milestone_name: milestone
|
||||||
status: executing
|
status: verifying
|
||||||
stopped_at: Install-flow researcher returned 2026-05-19 (01-10-RESEARCH.md, 1092 lines); HIGH-confidence verdicts — both operator asks INFEASIBLE in unmanaged Chrome per W3C Screen Capture spec §5.1; recommendation = keep Plan 01-10's informational CTA charter; enhancement candidate = `monitorTypeSurfaces:'include'` for Plan 01-09 amendment. Awaiting orchestrator decision on 3 open questions before spawning 01-10 + 01-12 executors.
|
stopped_at: Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
||||||
last_updated: "2026-05-19T16:30:00Z"
|
last_updated: "2026-05-19T19:41:05.778Z"
|
||||||
last_activity: 2026-05-19
|
last_activity: 2026-05-19
|
||||||
progress:
|
progress:
|
||||||
total_phases: 5
|
total_phases: 5
|
||||||
completed_phases: 0
|
completed_phases: 0
|
||||||
total_plans: 10
|
total_plans: 14
|
||||||
completed_plans: 12
|
completed_plans: 12
|
||||||
percent: 96
|
percent: 86
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@@ -30,10 +30,10 @@ no server, no password leaks.
|
|||||||
Phase: 1 of 5 (Stabilize Video Pipeline) — Plan 01-09 closed-by-harness 2026-05-19; awaiting Plan 01-13 operator brand/design ack + Plan 01-10 welcome tab + Plan 01-12 design integration (designer reply pending)
|
Phase: 1 of 5 (Stabilize Video Pipeline) — Plan 01-09 closed-by-harness 2026-05-19; awaiting Plan 01-13 operator brand/design ack + Plan 01-10 welcome tab + Plan 01-12 design integration (designer reply pending)
|
||||||
Next phase: 2 of 5 (Stabilize DOM + event-capture privacy)
|
Next phase: 2 of 5 (Stabilize DOM + event-capture privacy)
|
||||||
Plan: 11 of 10 complete (counter > total because Plans 01-11 spike-pivot + 01-13 harness were added mid-phase past the original 10-plan ceiling; ROADMAP.md plan count needs sync as separate concern)
|
Plan: 11 of 10 complete (counter > total because Plans 01-11 spike-pivot + 01-13 harness were added mid-phase past the original 10-plan ceiling; ROADMAP.md plan count needs sync as separate concern)
|
||||||
Status: Phase 1 functional contract closed; remaining gates are operator-facing (brand/design ack + designer typography reply for 01-12) + Plan 01-10 welcome tab
|
Status: Phase complete — ready for verification
|
||||||
Last activity: 2026-05-19
|
Last activity: 2026-05-19
|
||||||
|
|
||||||
Progress: [█████████▌] 95% (Phase 1) — 0/5 phases fully complete (Phase 1 was 100% on 2026-05-15, reopened by Plan 01-09 operator UAT; functionally closed again 2026-05-19 via Plan 01-13 harness PASS)
|
Progress: [█████████░] 86%
|
||||||
|
|
||||||
### Plan 01-13 closure (2026-05-19)
|
### Plan 01-13 closure (2026-05-19)
|
||||||
|
|
||||||
@@ -94,6 +94,7 @@ Progress: [█████████▌] 95% (Phase 1) — 0/5 phases fully co
|
|||||||
| Phase 01 P05 | 8min | 2 tasks | 1 files |
|
| Phase 01 P05 | 8min | 2 tasks | 1 files |
|
||||||
| Phase 1 P06 | 3min | 2 tasks | 2 files |
|
| Phase 1 P06 | 3min | 2 tasks | 2 files |
|
||||||
| Phase 1 P07 | ~10min closure + 2 debug sessions (D-12 + A3) | 2 tasks (checkpoint + auto) | 6 files (fixture + REQUIREMENTS + ROADMAP + STATE + SUMMARY + plan-final-commit) |
|
| Phase 1 P07 | ~10min closure + 2 debug sessions (D-12 + A3) | 2 tasks (checkpoint + auto) | 6 files (fixture + REQUIREMENTS + ROADMAP + STATE + SUMMARY + plan-final-commit) |
|
||||||
|
| Phase 01 P14 | 49m | 1 tasks | 7 files |
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
@@ -134,6 +135,7 @@ current work:
|
|||||||
- [Phase 01-07-debug-a3]: D-13 restart-segments activated (debug session webm-playback-freeze resolved 2026-05-15). Plan 07 smoke retest after D-12 landed revealed the next-layer A3 failure: the ffprobe-valid WebM froze ~1 s into playback in Chrome because the single-continuous-recorder + 30 s age-trim lifecycle (D-09..D-11) evicted middle chunks containing VP9 keyframe references for retained tail chunks (orphan P-frames). Activated the pre-staged D-13 skeleton in src/offscreen/recorder.ts: stop+restart MediaRecorder every SEGMENT_DURATION_MS=10_000 ms on the same MediaStream, keep last MAX_SEGMENTS=3 self-contained WebM segments (3×10s=30s window preserved). Each segment fresh-encoded → own EBML header + seed keyframe → independently decodable. Side-effect: .stop() per segment fixes the "File ended prematurely" Matroska finalization gap. Type renames propagated: TransferredVideoChunk → TransferredVideoSegment, VideoChunk → VideoSegment, PortMessage.chunks → PortMessage.segments, VideoBufferResponse.chunks → VideoBufferResponse.segments; the header-pin flag from D-09..D-11 is dropped entirely. D-09..D-11 retired in favor of D-13. 28/30 tests pass; the 2 remaining reds are the empirical ffmpeg dry-runs against the still-stale committed fixture (operator regen required). REQ-video-ring-buffer NOT marked complete — Plan 07 still owns that, gated on the operator running ./smoke.sh then verifying Chrome playback + ffmpeg-clean stderr.
|
- [Phase 01-07-debug-a3]: D-13 restart-segments activated (debug session webm-playback-freeze resolved 2026-05-15). Plan 07 smoke retest after D-12 landed revealed the next-layer A3 failure: the ffprobe-valid WebM froze ~1 s into playback in Chrome because the single-continuous-recorder + 30 s age-trim lifecycle (D-09..D-11) evicted middle chunks containing VP9 keyframe references for retained tail chunks (orphan P-frames). Activated the pre-staged D-13 skeleton in src/offscreen/recorder.ts: stop+restart MediaRecorder every SEGMENT_DURATION_MS=10_000 ms on the same MediaStream, keep last MAX_SEGMENTS=3 self-contained WebM segments (3×10s=30s window preserved). Each segment fresh-encoded → own EBML header + seed keyframe → independently decodable. Side-effect: .stop() per segment fixes the "File ended prematurely" Matroska finalization gap. Type renames propagated: TransferredVideoChunk → TransferredVideoSegment, VideoChunk → VideoSegment, PortMessage.chunks → PortMessage.segments, VideoBufferResponse.chunks → VideoBufferResponse.segments; the header-pin flag from D-09..D-11 is dropped entirely. D-09..D-11 retired in favor of D-13. 28/30 tests pass; the 2 remaining reds are the empirical ffmpeg dry-runs against the still-stale committed fixture (operator regen required). REQ-video-ring-buffer NOT marked complete — Plan 07 still owns that, gated on the operator running ./smoke.sh then verifying Chrome playback + ffmpeg-clean stderr.
|
||||||
- [Phase 01-07-closure]: Phase 1 closed 2026-05-15: D-12 + A3 acceptance gates both passed. Operator-confirmed Chrome playback clean (no ~1 s freeze); ffmpeg `-v warning -i tests/fixtures/last_30sec.webm -f null -` exit 0 with zero decoder errors (only expected muxer DTS-monotonicity warnings at segment join boundaries — non-blocking, documented D-13 trade-off for multi-EBML-header concat); ffprobe + empirical playback both green; 30/30 vitest green (the 2 webm-playback empirical dry-runs flipped GREEN after the fresh fixture committed in cd61cbc); REQ-video-ring-buffer marked Complete; SPEC §10 #2, #3, #7 functionally satisfied (end-to-end Phase 4 smoke still owns the full §10 sweep). Three atomic closure commits land the fixture + REQ/STATE/ROADMAP flip + SUMMARY. Process note: Plan 01-07 surfaced TWO unanticipated-cascade failures (D-12 then A3); both had pre-staged fallbacks (base64 wire-format and D-13 restart-segments) that activated cleanly. Candidate retro: should `/gsd-plan-phase` auto-inject empirical-acceptance gates (ffmpeg dry-run + Chrome playback) before merging a phase when RESEARCH.md flags HIGH-risk assumptions?
|
- [Phase 01-07-closure]: Phase 1 closed 2026-05-15: D-12 + A3 acceptance gates both passed. Operator-confirmed Chrome playback clean (no ~1 s freeze); ffmpeg `-v warning -i tests/fixtures/last_30sec.webm -f null -` exit 0 with zero decoder errors (only expected muxer DTS-monotonicity warnings at segment join boundaries — non-blocking, documented D-13 trade-off for multi-EBML-header concat); ffprobe + empirical playback both green; 30/30 vitest green (the 2 webm-playback empirical dry-runs flipped GREEN after the fresh fixture committed in cd61cbc); REQ-video-ring-buffer marked Complete; SPEC §10 #2, #3, #7 functionally satisfied (end-to-end Phase 4 smoke still owns the full §10 sweep). Three atomic closure commits land the fixture + REQ/STATE/ROADMAP flip + SUMMARY. Process note: Plan 01-07 surfaced TWO unanticipated-cascade failures (D-12 then A3); both had pre-staged fallbacks (base64 wire-format and D-13 restart-segments) that activated cleanly. Candidate retro: should `/gsd-plan-phase` auto-inject empirical-acceptance gates (ffmpeg dry-run + Chrome playback) before merging a phase when RESEARCH.md flags HIGH-risk assumptions?
|
||||||
- [Phase 01-07-deferred-to-5]: getDisplayMedia cursor visibility constraint (`video: { cursor: 'always' }`) surfaced as a user observation during Phase 1 smoke 2026-05-15. Captured frames lack the screen cursor despite it being the highest-signal cue for reproducing pointer-driven bugs. Constraint is opt-in per the getDisplayMedia spec; Chrome implements CursorCaptureConstraint (always/motion/never). Logged to Phase 5 P1/P2 hardening list — not blocking Phase 1 closure.
|
- [Phase 01-07-deferred-to-5]: getDisplayMedia cursor visibility constraint (`video: { cursor: 'always' }`) surfaced as a user observation during Phase 1 smoke 2026-05-15. Captured frames lack the screen cursor despite it being the highest-signal cue for reproducing pointer-driven bugs. Constraint is opt-in per the getDisplayMedia spec; Chrome implements CursorCaptureConstraint (always/motion/never). Logged to Phase 5 P1/P2 hardening list — not blocking Phase 1 closure.
|
||||||
|
- [Phase ?]: Plan 01-14 — monitorTypeSurfaces:'include' shipped as top-level DisplayMediaStreamOptions constraint (W3C spec §6.1; Chrome ≥ 119 picker narrowing); A23 harness gate + Tier-1 grep lockstep extension to 12 strings; 100/100 vitest + 16/16 UAT GREEN. types.ts NOT modified — new cell/op are module-internal.
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -156,9 +158,9 @@ Items acknowledged and carried forward from previous milestone close:
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-05-19T10:40:00Z
|
Last session: 2026-05-19T19:41:05.737Z
|
||||||
Stopped at: Plan 01-13 Wave 4 Task 8 (closure docs) landed; harness 14/14 GREEN at d793c9e; Plan 01-09 amendment 2 + STATE.md sync committed; awaiting orchestrator Plan 01-13 Task 9 (operator brand/design checkpoint surfacing)
|
Stopped at: Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
||||||
Resume file: none (Wave 4 docs commit is self-contained; orchestrator owns Task 9 spawn)
|
Resume file: None
|
||||||
|
|
||||||
Prior session: 2026-05-17T14:30:13Z — resumed from /gsd-pause-work checkpoint ed82fd6; Bug A icons (a881bf0) + intel-unlock (f768498) committed; /gsd-debug spawned for Bug B state-machine routing (subsequently resolved via the recovery-flow amendment at Plan 01-09 Task 5 step 11)
|
Prior session: 2026-05-17T14:30:13Z — resumed from /gsd-pause-work checkpoint ed82fd6; Bug A icons (a881bf0) + intel-unlock (f768498) committed; /gsd-debug spawned for Bug B state-machine routing (subsequently resolved via the recovery-flow amendment at Plan 01-09 Task 5 step 11)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user