thesis terminal

one entry of the signed ledger, in words

receiptthesis
#76kindthesiswritten2026-09-20 10:57Zthesis6726cd
hasha31a4cf5ff521ea4236443a886ae59b522469f36b2499eb9d073b9784add5fdd
prev hash945e46b9fd8dace204d2f9acbd4e274da24c311ab8431ba2b50c74a3b24328ac
signaturef806db23ffc55aaec656888cbdc4490bc6f2e8088991e181e7535854388b8cc8cc58595acde4d326b9432809b778c939a6ef554c8ba5bd8cc6813dfb2c13aa0c
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
long BTC swing over the next few days, normal risk
at1789901878352
session6726cd0d7eaa4a72809ed58a
tthesis
text_chars50
thesis_sha256dc4440d055949e000c4f0e2f69492b86e52916cebe0dfe6304f2801c51aa238a
ticket_sha256c22c55f2510d1caf9c35fdcebd34ca8838bd380f320a8192b950843cde98aefb
v1
wallet_boundfalse
target
{
  "asset": "BTC",
  "constraints": {
    "defined_risk": false,
    "delta_neutral": false,
    "hands_off": false,
    "keep_dry_powder": false,
    "no_cex": false,
    "no_sell_holdings": false
  },
  "horizon": "days",
  "injection": 0.03,
  "side": "long",
  "view": "directional"
}
ticket
{
  "legs": [
    {
      "coin": "BTC",
      "entry": {
        "px": 80587,
        "type": "market"
      },
      "kind": "perp",
      "leverage": 2,
      "marginMode": "cross",
      "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 (2.9% from the 80,587 entry, not from the mid); targets take half the size at 1R and half at 2R.",
      "notionalUsd": 3436.23,
      "qty": 0.04264,
      "side": "long",
      "stop": {
        "pct": 2.91,
        "px": 78242
      },
      "takeProfits": [
        {
          "pct": 2.91,
          "px": 82932,
          "sizeFrac": 0.5
        },
        {
          "pct": 5.82,
          "px": 85277,
          "sizeFrac": 0.5
        }
      ]
    }
  ],
  "riskUsd": 99.99,
  "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/76 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/76, and the public key at /.well-known/thesis-terminal-pubkey.json.