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_densityis 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_seedingis alwaystrue, 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_min → is_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,viewmode,schema(all four parameters),s_minstate.signal_confidence,state.disruption_index,state.meta_stability,state.is_generating_signalstate.ccs_activations(even if empty{})constraints.match_density,constraints.enforce_seeding,constraints.directivesplanes.bracket.status,planes.scoring.status,planes.fairness.statusspec.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.