← Hanko
For judges

Every rubric line, and where to check it yourself.

Hanko enters Track 1 (the agent), Track 3 (exit_liquidity) and Track 2 (the workbench, the drill and the Echo Index screens). Each row below is one line of the published rubric, the place that answers it, and what to look for. Nothing here asks you to take a claim on trust: every row ends at something you can run.

Two minutes, if that is all you have

  1. The 96-second demo video: what Hanko does and the proof behind each claim. Every number on screen is from the live project.
  2. What held and what failed: a sealed SOL refusal proved wrong, plus a reproducible comparison with a simple entry rule. Open the original decision, replay it, then inspect the review.
  3. Live ledger: a run sealed every three hours with no key, committed to the repository and anchored in Bitcoin. What changed since the last run comes first, and every decision is graded 72 hours later against conditions it wrote down in advance.
  4. Try it live: exit_liquidity on BONK, $50,000. An executable venue quote, the model's own figure beside it, and the model's error, while RYO's market data is down.
  5. Failure drill: nine failures injected into the real code. Echo Index: 2,094 real posts, the measured result, and the bug the study found.
  6. From a clone, no keys: pip install -e ".[dev]" && pytest, then hanko verify-run runs/run_836b976720f63dc0.json. This is the first live ENTER (BTC, 23 Oct). It is replayed decision by decision from the committed bundle, and its manifest is anchored in Bitcoin block 972,817.

Hanko announcement on X: the project post submitted for the Social Media Award. The same link is included in the submission PDF and README.

Evidence, including the misses

The SOL refusal sealed on 23 Oct was proved wrong: its one-voice assumption no longer held when two independent voices were observed at review. The review was late, so this is a review-time observation, not a reconstructed deadline count. It invalidates that assumption; it does not prove every entry gate cleared.

Read the failure case, inspect the sealed decision, run hanko verify-run runs/run_836b976720f63dc0.json, then inspect its review and observations. The policy was not automatically retrained.

The retrospective baseline comparison uses the same recorded readings and price windows. On 76 eligible opportunities reviewed by 30 Oct, both rules chose the same 27 entries; their mean price return was +0.24%, with 12 positive returns. A held falsifier does not mean an entry made money. This sample establishes no selection advantage. The script, input hashes, exclusions and every included row are published.

Verified model-read run, 30 Oct: 21 model calls, no fallback, three unnamed-token readings rejected, and four sealed decisions that replay from the committed bundle. BTC ENTER, ETH PASS, SOL and BONK ABSTAIN. Its Bitcoin timestamp is pending confirmation.

The baseline enters on bullish weight greater than bearish weight with at least two distinct authors, before independence filtering. Equal hypothetical 1% positions; costs omitted; overlapping observations are dependent. The baseline was specified retrospectively. Official MCP registry listing: Hanko 2.0.0.

日本語の概要

Hanko は、暗号資産をめぐる公開の発言を読み、ポジションの大きさを決めるか、判断できないと正直に答えるツールです。すべての判断は、結果が出る前に「何が起きたら間違いだったか」を書き残し、封印してビットコインのブロックに刻みます。72時間後、その条件に照らして自動で採点されます。

デモ動画(96秒)の日本語字幕(SRT)はリポジトリにあります。

Common score (40), every track

Common rubric lines and where each is answered
Rubric lineOpenWhat to look for
Combining sources (20)/try, hanko/sweep.pyEach decision combines X, Telegram and RSS voices (Bluesky supported) with RYO's facts and DexScreener's canonical pools. Each exit_liquidity answer combines RYO, DexScreener and a Jupiter quote. Every figure names the source it came from.
Coping with failure (20)/drillRYO down, every source down, a 429 from the quote venue, the model down, a prompt injection, tampered evidence, an edited sealed run, a source dying mid-sweep, a restart. Nine held. Missing data shrinks a position instead of defaulting to zero.

Track 1 (60): the agent

Track 1 rubric lines and where each is answered
Rubric lineOpenWhat to look for
Real thinking (25)--interpreter llm, tests/test_llm_interpreter.pyA model reads posts, including tokens named without cashtags, sarcasm and negation, and quotes the words its reading rests on. Code then checks every reading: a token the post never names is dropped, a quote that isn't verbatim is discarded, and an injected instruction produces nothing. The decision itself stays mechanical: evidence quality as a geometric mean, independence, the exit gate.
Cause and effect (20)/workbenchRemove one voice and the verdict flips from ENTER to PASS. The page names the rule that caused it, and shows every rule whose outcome moved, most important first.
Repeatability (10)hanko audit, hanko verify-runA decision re-derives from stored bytes to the identical id, with no cache and no model call. Each sealed run carries its own bundle and verifies from a bare clone; the scheduled workflow checks this on every run it commits. Manifests are anchored in Bitcoin through OpenTimestamps, and hanko ots-status --upgrade fetches the block attestation.
Advanced execution (5)/echo, DECISIONS.mdA reproducible study on real data that audited the agent's own echo detector. 18 recorded engineering decisions, several of them bugs found by the project's own checks.

Spotlight brief (Multi-KOL Narrative Agent): voices from X, Telegram and Bluesky; per-token stance, conviction and urgency; convergence counted on independent voices only, so a repost, forward, quote or padded copy is one voice, not two; a practice position sized under user-defined limits (Policy), with the falsifiers committed before the outcome.

Track 3 (60): exit_liquidity

Track 3 rubric lines and where each is answered
Rubric lineOpenWhat to look for
Fills a gap (25)/tryNone of RYO's six tools says whether a position can be closed at its size, or what closing it costs. This one does, from an executable quote where one exists, and reports null rather than zero where it can't.
Follows the spec (15)POST /api/tools/exit_liquidity/callRYO's public response envelope, field for field (schema_version, tool, status, data_mode, as_of, request, data, summary, availability, warnings), on RYO's own REST route shape, with RYO's error shape. tests/test_exit_venues.py checks the envelope.
Could we use it (20)/api/mcp, hanko/skills/exit_liquidity/http.pyAdopting it is a route registration, not a port. It is also a live MCP server any MCP host can add. Arguments are validated against the tool's input schema, and the handlers are tested offline.

Track 2 (60): the screens

Track 2 rubric lines and where each is answered
Rubric lineOpenWhat to look for
Easy to read (25)/ledger, /workbenchThe ledger opens on what changed since the last run, then where each token stands, in words: the verdict, the rule behind it, and the condition that would prove it wrong. The workbench shows the same for one removed voice. Every sample input is labelled as sample.
Sorted by importance (25)/ledger, /workbench, /echoOn the ledger a flipped verdict ranks first, because it is the only change that would have moved money, then a resized position, then a large move in evidence quality. On the workbench the deciding rule comes first. Echoes are listed most similar first.
Works for everyone (10)any page, keyboard onlyLighthouse 12.2.1 accessibility: 100 on all eight pages (measured 25 Oct; the first run scored 87 to 93 on colour contrast, fixed by darkening four colour tokens). A skip link and a visible focus ring, results announced through live regions, native controls only, tables with headers and captions, no information carried by colour alone (HELD and BROKE are words), and reduced-motion respected.

What is not proven yet

In full in LIMITATIONS.md. In short: RYO's market data has failed on every live call made with this key since 2026-09-28 (a ticket is open), so live decisions run on venue facts and lack RYO's safety and technical fields. The scheduled live record started on 24 Oct and is still short. Keyless sweeps use a word list; a separate daily workflow now reads posts with a model, with its first successful seal verified on 30 Oct. And the first two sealed runs predate replay bundles, so they can no longer be replayed (D-17).