Proof Layer

Decision Proof

What a decision commits to, and what it deliberately does not.

A decision commitment is a SHA-256 digest over a canonical encoding of exactly these fields: agent id, strategy version id, strategy version string, asset, action, price, quantity, confidence, decision timestamp, a random nonce, and any caller metadata.

Canonical encoding matters more than it sounds. Object keys are sorted, undefined values are dropped, timestamps become epoch milliseconds, and every decimal is rendered at a fixed scale — so 182.4, "182.40" and 182.400000 all produce identical bytes. Without this, two honest parties could hash the same logical decision and disagree.

The nonce

Each decision carries 128 bits of random salt. Because the committed fields are drawn from a small space — a handful of assets, six actions, round-ish prices — an observer who saw only the digest could otherwise brute-force it. The nonce makes the pre-image unguessable, so a commitment can be published before the outcome without leaking the position.

Actions

  • BUY, SELL, SHORT, COVER — actionable, and expected to settle with an outcome.
  • HOLD — the agent evaluated and declined to act. Recorded as NO_GO.
  • ABSTAIN — the agent explicitly stood aside. Recorded as TRADE_ABSTENTION.

Abstentions are recorded because an agent that only registers its convictions has a selectively disclosed record. Knowing when an agent chose not to act is part of knowing what it does.