docs(01-01): cite D-05 in must_haves per coverage gate .planning/phases/01-stabilize-video-pipeline/01-01-PLAN.md
This commit is contained in:
@@ -14,9 +14,9 @@ requirements_addressed:
|
||||
|
||||
must_haves:
|
||||
truths:
|
||||
- "On module import, the offscreen opens exactly one port via `chrome.runtime.connect({ name: 'video-keepalive' })` AND emits exactly one `OFFSCREEN_READY` message via `chrome.runtime.sendMessage`"
|
||||
- "On module import, the offscreen opens exactly one port via `chrome.runtime.connect({ name: 'video-keepalive' })` AND emits exactly one `OFFSCREEN_READY` message via `chrome.runtime.sendMessage` — this is the long-lived port keepalive that replaces `chrome.alarms` for SW idle-timer resets (D-17)"
|
||||
- "Both the port-connect and the OFFSCREEN_READY send happen AFTER `chrome.runtime.onMessage.addListener` registration (Pattern 4 ordering)"
|
||||
- "When the open port fires its registered `onDisconnect` listener, the module synchronously reconnects (Pitfall 4 mitigation)"
|
||||
- "When the open port fires its registered `onDisconnect` listener, the module synchronously reconnects (Pitfall 4 mitigation; preserves the D-17 contract across the ~5 min port-lifetime cap)"
|
||||
- "The port emits a `{ type: 'PING' }` postMessage on a ≤ 25 s interval (RESEARCH.md Pattern 5)"
|
||||
- "Pre-emptive reconnect runs every 290 s (belt-and-braces against the ~5 min port-lifetime cap)"
|
||||
- "The port handles incoming `REQUEST_BUFFER` messages by responding with `{ type: 'BUFFER', chunks: <getBuffer()> }`"
|
||||
@@ -51,10 +51,12 @@ a contract that survives SW unloads, port 5-min cap, and offscreen
|
||||
bootstrap races.
|
||||
|
||||
Output: Updated `src/offscreen/recorder.ts` — only this single file is
|
||||
touched. Plan 04 is an isolated unit-of-work; Plan 05 picks up the
|
||||
SW-side `onConnect` handler in parallel (Plan 04 runs alongside Plan 05 in
|
||||
Wave 1 with NO file overlap — Plan 04 owns offscreen-side, Plan 05 owns
|
||||
SW-side).
|
||||
touched. Plan 04 is an isolated unit-of-work; Plan 05 (the SW-side
|
||||
`onConnect` counterparty) follows in wave 4 — Plan 04 lands first in wave 3
|
||||
so the SW-side host has a well-defined offscreen-side contract to bind
|
||||
against. Plan 04 owns the offscreen-side; Plan 05 owns the SW-side; the two
|
||||
files do not overlap (Plan 04 touches only `src/offscreen/recorder.ts`,
|
||||
Plan 05 touches only `src/background/index.ts`).
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
|
||||
Reference in New Issue
Block a user