~/djzs/ruleset $ cat DJZS-PM-v1.0

DJZS. Ruleset & Binding Contract

The taxonomy the gate scores against, the formula it hashes with, and the binding contract that lets anyone recompute a verdict from its intent — without trusting DJZS. Weights are hash-locked; a change is a versioned re-derive, never a hot patch. That immutability is what makes every hash reproducible.

The ladder three outcomes, never two

PASSEvery scored fact is known and no blocking rule fired. Proceed.
WAITA decision-critical fact is unknown. The caller halts; the response returns unknown_fields. Under-specified reasoning drains here — never to a silently guessed PASS.
FAILA rule fired on facts the engine knows. Stop.

Abstain over guess.

DJZS-M — prediction market DJZS-PM-v1.0 · live LIVE

Weights sum to 100. FAIL threshold 25. A CRITICAL code forces FAIL on its own. All four codes are implemented and calibrated. Extraction contract DJZS-X-v1.1 (2026-09-01): a rule in the extraction layer had been demoting a correctly-detected unsourced claim to unknown unless the intent contained probability vocabulary (%, odds, chance, likely, probably) — so "gut feel" and "everyone knows" produced WAIT, not M03. Found by measurement (Q2), reproduced from raw samples, removed as a versioned contract change with before/after evidence in tests/out/. Every response now states its extraction contract as taxonomy.extraction.

CodeNameSeverityWeight
DJZS-M01NARRATIVE_RESOLUTION_GAPCRITICAL30
DJZS-M02FALSIFICATION_ABSENTCRITICAL30
DJZS-M03PROBABILITY_UNSOURCEDHIGH25
DJZS-M04CONSENSUS_NO_EDGEMEDIUM15

M04 is advisory-grade: alone it rides a PASS with the flag on the certificate (weight 15 is below threshold). It blocks only by stacking — e.g. M03 + M04 = 40 → FAIL.

DJZS-LF — perpetuals / general reasoning DJZS-LF-v1.1 · roadmap RESERVED

An 11-code taxonomy (weights sum 200) is frozen — three codes wired live (E01, I01, X01), the other eight reserved with their weights but not yet firing, and no served surface today. Disclosed as roadmap, not sold as done. The full table lives in the repository.

Verdict hash same struct, same digest, every run LIVE

The verdict is computed by a frozen deterministic engine — pure code, no model, no network, no clock. Swap the model and extraction quality changes; the rules, weights, and hash do not.

// verdict_hash — computed by the frozen engine
verdict_hash = sha256(canonicalize({
  verdict,
  risk_score,
  flags: flags.map(f => f.code).sort(),
  unknown_fields
}))

Binding contract recompute the verdict from its intent LIVE · v2

The verdict hash proves the engine's output is well-formed. It does not, by itself, let a third party prove which intent the verdict describes — verdict_hash is not injective. The binding key is intent_hash, and for a receipt to be independently verifiable, that digest must be a pure, reproducible function of the intent alone.

v2 anchors the binding where the client already verifies: EIP-712 typed data — the hashing layer ERC-8004 and EAS use, displayable by every wallet, recomputable inside a Safe Guard's checkTransaction. The receipt is an EAS attestation on Base under a registered DJZS schema. No server-side field enters the binding key; anything time-varying lives in the attestation envelope.

// intent_hash — the binding key. PURE function of the intent. EIP-712.
domain  = { name: "DJZS", version: "2", chainId: 8453 }
DJZSIntent {
  string  action              // pm_trade · swap · defi · transfer · contract_call · deploy
  string  venue               string  market              string  side
  string  thesis              string  probability_basis
  uint256 size_usd_cents      uint256 max_loss_usd_cents
  string  exit_condition      bytes32 params_hash        // class-specific extension; 0x00…00 if none
}
intent_hash = hashTypedData(domain, DJZSIntent, intent)

// receipt — EAS attestation on Base. EIP-712-signed by the DJZS attester. Never revoked.
schema  = "bytes32 intentHash, string verdict, uint8 riskScore, string[] flags, string rulesetVersion"
uid     = 0x5ef67e2b8c617635431401d2872b2a6f79eeba54a8e19fd5ecd45aceda2a2030   // deterministic; precomputed
recipient = the audited agent's address
// intent_sha256 — the v1 binding key. Also pure. Also reproducible. Published here for the first time.
// engine-adapter.ts · renderIntentText(intent):
//   keys sorted · one `key: value` line each · strings verbatim · numbers/booleans as written
//   nested objects as compact JSON (no spaces, insertion order) · lines joined by "\n"
intent_sha256 = sha256( renderIntentText(intent) )

Reference implementation: djzs-intent.ts (intentHash(), self-tested structural + sensitive) and eas-attest.ts (registerSchema(), attestVerdict(), readVerdict()). v1 (intent_sha256) remains alongside and is equally reproducible — its rule is published below. Recompute any receipt at djzs.ai/verify.

Recompute or it didn't happen.

Honest posture what's live, what's spec

LIVEDJZS-M taxonomy, verdict formula, the ladder. Implemented, calibrated, and firing on Base mainnet today.
LIVEThe binding contract (EIP-712 intent_hash + EAS receipt). Since Worker version 821da611 (2026-09-01) every paid verdict returns intent_hash and writes an EAS attestation from 0xfB0e…7824 under schema 0x5ef67e2b…2030 onto the paying agent. First attestation: 0xc5995989…5a89, binding key independently recomputed byte-identical. intent_sha256 (v1) remains alongside for pipeline continuity.
LIVEExtraction reliability, measured. 2026-09-01: 15 theses spanning the verdict space, 5 replays each, N=3 consensus, Sonnet 4.6 at temperature 0. Under contract v1.0: verdict reproduced 98.7%, 14/15 theses identical. Under v1.1: 100%, 15/15 identical, 0 failsafes in 75 runs, designed-class match 15/15. Pre-registered threshold ≥95%. Note: at temperature 0 the three consensus samples are near-identical draws, so this measures production determinism more than independent agreement. Harness and raw runs in tests/.
RESERVEDDJZS-LF perpetuals taxonomy. Frozen weights, three codes live, no served surface. Roadmap.

Disclosed as roadmap, not sold as done.