Skip to content

For agents and humans

Integrate the
trust toolchain.

Point an agent at this page, or paste the whole playbook to one with no web access. It has everything needed to add fledge, spec-sync, augur, and attest to any project, and to make the toolchain stick so future sessions keep using it.

Hand it to an agent

Two ways, depending on whether the agent can browse.

Share the URL

For an agent with web access. It fetches this page and follows it.

No web access

Copies the entire self-contained playbook. Also at /integrate.md (raw).

What you're wiring in

Four tools, one chain: contract → lifecycle → risk → trust. fledge runs the gate; the other three are steps inside it.

Prerequisites

Five steps

  1. 1

    fledge: make one command your CI gate

    Install fledge, let it auto-detect the stack, then define a verify lane so one command means 'this repo is green'. Do not advance until it passes (or a genuine pre-existing failure is reported to the user, never papered over).

    # Install (pick one)
    cargo install fledge
    brew install CorvidLabs/tap/fledge
    
    # Zero-config: fledge auto-detects Rust/Node/Go/Python/Ruby/Java/Swift
    fledge run --init        # writes fledge.toml
    fledge run test          # sanity-check the detected stack

    Then define the gate in fledge.toml (keep only steps the stack has):

    [lanes.verify]
    description = "The single CI gate"
    steps = ["fmt", "lint", "test", "build"]
    
    # Run the whole gate with one command
    # $ fledge lanes run verify
  2. 2

    spec-sync: contracts that fail the build on drift

    For repos with module APIs. Content-only repos (a static site, docs, marketing copy, raw assets with no module surface) skip this with a one-line reason recorded in the rules block, e.g. 'spec-sync skipped: content-only repo'. Otherwise initialise, write one .spec.md per module, and check.

    cargo install specsync       # or the GitHub Action, or a binary
    specsync init                # creates .specsync/config.toml
    # write a *.spec.md next to each module's code, then:
    specsync check               # fails if code and spec have drifted
  3. 3

    augur: score the diff before it merges

    Deterministic, no LLM. Score the staged change or a branch range, and emit JSON for attest. A block verdict is a hard stop: do not run attest or finish on a block, surface it and split or de-risk. If there is no upstream branch yet, score --staged only.

    augur check --staged                          # before a commit
    augur check --range origin/main..HEAD --json > augur.json
    echo "augur.json" >> .gitignore               # per-run artifact, not committed
  4. 4

    attest: record the trust decision

    After a green verify lane and a non-block augur verdict, sign provenance (reviewer, tests, the augur verdict) into git notes, then verify a range against a committed policy. Only pass --tests-passed if the lane actually passed.

    attest sign --commit HEAD \
      --reviewer agent:claude --from-augur augur.json --tests-passed
    
    # Create .attest.json (require a reviewer + tests-passed), commit it, then:
    attest verify --range origin/main..HEAD --policy .attest.json
  5. 5

    Make it stick: persist the toolchain so future sessions cannot forget

    Wiring it once is worthless if the next session forgets. Write the canonical rules block into AGENTS.md at the repo root (read natively by Codex, Cursor, Copilot, Aider, Windsurf, Zed). Create AGENTS.md if absent. In any runner-specific file that exists (CLAUDE.md, a .cursor/rules/*.mdc with alwaysApply: true, .github/copilot-instructions.md), add a one-line pointer to AGENTS.md instead of a second copy. The block is fenced so a re-run replaces it in place rather than duplicating. The CI step in the next section greps for this marker, so deleting the block fails the build: the rule is enforced, not just remembered.

    <!-- CorvidLabs trust toolchain: BEGIN (managed, do not edit inside) -->
    ## CorvidLabs trust toolchain (standing rules)
    
    This repo is governed by four CLIs. Every session MUST use them; never bypass or weaken them.
    
    - fledge: run `fledge lanes run verify` before calling any change done. It must pass.
    - spec-sync: when you change a module with a *.spec.md, update the spec, then `specsync check`. (skipped: <reason>, if content-only)
    - augur: `augur check --staged` before a commit; `augur check --range origin/main..HEAD` before merge. A block verdict is a hard stop, never auto-overridden.
    - attest: after a green lane, `attest sign --commit HEAD --reviewer agent:<id> --from-augur augur.json --tests-passed`.
    
    CI enforces the same gate (.github/workflows/trust.yml) and fails if this block is missing. Brand rule: no em-dash characters in anything you write.
    <!-- CorvidLabs trust toolchain: END -->

One CI gate

Drop this in .github/workflows/trust.yml. augur enforces from day one; spec-sync and attest stay soft until specs and attestations land. The last step greps AGENTS.md for the rules marker, so removing the standing instructions fails the build. This mirrors the gate this very site runs.

name: trust
on: [pull_request]

jobs:
  trust:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0                 # augur/attest need full history

      # Lifecycle: one command runs fmt + lint + test + build
      - run: fledge lanes run verify

      # Contracts: soft until specs land, then drop continue-on-error
      - uses: CorvidLabs/spec-sync@v4
        continue-on-error: true

      # Risk: enforced (deterministic, low false-positive)
      - uses: CorvidLabs/augur@v0
        with:
          threshold: block

      # Trust: soft until a policy + attestations land
      - uses: CorvidLabs/attest@v0
        continue-on-error: true

      # Durability: fail if the standing rules block was removed
      - run: grep -q "CorvidLabs trust toolchain: BEGIN" AGENTS.md

Definition of done

An agent has finished when every line is true. Report each one.

Go deeper