---
title: "The rule book: every number"
description: "Every number in TrackForge rule book v2.6 that moves a rating: component weights, the composite at which each letter starts, the factor of each defect class, the floors and their thresholds, the coverage minimums and ladder, the income defaults, source age limits and in-flight limits."
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.

# The rule book: every number

:::note[Scope]
A TrackForge rating grades registration at the UK and US statutory collection routes: PRS for Music, MCPS, ICE, The MLC, PPL and SoundExchange, and, for a direct ASCAP or BMI member that supplies its own export of its account, that society as its US performing route (rule book v2.6, draft: available on owner export; not yet exercised on an issued rating). It does not grade direct memberships of other societies (GEMA, SACEM, SOCAN, APRA and the rest), income collected abroad by a sub-publisher, or mechanicals outside The MLC. Income that reaches a PRS or PPL member through those societies' reciprocal agreements is in scope through PRS or PPL. A direct ASCAP or BMI member that supplies no export is not graded on its US performing income, and the rating says so.
:::

This page is generated from rule book **v2.6** (status: *draft*), the JSON artefact every rating names by version and SHA-256 hash. Every number here is a number in the rule book; the [components](/docs/certification/rating/components) and [method statement](/docs/certification/rating/method-statement) pages describe the same rules in words, and the [implementation matrix](/docs/certification/rating/what-is-read) says which classes a reader raises today.

