Two minutes, if that is all you have
- The 96-second demo video: what Hanko does and the proof behind each claim. Every number on screen is from the live project.
- 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.
- 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.
- Try it live:
exit_liquidityon 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. - Failure drill: nine failures injected into the real code. Echo Index: 2,094 real posts, the measured result, and the bug the study found.
- From a clone, no keys:
pip install -e ".[dev]" && pytest, thenhanko 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時間後、その条件に照らして自動で採点されます。
- –Track 1: リポストや転送、広告を付けただけのコピーは1つの声として数えます。同じ証拠からは、モデルを呼ばずに同じ判断IDが再現されます。
- –Track 3:
exit_liquidityは、そのサイズのポジションを実際に手仕舞えるか、そのコストはいくらかを、実行可能な見積もりから答えます。RYO の応答形式に準拠し、REST と MCP の両方で呼び出せます。 - –Track 2: /ledger は前回の実行から何が変わったかを重要な順に示します。Lighthouse のアクセシビリティは全8ページで100です。
- –まだ証明できていないこと:RYO の市場データは2026年9月28日以降、このキーで失敗し続けています。定期実行の記録は10月24日に始まったばかりで、まだ数週間分です。詳しくは LIMITATIONS.md をご覧ください。
デモ動画(96秒)の日本語字幕(SRT)はリポジトリにあります。
Common score (40), every track
| Rubric line | Open | What to look for |
|---|---|---|
| Combining sources (20) | /try, hanko/sweep.py | Each 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) | /drill | RYO 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
| Rubric line | Open | What to look for |
|---|---|---|
| Real thinking (25) | --interpreter llm, tests/test_llm_interpreter.py | A 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) | /workbench | Remove 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-run | A 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.md | A 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
| Rubric line | Open | What to look for |
|---|---|---|
| Fills a gap (25) | /try | None 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/call | RYO'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.py | Adopting 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
| Rubric line | Open | What to look for |
|---|---|---|
| Easy to read (25) | /ledger, /workbench | The 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, /echo | On 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 only | Lighthouse 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).