A price moved.
Here's the signed record β
not a guess about what it meant.
FairWhistle is an autonomous agent that watches odds microstructure for repricing patterns public information can't explain, then publishes a timestamped, hashed, Ed25519-signed alert the moment it fires β anchored on Solana so the record can't be quietly edited after the fact.
A risk desk for one question
Not a trading strategy. Not a fixing accusation machine. FairWhistle answers exactly one thing before you act on a price: is there a reason to distrust this quote right now?
Watches microstructure, not headlines
Three causal detectors read raw odds ticks across books and markets β abnormal repricing velocity, cross-market coordination, and stale-then-snap liquidity pulls. No sentiment, no punditry, no black box.
Fixing and informed money move price first
Both leave the same fingerprint before the public catches up: price moves faster or more coordinated than a public-event window can explain. That fingerprint is what the detectors are built to isolate.
Point-in-time, not a running verdict
Every alert is hashed and signed the second it fires. It is a record of what the system knew then β never silently rewritten as more information arrives later.
Odds in, signed record out
Four steps, the same code path for replay, live, and backtest.

Odds feed
TxLINE consensus book β replay fixture, live mainnet feed, or historical archive, depending on mode.
βDetectors
Velocity, cross-market coordination, stale-then-snap β pure functions over the price series, no side channels.
βSigned alert
SHA-256 core hash, Ed25519 signature, detection timestamp. Verifiable in the browser.
βDevnet anchor
Fingerprint memo'd on-chain β Solana devnet, independently checkable via getTransaction.
15:48:57 ET: an alert fires mid-match
This is REAL β the live TxLINE mainnet feed, today's match, not a rehearsed scenario.

Over roughly three minutes, velocity_live watched OU 2.5 Β· Over
reprice +6.4% on the real TxLINE mainnet consensus
feed β peak z-score 5.86 against a threshold of 5,
with no public explanation visible in the data available at that moment. At
15:48:57 ET the alert fired.
π What was signed
fd21174f5a2ba63aebf23e893161606712472e8510646051c5e052f356c36e01Ed25519 Β· agent key Β· at detection timeSolana devnet, confirmed on-chain, independently verified by us via getTransaction.
π‘ What the detector didn't know yet
A yellow card had occurred at 15:46:13 ET, and a shot / high-danger-possession sequence at 15:48:33β37 ET β both real, public match events.
The free-tier score/action feed lags the odds feed, so this data hadn't arrived when the detector fired. Minutes later, once the score feed caught up, a fresh recompute no longer surfaces this alert β both events now fall inside the detector's own suppression window, explaining the price move as legitimate public reaction, not fixing.
βThe signed record is the feature. A live detector working with partial information will sometimes flag something that a fuller picture later explains β that's not a flaw, it's exactly why the alert is signed and anchored the moment it fires, not treated as an evolving βcurrent status.β Point-in-time attestation beats hindsight: nobody can retroactively pretend the system didn't flag it, and nobody can retroactively claim it proved fixing when it didn't.β β FairWhistle design frame
cd34f356c930,
~15:30 ET) β REAL but video-only:
we have video evidence of it firing, not the full underlying data, so it isn't
independently anchored. Mentioned here for completeness; fd21174f5a2bβ¦
above is the centerpiece and the one we can fully evidence.
The same detector, run across a tournament
REAL Β· historical archive β a standalone copy of the live detection math, run against a local, pre-captured archive of real TxLINE World Cup fixture data (not synthetic).
What's real, what's staged, every time
β Replay fixture SIMULATED
The default view on the dashboard is a deterministic, seeded, synthetic tape β 3 planted, openly-labeled anomalies, looped every 10 minutes. Always available, never live data.
- Detectors never see scenario metadata β same code path as live
- Used to demonstrate detection logic on demand, not to report real events
β Live mode REAL
The real FIFA World Cup Final via TxLINE mainnet consensus odds β free tier, a single consensus book, ~60s batch delay. Everything in the centerpiece above came from this mode.
- No execution, no trades β a pre-trade integrity check only
- Every live alert is signed at detection time, same as replay