|
|
|
@@ -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: verifying
|
|
|
|
status: executing
|
|
|
|
stopped_at: Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
|
|
|
stopped_at: Plan 01-12 closed via Wave 7 operator brand-fit ack 2026-05-20 'all good' (147/147 vitest, 21/21 UAT GREEN); Plan 01-10 (welcome tab) remains as final Phase 1 functional plan
|
|
|
|
last_updated: "2026-05-19T19:41:05.778Z"
|
|
|
|
last_updated: "2026-05-20T08:00:00.000Z"
|
|
|
|
last_activity: 2026-05-19
|
|
|
|
last_activity: 2026-05-20
|
|
|
|
progress:
|
|
|
|
progress:
|
|
|
|
total_phases: 5
|
|
|
|
total_phases: 5
|
|
|
|
completed_phases: 0
|
|
|
|
completed_phases: 0
|
|
|
|
total_plans: 14
|
|
|
|
total_plans: 14
|
|
|
|
completed_plans: 12
|
|
|
|
completed_plans: 13
|
|
|
|
percent: 86
|
|
|
|
percent: 93
|
|
|
|
---
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Project State
|
|
|
|
# Project State
|
|
|
|
@@ -27,15 +27,37 @@ no server, no password leaks.
|
|
|
|
|
|
|
|
|
|
|
|
## Current Position
|
|
|
|
## Current Position
|
|
|
|
|
|
|
|
|
|
|
|
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-12 closed-by-brand-fit-ack 2026-05-20; Plan 01-13 closed-by-harness 2026-05-19; awaiting Plan 01-10 (welcome tab) as final Phase 1 functional plan
|
|
|
|
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: 13 of 13 complete (13 plans: 01-01..01-09 + 01-11 spike + 01-12 + 01-13 + 01-14; Plan 01-10 still pending)
|
|
|
|
Status: Phase complete — ready for verification
|
|
|
|
Status: Executing — Plan 01-10 (welcome tab) remains
|
|
|
|
Last activity: 2026-05-19
|
|
|
|
Last activity: 2026-05-20
|
|
|
|
|
|
|
|
|
|
|
|
Progress: [█████████░] 86%
|
|
|
|
Progress: [█████████▓] 93%
|
|
|
|
|
|
|
|
|
|
|
|
### Plan 01-13 closure (2026-05-19)
|
|
|
|
### Plan 01-12 closure (2026-05-20)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Design integration landed end-to-end across 7 waves (10 plan tasks + 1 operator empirical checkpoint)
|
|
|
|
|
|
|
|
- 9 implementation commits: `3fe018b` (plan baseline revision post-01-14) → `34a9ce1` (Wave 0 RED scaffolds) → `f86fd60` + `abab6e1` (Wave 1 fonts + tokens.css) → `7732a30` (Wave 2 icons) → `110cebc` (Wave 3 manifest i18n + _locales) → `468f16d` (Wave 4 source adoption) → `e8d2881` (Wave 5 Vite define + welcome conditional) → `b909c37` (Wave 6 A18-A22) + 1 pre-checkpoint commit `865d394`
|
|
|
|
|
|
|
|
- SUMMARY: `f319c7d` (`.planning/phases/01-stabilize-video-pipeline/01-12-SUMMARY.md`)
|
|
|
|
|
|
|
|
- **R2 designer substitution**: Newsreader → Lora (Cyreal foundry; OFL-1.1; full Latin + Cyrillic) per designer reply 2026-05-19. Canonical token value `--mks-font-display: "Lora", "Iowan Old Style", "Times New Roman", serif`.
|
|
|
|
|
|
|
|
- **MV3 CSP self-host invariant verified**: zero `googleapis` / `https://fonts` references in `dist/` (per `tests/build/no-remote-fonts.test.ts`); 8 local @font-face rules in `src/shared/tokens.css`; ~155 KB font bundle ships under `src/shared/fonts/` with LICENSE + README attribution.
|
|
|
|
|
|
|
|
- **16 i18n keys across `_locales/{en,ru}/messages.json`**: extName + extDesc + tooltipOff + tooltipRecPrefix + tooltipErr + popupSavePrompt + popupSaveCta + popupSaveDone + popupSaving + popupSaveDoneShort + popupEmptyState + popupInfoText + notifStartup + notifRecovery + welcomeHeroRu + welcomeHeroEn. EN extName = "Mokosh — Session Capture" (D-07); EN extDesc = "Thirty seconds ago, always at hand." (D-08); RU extName = "Mokosh — Запись сессии"; RU extDesc = "Тридцать секунд назад, всегда под рукой." en↔ru parity verified by `tests/i18n/locale-parity.test.ts`.
|
|
|
|
|
|
|
|
- **Branded Loom-mark icons** (D-01): 8-bit RGBA via `rsvg-convert`; replaces Bug A placeholders (was 16-bit RGB at 574/1153/2615 B; now 406/784/1952 B 8-bit RGBA). Clears Chrome imageUtil silent-rejection floors (16≥200B, 48≥500B, 128≥1024B).
|
|
|
|
|
|
|
|
- **BADGE_REC_COLOR** flipped from material-green `#00C853` to madder `#b2543d` (= --mks-madder-600 per D-04 loom palette).
|
|
|
|
|
|
|
|
- **src/popup/style.css** carries ZERO hex literals (every color via `var(--mks-*)`); imports `../shared/tokens.css`. src/popup/index.ts + src/background/index.ts read `chrome.i18n.getMessage('<key>') || '<en-const-fallback>'` at every operator-facing site.
|
|
|
|
|
|
|
|
- **UAT harness A18-A22** following Plan 01-13 Approach B pattern (page-side `assertA*` + host-side `driveA*` + harness orchestrator). FORBIDDEN_HOOK_STRINGS at 13 entries (+1 over 01-14's 12 baseline for `data-mks-key` completeness). Full A1-A14 + A18-A22 + A23 chain runs in ~95s under Puppeteer headless.
|
|
|
|
|
|
|
|
- **Pre-checkpoint bundle gates** per feedback-pre-checkpoint-bundle-gates.md established: SW CSP grep (new Function/eval) + SW Node-globals grep (Buffer.*) + DOM-globals grep + manifest validation + en↔ru parity. Discovery: setimmediate polyfill `new Function` in SW chunk via `vite-plugin-node-polyfills` — VERIFIED pre-existing across Phase 1 history; NOT a Plan 01-12 regression; logged at `.planning/phases/01-stabilize-video-pipeline/deferred-items.md` for Phase 5 hardening.
|
|
|
|
|
|
|
|
- **vitest: 100 → 147 GREEN** (+47 across 6 new test files at tests/build/ + tests/i18n/).
|
|
|
|
|
|
|
|
- **UAT harness: 16/16 → 21/21 GREEN** (A18-A22 added; A22 skip-gates on Plan 01-10 absent).
|
|
|
|
|
|
|
|
- **Operator empirical brand-fit ack 2026-05-20 verbatim "all good"** on fresh build + load unpacked + branded-surface verification (toolbar Loom icon, popup loom palette + Lora display heading, manifest:name resolution to "Mokosh — Session Capture", Russian copy rendering with Lora, notification copy via chrome.i18n).
|
|
|
|
|
|
|
|
- **Plan 01-13 Task 9 (operator brand/design ack on loaded extension) functionally CLOSED** via this checkpoint — same operator + same empirical surface coverage; the LAST remaining Phase 1 brand-design gate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Outstanding Phase 1 gates
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **Plan 01-10 (welcome tab):** still pending — operator-facing onboarding surface (Russian copy; first-run only). Canonical `src/shared/tokens.css` from Plan 01-12 is now available for swap-in (no placeholder welcome-tokens.css needed). When Plan 01-10 lands, harness A22 flips from skip-gate to 1-check GREEN.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Plan 01-13 closure (2026-05-19; brand/design ack subsequently closed via Plan 01-12 Wave 7 2026-05-20)
|
|
|
|
|
|
|
|
|
|
|
|
- Puppeteer-based UAT harness: `npm run test:uat` exits 0 with **15/15 GREEN** (A0-A14)
|
|
|
|
- Puppeteer-based UAT harness: `npm run test:uat` exits 0 with **15/15 GREEN** (A0-A14)
|
|
|
|
- Bug A regression rewind empirically verified (commit body 6a77967)
|
|
|
|
- Bug A regression rewind empirically verified (commit body 6a77967)
|
|
|
|
@@ -59,9 +81,9 @@ Progress: [█████████░] 86%
|
|
|
|
|
|
|
|
|
|
|
|
### Outstanding Phase 1 gates
|
|
|
|
### Outstanding Phase 1 gates
|
|
|
|
|
|
|
|
|
|
|
|
- **Plan 01-13 Task 9 (operator checkpoint):** orchestrator-owned; brand/design ack on loaded extension (Plan 01-13 charter carves visual presentation out of harness scope)
|
|
|
|
- ~~**Plan 01-13 Task 9 (operator checkpoint):**~~ CLOSED 2026-05-20 via Plan 01-12 Wave 7 brand-fit ack "all good"
|
|
|
|
- **Plan 01-10 (welcome tab):** Wave 3 still pending — operator-facing onboarding surface (Russian copy; first-run only)
|
|
|
|
- ~~**Plan 01-12 (design integration):**~~ CLOSED 2026-05-20 (R2 Lora substitution + tokens.css canonical + 16 i18n keys + branded icons + manifest i18n; SUMMARY f319c7d)
|
|
|
|
- **Plan 01-12 (design integration):** awaiting designer reply on Newsreader typography (one designer follow-up already documented in MEMORY intel-unlock f768498 — Newsreader has no Cyrillic glyphs, alternative font selection pending)
|
|
|
|
- **Plan 01-10 (welcome tab):** still pending — operator-facing onboarding surface (Russian copy; first-run only). Canonical `src/shared/tokens.css` from Plan 01-12 is now available for swap-in.
|
|
|
|
|
|
|
|
|
|
|
|
## Performance Metrics
|
|
|
|
## Performance Metrics
|
|
|
|
|
|
|
|
|
|
|
|
@@ -95,6 +117,7 @@ Progress: [█████████░] 86%
|
|
|
|
| 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 |
|
|
|
|
| Phase 01 P14 | 49m | 1 tasks | 7 files |
|
|
|
|
|
|
|
|
| Phase 01 P12 | ~10h cumulative (7 waves; 10 plan tasks + 1 operator empirical checkpoint) | 10 tasks (7 waves + Wave 7 pre-checkpoint + brand-fit ack) | ~50+ files (8 WOFF2 + 3 PNG + 2 _locales + tokens.css + 6 unit-test files + harness + scripts + 4 source files modified) |
|
|
|
|
|
|
|
|
|
|
|
|
## Accumulated Context
|
|
|
|
## Accumulated Context
|
|
|
|
|
|
|
|
|
|
|
|
@@ -136,6 +159,8 @@ current work:
|
|
|
|
- [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.
|
|
|
|
- [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.
|
|
|
|
|
|
|
|
- [Phase 01-12]: Design integration landed end-to-end via 7 waves + operator brand-fit ack 2026-05-20 "all good". R2 designer substitution (Newsreader → Lora; Cyreal foundry; OFL-1.1; full Cyrillic via reply 2026-05-19) baked in; src/shared/tokens.css canonical with 8 local @font-face rules + zero remote URLs (MV3 CSP self-host invariant); 16 i18n keys per locale across en + ru with parity; branded Loom-mark icons replace Bug A placeholders (8-bit RGBA); src/popup + src/background migrated to chrome.i18n.getMessage with `|| <const>` fallback; BADGE_REC_COLOR flipped from material-green #00C853 to madder #b2543d (= --mks-madder-600 per D-04). UAT harness A18-A22 GREEN. Pre-checkpoint bundle gates established per feedback-pre-checkpoint-bundle-gates.md (5 grep gates pre-checkpoint; setimmediate polyfill new Function in SW chunk verified pre-existing across Phase 1 history — logged to deferred-items.md for Phase 5 hardening). vitest 100 → 147 GREEN (+47); UAT 16 → 21 GREEN (+A18-A22; A22 skip-gates on Plan 01-10 absent).
|
|
|
|
|
|
|
|
- [Phase 01-12]: Plan 01-13 Task 9 (operator brand/design ack on loaded extension) functionally closed via Plan 01-12 Wave 7 brand-fit ack 2026-05-20 (same operator + same empirical surface coverage). This was the LAST remaining Phase 1 brand-design gate.
|
|
|
|
|
|
|
|
|
|
|
|
### Pending Todos
|
|
|
|
### Pending Todos
|
|
|
|
|
|
|
|
|
|
|
|
@@ -158,11 +183,12 @@ Items acknowledged and carried forward from previous milestone close:
|
|
|
|
|
|
|
|
|
|
|
|
## Session Continuity
|
|
|
|
## Session Continuity
|
|
|
|
|
|
|
|
|
|
|
|
Last session: 2026-05-19T19:41:05.737Z
|
|
|
|
Last session: 2026-05-20T08:00:00.000Z
|
|
|
|
Stopped at: Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
|
|
|
Stopped at: Plan 01-12 closed via Wave 7 operator brand-fit ack 2026-05-20 'all good' (SUMMARY f319c7d; 147/147 vitest + 21/21 UAT GREEN); Plan 01-10 (welcome tab) remains as final Phase 1 functional plan
|
|
|
|
Resume file: None
|
|
|
|
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-19T19:41:05.737Z — Completed Plan 01-14 (commit b467123 + SUMMARY 5254145; 16/16 UAT + 100/100 vitest GREEN)
|
|
|
|
|
|
|
|
Earlier 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)
|
|
|
|
|
|
|
|
|
|
|
|
## Phase 1 Closure Notes
|
|
|
|
## Phase 1 Closure Notes
|
|
|
|
|
|
|
|
|
|
|
|
|