From fb88830d29905e33bf5fccc2023e3f299ee315b7 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 15 May 2026 17:14:15 +0200 Subject: [PATCH] docs(01-01): retire 2 constraints + add CON-display-capture-binding per D-A2 Append RETIRED blocks to CON-tab-capture-binding and CON-service-worker-keepalive (the two SPEC-derived constraints that are no longer valid under getDisplayMedia + port-keepalive). Add new CON-display-capture-binding consolidating the replacement contract. Originals stay intact for provenance; RETIRED is appended below each. --- .planning/intel/constraints.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.planning/intel/constraints.md b/.planning/intel/constraints.md index 4aa0c19..8f876d3 100644 --- a/.planning/intel/constraints.md +++ b/.planning/intel/constraints.md @@ -100,6 +100,12 @@ Type taxonomy: activation change, the recorder MUST re-attach to the new active tab. First invocation requires a user gesture. +### RETIRED (Phase 01-stabilize-video-pipeline, 2026-05-15) + +- RETIRED-BY: Phase 01 CONTEXT.md D-01 / D-A2 +- Reason: This phase replaces `chrome.tabCapture` with `navigator.mediaDevices.getDisplayMedia()`. The new API is not active-tab-bound; the recorder captures a screen / window selected once via Chrome's native picker and continues across tab switches. +- Replacement: CON-display-capture-binding (below). + --- ## CON-service-worker-keepalive @@ -110,6 +116,12 @@ Type taxonomy: extension MUST keep the worker alive via a `chrome.alarms` alarm firing every **20 seconds**. +### RETIRED (Phase 01-stabilize-video-pipeline, 2026-05-15) + +- RETIRED-BY: Phase 01 CONTEXT.md D-17 / D-A2 +- Reason: This phase replaces alarms-driven keepalive with a long-lived `chrome.runtime.connect` port between offscreen and Service Worker. Port-message traffic resets the SW idle timer per Chrome 110+ semantics. +- Replacement: CON-display-capture-binding (binds the port-keepalive expectations alongside the new capture API). + --- ## CON-manifest-permissions @@ -196,6 +208,16 @@ Type taxonomy: --- +## CON-display-capture-binding + +- Source: Phase 01 CONTEXT.md D-01..D-17, RESEARCH.md Patterns 1 & 5 +- Type: api-contract +- Constraint: Video capture uses `navigator.mediaDevices.getDisplayMedia()` invoked once per session from the offscreen document with `chrome.offscreen.Reason.DISPLAY_MEDIA`. The Service Worker is kept alive by a long-lived `chrome.runtime.connect({ name: 'video-keepalive' })` port opened by the offscreen, with traffic in both directions at a minimum cadence of 25 s and pre-emptive reconnect at 290 s. +- Replaces: CON-tab-capture-binding (RETIRED), CON-service-worker-keepalive (RETIRED). +- UX trade-off: Chrome's permanent "Sharing your screen" indicator is shown while recording. SPEC §1 silent-operation property is intentionally relaxed. + +--- + ## CON-no-server-upload - Source: `Тз расширение фаза1.md` §9