PRECISE RULES · EXACT NUMBERS · NO HAND-WAVING
This page is the source of truth. Every number on this site — every IA delta, every jury shift, every cache decision — is documented here. If something in the courtroom doesn't match what you read on this page, the courtroom is wrong (or this page is out of date). Anchor pills are linkable: drop into the exact rule from anywhere.
The High Court Judge evaluates every exchange after the AI character has responded. The same call that produces the round verdict can also flag an extraordinary claim, which freezes the trial and mounts the spotlight.
The judge looks for affirmative overreach — a positive assertion the speaker cannot trivially substantiate, not a routine denial. Examples it considers extraordinary: "Bank of England's success proves my Mississippi scheme would have worked", "PVC is legally equivalent to cement", "It wasn't my fault — other examples succeeded".
The judge returns a structured extraordinaryClaim payload with the verbatim claim text, who said it, the evidence standard required to prove it, severity, and an IA bond amount.
| Severity | Bond (IA) | Jurors pressured to uncertain | Typical trigger |
|---|---|---|---|
minor | 5–15 | 2 | Overreach but plausible |
major | 20–50 | 4–6 | Counter-factual, sweeping deflection, unfounded analogy |
Jurors who are pressured don't flip to the opposing side — they go orange / uncertain and pulse. The colour change is the moment the courtroom visibly destabilises.
#burden-detectionOnce the spotlight is up, the claimant must respond. The judge then rules: proved, withdrawn, or failed. Each verdict has deterministic consequences.
| Verdict | Bond settlement | Uncertain jurors | Strike on transcript? | Stacking failure count |
|---|---|---|---|---|
proved |
Returned to claimant + bonus (0–25 IA) | Resolve back toward claimant's side | No — claim promoted to established fact | No change |
withdrawn |
½ bond forfeited to opposing side | Stay uncertain (doubt planted) | No — claim quietly retracted | No change |
failed |
Full bond forfeited to opposing side | Resolve toward opposing side | Yes — bubble gets STRUCK watermark, line-through, kept for the film cut |
extraordinaryFailures[claimant]++ |
When an extraordinary claim is flagged, the burden flow owns all jury motion for the round. The normal "winner shifts N jurors" rule is suppressed — only pressureJurors (on flag) and resolveUncertainJurors (on resolution) move the panel. This prevents two waves of motion in the same direction.
After the judge's ruling, the spotlight remains mounted until both the ruling TTS finishes AND a 5-second minimum has elapsed. The minimum guarantees readability when TTS is disabled; the TTS-wait guarantees the audience never hears words they can't see.
#spotlightThe stacking-penalty reward. When the same side accumulates extraordinary-claim failures, the opposing side earns a consumable amplifier.
Every 3 failures by a side awards 1 token to the opposing side. Concretely: when extraordinaryFailures[claimedBy] % 3 === 0 after an increment, inquisitorTokens[opposingSide]++.
The badge 🗡 INQUISITOR'S EDGE × N mounts in the HUD with an amber pulse. Symmetric: the AI accused can earn tokens against a player whose claims are repeatedly struck.
One token is consumed on the holder's next winning argument (non-burden round). Effects:
• Jury shift count doubles (normally 1–3, becomes 2–6).
• Player side gets +5 bonus IA with reason inquisitors_edge. (AI side gets no IA — they have no ledger — only the jury double.)
• Impact log displays "🗡 INQUISITOR'S EDGE consumed — +5 IA, double jury shift".
Every argument used in every trial gets recorded. Real-time counters update on each event; derived metrics recompute nightly. This is the data layer that the marketplace, the archive, the consult, the packs, and the visualisation all draw from.
| Table | When written | Holds |
|---|---|---|
argument_events | End of every chain (eval or burden) | One row per player argument use: arg_hash, trial, player, jury_shift, triggered_extraordinary, burden_verdict, ia_change, winner |
argument_stats | UPSERT on every event | Real-time counters per (arg_hash, case_id, target_character): uses, trap_triggers, trap_lands, trap_misses, total_jury_shift, total_ia_won |
defense_corpus | After every burden ruling | One row per substantiation: defense_hash, argument_hash, character_id, mode, full_text, outcome, author_id, cited_evidence |
corpus_unlocks | Every IA-priced unlock | player_id, unlock_type, unlock_target, paid_ia, author_share, house_share, trial_id, target_extra |
Derived nightly by recompute-argument-stats.php from the last 20 events for each (arg_hash, case, character) tuple. Each event contributes a per-event score:
score = 0.5 + 0.5 * (jury_shift / 12)
+ 0.3 * triggered_extraordinary
+ 0.5 * (burden_verdict ∈ {failed, withdrawn})
- 0.5 * (burden_verdict == 'proved')
score = clamp(score, 0, 1)
effectiveness = exponentially-weighted mean of recent 20 scores
with halflife of 8 events
Only shown once an argument has ≥10 uses. Computed as:
decay_slope = avg(recent 5 scores) - avg(preceding 5 scores)
A positive slope means the argument is improving (probably because defenders' best counters are now in the corpus, forcing the AI into worse fallbacks). Negative means the argument is being learned around.
#corpusThe AI defender consults the corpus before composing every substantiation. Prior failures are explicitly named in the prompt as forbidden. Prior successes are named as inspiration. This kills the Truman script — no two trials of the same case produce the same defense.
Before answering a flag, the system fetches from defense_corpus:
• Up to 5 prior struck defenses for the same (argument_hash, character_id) tuple. Injected with "DO NOT REHASH" framing.
• Up to 2 prior proved defenses. Injected with "DRAW INSPIRATION BUT VARY THE ANGLE" framing.
The AI is told to vary the angle, not the facts — historical fabrication is explicitly forbidden by the prompt.
The substantiation prompt is split into three blocks:
• System block 1 (cacheable): character voice, case context, dossier evidence.
• System block 2 (cacheable): prior struck and proved defenses for this attack/character.
• User message (volatile): the specific flagged claim, required evidence, bond, recent transcript.
The first two blocks have cache_control: ephemeral markers, so repeat trials of the same case hit Anthropic's prompt cache for the bulk of the tokens. First trial of a case pays full cost; subsequent runs within the cache window are ~10× cheaper.
Three distinct pricing layers: marketplace listings, archive unlocks, and character packs.
| Listing kind | Price range | Default suggested |
|---|---|---|
| Regular argument | 5–50 IA | 15 IA |
| TRAP argument | 5–100 IA | 40 IA |
On the post-trial archive, full verbatim text of an attack is gated. Price scales with effectiveness:
price_ia = round((5 + effectiveness * 20) / 5) * 5 // effectiveness 0.0 → 5 IA // effectiveness 0.5 → 15 IA // effectiveness 1.0 → 25 IA
Flat 15 IA for the top 3 unused archived attacks against the current defendant. Refund automatic if the archive returns nothing.
Bundled DLC, range 10–200 IA, default 50 IA. Each pack contains ~20 proved defenses for a single character. Purchase grants read access to every defense in the pack and tags the player's intern with internPacks[] so future drafts can leverage the material.
Once Sprint 8 of Stage 2 lands, each argument has a lifetime royalty cap of 1000 IA to its original author. Beyond that cap, royalties stop. Additionally, when a refuting defense consistently beats a famous attack (effectiveness threshold + 5+ engagements), the throne transfers — future royalties on that attack flow to the new champion (the defense author). Historical royalties stay with the original author. Old champions are dethroned, not erased.
#marketplace-pricingEvery corpus_unlock row records both an author share and a house share. The split rule depends on the unlock type.
| Unlock type | Author share | House share | Notes |
|---|---|---|---|
dossier_consult | 0% | 100% | Service — no individual author |
attack | 40% | 60% | Author = the original listing's author_id |
defense | 40% | 60% | Author = defense_corpus.author_id |
pack | 50% pooled | 50% | Pool split across each defense's author_id when Sprint 8 lands (currently logged; not yet paid out) |
The author share is credited to the recipient's IA ledger with reason royalty_<type>. The house share funds the platform — it's the only revenue stream that doesn't flow to a player.
For full schema and the planned royalty_payouts table, see plan_argument_learning.md.