thesis terminal

one entry of the signed ledger, in words

receiptthesis
#29kindthesiswritten2026-09-20 01:58Zthesiscd45b5
hash8184e76451ec88a1e3c9654e47cb78c444399487625547c3d1218031d77d2684
prev hashbed1c8af164479e4ede516368b0b692f3ba882be1f113c6e9c6d34b6e0f1798a
signature667aa92ff1638e0d1b052322fdbb6a255367b4dde7741ec9024b3c15291e353dd22b7e3c3d4b013190af997f163ea026413aa2719c694cdca88dd4e04fbd1802
public keyf25f03fbc22533bc1b707bdcd9a452968c8724afa039cebd6d485dc741f63975
hash = sha256(prev hash + the canonical payload JSON); the signature is Ed25519 over the lowercase hex hash. Change one character of the payload and every entry after this one stops verifying.
what was claimed
SOL runs into the weekend, I want to be long but I can't watch it, keep the risk small Refinement 2: smaller risk, cap loss at $25
at1789869521500
sessioncd45b52dec36407f9aa3f942
tthesis
text_chars131
thesis_sha256c5fd2a3f0ae2a231576167a3ad990bfdd49fc2fba11b2ef32f2a51a8bab831d0
ticket_sha256c237ea1064e8cea19020fe520a21bc3a1ebaedab6ed145a2186272280c25c9b7
v1
wallet_boundfalse
target
{
  "asset": "SOL",
  "constraints": {
    "defined_risk": true,
    "delta_neutral": false,
    "hands_off": true,
    "keep_dry_powder": false,
    "no_cex": false,
    "no_sell_holdings": false
  },
  "horizon": "days",
  "injection": 0.02,
  "side": "long",
  "view": "directional"
}
ticket
{
  "legs": [
    {
      "coin": "SOL",
      "entry": {
        "px": 110.5,
        "type": "market"
      },
      "kind": "perp",
      "leverage": 20,
      "marginMode": "isolated",
      "note": "Stop is 1.5x the daily ATR (the 14-bar 1h ATR scaled by sqrt(24), because this prototype only fetches 1h candles) for a days-long hold (4.6% from the 111 entry, not from the mid); targets take half the size at 1R and half at 2R.",
      "notionalUsd": 499.46,
      "qty": 4.52,
      "side": "long",
      "stop": {
        "pct": 4.64,
        "px": 105.37
      },
      "takeProfits": [
        {
          "pct": 4.64,
          "px": 115.63,
          "sizeFrac": 0.5
        },
        {
          "pct": 9.28,
          "px": 120.75,
          "sizeFrac": 0.5
        }
      ]
    }
  ],
  "riskUsd": 24.97,
  "template": "perp_swing"
}
Shown as it was signed, with the wallet taken out: a field named address or walletNote reads [redacted], any 0x address inside any other field reads 0x… (a vault link keeps its own, which is a public contract), and a clause quoting what a wallet holds is cut and says so. Those bytes are unchanged in the signed entry — /ledger/29 serves it verbatim, and that is what the verifier hashes.
check it yourself

Nothing here asks you to trust this page. Run the independent verifier: it refetches every entry, recanonicalises each payload, recomputes the chain and checks each signature against the published key.

node scripts/verify_ledger.mjs https://think.ascendants.io
The head is at /ledger/head, this entry's raw JSON at /ledger/29, and the public key at /.well-known/thesis-terminal-pubkey.json.