*stellarıı
← Reading

WPS v1 · Live · CC BY 4.0 · MIT verifier

Worlds Provenance Sidecar

Restoring accountability to the written word, one paragraph at a time. An open standard for per-paragraph cryptographic provenance — verifiable offline, no chain, no gatekeeper. SHA-256 + Ed25519 + an RFC 6962-style Merkle log.

AI made authorship illegible

In a 2026 experiment, novelist Vauhini Vara fed her own books to an AI and asked it to write in her voice. Her closest readers — including a friend of three decades — could not reliably distinguish the imitation from her own prose. Stylistic detection alone is finished.

A few months later, the novel Shy Girl was pulled by its publisher amid AI-writing allegations. The author's defense was that maybe a third party did it — unprovable in either direction. There was no signature, no timestamp, no artifact anyone could point at.

Watermarking AI output is one half of the answer. Watermarking human output — at the paragraph level, signed by the author, verifiable offline — is the other half.

By the numbers

Climate-credible provenance

ApproachEnergy / 1M recordsCO₂e / 1M recordsOffline verify
Bitcoin anchoring ~1.5 GWh ~900 t No
Ethereum PoS ~10 kWh ~6 kg No
WPS (Merkle log, this spec) ~5 kWh ~3 kg Yes

¹ Formula: Bitcoin ~1.5 GWh ÷ WPS ~5 kWh ≈ 300,000× — the multiple the table above actually supports (an earlier draft of this page said ~1,000,000×; corrected). Sources: CoinLaw 2026 Bitcoin energy data, Ethereum.org post-Merge estimates, CT-log throughput benchmarks. Conservative midpoints — confidence: medium. Full methodology footnoted in the spec.

vs Bitcoin~300,000×more energy-efficient than chain-anchored provenance.¹
vs Ethereum PoS~2×more efficient — and no chain, no RPC node, no external dependency.
Per book< 1 emailA book's worth of provenance verifies in milliseconds — less energy than sending one.

What the spec looks like

A manuscript exports alongside a manuscript.provenance.json sidecar. Each paragraph is a record. Each record is signed by the author's Ed25519 key, hashed into a Merkle leaf, and bound to the manuscript root by a Worlds audit signature.

{
  "spec_version": "1.0.0-phase-b",
  "manuscript_id": "01HZX...UUID",
  "audit_root": "9f2d...c1a8",
  "audit_signature": "5b7e...a40c",
  "author_keys": [
    {
      "fingerprint_hex": "a7fa...5664",
      "public_key_hex": "3c9b...77d1"
    }
  ],
  "records": [
    {
      "unit_id": "para-001",
      "author_type": "HUMAN-ORIGINAL",
      "model": null,
      "text_hash_hex": "1c4a...0e9d",
      "author_key_fingerprint_hex": "a7fa...5664",
      "parent_unit_id": null,
      "created_at_iso": "2026-05-09T14:23:11.000Z",
      "signature_hex": "51e5...af01",
      "merkle_proof": [ /* ... */ ]
    }
  ]
}

Full schema, canonical encoding rules, and a 5-record, 24-check conformance fixture are in the published spec.

How to adopt

Verify it yourself

You can verify a Worlds-signed manuscript right now at worlds.stellarii.studio — no install required. A standalone reference-verifier repo is coming for anyone who wants to run it locally or embed it in their own tooling (it's mechanical, ~90 minutes, once green-lit — the code already lives at tools/verify-cli/ inside the Worlds repo); here's what adopting it will look like.

  1. Install the reference verifier. Node 22+ required for Web Crypto Ed25519.

    cd tools/verify-cli
    npm install
  2. Round-trip a fresh demo sidecar against the full eight-step verifier pipeline.

    npm run verify -- --demo
  3. Run the 24-check conformance fixture — already published — against your own implementation. Every intermediate byte is pinned.

    npm run verify -- --vectors ../../docs/spec/v1/test-vectors.json
    
    # Conformance: ✓ CONFORMANT (24/24 checks passed)
  4. Verify a real manuscript with the audit key pinned out of band.

    npm run verify -- <manuscript.txt> <sidecar.provenance.json> --audit-key <hex>

The canonical fixture is already served at /spec/v1/test-vectors.json — five records covering all five author types, byte-pinned end to end.

How WPS relates to existing standards

  • vs C2PA: C2PA wraps the whole manuscript with publisher-level metadata. WPS signs each paragraph, by the named human author. The two compose — C2PA on the export, WPS on the body.
  • vs Project Origin: BBC / NYT / CBC / Microsoft sign at the article level, by the publisher. WPS signs at the paragraph level, by the author.
  • vs Nostr: Nostr signs each event as a single atom — one post, one signature. WPS subdivides the post and signs each paragraph independently, so one document can carry mixed human and AI authorship at paragraph granularity.
  • vs SynthID (Google): SynthID watermarks AI output. WPS attests human output. They solve opposite halves of the same problem; both will be needed.

Open implementations welcome

The cryptography is the trust. The reference verifier is one of N validators. Anyone can implement the spec against the canonical fixture and reach the same answer — the conformance procedure is in §13 of the published spec.