:::caution[Draft]
v2.6 is a draft and no rating has been issued under it; ratings are issued under the published version named on the method statement. The draft changes what is read and how the rule book is written, not how a catalogue is scored: no weight, factor, threshold or coverage number differs from the published version. Where a draft and the published version differ, the [version history](#version-history) names the change.
:::

## The rule book file

From v2.6 the rule book is published in full, byte for byte against its timestamped hash, at `public-rating/rule-book/` in TrackForge's public rating record. The earlier versions, v2.4 and v2.5, are published by hash only: their files carry internal references, and no rating was issued under them. The rule book carries the rules and the numbers; the scoring code, the reference model and the readers that obtain the evidence are not published.

## Component weights

The composite is the weighted mean of the five component scores, each on 0 to 100.

| Component | Weight | Coverage minimum | Classes read |
|---|---|---|---|
| Identity | 15 | 90% of clusters by count, or 95% by weight with 75% by count | 7 of 8 |
| Title | 20 | 80% by weight | 7 of 8 |
| Registration | 30 | 80% by weight (per primary route) | 5 of 5 |
| Collection | 25 | none (optional: *collection not assessed* when not supplied) | 3 of 6 |
| Risk | 10 | none | 3 of 5 |

## Scale boundaries

The letter is the first whose boundary the composite reaches, before any cap.

| Letter | Composite at or above |
|---|---|
| AAA | 95 |
| AA | 90 |
| A | 82 |
| BBB | 72 |
| BB | 62 |
| B | 52 |
| CCC | 40 |
| CC | 30 |
| C | 20 |
| D | 0 |

| Letter | Meaning |
|---|---|
| AAA | Registration is in order; only isolated minor items remain. |
| AA | Very few defects, none on the main earners. |
| A | Sound overall; defects are minor and not concentrated. |
| BBB | Adequate: most income is sound, with some material defects to fix. |
| BB | Noticeable income is exposed; expect a remediation plan before relying on it. |
| B | Substantial defects across the catalogue. |
| CCC | Widespread defects; much of the income is at risk now. |
| CC | Most of the catalogue is defective. |
| C | Nearly all of the catalogue is defective. |
| D | The registration position cannot be relied on. |

## Defect classes

A defect's factor is the share of the work's component score it costs (*the share gap* means the registered share's shortfall). A leak is losing money now and a risk could lose money later; both move the grade. An opportunity is income not yet earned: valued and listed, never scored. *Read by* names the kinds of evidence a reading can raise the class from; a class not yet read is a rule no reader raises, and a sound result says nothing about it.

**Share tolerance:** a society share within 0.5 points of a hundred of the documented share agrees with it; beyond that it is *lower* (a leak, the gap as its factor) or *higher* (a risk). For a work bound to one of the owner's agreements, the share the society holds for the owner of each right the agreement covers is compared with the share the agreement documents for that right, scaled by the owner's declared attributable share of the work where one is declared and taken whole otherwise. A society share lower than the documented share by more than share_tolerance_points of a hundred is title.society_share_lower_than_documented, with the gap as its factor; a higher one is title.society_share_higher_than_documented. The comparison is made only where the society holds a positive share for the owner (a work the owner is absent from or holds at nothing is a registration reading) and only on readings inside their age limits: a bound work whose society record is past its limit, or was not read, is unverified for title with that reading's reason, because a sound title says the shares agree.

### Identity (7 of 8 read)

| Class | Kind | Factor | Status | Read by | Applies |
|---|---|---|---|---|---|
| Exploited recording has no ISRC (`identity.exploited_recording_without_isrc`) | leak | 1 | read | the owner's attestation | — |
| ISRC collision or recycling (`identity.isrc_collision`) | risk | 1 | read | society portal or works database; TrackForge's copy of a public register or catalogue; a public catalogue read live for the top-up set | — |
| Work has no ISWC where the route allocates one (`identity.work_without_iswc_where_route_allocates`) | risk | 0.5 | not yet read | — | — |
| Conflicting ISWCs for one work (`identity.conflicting_iswcs`) | risk | 1 | read | society portal or works database; CWR acknowledgement; TrackForge's copy of a public register or catalogue | — |
| Writer without IPI on a controlled share (`identity.writer_without_ipi_on_controlled_share`) | risk | 0.5 | read | society portal or works database | — |
| Duplicate work registrations (`identity.duplicate_work_registrations`) | risk | 0.5 | read | society portal or works database; the owner's account export | — |
| Title, artist or duration inconsistent across sources (`identity.cross_source_metadata_inconsistency`) | risk | 0.25 | read | society portal or works database; TrackForge's copy of a public register or catalogue; a public catalogue read live for the top-up set; a manual reading by a named person | — |
| Work identity unresolved (`identity.work_identity_unresolved`) | risk | 1 | read | society portal or works database; The MLC's bulk data; CWR acknowledgement; the owner's account export | — |

### Title (7 of 8 read)

| Class | Kind | Factor | Status | Read by | Applies |
|---|---|---|---|---|---|
| PRS agreement binding inferred or assumed (`title.agreement_binding_inferred`) | risk | 0.5 | read | society portal or works database; the owner's account export | — |
| PRS agreement binding missing or conflicting (`title.agreement_binding_missing_or_conflicting`) | risk | 1 | read | society portal or works database; the owner's account export | — |
| Society holds a lower share than documented (`title.society_share_lower_than_documented`) | leak | the share gap | read | society portal or works database; the owner's attestation | per route |
| Society holds a higher share than documented (`title.society_share_higher_than_documented`) | risk | 0.5 | read | society portal or works database; the owner's attestation | per route |
| No US Copyright Office registration (US-origin work) (`title.usco_registration_absent_us_origin`) | risk | 0.25 | read | TrackForge's copy of a public register or catalogue | US-origin works |
| Recorded termination notice (`title.recorded_termination_notice`) | risk | 1 | read | TrackForge's copy of a public register or catalogue | — |
| Reversion or term expiry within 24 months (`title.reversion_or_term_expiry_within_24_months`) | risk | 0.5 | not yet read | — | — |
| The release's ℗ credit names another party (`title.release_credits_another_party`) | risk | 0.5 | read | the ℗ credit on the release; a public catalogue read live for the top-up set; a manual reading by a named person; society portal or works database | sound recording only |

### Registration (5 of 5 read)

| Class | Kind | Factor | Status | Read by | Applies |
|---|---|---|---|---|---|
| Not registered at a route where the work is exploited (`registration.not_registered_where_exploited`) | leak | 1 | read | society portal or works database; The MLC's bulk data; the owner's account export | per route, carries an amount |
| Registered under another party only (`registration.registered_under_another_party_only`) | leak | 1 | read | society portal or works database; The MLC's bulk data; the owner's account export | per route, carries an amount |
| Registered share lower than owned (`registration.registered_share_lower_than_owned`) | leak | the share gap | read | The MLC's bulk data | per route, carries an amount |
| Registered share higher than owned (`registration.registered_share_higher_than_owned`) | risk | 0.5 | read | The MLC's bulk data | per route |
| Exploited recording absent from PPL or SoundExchange (`registration.nr_recording_absent_from_ppl_or_sx`) | leak | 1 | read | society portal or works database | per route, carries an amount, sound recording only |

### Collection (3 of 6 read)

| Class | Kind | Factor | Status | Read by | Applies |
|---|---|---|---|---|---|
| Registered, usage unmatched at The MLC (`collection.usage_unmatched_at_mlc`) | leak | 1 | read | The MLC's bulk data | carries an amount |
| Usage matched to a different work at The MLC (`collection.usage_matched_to_different_work`) | risk | 0.5 | read | The MLC's bulk data | — |
| Unclaimed share in the MLC, PRS or MCPS pools (`collection.unclaimed_share_in_pools`) | leak | 1 | read | society portal or works database; The MLC's bulk data | carries an amount |
| No income over the look-back despite usage (`collection.no_income_despite_usage`) | leak | 1 | not yet read | — | — |
| Income to the wrong payee (`collection.income_to_wrong_payee`) | leak | 1 | not yet read | — | per route |
| Account on hold (e.g. MLC RFI) (`collection.account_hold`) | risk | 0.5 | not yet read | — | catalogue level |

### Risk (3 of 5 read)

| Class | Kind | Factor | Status | Read by | Applies |
|---|---|---|---|---|---|
| Competing claim or dispute flagged at a society (`risk.competing_claim_or_dispute`) | risk | 1 | read | society portal or works database; The MLC's bulk data | — |
| Un-merged duplicate shell at The MLC (`risk.unmerged_duplicate_shell_at_mlc`) | risk | 0.5 | read | The MLC's bulk data | — |
| Sources disagree inside their age limits (`risk.conflicting_evidence`) | risk | 0.5 | read | society portal or works database; The MLC's bulk data; the owner's account export | — |
| Claim window closing (e.g. MCPS three-year clock) (`risk.claim_window_closing`) | risk | 0.5 | not yet read | — | — |
| Administration or sub-publishing agreement ending (`risk.administration_or_subpublishing_ending`) | risk | 0.5 | not yet read | — | — |

### Opportunities (2 of 6 read)

| Class | Kind | Factor | Status | Read by | Applies |
|---|---|---|---|---|---|
| Registered, not yet exploited (`opportunity.registration_without_exploitation`) | opportunity | never scored | not yet read | — | — |
| Registered at a society outside the in-scope routes (`opportunity.registered_outside_in_scope_routes`) | opportunity | never scored | not yet read | — | — |
| Neighbouring rights not claimed (`opportunity.nr_not_claimed`) | opportunity | never scored | read | society portal or works database | — |
| Sync not represented (`opportunity.sync_not_represented`) | opportunity | never scored | not yet read | — | — |
| Physical exploitation not registered or claimed (`opportunity.physical_not_registered`) | opportunity | never scored | not yet read | — | — |
| US Copyright Office registration available (`opportunity.usco_registration_available`) | opportunity | never scored | read | TrackForge's copy of a public register or catalogue | — |

## Floors

A floor caps the letter whatever the composite; the lowest cap of every applied floor wins. An income-weight floor compares the route's share of the catalogue's income times the hit works' share of the route's income with the threshold, and is never applied at a route whose share is under the materiality threshold.

| Floor | Classes | When | Cap |
|---|---|---|---|
| coverage below the minimum: no letter (`coverage_below_minimum`) | — | coverage minimums not met | no rating |
| more than a tenth of works lack an ISRC (`missing_isrc_tenth_by_count`) | *Exploited recording has no ISRC* | more than 10% by count | BB |
| more than a tenth of a route's income unregistered (`unregistered_tenth_by_income_weight`) | *Not registered at a route where the work is exploited*; *Registered under another party only*; *Exploited recording absent from PPL or SoundExchange* | more than 10% by income weight, per route, material routes only | BBB |
| more than a quarter of a route's income unregistered (`unregistered_quarter_by_income_weight`) | *Not registered at a route where the work is exploited*; *Registered under another party only*; *Exploited recording absent from PPL or SoundExchange* | more than 25% by income weight, per route, material routes only | CCC |
| more than a quarter of works without a PRS agreement binding (`agreement_missing_quarter_by_weight`) | *PRS agreement binding missing or conflicting* | more than 25% by weight, with PRS for Music in scope | BBB |
| more than a twentieth of a route's income going to the wrong party (`wrong_party_income_twentieth_by_income_weight`) | *Income to the wrong payee*; *Registered under another party only* | more than 5% by income weight, per route, material routes only | BB |
| a termination notice or dispute among the largest works (`termination_or_dispute_on_top_decile`) | *Recorded termination notice*; *Competing claim or dispute flagged at a society* | any among the top 10% of weight | A |

## Coverage

- **Ladder** on title and registration coverage by weight, at a tier that applies minimums: below 95%: AA; below 90%: A; below 85%: BBB; below the component's minimum, no letter.
- **Single-work rule:** no letter while any one work above 2% of the total weight is unverified for one of: not_supplied, lookup_budget_exhausted, source_unavailable.
- **Issue refused** while any work, whatever its weight, is unverified for: lookup_budget_exhausted.
- **Issue refused on a material work** (at or above 2% of the weight, or among the top 20 by weight) unverified for: copy_predates_release; below that, ordinary coverage shortfall.
- **Top-up:** The top-up set is the material works that would refuse issue under issue_refused_material_rule. They are read in weight order, heaviest first, until none remains: first live, from a public catalogue read on the day (a live_release_read), then, where the live read finds nothing, by a person (a manual_reading, named on the rating with who read it and when). A top-up reading is a dated source like any other: pinned by the hash of what was read, carried in the frozen proof pack, listed with the sources on the rating; it sets identity and title only and decides no route's registration state. The run report lists the set, what each reading found and the count left; an issued rating carries the count of works read by each top-up source.
- **Collection not assessed:** when no collection evidence is supplied the letter is capped at A (`collection_not_assessed`, listed with the floors; a limit of scope, not a defect) and the rating is labelled a registration rating with collection not assessed.
- **Cluster:** a cluster is a work with its versions and stems, keyed by the base title with version text removed and the artist's name; a work with no title, a generic title or no artist is its own cluster.

## Routes, income and weights

- **Materiality threshold:** a route whose expected-income share is under 10% is immaterial and never caps the letter.
- **Blend:** each work's weight is 75% its demand share and 25% an equal part, scaled by the owner's attributable share.
- **Digital proxy sufficiency:** The MLC is immaterial by default under 100,000 lifetime plays across the catalogue unless the channel mix comes from statements.
- **Plays per view:** YouTube views convert to Spotify-equivalent plays at the median ratio measured on the catalogue's own works carrying both counts, to 6 significant figures; fewer than 20 such works and the views are not used where plays are.
- **ASCAP, an owner-export route:** In scope only for an owner that is a direct member and supplies its own export of its account: the export is the route's one reading, so without it the route is out of scope and a declared direct member's performing income is not graded, which the rating says. A member whose US performance income reaches it through PRS for Music is graded on that route, not this one. One of ASCAP and BMI in a survey: the owner's own affiliate.
- **BMI, an owner-export route:** As ASCAP: in scope only for a direct member that supplies its own export, one of the two in a survey.

Income that divides between routes, with the default share where the owner declares none:

| Channel | Takes the declared share | Takes the remainder | Default share | Declared as |
|---|---|---|---|---|
| digital mechanical | The MLC | MCPS | 40% | `us_share` |
| neighbouring rights | SoundExchange | PPL | 40% | `soundexchange_share` |
| performance | ASCAP, BMI | PRS for Music | 40% | `us_performing_share` |

## Source age limits

A reading older than its limit never decides a state. Identity readings do not age.

| Source kind | Sets | PRS for Music | MCPS | ICE | The MLC | PPL | SoundExchange | ASCAP | BMI | Default |
|---|---|---|---|---|---|---|---|---|---|---|
| society portal or works database (`portal`) | registration, title, identity, collection | 60 days | 60 days | 60 days | 30 days | 365 days | 365 days | 60 days | 60 days | 60 days |
| The MLC's bulk data (`bulk`) | registration, title, identity, collection | 30 days | 30 days | 30 days | 30 days | 30 days | 30 days | 30 days | 30 days | 30 days |
| CWR acknowledgement (`acknowledgement`) | identity | 45 days | 45 days | 45 days | 21 days | 45 days | 45 days | 45 days | 45 days | 45 days |
| the owner's account export (`owner_export`) | registration, title, identity | 45 days | 45 days | 45 days | 30 days | 45 days | 45 days | 45 days | 45 days | 45 days |
| statement lines (`statement`) | collection | 180 days | 180 days | 180 days | 90 days | 180 days | 180 days | 180 days | 180 days | 180 days |
| CIS-Net (`cisnet`) | identity | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days |
| the ℗ credit on the release (`release_credit`) | title | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit |
| TrackForge's copy of a public register or catalogue (`register_copy`) | identity, title | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit |
| a public catalogue read live for the top-up set (`live_release_read`) | identity, title | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit |
| a manual reading by a named person (`manual_reading`) | identity, title | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit |
| the owner's attestation (`attestation`) | nothing | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit | no limit |

## In flight

An open item expires when its expected date passes: the clock plus the limit for the route and transaction type.

| Route | NWR | REV | Claim | Default |
|---|---|---|---|---|
| PRS for Music | 45 days | 45 days | 45 days | 45 days |
| MCPS | 45 days | 45 days | 45 days | 45 days |
| ICE | 45 days | 45 days | 45 days | 45 days |
| The MLC | 21 days | 21 days | 21 days | 21 days |
| Default | 45 days | 45 days | 45 days | 45 days |

- **Class 1** (acknowledged and uncontested): *Not registered at a route where the work is exploited*; *Registered share lower than owned*; *Registered share higher than owned*; *Exploited recording absent from PPL or SoundExchange*.
- **Class 2** (contested or bilateral): *Registered under another party only*; never lands.
- **Outlook:** developing when open class 2 items cover more than 5% of the weight; otherwise positive above a signed weight of 2%, negative below minus that, and stable between.

## Arithmetic

- Weights are integers at a scale of 10,000,000,000; every share and every score is an integer at a scale of 10,000; disclosed figures carry 6 decimal places; rounding is half even on the exact value.
- Scores are published to 4 decimal places and weights to 10.
- The reference model's headroom claim holds to a population of 65,536 works.

## Version history

Calibration status: *run and adjust*. Thresholds, component weights and defect factors are published rules, not percentiles. Calibration is running three catalogues of different shapes repeatedly and adjusting until the results are right, then freezing. It is no longer gated on five tier 1 surveys. Changes only by methodology version, one bump per slice; the frozen version keeps its number with status published.

### v2.6 (decided 2026-11-06)

- the rule book is written to be published in full: every rule is stated as a rule, with no attribution and no reference to how TrackForge obtains a reading; the identity resolution methods and the cluster key's construction are described in words, not named
- every defect class names in read_by the kinds of evidence a reading can raise it from, or none where it is not yet read; the published implementation matrix is generated from it
- register_copy joins the evidence sources: TrackForge's dated copies of the US Copyright Office's records and of the Deezer, Tidal, Beatport and MusicBrainz catalogues, which the identity and title readings already used, so every reading names its kind; the attestation is named as the source of the one defect read from it alone
- collection not assessed caps the letter: when no collection evidence is supplied the letter is capped at collection_not_assessed_cap (A), reported with the floors as collection_not_assessed, and the rating is labelled a registration rating with collection not assessed; the tuple carries collection_assessed. A limit of scope, not a defect: the cap is a letter, no number changes
- the release's ℗ credit is a question, not a finding: a credit naming a party that is neither the owner nor the artist is unverified, not_supplied (an agreement or licence is needed) unless PPL or SoundExchange names the same party as the recording's registered holder, when it is title.release_credits_another_party as before; a distributor's default credit names nobody; the class is read by release_credit and portal together
- a seventh unverified reason, copy_predates_release, sits with TrackForge: a release newer than TrackForge's dated copy of a catalogue is unread because the copy predates it, not because the society's record has not caught up; too_recent stays for the societies' own records. Issue is refused while a material work (at or above single_work_share of weight, or in the top material_top_works by weight) is unverified for it (coverage.issue_refused_material_reasons); below that it is ordinary coverage shortfall
- the top-up lane (coverage.top_up): the material works that would refuse issue for copy_predates_release are read in weight order until none remains, first live from a public catalogue read on the day (live_release_read, the Spotify catalogue, read for the top-up set only and dated by the read), then by a person (manual_reading); each reading is a dated source pinned by the hash of what was read and carried in the frozen proof pack, sets identity and title only, and the tuple carries the count of works read by each top-up source (top_up_sources)
- a manual reading joins the evidence sources: a reading made by a named person of a named page or document on a named date, accepted on the same terms whoever made it and named on the rating with who read it and when; it ranks with the release credit for title and after the dated copies for identity
- the share classes are read: for a work bound to one of the owner's agreements, the society's share of each right the agreement covers is compared with the share the agreement documents, scaled by the owner's declared attributable share (components.title.share_rule); lower by more than share_tolerance_points of a hundred is title.society_share_lower_than_documented with the gap as its factor, higher is title.society_share_higher_than_documented; a bound work whose society record is past its age limit is unverified for title, stale. One reader-level number (the tolerance) is added; no weight, factor or threshold moves
- ASCAP and BMI join the routes in scope as owner-export routes for direct members (requires: owner_export): in scope only when the owner is a direct member and supplies its own export of its account, which is the route's one reading; one of the two in a survey; performance income then divides by territory between the US route and PRS for Music (routes.income_split, us_performing_share, default 40% on the digital mechanical split's basis). Neither is a primary route: a composition survey must still carry The MLC, and carries a US performing route only on the owner's export. No number that scores a work changes

No score, weight, factor or threshold changes; one cap letter added; one tolerance added.

### v2.5 (decided 2026-11-05)

- identity reads TrackForge's copies of the Deezer, Tidal and Beatport catalogues, never its Spotify copy: one ISRC on tracks that differ in artist or in length by more than 3 seconds is identity.isrc_collision; two songs' titles on one artist and one length is identity.cross_source_metadata_inconsistency; a copy's one song that disagrees with the owner's title is the same inconsistency
- a sound-recording survey takes its identity reading from those copies: held under one song is sound, a disagreement is defective, held by no copy is unverified, too_recent after the newest copy's edition and source_unavailable otherwise
- plain names for the three copies (musicmovearr_deezer, musicmovearr_tidal, beatport_copy)
- a sound-recording survey takes its title reading from the ℗ credit on the release (the track credit, else the album credit, in TrackForge's copy of the release; evidence kind release_credit): a credit naming an owner party anywhere is sound; one naming other words than the owner and the artist is title.release_credits_another_party (risk, 0.5); one naming only the artist corroborates nothing (unverified, not_supplied) unless the owner is the artist; no credit is unverified, too_recent after the copy's edition and source_unavailable otherwise; label is not publisher, so composition surveys never read it

No score, weight, factor or threshold changes.

### v2.4 (decided 2026-11-02)

- risk: a work a route read with no risk raised is sound; a work no route read is unverified, not_supplied; before this version no work could be sound, so the component scored defective works alone
- every unverified state carries its reason, the registration roll-up included
- estimated inputs: value, basis and range replace provisional declarations; the letter is the lowest across the range
- money: measured amounts only, each with its source; no amounts is stated, never zero; the registration leaks carry amounts
- live table reads carry a hash of the rows read and are labelled dated reads
- every work states its attributable share source and the tuple counts them
- the rule book carries the wording of each letter and the plain names of components, routes, states, reasons and sources
- the plain names add who each unverified reason sits with (the client, the society or TrackForge), the channels, the floors and the report's terms, matching the public method statement and glossary (3 November 2026)
- classes no reader raises are marked not_yet_read
- an issued run has no lookup budget: issue is refused while any work, whatever its weight, is unverified for lookup_budget_exhausted (coverage.issue_refused_reasons); draft and rehearsal runs may still cap
- in flight: an overlay on defect rows with two classes, limits per route and transaction type, a projected letter and an outlook with its guardrails; a run that carries no in-flight rows rates exactly as before
- the tuple field list names the fields the tuple carries (4 November 2026)

No score, weight, factor or threshold changes. range ends are the owner's judgement.

### v2.3 (decided 2026-11-01)

- neighbouring split by route: SoundExchange takes the mix times the SoundExchange share and PPL the rest, so route shares sum to 1, and with only one of the two in scope it takes the whole channel; a declared soundexchange_share in the attestation, disclosed in the tuple, with a default of 40%
- a recording survey with no declared mix defaults to neighbouring, so its route shares apply either way
- registration.nr_recording_absent_from_ppl_or_sx joins the two unregistered floors, so a floor can fire on a recording catalogue
- a person's decision in the attestation places a work no other reading places, for the survey only

The default SoundExchange share is a starting value, a little above the 26% to 37% estimated from published figures and not yet calibrated.

### v2.2 (decided 2026-11-01)

- digital mechanical split by territory: The MLC takes the mix times the US share and MCPS the rest, so route shares sum to 1, and with only one of the two in scope it takes the whole channel; a declared us_share in the attestation, disclosed in the tuple, with a default of 40%
- registration scored by route share: a defect costs a work that route's share of its income; unread routes sit outside both sums
- per-route income-weight floors compare route share times hit share to the threshold, under the materiality guard; the full route gap stays on the floor entry and in the tuple's route_gaps

The default US share is a starting value, read from the IFPI Global Music Report 2025 and not yet calibrated; a declared share below the default is the owner's provisional declaration.

### v2.1 (decided 2026-10-30)

- Route income coverage no longer withholds; floors per route
- Weights scaled by attributable share
- Coverage ladder, single-work rule, identity dual gate over clusters
- Floors on income weight
- Primary routes by rights type, route materiality
- Evidence precedence and age limits, stale as an unverified reason
- PPL and SoundExchange readings: an age limit of 365 days
- a work without an ISRC is placed by artist and title on the owner's list; a list row showing the work as the owner's may place a pair quarantined only as unverifiable; a work with no fresh reading on its own code may be judged on the owner's other registration of it, never against a fresh reading of its own code

The numbers these rules add are starting values, not yet calibrated. The rating scale, component weights and defect factors are unchanged from v2.0.

Source: https://trackforge.studio/docs/certification/rating/rule-book/index.mdx
