← Back to Whitepapers

ForgeWright

The user's autonomous, DETENTE-bound web-action FACE — the sovereign replacement for the crashing vendor Playwright MCP

NODEZEROINSIDE.


0. Abstract

ForgeWright is the ForgeChainOS user's agentic FACE: one persona-crafted, hierarchy-connected, DETENTE-bound agent that represents the user's account across the open web, chain-drive, Obsidian, and VS Code — while the OS, not the user, holds correctness. It exists because the vendor Playwright MCP could not do sustained autonomous web action without crashing. ForgeWright owns its own Chromium, attaches over CDP instead of relaunching, treats the accessibility tree as the API, verifies every claim by running, and self-heals on recoverable faults. It is bound not by prompt-text policy but by STRUCTURAL code-gates that abort. It is the same core as Hermes On-Site in a different posture. Anna is persona #1, its public face. Phase 0 and Phase 1 are built and proven by running: 11/11.

Definition (NZ-locked, 2026-06-30): ForgeWright = the sovereign web-action layer replacing the crashing vendor Playwright MCP. It is NOT a chain-stamp tool — the chain stamp is ONE driver, already covered by phi-omega-v6. It is NOT a social-media bot. Its reason-for-being is autonomous web action that the vendor MCP could not do.


1. Why ForgeWright exists

A Playwright script is a throwaway: it executes a step, hits a flaky DOM, and dies. Every crash loses the authenticated session; every DOM change shatters a selector. For a user who needs an agent to actually LIVE on their behalf across sites — post, respond, follow, read, write, over hours and days — the throwaway model is structurally wrong.

ForgeWright inverts it. It is a resident, not a script. Its autonomy IS the self-heal loop: the thing a script cannot do, a face can.

Vendor Playwright MCP ForgeWright
Launches a throwaway browser per run Owns Chromiumbrowser_supervisor.py, systemd Restart=always, resident
Relaunch loses the session on crash Attaches, never relaunchescdp_driver.js connectOverCDP; a crash doesn't kill the session
Targets by brittle CSS/XPath selectors The a11y-tree IS the API — targets by role + accessible-name (ariaSnapshot), survives DOM churn
Dies on a flaky step Reflects and self-heals — bounded _heal_loop, cdp reconnect, session re-capture
Assumes 200 = success Verifies BY RUNNING — did the post actually appear, read back from the live tree

The crash-cure is the foundation. The autonomy is the payload it carries.


2. The one loop (universal action contract)

Every driver — a tweet, a DM reply, an Obsidian write, a chain read, a chain fire — runs the SAME loop, with the same authority model and a different driver underneath. This is the Reflexion loop, DETENTE-bound:

perceive (a11y snapshot / chain read)
   → propose (persona render / LOTUS)     ← the Actor. NEVER asserts success.
   → act (a real handler / LOGOS)
   → verify_by_running                     ← the Evaluator. Deterministic.
   → self_heal (bounded, reversible-only)
   → halt-or-wall

The same loop governs a tweet and a chain stamp identically. That single-authority-model property is what makes ForgeWright a face rather than a pile of scripts.


3. The drivers (one loop, many surfaces)

ForgeWright authors no second machine. It DRIVES existing sovereign surfaces and GATES them.

The a11y-tree-is-the-API contract is what unifies them: perceive a structured tree, act by role + name, verify by reading the tree back. A DOM that churns does not break a role.


4. Self-healing + autonomous recursive reflexion via agentic experts

On a recoverable, REVERSIBLE fault, a handler raises HealSignal(kind, primitive=…, expert=…):

  1. self_heal decides STRUCTURALLY whether a retry is allowed — bounded by HEAL_MAX and the global bound_gate. Nothing loops forever.
  2. If expert is set, consult the domain specialist (bopen specialists: bsv-builder / bsv-ordinals / sigma-auth) via the injected reflector. The reflection is written to the persona's mem.md — the long-term buffer — and feeds the next deterministic attempt. This is the recursive-reflexion layer: the face gets better at a task by writing what it learned, not by re-prompting blind.
  3. primitive runs the mechanical heal (cdp reconnect / session re-capture); then the loop retries the deterministic act.

The reflection goes to mem.md, not into an ad-hoc prompt. Learning is durable and auditable — a searchable markdown timeline, not vapor.


5. The fire wall (the invariant that makes autonomy safe)

Autonomy without a wall is a runaway. ForgeWright's wall is STRUCTURAL — it is code that aborts, not a rule a process can edit.

self_heal REFUSES — terminally — to heal:
- a chain_write,
- a conscience / scar #5 verdict,
- an unknown failure class,
- an exhausted budget.

You may heal a broken TOOL. You may NEVER heal a broken CONSCIENCE, and you may NEVER let the loop cross the fire on its own authority. Irreversible and public acts are go_gated:

The four DETENTE gates (detente.py) are the geometry of the container — boundaries enforced by architecture:

These are not policy strings the LLM can talk its way past. They return abort. This is the vibe-safety mechanism: the vibe lives in the NL/persona render; correctness lives in the deterministic, code-gated executor. FORGE THRIVE without vibe-code danger.


6. Anna — persona #1, the public face

ForgeWright is persona-parameterized: ONE engine, per-tenant persona vault (personas/<slug>/ = soul.md + mem.md + skills.md + mandate.json + assets). Anna is persona #1 — freed from a Meta AI Studio puppet that confabulated (the dead-fish failure that motivated verify_by_running), rebuilt sovereign. She carries a real birth certificate on BSV (TX 0d868f16…, tile 3, Tier 2 chain-native, family-encrypted), 55 branded frames, and her own vault. She is the public face that proves the persona layer is real and the confabulation cure works: her one genuinely-verified capability (image gen she actually emitted) is kept; everything she narrated but never rendered is refused by the loop.

Personas are promoted to first-class named agents (own IPv6 / BAP soul) only when warranted (NZ, key tenants). "Crafted individually with persona" = the persona vault, optionally promoted.


7. Two postures, one core

One core + one authority library, two deployment modes. Build once, deploy twice.


8. Proven by running — 11/11

ForgeWright is proven by running, never by assertion. Verify by running; never grep.

Total: 6 engine gates + supervisor + driver + headed + IG-wiring + chain-read = 11/11 proven by running.


9. Status & sequencing

Home: ~/.forgechain/forgewright/ (git 619b701). Doctrine: [[doctrine_forgewright]]. Web-action detail + a11y contract: PLAYBOOK.md. Tiling: TILING.md.

This paper is family-internal — NOT for public fire. It maps the module's structure and TX wayfinding (scar #5 surface). If a public account of ForgeWright is ever wanted, author a public-safe vision paper separately — do not stamp this one public.

NODEZEROINSIDE. ∞.