Skip to content

02 / Document and spec verification

AttestOpen source · early

Prove every promise your docs make.

Point Attest at a README, a quickstart, an AI assistant’s how-to answer or a product spec. It runs every step against the real app, in a real browser, and hands the document back with each step marked proven, stale, broken, unverifiable or skipped, with evidence behind every mark.

Attest is the first station of the SyberLabs factory. Steps that fail go to an agent, SyberWork decides what that agent may change, and the browser check runs again. A case closes only when the fix is proven, and every case leaves a receipt.

Why

Why prove a document?

Docs, quickstarts and specs make promises: run this command, click this button, see this label. Products change underneath them, and the first person to notice is usually a frustrated customer.

Attest treats each step as a claim to be checked against the running product. A claim is proven only when a command passed or a browser saw the promised label, never because a model said so.

Use

Four ways to use it

Python 3.11 or newer. Browser steps use Kane CLI, TestMu’s browser agent.

  1. 01 / Prove

    Prove a doc

    Run attest prove on a Markdown document. Shell steps run in a scratch directory, browser steps run in Chrome, and the result is one page with a badge on every claim.

  2. 02 / Repair

    Fix drift in the doc

    When a descriptive claim has gone stale, an agent writes a doc-only patch in a throwaway checkout and the browser proves it again before anything is applied.

  3. 03 / Protect

    Refuse to weaken a promise

    A policy file marks promises the product must keep. Attest will not edit those to make a check pass; it issues an implementation handoff instead.

  4. 04 / Spec

    Build to a spec

    In spec mode a failing claim becomes a ticket. A worker implements it in a candidate copy of the app, never the original, and the browser checks the copy. Applying it needs a person’s approval.

Design

How it is built

  • Claims pinned to lines

    One structured-output call turns the document into typed claims tied to exact line spans. Fenced command blocks become shell claims verbatim.

  • Verdicts by rule, not by model

    Shell claims are judged on exit codes and promised output. Browser claims compare the expected label with the observed one, with guards for negation and changed numbers.

  • An authority gate

    Each stale or broken claim is checked against the policy before an agent touches it. Descriptive text may be repaired; protected promises may not.

  • Receipts for every case

    Each loop case writes an attest.receipt/v0 file: document hashes before and after, the claim, the authority decision, the patch hash and the evidence. SyberWork reads them as observations.

  • Bring your own agent

    OpenAI is the default worker. Any command that reads a brief and prints a diff can take its place, so a team can plug in the agent it already uses.

Evidence

  • Measured

    At Kane CLI Hack Day in San Francisco on 24 October 2026, Attest proved 9 documents across 23 turns, with 31 browser claims proven by Kane, each with a screenshot.

  • Measured

    Real drift it caught that day: Vite’s starter page now reads “Get started”, not “Vite + React”, and GitHub’s “Security & analysis” is now “Advanced Security”.

  • Tested

    Unit tests and red-team cases cover forged approvals, attempts to weaken a protected promise and path-escape attacks on the apply step.

  • Not yet

    There is no hosted service; Attest runs locally as a command-line tool. Shell steps run on the host, not in a sandbox. No outside team runs it in production yet.

Reflects SyberLabs/attest@274b8e7 · verified 2026-11-05. Each state is earned by code, a named test, a measurement under stated conditions, or a deployment.

Facts

Status
Open source · early
Stage
Open-source command-line tool, version 0.1.0
Technology
Python 3.11+, OpenAI structured outputs, Kane CLI and Chrome
License
MIT

Other products