Skip to main content

ADR-0195: The secrecy-jurisdiction list is our authored judgement, with a stated rule

Date: 2026-08-24 Status: Accepted Deciders: Adrian (project owner, decision recorded 2026-08-24), Claude Opus 5

Context

secrecy_jurisdictions scores a country 30.0 on the EBA geography dimension. Measured on the live scorer, eight of its twelve entries are the sole reason CH, DE, GB, HK, JE, LU, SG and US carry elevated geography risk — without the list, DE and LU fall to 5.0 (EU/EEA) and the rest to 10.0. The remaining four (AE, KY, PA, VG) are already scored 80–90 by eu_high_risk_third_countries, so their entry changes nothing today.

Three facts about how that list came to exist, established from git history rather than recollection (#1197):

  1. The twelve entries are byte-identical to their extraction. git log --follow traces the file to b3da9ec6, a bulk import of reference material gathered for the prompt and feature adoption roadmap. They have never been re-derived here.
  2. No selection rule was ever recorded — not in the file, not in any commit touching it. So the list could not be refreshed by anyone who was not present when it was written.
  3. The declared source was a third party's index. The file cited Tax Justice Network Financial Secrecy Index / fsi.taxjustice.net, which made it look like a reproduction of that index. It is not one: the twelve are not a top-N of any FSI edition — six sit in the current FSI top ten and six do not, while four of the current top ten are absent.

A mechanical top-N by FSI value was considered and rejected on the merits and then blocked on a second ground (both below).

Decision

The list is our own authored judgement, labelled as such, with a rule that states what puts a jurisdiction on it — the treatment ADR-0159 applied to pep_tiers and sanctions_defaults.

The rule. A jurisdiction belongs on this list when BOTH hold:

  1. Beneficial ownership is not verifiable by an outside party against an authoritative register — no public BO register, access restricted to a demonstrated legitimate interest, or a formation regime built for non-resident owners; and
  2. the jurisdiction carries material cross-border corporate or financial activity, so that the opacity is reachable by our customer base rather than theoretical.

Limb 2 is what stops the list becoming "every jurisdiction with a weak register". The risk being scored is that this customer's structure cannot be verified, not that opacity exists somewhere.

Every entry states its own basis, in entry_basis in the dataset. Adding or removing one means changing that basis, which makes re-derivation a reviewed edit rather than a scheduled refresh.

Provenance is corrected. source becomes Trust Relay authored judgement (ADR-0195) and source_url points at this ADR. The source class moves from biennial_index to internal_default_judgement, joining pep_tiers and sanctions_defaults. biennial_index is deleted — nothing else used it, and its cadence claim was false (see below).

Membership does not change in this ADR. The rule is authored against the list as it stands, so this is reviewable as a rule decision without a scoring change landing in the same commit.

Consequences

Positive

  • The list can be refreshed by someone who was not present when it was written, which was not previously true of a dataset feeding live risk decisions.
  • The provenance stops implying a reproduction of a third party's index that it never was. A reader following source_url now reaches the reasoning.
  • It resolves #1197's staleness finding correctly. secrecy_jurisdictions was classed biennial_index, describing the FSI as biennial — and TJN moved the FSI to a rolling-update model in June 2023, before that classification was written. The window was not the defect; the source attribution was. Retuning the window would have preserved the wrong attribution and fixed a symptom.
  • The 455-day review window (365 + grace) is now a cadence we set for our own judgement, which is a claim we can actually honour.

Negative

  • This is compliance policy authored in-house. Eight major economies carry 3–6× their baseline geography risk on our own stated judgement, with no external standard to appeal to. That is the honest position, and it is a weaker one to defend to a regulator than "we apply published list X" — which is precisely why the rule and the per-entry basis are recorded rather than implied.
  • GB is the weakest entry and is flagged as such in the data. The UK's PSC register is public and free, so limb 1 is not satisfied on register access; it is retained on formation-verification weakness, which is a materially different argument. It should be re-examined; leaving it silently in the list under a rule it does not cleanly meet would be the defect this ADR exists to remove.
  • The four already-covered entries (AE, KY, PA, VG) are retained deliberately even though inert today, because removing them would create a latent gap: if eu_high_risk_third_countries later drops one, that jurisdiction would fall from 80 to 10 with nothing catching it. Retaining is the fail-safe direction (ADR-0067), and the redundancy is stated in each entry's basis rather than looking like an oversight.
  • Re-derivation is now manual by design. There is no scheduled refresh, and a jurisdiction whose regime changes will not be picked up until someone looks.

Neutral

  • Membership is unchanged, so no case's score moves in this ADR.
  • biennial_index is gone; no other dataset referenced it.

Alternatives Considered

Alternative 1: Mechanical top-N by FSI value

  • Sort the FSI by value, take the top N, refresh on a cadence.
  • Why rejected — on the merits: FSI value multiplies a secrecy score by a global scale weight, so it ranks the US first largely for volume rather than opacity. The question this dimension asks is "how opaque is this jurisdiction for my customer's structure", and rank answers a different one. Rank is also volatile — Cayman moved from 1st to 14th between editions — so a top-N would re-tier eight major economies every time the index republishes, which TJN now does continuously.
  • Why rejected — on a second, independent ground: the Tax Justice Network states that organisations conducting business activities must pay a commercial licensing fee for the index data. Deriving a commercial product's risk inputs from it on an ongoing cadence is a licensing question, not an engineering one. It was reported to the owner rather than decided here, and this ADR does not resolve it. It is recorded because it constrains the alternative, not because this decision depends on it. An authored judgement informed by public knowledge is a different artifact from a derived work of their dataset.

Alternative 2: Freeze as-is and attribute honestly, with no rule

  • Label the twelve as inherited judgement and stop there.
  • Why rejected: it fixes the false attribution but leaves the list unrefreshable, which is half the finding. A dataset feeding live risk that nobody can update is a dataset that will silently age.

Alternative 3: Derive from the country-capability registry (bo_identity)

  • Use our own declared capability instead of any external source.
  • Why rejected: bo_identity declares BE and CZ. It records where we can parse BO data, not where a jurisdiction impedes verification — so "not in bo_identity" would place roughly 190 countries on the list. The registry answers a different question, and using it would have been a category error dressed as rigour.
Decision context:
- Latency: unchanged. No new lookup; the dataset is read as before.
- Dependency surface: REDUCED — the declared dependency on a third party's
index is removed and replaced by our own recorded reasoning.
- Debuggability: an entry's presence is now explainable from the data itself
(`selection_rule` + `entry_basis`), rather than requiring the reader to find
whoever built the list.
- Reversibility: single-commit revert; membership is unchanged, so no score
moves in either direction.
- Blast radius: one dataset's metadata, one source-class assignment, one class
deleted. No membership change, therefore no case's score changes.
- Alternative considered: mechanical top-N by FSI value — rejected because rank
conflates opacity with scale and churns across editions, and separately
because commercial use of that index is licensed.