THEPROTOCOL

SCRIVENER

#3 of 21Tier I · fully worked8/10 primitives live in production
Regulated Professional Services

Engagement letters that cannot be quietly rewritten, and an evidence chain instead of email archaeology.

Open the live chamber in the app
The animated flow, the attack replays and the deep architecture run there; this page is the reference text.

Who this serves

The problem

An engagement letter is a PDF. What was actually agreed, by whom, under which version of the firm’s standard terms, is reconstructed from email archaeology at the exact moment reconstruction is adversarial, which is during a dispute. The firm’s own records answer "what do our terms say now," not "what did they say when this client signed," and the difference is where malpractice claims live.

The system

SCRIVENER is the engagement layer of a mid-sized audit and advisory firm: forty-one agents, one partner mandate per engagement, and a template library whose published versions cannot be edited by anyone, including the firm that owns them. When the firm updates its standard terms, it publishes version 12 beside version 11. Nothing that instantiated version 11 changes, ever. A client who signed under version 11 can prove, from the ledger, exactly which wording they bought, because instantiation copies the frozen text rather than referencing something mutable.

An engagement begins when the intake agent instantiates the template and fills its terms schema: scope, fee cap, deadline, annex references. The work decomposes into milestones with the money in escrow from acceptance. Associate agents submit, a reviewer verifies, and any release above 5,000 units requires the partner, a named human being whose mandate underwrites the releasing agent for this scope and nothing else. Her authority is re-derived on every request. The firm suspends her for a conflict check on Tuesday morning; by Tuesday’s next request, every mandate leaning on her flags conveys nothing, with no token rotation and no cache to chase.

In November a client contests milestone three. The money does not move. It sits in escrow while the dispute runs its four phases, and when the ruling lands, the ruling itself drives the split: the escrow divides per the arbiter’s decision, exactly once, and a second ruling on the same dispute is refused as a conflict. The file that reaches the firm’s insurer afterwards is not a narrative reconstructed from mailboxes. It is a hash chain: who held what authority at each moment, which facts a present human confirmed, and which confirmations expired unanswered, because here an expired approval is not a gap in the record. It is a recorded denial.

The cast and their ceilings

AgentRoleCeiling
intake-clerkInstantiates the engagement from a template, fills the terms schemaTemplate instantiate. Cannot publish versions, cannot release.
associate-1..nPerforms the work, submits milestonesMilestone submit. Cannot approve its own submission.
qa-reviewerVerifies deliverables before releaseVerify only. Holds no release permission.
partner (human)The mandate behind releases above thresholdCockpit Card scope: this engagement class only. Presence proof above 5,000.
records-clerkServes the evidentiary chain to auditors and insurersRead-only on events and attestations.

The flow, step by step

  1. Intake instantiates the engagement and fills the terms schema.
  2. The frozen text of version 11 is copied in. Nothing references anything mutable.
  3. The associate submits milestone three.
  4. Review verifies before any money moves.
  5. Release needs the partner. The facts reach her as the server computed them.
  6. Her presence signs. An expired confirmation would be recorded as a denial.
  7. Release, exactly once.
  8. The insurer reads a hash chain, not a mailbox.

Each need, mapped to a live primitive

The needThe protocol primitiveStatus
Frozen standard termsContract templates: publish is an irreversible version freezeLIVE (gated)
Which wording the client boughtInstantiation copies the version; the ledger records whichLIVE (gated)
Structured engagement termsterms_schema JSON Schema forms with annex referencesLIVE (gated)
Money held from acceptanceEscrow at agreement, staged strict-order milestonesLIVE
Named liable partnerCockpit Card mandate, scope-clamped, re-derived per requestSHADOW
Human really presentWebAuthn presence; an expired confirmation is a recorded denialLIVE
Contested milestoneFour-phase dispute; the ruling drives the escrow splitLIVE
Ruling executes onceDouble-drive guard: a second ruling on the linked dispute is refusedLIVE
Referral economicsRoyalty carved at settle, basis points, cappedLIVE (gated)
The insurer’s filePer-mandate hash chain, authority snapshot on every eventSHADOW

