---
title: "LROAS 1.0.0 Scoring"
standard: LROAS
version: 1.0.0
status: published
published: 2026-10-01
canonical: https://leadingrehabs.com/standard/1.0.0/SCORING.md
license: CC BY 4.0
---

# LROAS 1.0.0: Scoring

This document is normative. The key words MUST, MUST NOT, SHOULD, SHOULD NOT and MAY are to be interpreted as described in RFC 2119 and RFC 8174 when they appear in all capitals. It defines how criterion bands from [CRITERIA.md](CRITERIA.md) become totals, how confidence is computed, how entries are ordered, how values are rounded, and how anyone can recompute a published result.

## 1. Eligibility

1. A clinic enters a ranking only if it runs a genuine residential programme for mental health or addiction treatment.
2. An assessed clinic that fails eligibility has `listing_status` `excluded`, a public `exclusion_reason`, and no score. Outpatient-only services, state psychiatric hospitals, medical-tourism brokers, referral agencies, physical rehabilitation and wellness or longevity resorts without a residential treatment programme are out of scope.
3. One entity is ranked once. Where two names refer to one live entity, the live entity is assessed and the other name is recorded as an alias. Two facilities run by one operator are assessed per facility, each on its own evidence, and both carry a common-operator disclosure.

## 2. Two totals

| Total | Evidence that counts | Use |
|---|---|---|
| `public_score` | Evidence items whose `counts_toward` is `public_and_extended`: origins `public_source`, `regulator` and `independent_reviewer`, in states `unverified`, `corroborated` or `verified`; and origin `restricted` (evidence type `authority-ruling-held` only, held in the sealed evidence room) in state `verified`. In a pre-publication release only, also origin `embargoed` (section 6.4). | Ranking order. The only total used for `rank`. |
| `extended_score` | Everything that counts for `public_score`, plus `clinic_supplied` items in state `verified` (`counts_toward` `extended_only`), whose content is held in the sealed evidence room. | Shown beside `public_score`. Never used for `rank`. |

Rules:

1. Clinic-supplied evidence MUST NOT affect `public_score`. The only evidence held in the sealed evidence room that affects `public_score` is an authority ruling held for inspection (`authority-ruling-held`, origin `restricted`), which meets `C2.G1` under the conditions of [CRITERIA.md](CRITERIA.md) C2 ([SEALED-EVIDENCE.md](SEALED-EVIDENCE.md)).
2. `extended_score` is computed per criterion by starting from the same public evidence, adding every verified clinic-supplied item that is not in conflict with public evidence, applying the clinic-document-only and corroboration rules of [CRITERIA.md](CRITERIA.md), and choosing the band again. The result MAY be higher, equal or lower than the public band: a verified clinic-supplied fact that fails an element (for example a pooled team or a shared facility) lowers the extended band like any other fact.
3. Conflicts: where a clinic-supplied item contradicts public evidence, the public evidence is scored in both totals and the clinic-supplied item enters state `disputed` until resolved (see [EVIDENCE.md](EVIDENCE.md) section 9).
4. `extended_score_status` is `available` when at least one clinic-supplied item reached `verified`; `under_verification` when clinic-supplied items exist and none has yet reached `verified`; `not_submitted` otherwise. When the status is not `available`, `extended_score` and every `extended_points` are `null`. A clinic assessed later MUST be scored on the same rules as a clinic assessed earlier, so no clinic gains or loses by the order of submission.
5. All clinics are offered the same evidence questionnaire. A fact volunteered outside it is recorded only if it answers one of its questions.

## 3. Aggregation

1. For each total, each criterion yields one integer band from 1 to 10, chosen under [CRITERIA.md](CRITERIA.md) section 1 and then adjusted by the criterion's caps, gates and deductions.
2. C9 is computed from two sub-bands: `C9 = round_half_up((H + N) / 2)`.
3. C10 is computed from the Clinical Seniority Index as defined in [CRITERIA.md](CRITERIA.md), with the gates applied as caps.
4. `public_score = sum(public_points for C1..C10)`. `extended_score = sum(extended_points for C1..C10)`. Weights are equal (1 each). Totals range from 10 to 100.
5. Totals MUST be computed from the criterion points, never entered. A record whose total differs from the sum of its criterion points is invalid.
6. No score is adjusted to break a tie, to reconcile an edition, or for any commercial reason. No fee, advertising or other payment affects any score.

## 4. Rounding

