Skip to content

README: Turnir

Profile version: net.plantange/v1 Kind: turnir Surface root: turnir::<id>/


What is a Turnir?

A Turnir is a competitive signal engine — the S-series dual of Zavod. Where Zavod turns disruption signals into material continuity, Turnir turns participants and match outcomes into meaningful rankings and competitive signal.

Its core promise:

"If you compete, your performance will generate meaningful signal,
temporally structured and publicly legible,
regardless of who is arguing above you."

A Turnir earns its output through continuous, auditable operation. It does not produce signal by decree. If the competition is producing theater rather than genuine competitive signal, the engine will measure that and respond.


Who Produces This Surface

The Turnir object is instantiated from a turnir spec doc. It runs its control loop via ingest_signal() called by the executor each frame. Corresponding Rust type: Turnir in janet-brand/src/legitimization/turnir.rs.


Three-Layer Architecture

Layer 1 — Bracket Plane    (the visible tournament)
  pairings, rounds, advancement schedule, public bracket structure

Layer 2 — Scoring Plane    (the quiet signal accumulator)
  skill estimation, ranking precision, score normalization

Layer 3 — Fairness Plane   (the silent trust governor)
  controversy reserves, bias detection, trust smoothing

The Zavod/Turnir parallel is structural: Operational↔Bracket (visible), Metabolic↔Scoring (optimizer), Homeostatic↔Fairness (reserve/buffer).


Surface Organisation

turnir::<id>/
  mode                — S1..S6 topology (structural)
  schema/
    observability           — [0.0, 1.0]
    skill_expression        — [0.0, 1.0]
    adversarial_coupling    — [0.0, 1.0]
    randomness_weight       — [0.0, 1.0]
  s_min               — derived signal threshold [0.30, 0.65]
  state/
    signal_confidence       — [0.0, 1.0]  ← primary metric
    disruption_index        — [0.0, 1.0]
    meta_stability          — [0.0, 1.0]
    is_generating_signal    — bool
    ccs_activations/
      RiggedPairing          — [0.0, 1.0]
      MetaCollapse           — [0.0, 1.0]
      SignalDilution         — [0.0, 1.0]
      OutcomeDistrust        — [0.0, 1.0]
      RuleInstability        — [0.0, 1.0]
      ParticipantCapture     — [0.0, 1.0]
      FavorableOfficiation   — [0.0, 1.0]
      FormatMismatch         — [0.0, 1.0]
      TiebreakerAmbiguity    — [0.0, 1.0]
      SpectatorCollapse      — [0.0, 1.0]
      EscalationCeiling      — [0.0, 1.0]
  constraints/
    match_density           — [0.0, 1.0]
    enforce_seeding         — bool
    fairness_mode           — bool
    fairness_reserve_target — [0.0, 1.0]
    directives[]            — TournamentDirective
  planes/
    bracket/   status, note
    scoring/   status, note
    fairness/  status, note
  spec/
    ref  genome
  engine/
    name  version
  view
  frame

Key Properties

Signal Confidence (state/signal_confidence)

The primary health metric. Starts at 1.0. Degrades on CCS activations and competitive disruption events; slowly recovers when the disruption index is below 0.3. If it drops below s_min, is_generating_signal becomes false and the Turnir issues SuspendRound.

Degradation weights per signal class:

  • CCS severity × 0.10
  • Disputed match result: −0.06
  • Foregone conclusion (margin > 0.95, upset_magnitude < 0.05): −0.005
  • Active, undisputed match: +0.002
  • Top-rank participant withdrawal (rank = 1): −0.01
  • LegitimacyEndorsement (strength 1.0): +0.03

Recovery: +0.001 per cycle when disruption_index < 0.3.

Disruption Index (state/disruption_index)

Composite CCS activation intensity. Mirrors Zavod's stress_index exactly:

avg_severity × 0.7 + (active_count / 11) × 0.3

Decays at 0.95× per cycle. Leading indicator — rises before signal_confidence erodes.

Meta Stability (state/meta_stability)

Tracks whether the competitive metagame is open. Independent from signal_confidence:

  • High: rankings are meaningful, no dominant strategy has closed off competition.
  • Low: MetaCollapse or RuleInstability has reduced competitive variety.

Degraded by: MetaCollapse (×0.15), RuleInstability (×0.10), FormatMismatch (×0.08), EscalationCeiling (×0.06).
Restored by: major upsets (upset_magnitude > 0.7, +0.005 per event) and natural recovery when disruption_index < 0.2 (+0.0005 per cycle).

Signal Threshold (s_min)

Derived from the schema: 0.30 + observability * 0.15 + skill_expression * 0.10. Capped at 0.65. A format with high observability and strong skill expression is held to a higher standard — if it can produce clean signal, it must.

Mode Approx. s_min
S1 (deterministic execution) ~0.60
S5 (procedural continuity) ~0.55
S4 (strategic interaction) ~0.50
S3 (endurance/accumulation) ~0.45
S2 (controlled chaos) ~0.42
S6 (exploratory discovery) ~0.37

Directive Logic

The Turnir emits a directive set each cycle based on the (signal_confidence, disruption_index) pair:

Confidence Disruption Directives
> 0.8 < 0.3 HoldSteady
> 0.8 < 0.6 EnforceSeeding
> 0.5 < 0.5 HoldSteady
> 0.5 ≥ 0.5 EnforceSeeding, DecreaseMatchDensity(0.8)
> 0.3 any ExtendGroupStage, DecreaseMatchDensity(0.6)
≤ 0.3 any SuspendRound