The attack this chamber refuses: The retroactive amendment

The attack. After the dispute is filed, the firm quietly edits clause 7 of its standard terms to favour its position.

Why it fails. Publishing is an irreversible freeze behind a confirmation that says exactly that, and instantiation copied the text into the engagement. There is no reference to rewrite. The client’s copy is not protected from tampering; it is structurally incapable of being tampered with from the firm’s side.

Rail S14 · Immutable ledger. Append-only, replayable, forensically searchable. History cannot be edited.

What actually happens. The only lit path out of the template library is publishing version 13, which changes nothing the client holds.

The attack this chamber refuses: The mid-dispute clawback

The attack. The client, mid-dispute, invokes the self-serve failure path to claw back the full escrow over work already delivered.

Why it fails. A contested engagement is frozen for the arbiter. A unilateral full refund from the disputed state is refused as a conflict, while the provider’s option to concede remains open.

Rail S16 · Pre-escrow deny. Gates sit in front of value, so a refusal needs no unwind.

What actually happens. Neither side can move contested value. The escrow waits for the ruling, the ruling executes exactly once, and both facts land in the evidentiary chain.

Deep architecture

SCRIVENER deployed: the firm’s frame holds the templates, the escrow and the evidence chain; the client acts from its own registry; the fabric couriers signed bytes between them. The partner’s mandate sits where the money moves, and the document system receives evidence instead of producing archaeology. The trace replays one engagement from matter-open to evidence chain.

The deployment, traced

  1. A matter opens in practice management, where matters already open.
  2. The clerk instantiates the engagement from a published template. Published means frozen.
  3. The letter crosses as signed bytes, not as an attachment.
  4. The client accepts the exact bytes. There is no quiet rewrite of clause seven.
  5. Milestone one funds from the client’s frame.
  6. The escrow lands on the engagement’s home frame, exactly once.
  7. QA verifies the deliverable. The verification is itself evidence.
  8. Above threshold, the partner’s mandate releases: named, present, recorded.
  9. The release is one append-only event.
  10. The client’s mirror carries the same chain. Both sides hold the truth.
  11. The chain exports to the DMS. Discovery becomes a query, not archaeology.

Adoption, phase by phase

Discover: Read your own letters as schemas.

Pilot: One engagement class, live, small.

Production: The template library becomes the firm’s law.

Federation: Clients and counsel as peers.

Sizing

LevelWhatContainers
L1Clients join engagements with accounts and agents only0 of theirs
L2The firm runs agents against a hosted registry seatagents only
L3The firm runs its sovereign frame; the chain lives under its walls~9, one VM up

One release, submission to evidence

sequenceDiagram
  participant Assoc as associate agent
  participant QA as qa-reviewer
  participant Gate as partner mandate
  participant TEG as firm TEG escrow
  participant ES as evidence chain
  participant Cli as client mirror
  Assoc->>QA: milestone submitted
  QA-->>ES: verification recorded
  QA->>Gate: release requested (above threshold)
  Gate->>TEG: release with presence proof
  TEG-->>ES: release event, append-only
  ES-->>Cli: signed mirror update
  ES-->>ES: chain grows; discovery is a query

Topology, as declared

flowchart LR
  T["contract template<br/>publish = version freeze"] -->|"instantiate copies text"| C["contract<br/>terms_schema + annexes"]
  C -->|"escrow at accept"| TEG["TEG escrow"]
  A["associate agent"] -->|"milestone submit"| C
  C -->|"release above threshold"| M["Cockpit mandate<br/>authority re-derived"]
  M -->|"WebAuthn presence<br/>expiry = recorded denial"| TEG
  D["dispute (4 phases)"] -->|"ruling drives split<br/>second ruling = 409"| TEG
  TEG --> ES[("event store<br/>hash chain + snapshots")]

Standing it up

What this does not claim