| Quantity | Rule |
|---|---|
| Criterion points | Integers only. |
| C9 | `round_half_up((H + N) / 2)`: 6.5 becomes 7. |
| CSI components `A`, `N`, `P` and `CSI` | Computed in IEEE 754 double precision or better. `CSI` is rounded half up to 6 decimal places before `floor` is applied, so that floating-point noise cannot move a band. |
| C10 publication | Only the criterion points are published. The CSI, its components `A`, `N`, `P` and the sum `S` are internal (see [EVIDENCE.md](EVIDENCE.md) section 7). |
| "Up to X" counts | X divided by 2, unless a typical or minimum figure is also available. |
| Ranges | Lower end. |

`round_half_up(x, d)` means: round to `d` decimal places, with exact halves rounded away from zero.

## 5. Missing data

Missing is not zero, and missing is never a bonus.

1. A criterion is never left blank and never scored 0. With no counting evidence item it takes its not-published band from [CRITERIA.md](CRITERIA.md), which is never above 5. Captured evidence showing that a topic is absent or not mentioned is counting evidence, and the band rows apply to it ([CRITERIA.md](CRITERIA.md) section 1, rule 7).
2. Missing evidence MUST NOT raise a band. Absence of adverse evidence is not positive evidence: it earns at most the not-published band (C6: a clean recorded sweep with nothing positive scores exactly 4; C8: no finding and no standing evidence scores 5).
3. Missing values are never imputed: no averaging from other criteria, other clinics, other sites or earlier editions.
4. A register that refuses access is recorded as `not_retrievable` and the element it would have supported is treated as absent, except for clinician credentials in C10, which follow the credential status rules (never scored as a negative).
5. A source that becomes unreachable is not absent: the last captured snapshot continues to count, flagged, until its expiry window ends (see [EVIDENCE.md](EVIDENCE.md) section 6).
6. Where an official register of authorised facilities exists and the clinic is absent from it, the absence is recorded as a category fact and raised with the clinic; where no public list exists, absence means nothing.
7. Each criterion score records `not_published_default: true` when its band came from the not-published rule.

## 6. Confidence

Confidence is computed per criterion and per total from evidence coverage and freshness. The published `confidence` of a criterion score and of an assessment is the one computed for `public_score`.

### 6.1 Per criterion

Let the supporting items be the counting evidence items linked to the criterion score. An item is fresh when its age (from its `age_basis`) is at most the `review_after_days` of its evidence type, and ageing when older but not expired.

A criterion is `low` when any of the following holds:

- the band came from the not-published rule, or from a register or roster recorded as not retrievable;
- an item that a band requirement rested on entered state `disputed` during the edition (it no longer counts, and the band was recomputed without it);
- the criterion-specific rule in [CRITERIA.md](CRITERIA.md) says `low`.

Otherwise a criterion is `high` when all of the following hold:

- every requirement of the chosen band is supported by at least one fresh item;
- at least one supporting item has grade `official_record` or `independent_reporting`, or state `corroborated` or `verified`;
- no supporting item is a sealed item without an inspection record of finding `confirmed` ([SEALED-EVIDENCE.md](SEALED-EVIDENCE.md));
- no criterion-specific rule caps it lower.

