---
title: "Reading the rating: the tuple"
description: "A TrackForge letter is never shown on its own. It is one field of the tuple: the composite, the five components, coverage by weight and count, the routes and positions surveyed, the date of every source, what the owner supplied, the floors applied, who remediated, and the rule-book version and hash."
image: "https://trackforge.studio/docs/img/trackforge-social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://trackforge.studio/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Reading the rating: the tuple

The rating is the tuple. The letter is one of its fields, and no TrackForge surface, report or verification page shows the letter without the rest. A reader who has the letter and not the tuple does not have the rating.

## The fields

The rule book lists the tuple's fields by name (`tuple_fields`). In that order:

| Field | What it tells you |
|---|---|
| `letter` | The grade on the AAA to D scale, or none when the letter is withheld, with the reasons named |
| `composite` | The weighted mean of the component scores over the assessed components, before the letter is read off |
| `components` | Each of the five components: its score, the weight assessed, and its coverage |
| `coverage` | Coverage by weight and by count, per component and per route, with the minimums met or not and the ladder step reached |
| `tier` | Whether this is a catalogue check or a catalogue rating ([levels](/docs/certification/rating/levels)) |
| `routes_in_scope` | The collecting routes the survey covered |
| `rights_positions` | The position class surveyed and the positions held |
| `as_of_by_source` | For every source read, the date its reading was true as of. A rating is a point in time, and this is the point |
| `owner_supplied` | Which kinds of evidence the owner supplied: attestation, exports, statements, agreements |
| `attestation_hash` | The hash of the owner's attestation this rating rests on |
| `remediated_by` | Who did the fixing between this rating and the last: nobody, TrackForge, a connected company, the owner or a third party ([independence](/docs/certification/rating/scope-and-independence)) |
| `floors_applied` | Every structural floor that capped the letter, and every coverage-ladder step that did, with the route where it applies |
| `weights_source` | Where the works' weights came from: statements, the owner's declaration, or a default |
| `channel_mix` | The share of the catalogue's income expected from each channel, and its source |
| `unweighted_tail` | How many works had no usage evidence in any channel and carry only their equal share |
| `attributable_share` | Each work where the owner's attributable share is below the whole, and its share |
| `route_materiality` | For each route, its share of expected income, whether it is material, and why |
| `us_share`, `us_share_source`, `income_split_applied` | The catalogue's US share of digital mechanicals, where it came from, and whether The MLC and MCPS split the channel |
| `soundexchange_share`, `soundexchange_share_source`, `neighbouring_split_applied` | The same for neighbouring rights between SoundExchange and PPL |
| `route_gaps` | For each route, the share of its income unregistered, at full size, material or not |
| `cluster_count` | How many clusters of works (a work and its versions, stems and mixes counted once under the parent) the identity coverage was measured over |
| `amounts` | Measured amounts per component, each with its source, in pence; or "no amounts", never zero |
| `attributable_share_sources` | How many works took their share from each source: declared by the owner, the owner's Workspace draft, the society's chain, or assumed whole |
| `estimated_inputs` | Each declared input not yet measured, with its value, basis and range, and the letter at every combination of the range ends |
| `methodology_version` | The rule book version this rating was computed under |
| `methodology_hash` | The SHA-256 of that rule book, so a reader can check the rules have not changed under them |
| `scope` | The grading scope: its hash, each excluded work and reason, and the weight share excluded |

## Coverage

Coverage is how much of the catalogue the survey could actually judge. Every component reports it twice: by **weight** (how much of the catalogue's income-weighted mass was assessed) and by **count** (how many works). Registration coverage is reported per route. A not-checked work is a coverage shortfall, not a defect and not a pass. Below the minimum, no letter; above it, coverage steps down the ladder cap the letter, and the step reached is in `floors_applied`.

## Reproducing the tuple

The tuple is computed from stored rows (the population, each work's states per component and route, each defect row with its evidence) and the rule book, in integer arithmetic at declared scales, so the same rows and the same rule book give the same tuple, byte for byte. Its hash is stored with the event, and the proof pack frozen at issue carries the rows and the rule book. The rule book is published by its hash; the rule book itself and the scoring code stay private, and a party relying on a rating can have it recomputed under a separate agreement.

Source: https://trackforge.studio/docs/certification/rating/the-tuple/index.mdx
