c2f08d1a21
Extends the Phase A-tier-1 site-side rotation engine with an optional Node browser-sidecar and a deterministic self-heal tier, all proven LIVE-VM against the local lab change-password form. go-rod stays the default; the sidecar is a swap-in Driver behind the same Session/Driver/Rotator interfaces — no spine change, backup + verify-new-before-revoke-old + proof gates all apply unchanged. M-B1 sidecar parity: internal/browserrot/sidecar/ (index.js JSON-RPC over stdio, patchright real-fingerprint Chromium, playwright-core fallback) + sidecar.go Driver/Session. A shared test harness runs go-rod and the sidecar through the identical live rotation proof. M-B2 stealth: patchright removes navigator.webdriver; humanized input (Bezier mouse paths + per-key typing jitter, no ML trajectory generation per plan §5). M-B3 self-heal: Healer interface + heal-retry fill/click/text wrappers; on a rotted selector, heal.js relocates the field from DOM structure ONLY (never a value) and the engine rewrites + persists the recipe (recipes.go RecipeBook) so the next run is Tier-1 again. Deterministic heuristic is the proven Tier-2; Stagehand LLM strategy is opt-in + UNPROVEN. Leak-check asserts no secret ever reaches a heal request (redacted IPC transcript). Secret seam documented honestly: fill carries base64 secret bytes across exactly one local stdio boundary, typed and wiped, never logged/persisted/sent to a model. MFA/CAPTCHA still degrade to the human worklist (Hard Rule 5). 14 tests green, -race clean; lab/lab-provision-browserrot.sh proves both drivers. M-B4 (first REAL self-owned site) deliberately NOT started — needs per-credential authorization (safe-candidate ladder). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
35 lines
801 B
Plaintext
35 lines
801 B
Plaintext
# build output
|
|
/credrot
|
|
/dist/
|
|
/incredigo-map.html
|
|
|
|
# never commit secrets or backup bundles (any sealer: age / hmac / openssl)
|
|
*.credrot.enc
|
|
*.credrot.age
|
|
*.age
|
|
*.env
|
|
.env.*
|
|
|
|
# local-only design docs (kept on disk, never pushed upstream)
|
|
docs/ROTATION.md
|
|
docs/ROTATION-REAL-CRED-RUNBOOK.md
|
|
|
|
# maintainer-local: AI session directive (tailnet detail) + stale dev handoff
|
|
CLAUDE.md
|
|
HANDOFF.md
|
|
|
|
# lab kit: ship the scripts, never the binaries or real-host / runbook material
|
|
lab/incredigo
|
|
lab/gitea
|
|
lab/*.age
|
|
lab/rung1-*
|
|
|
|
# browserrot Node sidecar: ship the source (index.js/heal.js/package.json), never the
|
|
# installed dependency tree or lockfile churn (npm install regenerates them)
|
|
internal/browserrot/sidecar/node_modules/
|
|
internal/browserrot/sidecar/package-lock.json
|
|
|
|
# editor / OS
|
|
*.swp
|
|
.DS_Store
|