|
|
0608b22427
|
feat(02): plans 01-04 — Phase 2 export pipeline closure (Blob URL + meta.urls + schema + harness)
Wave structure (4 plans, 3 waves):
- 02-01 (Wave 1 RED): 15 RED tests pinning D-P2-01 (blob: URL contract), D-P2-02
(meta.urls schema + dedup + filter), D-P2-03 (strict 8-field validation +
schemaVersion '2' cutover marker).
- 02-02 (Wave 2): Offscreen-minted Blob URL pipeline — extends PortMessageType
with CREATE/REVOKE messages; SW downloadArchive rewrite (data: → blob: via
base64-on-wire to offscreen + URL.createObjectURL + chrome.downloads.onChanged
revoke lifecycle). Closes audit P0-6; unblocks >2 MB archives.
- 02-03 (Wave 2): meta.urls schema migration + tab-url-tracker module
(chrome.tabs.onActivated + onUpdated → deduplicated, filtered, first-seen-
ordered string[]); SessionMetadata 7→8 fields with schemaVersion + urls;
REQUIREMENTS.md REQ-meta-json-schema amendment. Closes P1 #10.
- 02-04 (Wave 3): UAT harness A24+A25+A26+A27 — blob: URL prefix, <5s SAVE→zip
latency, meta.json 8-field shape, multi-tab dedup; pre-checkpoint bundle gates
per saved memory + operator empirical UAT cycle 1. Tier-1 FORBIDDEN_HOOK_STRINGS
inventory stays at 12 (no new hook symbols — chrome.* monkey-patches + JSZip
+ production APIs only).
Locked decisions honored (per 02-CONTEXT.md):
- D-P2-01: offscreen-minted Blob URL via existing keepalivePort + base64 wire
format (reuses D-12 precedent at src/shared/binary.ts).
- D-P2-02: meta.json url:string → urls:string[]; URL filter per CONTEXT.md
<specifics> (include https://, chrome-extension://; exclude chrome://, about:,
devtools://, file://); dedup + first-seen ordering.
- D-P2-03: full scope; 8-field strict schema validation with schemaVersion='2'
as the 8th field (planner-resolved tentative pick; revisable by plan-checker).
Architectural constraints preserved:
- Always-on charter (Plan 01-09 Amendment 3): no finally-block in saveArchive;
no clearTabUrlsSeen on SAVE.
- Tier-1 FORBIDDEN_HOOK_STRINGS = 12 (no new test-hook symbols).
- Never await import(...) in src/background/index.ts (Plan 01-11 SUMMARY).
- Pre-checkpoint bundle gates per feedback-pre-checkpoint-bundle-gates.md (run
in 02-04 Task 4 before operator surface).
Plan validation: gsd-sdk frontmatter.validate + verify.plan-structure GREEN
for all 4 plans.
ROADMAP updated: Phase 2 Plans list + Goal/Success Criteria block annotated
with D-P2-02/D-P2-03 amendments + 5th success criterion (Blob URL + revoke
lifecycle for >2 MB archives); Progress table 0/TBD → 0/4.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-20 14:03:14 +02:00 |
|