Skip to content

browser parity e2e suite — the cutover gate from twitter-debug's bespoke Brave to the leased pool #77

Description

@amiller

Strategy (operator, 2026-07-06): dual-run twitter-debug's bespoke Brave AND the RFC 0028 leased pool (#68), and retire the bespoke path ONLY when this parity suite is all-green. Parity is the gate — not a date.

Build an e2e suite that runs each capability against BOTH engines and asserts equivalent results. Publish a parity board (same pattern as /journeys) so red rows show the remaining work.

Capability twitter-debug (bespoke) pool-lease equivalent Parity assertion
inject jar /twitter/setjar lease + broker jar-inject (RFC 0018) a known jar renders logged-in on both
logged-in screenshot /twitter/shot lease → navigate → capture x.com/home shows the account (a known @handle visible), non-blank
DOM reconstruct (reify) /twitter/reify lease → eval/reify ≥N timeline entries with text, same order-of-magnitude
driven browser actions /twitter/engine lease → driven task a scripted task reaches the same end state
write / post /post lease + write cap a post (or dry-run) lands, asserted present
egress binding /twitter/ip per-lease egress locked to domain VPN egress IP (not a datacenter IP) on both
liveness /twitter/health pool/lease health green
isolation (parity-PLUS) single browser — cannot pass two concurrent leases (twitter + youtube) no cross-session bleed — each read returns only its own account

The last row is the migration's whole justification: the bespoke single browser fails it (one global session — see RFC 0028 Problem), the pool must pass it. It stays in the gate.

Sequencing: (1) pool lands (#68) ephemeral-per-lease + broker inject + lease-time accounting; (2) point browserFeed/browserScreenshot at a lease behind a flag, old SPI still selectable; (3) this suite runs against both, board published; (4) all-green → flip the flag, move twitter-debug's reify/engine onto a lease, retire the bespoke Brave. One browser on the pod.

Verify honestly per box-inventory/scope-down: build the suite + run what's runnable now (isolation test, screenshot, reify against a seeded jar); rows needing a live logged-in jar or the broker (RFC 0018, impl pending) are marked NOT-YET with the exact reason, not faked green. Depends on #68 + the RFC-0028-decisions issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions