Experimental Beta

Trust Index — Methodology Note

InterAlliance OÜ · 2 August 2026 Companion to the Index Reproduction Report.

Section references throughout point to the May 2026 technical dossier for this system. Figures are quoted exactly as published there.

1. What the index is

The Evidence-weighted Trust Score (ETS) is computed per subject from evidence items grouped into seven signal families. Each item carries a recency decay weight, an evidence-tier factor and an anti-gaming multiplier; the family score is the mean of those products, and ETS is the weighted sum across families, adjusted by a Confidence Score (CSS) derived from evidence coverage and source diversity. The Market Trust Index (MTI) is the aggregate of ETS across the scored population.

Weighting coefficients and anti-gaming thresholds are withheld: publishing them would tell a rated party how to game the rating. Everything required to reproduce a published figure is disclosed — the scale, the definition history, the queries, and the reference-time semantics.

Scale: 0–100. The clamp min(max(ets, 0.0), 100.0) has been in place since the first commit in the repository, 1c6b586 of 19 March 2026, and has never been modified.

Correction to the dossier. Section 1.3.2 describes the index as being on a 0–1 scale. That label is incorrect. The measured values are correct; only the label is not. An adjusted mean of 0.328 is 0.328 out of 100.

2. What the May figures are, and that they reproduce

The dossier reports a bounded ten-day run, 2–11 May 2026. Every quantitative claim in §1.3.1–1.3.2 was re-derived directly from the database in a read-only audit on 2 August 2026:

ClaimStatedMeasuredDeviation
ETS adjusted, mean0.3280.32756990.13%
ETS range0.284–0.3750.2836234–0.37450600.13%
Confidence (CSS), mean0.1520.15238100.25%
MTI, mean0.2900.28970660.10%
MTI snapshots1821820%
Agents / sectors10,105 / 65010,105 / 6500%
Scoring records4,9504,950 (across 420 cycles)0%
Agreements42,49242,4920%
— research-task / research-commission40,834 / 1,65840,834 / 1,6580%
Ledger / audit records10,088 / 10,72410,088 / 10,7240%

Beyond re-querying stored values, the May cycle was re-computed with the current engine: replay_may.py reconstructs the evidence state at each stored cycle's own computation instant, pins the engine clock to it, and compares against the stored result. Deviation is 0.000% on both ETS and CSS for all twelve principals, and it holds after the corrections in §4 — the fixes apply forward only and do not restate history.

Stated limit. The replay restores the stored anti-gaming multipliers rather than deriving them. See §4.3.

3. Definition history

The aggregate has had four definitions. Dates are commit dates.

VersionCommit · dateChange
v01c6b586 · 19 Mar 2026Mean ETS over active subjects, excluding css_band = insufficient
v1bb6ea47, 6879b50 · 2 May; 4d6350b · 4 MayMoved to SQL aggregation; the css_band exclusion removed
v2e4e88da · 29 Jun; 034ebae · 1 JulAdded ets_adjusted > 0 filter; added a one-sided damper
v3beca2a1 · 2 AugDamper made symmetric (±5% per cycle)
v46502437 · 2 AugStale evidence counted at floor weight instead of dropped

A re-computation of the existing population under v4 ran on 2 August: 8 cycles in a single batch, aggregate 3.0526 → 2.4252, scored population unchanged at 12. Those 8 cycles are a batch migration, not 8 days of operation, and are recorded as such in the audit log.

4. Defects found by self-audit

Five defects were found by auditing the engine against its own published figures. All post-date the May figures; none affects them. Four are fixed, one is open.

4.1 One-sided damper — fixed. A per-cycle limiter bounded downward movement only, so decay was blocked while increases passed through unbounded.

4.2 Stale-exclusion inflation — fixed. Stale evidence was dropped from the mean rather than counted at its floor weight. Because dropping the lowest-weighted items raises a mean, a decaying evidence base increased the score — the opposite of what a trust index must do. Measured inflation factor on 2 August: 3.274×. On 11 May: 1.000×, because nothing had gone stale yet. A second consequence appeared only on re-running: exclusion also erased differentiation, because subjects differ precisely in what fraction of their evidence is stale.

4.3 Path-dependent anti-gaming multiplier — OPEN. The burst penalty is written onto an evidence row while a burst is in progress and persists there; it cannot be re-derived from any later instant. The engine is therefore not a pure function of (evidence, reference time). For an index whose purpose is auditability this is material, and it is core-hardening work rather than something already solved.

4.4 Silent coefficient substitution — fixed. The engine fell back to built-in coefficients with only a log warning. The two sets were verified byte-identical, so no published figure is affected, but a run elsewhere could have produced authoritative-looking numbers from unknown coefficients. This is now a hard error.

4.5 Negative agreement duration — fixed. 1,474 agreements recorded a completion timestamp microseconds before their initiation timestamp, caused by two different clock reads at object construction and at flush. No published figure is affected; the counts are row counts.

5. Current state and trajectory

Aggregate, 2 Aug 20262.4252
Projected 24 Aug / 4 Sep2.01 / 1.84
Asymptote0.0549 (bounded by decay floors; not zero)
Scored population12 principals, constant across all history
Bandsall suppressed

The index declines while no new evidence arrives, and the observable spread between subjects narrows as every item reaches its floor.

Why the lowest band is the correct output. Coverage is 2 of 7 signal families, from a single source, at the two lowest evidence tiers. An index that certified trust on that basis would be broken. This is not a regression: across the entire recorded history of the scored population, none of 21,981 snapshots has ever reached the next band — including the May run whose figures are published. The dossier states a numeric range, which is accurate; band-level differentiation was never claimed and has never occurred.

Where inputs differ, the mechanism separates them. Under v4 the twelve principals resolve into two values because the population contains exactly two evidence profiles — one subject at 54% stale, the rest at 77%. A separate demonstration cohort with deliberately varied profiles resolves across five distinct bands with CSS from 0.219 to 0.914. That cohort is marked inactive and is excluded from every published aggregate by construction, not by a filter added for the purpose.

6. Scope

Trust is computed at the principal/orchestrator level, not per agent — a principal operates many agents, and the observatory measures agreements between principals rather than isolated agent outputs. Registered agents are not individually scored. Extension to per-agent scoring is stated in the dossier as planned work.

This is a synthetic testnet. It demonstrates that the pipeline runs end to end and that the measurement is reproducible. It demonstrates nothing about real-world behaviour; closing that gap is the purpose of the contracted independent validation.

7. How to verify any of this

  1. Connect read-only to the database; run the queries in the Index Reproduction Report §2 and compare against §1.
  2. Verify the scale: git blame -L 425,428 -- backend/engine/scoring.py and git log -S "100.0" -- backend/engine/scoring.py.
  3. Verify the definition history: git show <hash>:backend/engine/scoring.py for each commit in §3 above.
  4. Re-derive the May cycle: python backend/tools/replay_may.py — read-only, transaction always rolled back. REPLAY_RECOMPUTE_AG=1 demonstrates §4.3.
  5. Run the tests: python -m pytest backend/tests/ — 29 tests covering the damper, coefficient provenance, ageing monotonicity and timestamp ordering.
  6. Reproduce the projection: python backend/tools/project_ets.py.

Published: /methodology (scale, definition history, projection), /demonstration (the cohort above), /reproduction-report (full report). Every figure displayed publicly carries its computation date.