Every human decision, on the record.

Each time verified people or a developer’s team decide for an AI agent, the outcome is added here, linked to the one before it by its fingerprint. Change any past decision and every link after it breaks. Anyone can check.

Decisions recorded0
Decided by verified people0
Sent to a developer’s team0
Answers confirmed in person–

No decisions on this chain yet. The first one will appear here the moment it’s made.

    Don’t take our word for it.

    The ledger is public on purpose. Every entry is a few plain fields and a fingerprint, so you can recompute any of them with a few lines of code, or press “Check the chain yourself” and your browser does it.

    • Private by design. No questions, answers or customer names appear here. Each entry carries a salted fingerprint of its content, which only the developer who owns it can match to their own record.
    • Test and Live are separate chains. Simulated decisions from test keys never mix with real ones.
    • Not a blockchain. One append only record, with the latest fingerprint recorded every day, so history can’t be quietly rewritten, by anyone, including us.

    JSON: /api/ledger and /api/ledger/live/{n}

    // Each entry's fingerprint is SHA-256 of these fields joined with "|":
    plures-ledger-v1 | mode | seq | task_id | decided_at | status
      | decided_by | reason | agreement | answers | confirmed
      | content_digest | prev_hash
    
    // Check one entry (Node 18+)
    const e = await fetch("https://plures.si/api/ledger/live/1").then((r) => r.json());
    const input = ["plures-ledger-v1", e.mode, e.seq, e.task_id, e.decided_at, e.status,
      e.decided_by ?? "", e.reason ?? "", e.agreement ?? "", e.answers, e.confirmed,
      e.content_digest, e.prev_hash].join("|");
    const { createHash } = await import("node:crypto");
    const hash = createHash("sha256").update(input).digest("hex");
    console.log(hash === e.hash, e.next_hash); // true, and the next entry's prev_hash