Schema Parameters and Constraint Effects

Two schema parameters modify constraints beyond the six-arm directive table:

  • adversarial_coupling > 0.7 (S4): match_density is scaled to 90% of its confidence-derived value, floored at 0.2. Individual matches carry more weight; fewer are needed.
  • randomness_weight > 0.5 (S2, S6): enforce_seeding is always true, regardless of disruption level. Symmetric distribution of randomness requires seeding integrity.

CCS Signal Reference

The 11 Canonical Competitive Signals are universal competitive legitimacy failure modes:

Signal Description
RiggedPairing Matchups arranged to produce predetermined outcomes
MetaCollapse Dominant strategy eliminates competitive variety
SignalDilution Match volume so high no individual result carries meaning
OutcomeDistrust Results no longer believed to reflect genuine performance
RuleInstability Rules change mid-competition, invalidating preparation
ParticipantCapture External incentives corrupt participant behavior
FavorableOfficiation Systematic judging bias advantages specific participants
FormatMismatch Format does not test the skill it claims to
TiebreakerAmbiguity Tie resolution unclear, contested, or inconsistently applied
SpectatorCollapse No external audience — results carry no social weight
EscalationCeiling Best participants cannot differentiate themselves

CCS activations track EMA severity: new = old * 0.9 + signal_severity * 0.1.


Competitive Mode Reference

Mode Core legitimacy source Key vulnerabilities
S1 Precise execution against fixed standard Opaque judging, measurement inconsistency
S2 Fair performance under shared stochastic conditions Asymmetric randomness, disputed variance
S3 Sustained accumulation across time Early lock-in, fatigue asymmetry
S4 Adversarial decision quality under direct coupling Degenerate equilibria, external interference
S5 Advancement through structured rounds with procedural integrity Seeding disputes, mid-competition suspension
S6 Novelty production and frontier expansion Prior-art disputes, undisclosed preparation

Operating Procedure

Normal monitoring: watch state/signal_confidence and state/meta_stability. Confidence above s_min with disruption below 0.3 and meta_stability above 0.6 is healthy.

Early warning: disruption_index rising while signal_confidence > s_min — the system is absorbing stress but has not yet lost signal integrity. Inspect ccs_activations to identify the source.

Meta warning: meta_stability falling independently of signal_confidence — typically driven by MetaCollapse or RuleInstability. The bracket may still be running cleanly, but the metagame is closing. ExtendGroupStage is the expected structural response.

Degraded state: signal_confidence < 0.7 → fairness_mode = true. Directives will contain EnforceSeeding or DecreaseMatchDensity. Match volume reduces, fairness reserves are built.

Critical state: signal_confidence < s_minis_generating_signal = false. Directives will contain SuspendRound. All three planes should be checked for suspended status.

Recovery: disruption_index must first decay toward zero before signal_confidence begins recovering. Major upsets during recovery accelerate meta_stability restoration but not signal_confidence directly.


Zavod / Turnir Correspondence

Zavod surface Turnir surface Meaning
legitimacy_confidence signal_confidence Primary health metric
stress_index disruption_index Composite activation pressure
is_legitimate is_generating_signal Are we operating above threshold?
c_min s_min Operating threshold
cds_activations ccs_activations Per-signal rolling severity (EMA)
activity_level match_density Throughput constraint
defensive_mode fairness_mode Protection posture
reserve_target fairness_reserve_target Buffer target
ProducerDirective TournamentDirective Structural instructions
OperationalPlane BracketPlane Visible output surface
MetabolicPlane ScoringPlane Quiet optimizer
HomeostaticPlane FairnessPlane Silent governor

The two engines are structurally isomorphic. A reader fluent in one can orient in the other immediately.


MVP Presence

A minimal valid Turnir KNAT snapshot must include:

  • id, frame, engine, view
  • mode, schema (all four parameters), s_min
  • state.signal_confidence, state.disruption_index, state.meta_stability, state.is_generating_signal
  • state.ccs_activations (even if empty {})
  • constraints.match_density, constraints.enforce_seeding, constraints.directives
  • planes.bracket.status, planes.scoring.status, planes.fairness.status
  • spec.ref, spec.genome

Example: Toytown Grand Prix (S4 under rising disruption)

{
  "id": "toytown_grand_prix",
  "spec": {
    "ref": "file://defs/turnir/toytown_grand_prix.json",
    "genome": "babe4321feedface"
  },
  "engine": { "name": "janet-executor", "version": "0.4.0" },
  "view": "full",
  "frame": 288,
  "mode": "S4",
  "schema": {
    "observability": 0.75,
    "skill_expression": 0.8,
    "adversarial_coupling": 0.85,
    "randomness_weight": 0.15
  },
  "s_min": 0.505,
  "state": {
    "signal_confidence": 0.82,
    "disruption_index": 0.27,
    "meta_stability": 0.71,
    "is_generating_signal": true,
    "ccs_activations": {
      "OutcomeDistrust": 0.18,
      "RuleInstability": 0.09
    }
  },
  "constraints": {
    "match_density": 0.738,
    "enforce_seeding": false,
    "fairness_mode": false,
    "fairness_reserve_target": 0.28,
    "directives": [{ "kind": "HoldSteady" }]
  },
  "planes": {
    "bracket": { "status": "operational" },
    "scoring": { "status": "operational" },
    "fairness": { "status": "operational" }
  }
}

Note: adversarial_coupling = 0.85 > 0.7 scales match_density to 0.82 * 0.9 = 0.738, floored at 0.2. Individual S4 matches carry more weight; the engine tolerates reduced density without signal loss.