Otherwise it is `medium` (evidence partial, ageing, or resting only on the clinic's own publications or other third-party material).

### 6.2 Overall

- `high`: at least 8 of the 10 criteria are `high` and none is `low`.
- `low`: 4 or more criteria are `low`.
- `medium`: every other case.

### 6.3 Provisional criterion scores

A criterion score is `provisional` while an input it depends on is still open at the edition cut-off: for C10, any register lookup that is `browser_lookup_needed` or `needs_a_person`, any board-member video that is `pending`, or an incomplete roster capture or conduct sweep; for any criterion, a conflict raised with the clinic that is unanswered within the cut-off.

1. An edition MAY contain provisional criterion scores. Each one is marked on the criterion score itself: `status` `provisional` (otherwise `final`) and a public `provisional_reason` that says which input is open.
2. A provisional criterion score counts in `public_score` and `extended_score` exactly as assessed on the evidence available at the cut-off. An open input is never scored as a negative and never raises a band. Embargoed evidence (section 6.4) is not an open input: the item exists and has been examined, only its publication waits for the end of the embargo, so it counts as assessed in a pre-publication release; an input that is open (a lookup not yet made, a video not yet received) supports nothing until it is complete.
3. A provisional criterion score is resolved in a later edition through the normal edition process (section 9 and GOVERNANCE.md): when the open input is completed, the criterion is scored again, its `status` becomes `final`, and any change of points or rank is published in that edition with a change log entry. A frozen edition is never edited in place to resolve it.
4. An agent that cites a provisional criterion score, or a total that contains one, MUST say that the criterion is provisional and give the `provisional_reason` (AGENT-GUIDANCE.md).
5. The `confidence` of a provisional criterion score is at most `medium`. The overall confidence (section 6.2) is computed from the capped values.

### 6.4 Embargoed evidence

Evidence with origin `embargoed` exists, has been examined by the assessor and will be public, but its own publisher has set an embargo that ends before the edition is published (for example a clinic video released at launch).

1. Embargoed evidence MAY support a criterion score only in a pre-publication release of an edition (ranking edition `status` `pre_publication`). While an item is embargoed its source URL, quote and snapshot are withheld and its statement says what it is, not what it shows beyond the element it supports.
2. A criterion score that depends on embargoed evidence is `provisional` (section 6.3), with a `provisional_reason` that says the supporting evidence is under embargo and released before publication.
3. An edition MUST NOT be published (frozen) while any score depends on embargoed evidence. The publish step, for each embargoed item, either converts it to origin `public_source` with its source URL and snapshot, or removes its effect: the item's `counts_toward` becomes `none` and the criterion is scored again without it. Either way the frozen edition contains no embargoed item that counts.
4. Agents MUST say that such an item is under embargo and released before publication when they cite a score that depends on it (AGENT-GUIDANCE.md).

## 7. Ranking order and ties

1. `rank` is the standard competition rank by `public_score`, descending: clinics with equal `public_score` share a rank and the next rank is skipped (1, 2, 2, 4). Clinics sharing a rank carry `tie_group` `t<rank>`.
2. `display_position` orders every entry by these keys, in order:
   1. `public_score`, descending;
   2. sum of public points for C1 to C5, descending;
   3. public points for C2, descending;
   4. clinic name, ascending, by the Unicode Collation Algorithm (root collation, DUCET).
3. The tie-break chain sets `display_position` only; it never changes `rank`. Display order within a tie group is not a rank and MUST NOT be described as one.
4. `extended_score` MUST NOT be used for `rank` or `display_position`.
5. `band` is reserved and is `null` in 1.0.0: there are no ordinal grades of overall scores.

## 8. Clinics linked by ownership

Where assessed clinics share a controlling owner, or one holds a disclosed shareholding of 20 percent or more in another, or the publisher, an assessor or a criteria author has a disclosed tie to a clinic:

1. Each linked or tied clinic is assessed by two assessors working independently on the same inputs. Where their bands differ by one band or less, the lower band is used and both are recorded. Where they differ by more than one band, a third assessor who has not scored the clinic applies the band selection rule to the combined evidence and records the reconciled band with a one-line reason; the difference is never split.
2. Assessors with a tie are recused. `recusal_applied` and `symmetric_test_applied` are recorded on the assessment. The symmetric test applies the same evidence rules to a comparison set of clinics. Recusal cures an assessor's own tie only. A tie held by the publisher itself cannot be cured by recusal: it is published as a Disclosure record shown alongside every affected clinic ([INTEGRITY.md](INTEGRITY.md) section 7.2).
3. A person on the boards of linked clinics counts at each clinic at the weight that clinic's own evidence gives, and the link is disclosed.
4. Before a tied clinic's score is published, a person outside the assessment workflow spot-checks its C10 register and marker lookups. The result is recorded as an `independent-reviewer-report` only when the check is made by an independent reviewer, once appointed ([GOVERNANCE.md](GOVERNANCE.md) section 3.1); until then it is recorded as an internal spot-check and the publisher states that no independent review has taken place.

## 9. Reproducibility

### 9.0 Edition id and citation

An `edition_id` is the publication date `YYYY-MM-DD`, with an optional revision suffix `.rN` when a frozen edition is superseded by a correction (`N` = 1, 2, ...): pattern `^\d{4}-\d{2}-\d{2}(\.r[1-9]\d*)?$`, for example `2026-10-01` and `2026-10-01.r1`. During a MINOR parallel period two editions share one `edition_id`, one per standard version. A citation is therefore always `edition_id` plus `standard_version`, for example "LROAS edition 2026-10-01, standard 1.0.0".

### 9.1 Evidence set

For each assessment, the evidence set is the JSON object:

```
{
  "standard_version": "<semver>",
  "edition_id": "<edition id>",
  "clinic_id": "<id>",
  "items": [ <hash projection of each item>, ... ],
  "sealed_commitments": [ <projection of each sealed-item record>, ... ]
}
```

`items` contains every EvidenceItem linked to any CriterionScore of the assessment whose `counts_toward` is not `none`, sorted by `id` ascending (code-point order). The hash projection of an item has exactly these members, each present, with `null` where no value exists:

| Member | Value |
|---|---|
| `id` | Evidence item id |
| `evidence_type` | Type id from [`registry/evidence-types.json`](registry/evidence-types.json) |
| `origin` | Evidence origin |
| `verification_state` | State at freeze |
| `counts_toward` | `public_and_extended` or `extended_only` |
| `criterion_ids` | Array of criterion ids, sorted |
| `statement` | The neutral statement of the fact, as published |
| `source_url` | Source URL, or `null` for restricted, clinic-supplied and embargoed items |
| `source_published_at` | Publication date of the source (`YYYY-MM-DD`) or `null` |
| `accessed_at` | Capture date (`YYYY-MM-DD`) |
| `snapshot_sha256` | Lowercase hex SHA-256 of the archived snapshot bytes, or `null` |
| `content_sha256` | For sealed items (`restricted` and `clinic_supplied`): the SHA-256 commitment of the held file, lowercase hex, as published in the sealed-item record; otherwise `null` |
| `valid_until` | Expiry date (`YYYY-MM-DD`) or `null` |

`sealed_commitments` contains every sealed-item record of the clinic in the edition ([SEALED-EVIDENCE.md](SEALED-EVIDENCE.md)), whether or not an EvidenceItem links to it, sorted by `id` ascending (code-point order), so that every commitment that can move a score is inside the hash. The projection of a record has exactly these members:

| Member | Value |
|---|---|
| `id` | Sealed-item record id |
| `criterion_id` | Criterion the item concerns |
| `evidence_type` | `authority-ruling-held`, `clinic-document` or `clinic-questionnaire-answer` |
| `affects` | `public` or `extended` |
| `sha256` | The published commitment, lowercase hex |
| `supported_element_ids` | Array of the criterion elements the item is stated to support, sorted; empty when none is recorded |

An assessment with no sealed items has `sealed_commitments` `[]`.

### 9.2 Hashes

- Assessment `inputs_hash` = lowercase hex SHA-256 of the UTF-8 bytes of the RFC 8785 (JSON Canonicalization Scheme) serialisation of the evidence set.
- Edition `inputs_hash` = lowercase hex SHA-256 of the RFC 8785 serialisation of `{"standard_version": ..., "edition_id": ..., "assessments": [{"clinic_id": ..., "inputs_hash": ...}, ...]}`, with `assessments` covering every ranked assessment of the edition, sorted by `clinic_id` ascending.
- The hash is fixed when the edition is frozen. A pre-publication release carries the hash of its own inputs; the frozen edition publishes its hash again, and it differs wherever the publish step changed an embargoed item (section 6.4). Any later change to a counted item produces a new hash and a change log entry.

### 9.3 Recomputation

A third party recomputes an edition by: (1) fetching every assessment's evidence items; (2) rebuilding each evidence set and checking the assessment `inputs_hash`; (3) checking the edition `inputs_hash`; (4) re-applying [CRITERIA.md](CRITERIA.md) to the items with `counts_toward` `public_and_extended` to obtain each criterion band and `public_score`; (5) re-applying section 7 to obtain `rank` and `display_position`. A sealed item enters step 4 through its published sealed-item record, whose commitment and `supported_element_ids` are inside the assessment hash (`sealed_commitments`, section 9.1): the element it is stated to support is taken as given, and its `content_sha256` commitment lets an inspector confirm the held file ([SEALED-EVIDENCE.md](SEALED-EVIDENCE.md)); a criterion score resting on one carries `recomputability` `sealed_input`. Every criterion except C10 is recomputable this way. C10 is partially recomputable: inputs held for inspection by an independent reviewer. Its published value is the points only; the capacity figure, the CSI and its components are withheld (see [EVIDENCE.md](EVIDENCE.md) section 7) and covered by their digests, and an independent reviewer MAY inspect the held content on request.

## 10. Worked example: Example Clinic

Example Clinic is fictional. It is a residential programme with several villas, a published weekly price and a licence on its (fictional) health authority register. For C10 the published record shows the points only.

### 10.1 Public evidence and bands

| Criterion | Evidence summary | Band selection | Public points |
|---|---|---|---|
| C1 | Private ensuite bedrooms; no group therapy; clients share villa dining and pool; at most 6 clients per villa; written staff confidentiality agreement (one measure beyond statute) | Band 7 requirements met; band 8 needs single occupancy per residence | 7 |
| C2 | G1 on register; G2 physician medical director; G3 psychiatrist on call overnight in the standard offer; G4 on-site withdrawal; G6 named hospital | G1 + G2 + three of G3 to G8 = band 7; band 8 needs four | 7 |
| C3 | E1 clinical pre-admission screening; E2 psychiatric assessment; E4 admission laboratory panel; E5 physician examination | Four elements including E2 = band 6; band 7 needs five | 6 |
| C4 | 1.5 hours of one-to-one clinical contact a day, stated as typical; group share 40 percent; stay extended on clinical grounds | Band 6; no cap applies | 6 |
| C5 | A1 plan before discharge; A2 twelve weeks; A3 included in fee; A4 same team; A10 video sessions | Five elements = band 6; band 7 needs six | 6 |
| C6 | Recorded sweep clean; P1 fixed weekly price; P3 declines unsuitable admissions | Clean sweep, two positive signals = band 6 | 6 |
| C7 | T1, T2, T4, T5, T7, T9; no contradiction | Six elements including T1 and T2 = band 7 | 7 |
| C8 | No finding within 10 years; S1 inspection 2024; S2 graded good 2024 | S1 and one of S2 to S4 = band 7 | 7 |
| C9 | H: H1, H2, H3, H4, H5, H7 = six including H3 and H4 = 7. N: N1 full (registered dietitian), N2, N4, N5 = four including N1 = 6 | round_half_up((7 + 6) / 2) = round_half_up(6.5) = 7 | 7 |
| C10 | See 10.2 | Clinical Seniority Index band 4; gate G-a (band 5 and above) not reached | 4 |

`public_score` = 7 + 7 + 6 + 6 + 6 + 6 + 7 + 7 + 7 + 4 = **63**.

### 10.2 C10 (public)

Example Clinic names four clinicians on its team page with register-confirmed credentials: a medical director who is a psychiatry specialist with a research doctorate, a treating psychologist with a protected specialist title, a treating registered psychotherapist, and a consultant psychiatrist who is an associate professor with a full-time post elsewhere and no stated time share. Applying the Clinical Seniority Index of [CRITERIA.md](CRITERIA.md) gives band 4; gate G-a (band 5 and above) is not reached. Published for C10: points 4. C10 is partially recomputable: inputs held for inspection by an independent reviewer.

### 10.3 Extended score

Example Clinic submits two clinic documents, both reaching `verified`:

- a written policy that it neither pays nor receives referral fees (C6.P2);
- a signed time-share statement placing P4 at this site for 50 percent of working time.

C6: clean sweep with P1, P2, P3 = three positive signals = band 7. C10: the time-share statement raises the consultant's involvement; the index now reaches band 5 and gate G-a is met by the medical director (specialist with research step, full relevance, treating). C10 = 5, published as points only.

`extended_score` = 63 + 1 (C6) + 1 (C10) = **65**, `extended_score_status` `available`. `rank` still uses 63.

### 10.4 Confidence

C2, C8 and C9 rest on official records and are fresh: `high`. C1, C3, C4, C5, C6 and C7 rest on the clinic's own pages only: `medium`. C10 rests on register lookups for all four people and a fresh roster capture: `high`. Result: 3 `high`, 7 `medium`, 0 `low`, overall `medium`.

### 10.5 Hash illustration

The following evidence set contains only two of Example Clinic's items and no sealed items (`sealed_commitments` `[]`), to show the canonical form. Snapshot digests are placeholders.

RFC 8785 serialisation (one line):

```
{"clinic_id":"example-clinic","edition_id":"2026-10-01","items":[{"accessed_at":"2026-09-20","content_sha256":null,"counts_toward":"public_and_extended","criterion_ids":["C2"],"evidence_type":"facility-licence-record","id":"ex-ev-0001","origin":"regulator","snapshot_sha256":"0000000000000000000000000000000000000000000000000000000000000000","source_published_at":null,"source_url":"https://register.example.org/facilities/000000","statement":"Example Clinic appears on the example health authority register as a licensed residential treatment facility.","valid_until":null,"verification_state":"verified"},{"accessed_at":"2026-09-20","content_sha256":null,"counts_toward":"public_and_extended","criterion_ids":["C6"],"evidence_type":"clinic-price-page","id":"ex-ev-0002","origin":"public_source","snapshot_sha256":"1111111111111111111111111111111111111111111111111111111111111111","source_published_at":null,"source_url":"https://www.example.com/fees","statement":"Example Clinic publishes a fixed residential price per week for its standard programme.","valid_until":null,"verification_state":"unverified"}],"sealed_commitments":[],"standard_version":"1.0.0"}
```

- Assessment `inputs_hash` (two-item illustration): `36737cf6ab9a12bf4e9106865bc09d1eb06770b538127211d55829be09a0528c`
- Edition `inputs_hash` for an edition containing only this assessment: `2787463b6a855cc35b45c428ece9fdeef8d60fc3c00637ee8c152f53c5747495`
