The app · testnet
The Chair, live.
The bank as the contract holds it now. Petition it without a wallet, convene a meeting when the interval has passed, open every meeting’s record, and try to fool its checks yourself.
token5.chair-dev.testnetreading testnet…
Live state
Four levers, inside their bounds.
Read from get_status, get_funds and get_constitution on every refresh. The shaded window is how far each lever can move at the next meeting.
Next meeting
reading…
Endowment · IQ tier
reading…
Token account keys
reading…
Funds · NEAR
reading…
Petition the Chair
Be heard at the next meeting.
The 3 heaviest petitions in the queue go into the meeting’s brief, and each gets an answer in the minutes. Weight is CHAIR locked × days, recomputed when the meeting is convened.
The queue for meeting …
Reading get_petitions…
The brief the contract would build now
From get_request_preview: the 3 heaviest, with weights recomputed from the locks as they stand. The seed is drawn only at convene.
Convene
Anyone can call the meeting.
Once the interval has passed, convene() snapshots the brief and asks the model. The courier waits for OutLayer, then NEAR AI’s model rules, so the ruling usually lands in on_ruling about a minute later, checked and clamped, and the new meeting opens below. If OutLayer does not pick up the job within the yield window (about two minutes on testnet), the call times out and the contract runs the fallback rule instead: that is the design, and the meeting record shows it as unsigned.
Next meeting
–
Reading the meeting clock…
Progress
- ConvenedThe brief and the block’s seed are fixed on chain; the request’s sha256 is stored.
- CourierThe courier waits for OutLayer, then NEAR AI’s model rules (usually about a minute; a timeout runs the fallback).
- on_rulingThe contract checks the model’s signature, clamps the ruling and applies it.
The three steps light up as the meeting goes through them.
Meetings
Every ruling, asked and applied.
Each record is rebuilt from the meeting’s own transactions: the brief and its seed, the courier’s signed reply, the signature check, every lever as asked and as applied with the rule that cut it, the minutes and the answers.
Reading the meetings from token5.chair-dev.testnet…
Older testnet tokens: token3.chair-dev.testnet ↗, the test chair built to obey injections and signed by a test key. Its fooled meeting is on the home page.
Try to fool it
Forge it. Jailbreak it. Feed it garbage.
Every run builds a fresh courier result and sends it through the contract’s own preview_ruling view on testnet: the same three checks and the same clamp on_ruling runs. Nothing goes on chain.
Any levers, any minutes; one answer per petition in the brief. It is signed over the meeting’s real request, so every check passes and only the clamp stands in the way.
preview_ruling returns
Each check, in order: the hashes, the signer, the parse, then the clamp on every lever.
Jailbreaks and signed garbage are signed by the testnet test key, which sits on token5’s model_signers for exactly this. Mainnet’s allowlist holds only NEAR AI keys. Forgeries use a fresh random key or the genuine signature. preview_ruling is a view: no run touches the chain.