"""Synthetic setup used by the browser proof. No live database is copied.

Set PROOF_SCRATCH to a private scratch directory. For each SIDE (base, head),
run this script, then from that side's checkout (after vp i):

PATH="$PROOF_SCRATCH/$SIDE-client/bin:$PATH" T3CODE_DEV_SEED=0 T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD=0 vp run dev --home-dir "$PROOF_SCRATCH/$SIDE-client" --no-seed > "$PROOF_SCRATCH/$SIDE-dev.log" 2>&1
PATH="$PROOF_SCRATCH/$SIDE-lan/bin:$PATH" T3CODE_DEV_SEED=0 T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD=0 node apps/server/src/bin.ts serve --base-dir "$PROOF_SCRATCH/$SIDE-lan" --host 0.0.0.0 --port 13773 --no-browser > "$PROOF_SCRATCH/$SIDE-lan.log" 2>&1
node apps/server/src/bin.ts pair --base-dir "$PROOF_SCRATCH/$SIDE-client" > "$PROOF_SCRATCH/$SIDE-new-pair.log"

The proof mapped 10.0.0.10/32 to its own loopback interface using
sudo -n ip addr add 10.0.0.10/32 dev lo, removing it after both runs.
Port 13773 must be free; stop the first side's LAN server before the next.
Run the driver with: node lan-pairing-driver.mjs SIDE WEB_ORIGIN CHECKOUT
Keep logs private: they contain live, generated credentials.
The driver import/path configuration was parameterized before upload.
"""
import json
import os
from pathlib import Path
root = Path(os.environ['PROOF_SCRATCH'])
side = os.environ['SIDE']
for role, label in [('client', 'Client demo'), ('lan', 'LAN demo')]:
    home = root / f'{side}-{role}'
    (home / 'bin').mkdir(parents=True, exist_ok=True)
    (home / 'userdata').mkdir(exist_ok=True)
    shim = home / 'bin' / 'hostnamectl'
    shim.write_text(f'#!/bin/sh\necho "{label}"\n')
    shim.chmod(0o755)
    (home / 'userdata' / 'settings.json').write_text(json.dumps({
        'providerInstances': {p: {'driver': p, 'enabled': False} for p in
            ['codex', 'claudeAgent', 'cursor', 'grok', 'muse', 'pi', 'opencode', 'antigravity']}
    }))
