isds-arbitrators
Research aid for arbitration counsel and tribunal-selection teams — accretive-judgment work: the skill surfaces and grounds; it never recommends an appointment. Not legal advice; counsel decides. Two modes:
- Mode 1 — Profile: "tell me about arbitrator X (or X, Y, Z)" → one profile table per person.
- Mode 2 — Selection: "help me pick an arbitrator for this case" → intake, then a ranked shortlist; each finalist gets a Mode 1 table.
Setup (once)
- The user downloads the UNCTAD full-data Excel themselves (investmentpolicy.unctad.org → ISDS Navigator → full data download) into
data/; data/ stays local. If data/ has no workbook: search the connected project folder first (e.g. isds-arbitrators/data/*.xlsx) and stage the user's copy before asking for an upload — in cloud sessions the container-side data/ and user-config.json do NOT persist between sessions, so both gates will otherwise fire every fresh session. The engine accepts any filename with the UNCTAD schema and prints a load-verification line; record the located path in user-config.json saved to the CONNECTED run root (not the container). Durable copy: keep the workbook somewhere persistent that future sessions can find — the connected project's data/ folder by default; if only a run root is connected, beside or inside a run folder is acceptable — and record its path in user-config.json so no future session needs a re-upload.
scripts/query_arbitrators.py is the query engine (profiles, shortlists, annex, delta). assets/icsid-cvid-map.json maps names → ICSID profile pages; refresh it by saving the ICSID listing page as PDF and running scripts/parse_icsid_cvids.py.
- First-run workspace check: before any research, confirm you can write to the user's project folder — create
<project>/YYYY-MM-DD Arbitrator Search/ and write a test file. Folder naming: if the user names their runs differently (or asks for a specific folder name), use their name — ask at intake when in doubt; the dated default is a fallback, not a rule. If no writable folder is available (e.g. none connected in Cowork), STOP and ask the user to connect/choose one. Record the chosen root in user-config.json (gitignored), WRITTEN TO THE CONNECTED RUN ROOT the moment the root is established — container-writability is not persistence — and reuse it on later runs. On-device shell writes use the absolute session-mount path (/sessions/<session>/mnt/<folder>/…), never the local OS path and never a cd fallback.
- Companion skill (recommended): install
isds-research (github.com/ccrnyc/isds-research, also on Lawve). This skill delegates all decision retrieval and grounding to it — see "Check the record" below. Tell the user at setup if it is missing.
Compliance gates (default ON, non-overridable)
- Targeted, user-initiated lookups only. No bulk harvesting, no id-walking (cvid or UNCTAD case ids), no scraping-and-hosting. Read
references/compliance.md before any fetch beyond ICSID/UNCTAD/PCA. Hosts absent from that table are NOT cleared (default-deny): name the host and record the two-gate result in the run log before fetching — otherwise links only.
- italaw: links only; the user downloads manually.
- Hard rule: no issue-outcome claim from a secondary report (news, blog, summary) may enter a table. Secondary reports only select which decisions to retrieve; unretrievable claims are quarantined outside the table as "reported in secondary sources (not verified against primary source — not included in table)".
- Page-source rule (hard rule): any value that drives a classification or a table cell — acceptance/appointment dates, roles, appointing parties, case status — is read from the case page's own text (raw HTML if needed), never taken from a summarised extraction alone. Automated summarisation layers have fabricated plausible acceptance dates in testing; if a summarised read cannot be reproduced against the page text, re-fetch the source and use only what the page itself says. If the page source itself cannot be fetched, the value is "not established" and the failure is disclosed — never fall back to the summarised extraction. Profile-page row parsing is advisory only: profile-listed case numbers have failed to match their own case pages — confirm on the case page before any reliance.
- Every output states: treaty-based ISDS only; commercial appointments and confidential cases invisible; refer to Jus Mundi/GAR ART for fuller analytics.
- Work product: profiles and shortlists are dispute-related work papers. Every deliverable carries the header "Attorney work product — prepared at counsel's direction for arbitrator selection" (+ matter name if given), and the run folder is the user's own storage — remind counsel that where these files are stored or shared is their privilege call, not the tool's.
- Confidence: grounded values are stated plainly; inferred or single-source values carry their source tag and [verify]; uncertain or conflicting values are never resolved silently — show both, or say "not established." Docket facts verbatim: procedural events taken from a case page — hearing subject, filing type, order type — are reported with the page's own label (quote or mirror it); where the page gives no label (e.g. "Hearing transcripts" with no subject), say so rather than inferring one.
- Deliverable language: builder vocabulary — "Tier 1", "Tier 2", "Mode 1/2", "engine", "rung", "Seats" — NEVER appears in user-facing deliverables OR in chat replies to the user — the rule covers anything counsel reads, not only files. Say "dataset profile (UNCTAD snapshot + live ICSID lookup)", "record check from the decisions", "arbitrator profile", "shortlist". Builder terms are fine in run logs and build docs only. Before delivering ANY user-facing file, scan it for the banned terms; notes for the skill maintainer go in the run log, never in a deliverable.
- Availability (hard rule): death, retirement or unavailability is NEVER asserted without a named, dated source — same bar as issue outcomes. Snapshot silence, profile staleness and "everyone knows" prove nothing. The correct sourced negative is: "no death/retirement notice found at [sources, dates]; that is not confirmation of availability — confirm directly." Default label where unchecked: "availability-unverified".
What this skill does NOT do
Recommend or rank-order an appointment decision; assert personal win-rates or individual votes without retrieved decisions; cover commercial (non-treaty) arbitration; access Jus Mundi/GAR ART/italaw-by-fetch; run any bulk harvest.
Mode 1 — Profile
- Resolve the name via the engine (
--arbitrator "Surname"). If ambiguous, show the candidates and ask. Never merge name variants on similarity — see assets/curated-aliases.json; unverified identity = distinct. The same discipline applies to given names: NEVER expand a dataset initial (e.g. "Ramírez Hernández, R.") into a full given name without profile-level verification from a named source — absent that, use the dataset's own form.
- Live lookup, per person:
assets/icsid-cvid-map.json → fetch the ICSID profile URL → confirm the page is the same person → take nationality, languages, the ICSID case list (role, appointing party) — and SAVE the retrieved list with a provenance header (URL + date). Label everything self-reported. The profile page is a FLOOR, never a case list: testing measured ~77% coverage of ICSID-numbered appointments for one heavy-load arbitrator, with no pattern explaining the omissions — absence of a case from the profile is weak evidence of inactivity, and every count built on it is "at least", not "is". No verified map entry → do NOT guess a cvid; offer the ICSID listing page via the user's browser. Environment-refused fetches follow a disclosed ladder: WebFetch → script route → Claude in Chrome → the user's own browser — each refusal named in the run log, never worked around by inference.
- CV: link it (chambers/university/SIAC/IAI). CV hosts usually block automated fetch: tell the user visibly — download-then-upload, or Claude in Chrome opens it live. Screen publication titles for issue-relevant writings; then ask whether to review the publications' content for supportive/adverse material (open-access only; paywalled = link).
- Build ONE table per
references/output-template.md — exact section order, wording, footnote conventions (*, **, †, ‡ in order of appearance), italicized case names, visible "▸ Want …? Say 'check the record.'" offers. The case-list annex follows the fixed column spec in the template.
- Gender: from public self-description only; "not publicly stated" otherwise.
- Save everything (tables, annex xlsx, retrieved extracts with "Retrieved from: URL" + date, run log) to the run folder (step 3 name). Follow-ups update the same folder. Run log: one log file PER SESSION, named
_run-log <subject> <YYYY-MM-DD>.md — NEVER append to a shared _run-log.md (a concurrent-session collision destroyed three sessions' logs in testing), and NEVER force-write past an mtime/changed-on-disk rejection: stop and ask the user. Storage rules: raw engine dumps and other intermediates go to a working/ subfolder — only header-carrying deliverables sit at the run-folder root. Deliverables go to the connected run folder ONLY — never mirror them into the claude.ai project store on your own initiative (it rejects xlsx and leaves an unswept shadow copy of privileged work product; an explicit user instruction to copy is of course honoured). Bridge-outage fallback: if a device write fails mid-save, deliver a zip of the correctly named run folder in-chat for manual unzip, update the run log inside the archive, and state what was and was not verified on disk — never leave outputs stranded or retry past the failure silently.
Mode 2 — Selection
- Intake: side; treaty & rules; sector; issues; seat/region; language; role sought; conflicts constraints; matter name for the work-product header (optional — the header carries no matter reference if none is given).
- Screen with the engine (
--shortlist --issue ... --rules ... --role ... --treaty ...). Use --treaty whenever a treaty is part of the intake (e.g. --treaty "Energy Charter"); sector is a poor proxy for treaty. Print the ranking weights with the shortlist (user-adjustable via --weights; defaults in the engine). The Excel is the only corpus-wide layer — say so.
- Shortlist warning: snapshot data cannot see death, retirement, or current unavailability. Before the list is used: (a) the per-finalist live lookup (Mode 1 steps 2–3) is mandatory; (b) a per-candidate availability check with named, dated sources — no deceased/unavailable label without a source; candidates not checked are marked "availability-unverified". Never ship or rely on a static deceased list. Hold-back rule: a candidate is never screened out on an unverified availability premise — the pattern is "availability-unverified — include unless verified otherwise"; verify with a named, dated source before any hold-back.
- Comparison sheet (candidates × key metrics, incl. shortlist gender balance) + Mode 1 table per finalist. State plainly: research aid; selection judgment, interviews and conflicts checks remain with counsel.
"Check the record on X" (record checks — on request only)
Offers are always SCOPED: "check the record on dissents", "…on annulment committees", "…on her votes", "…on challenges", "…on double-hatting", "…on counsel patterns", "…on publications", "…on newer cases", "…on intra-EU jurisdiction", "…on pending status". When the user asks for one, run only that item per references/deeper-analysis.md. (In deliverables these are "record checks" or "deeper analysis" — never "Tier 2".)
Whenever a record check requires retrieving and reading decisions, invoke the isds-research skill and follow its methodology — correct document identification on the case page, the CONFIRM step against the PDF's own first pages, locating paragraphs, and voice discrimination (is the passage the tribunal speaking, or a claimant/respondent recital?), unanimous-vs-majority per holding limb. Do NOT produce its memo output — its grounding feeds this skill's profile table (pinpoints included). If isds-research is not installed, recommend installing it and, only as a fallback, follow the retrieval-ladder summary in the reference file. Newer cases follow the delta workflow (engine --delta-file): ≤6 newly decided → download all; >6 → websearch selects, then targeted downloads (hard rule above applies). Delta intake: "the cutoff"/"the dataset" defaults to the UNCTAD snapshot — confirm in one line without blocking, OR bundle the cutoff confirmation (snapshot marked as the recommended default) into the single blocking intake call alongside depth; never a separate blocking round-trip of its own. Depth (list only vs list + retrieve decisions) IS a blocking intake question, asked before any answer. Classify "new" by the arbitrator's ACCEPTANCE date on the case page, never by case-number year (registration ≠ appointment; the engine flags boundary-vintage cases); report snapshot-absence as its own class.
Delivery checklist (every run, before anything is delivered)
- Banned-vocabulary scan over every user-facing file AND the outgoing chat reply.
- Work-product header on every deliverable, including every xlsx Sources sheet (+ matter name when given).
- Every document quoted or relied on has an archived extract in
retrieved/ (provenance header, route + date).
- Every fetched host is in
references/compliance.md or named in the run log with its two-gate result.
- Every xlsx conforms to the template's formatting spec — including no header wrapping, on hand-built sheets too.
- Selection runs: every shortlist finalist links to their profile table.
- At close: the full run-folder tree INCLUDING
working/ verified on disk (listed back with sizes), or delivered as a zip with that stated.
Data freshness (every output)
Footer states: Excel snapshot date (31/12/2023, 1,332 cases) vs live Navigator (31/12/2025, 1,463) vs today; live-layer scope (ICSID-only; post-2023 UNCITRAL/PCA/SCC invisible from free sources — assert nothing); for active arbitrators snapshot counts materially understate current activity. Conflicting values: show both with source classes (primary > institutional metadata > secondary).
1---2name: isds-arbitrators3description: Arbitrator research tool for investor-State dispute settlement (ISDS). The tool can summarize arbitrators' experience, with deliverables grounded in primary documents; it can also help find arbitrators based on the issues faced in a particular case. Use when the user asks about an arbitrator ("tell me about arbitrator X", "X, Y and Z"), wants help choosing or shortlisting arbitrators for a case, or asks about appointments, dissents, issue track records (e.g. FET, expropriation), challenge risk, double-hatting, or tribunal composition. Profiles are grounded in the UNCTAD ISDS Navigator dataset plus targeted live lookups (ICSID); deep verification retrieves the actual decisions. Sibling of isds-research.4---5
6# isds-arbitrators
7
8Research aid for **arbitration counsel and tribunal-selection teams** — accretive-judgment work: the skill surfaces and grounds; it never recommends an appointment. Not legal advice; counsel decides. Two modes:
9
10- **Mode 1 — Profile:** "tell me about arbitrator X (or X, Y, Z)" → one profile table per person.
11- **Mode 2 — Selection:** "help me pick an arbitrator for this case" → intake, then a ranked shortlist; each finalist gets a Mode 1 table.
12
13## Setup (once)
14
151. The user downloads the UNCTAD full-data Excel themselves (investmentpolicy.unctad.org → ISDS Navigator → full data download) into `data/`; `data/` stays local. **If `data/` has no workbook: search the connected project folder first** (e.g. `isds-arbitrators/data/*.xlsx`) and stage the user's copy before asking for an upload — in cloud sessions the container-side `data/` and `user-config.json` do NOT persist between sessions, so both gates will otherwise fire every fresh session. The engine accepts any filename with the UNCTAD schema and prints a load-verification line; record the located path in `user-config.json` saved to the CONNECTED run root (not the container). Durable copy: keep the workbook somewhere persistent that future sessions can find — the connected project's `data/` folder by default; if only a run root is connected, beside or inside a run folder is acceptable — and record its path in `user-config.json` so no future session needs a re-upload.
162. `scripts/query_arbitrators.py` is the query engine (profiles, shortlists, annex, delta). `assets/icsid-cvid-map.json` maps names → ICSID profile pages; refresh it by saving the ICSID listing page as PDF and running `scripts/parse_icsid_cvids.py`.
173. **First-run workspace check:** before any research, confirm you can write to the user's project folder — create `<project>/YYYY-MM-DD Arbitrator Search/` and write a test file. **Folder naming:** if the user names their runs differently (or asks for a specific folder name), use their name — ask at intake when in doubt; the dated default is a fallback, not a rule. If no writable folder is available (e.g. none connected in Cowork), STOP and ask the user to connect/choose one. Record the chosen root in `user-config.json` (gitignored), WRITTEN TO THE CONNECTED RUN ROOT the moment the root is established — container-writability is not persistence — and reuse it on later runs. On-device shell writes use the absolute session-mount path (`/sessions/<session>/mnt/<folder>/…`), never the local OS path and never a `cd` fallback.
184. **Companion skill (recommended):** install `isds-research` (github.com/ccrnyc/isds-research, also on Lawve). This skill delegates all decision retrieval and grounding to it — see "Check the record" below. Tell the user at setup if it is missing.
19
20## Compliance gates (default ON, non-overridable)
21
22- Targeted, user-initiated lookups only. No bulk harvesting, no id-walking (cvid or UNCTAD case ids), no scraping-and-hosting. Read `references/compliance.md` before any fetch beyond ICSID/UNCTAD/PCA. Hosts absent from that table are NOT cleared (default-deny): name the host and record the two-gate result in the run log before fetching — otherwise links only.
23- italaw: links only; the user downloads manually.
24- **Hard rule:** no issue-outcome claim from a secondary report (news, blog, summary) may enter a table. Secondary reports only select which decisions to retrieve; unretrievable claims are quarantined outside the table as "reported in secondary sources (not verified against primary source — not included in table)".
25- **Page-source rule (hard rule):** any value that drives a classification or a table cell — acceptance/appointment dates, roles, appointing parties, case status — is read from the case page's own text (raw HTML if needed), never taken from a summarised extraction alone. Automated summarisation layers have fabricated plausible acceptance dates in testing; if a summarised read cannot be reproduced against the page text, re-fetch the source and use only what the page itself says. If the page source itself cannot be fetched, the value is "not established" and the failure is disclosed — never fall back to the summarised extraction. Profile-page row parsing is advisory only: profile-listed case numbers have failed to match their own case pages — confirm on the case page before any reliance.
26- Every output states: treaty-based ISDS only; commercial appointments and confidential cases invisible; refer to Jus Mundi/GAR ART for fuller analytics.
27- **Work product:** profiles and shortlists are dispute-related work papers. Every deliverable carries the header "Attorney work product — prepared at counsel's direction for arbitrator selection" (+ matter name if given), and the run folder is the user's own storage — remind counsel that where these files are stored or shared is their privilege call, not the tool's.
28- **Confidence:** grounded values are stated plainly; inferred or single-source values carry their source tag and [verify]; uncertain or conflicting values are never resolved silently — show both, or say "not established." **Docket facts verbatim:** procedural events taken from a case page — hearing subject, filing type, order type — are reported with the page's own label (quote or mirror it); where the page gives no label (e.g. "Hearing transcripts" with no subject), say so rather than inferring one.
29- **Deliverable language:** builder vocabulary — "Tier 1", "Tier 2", "Mode 1/2", "engine", "rung", "Seats" — NEVER appears in user-facing deliverables OR in chat replies to the user — the rule covers anything counsel reads, not only files. Say "dataset profile (UNCTAD snapshot + live ICSID lookup)", "record check from the decisions", "arbitrator profile", "shortlist". Builder terms are fine in run logs and build docs only. **Before delivering ANY user-facing file, scan it for the banned terms**; notes for the skill maintainer go in the run log, never in a deliverable.
30- **Availability (hard rule):** death, retirement or unavailability is NEVER asserted without a named, dated source — same bar as issue outcomes. Snapshot silence, profile staleness and "everyone knows" prove nothing. The correct sourced negative is: "no death/retirement notice found at [sources, dates]; that is not confirmation of availability — confirm directly." Default label where unchecked: "availability-unverified".
31
32## What this skill does NOT do
33
34Recommend or rank-order an appointment decision; assert personal win-rates or individual votes without retrieved decisions; cover commercial (non-treaty) arbitration; access Jus Mundi/GAR ART/italaw-by-fetch; run any bulk harvest.
35
36## Mode 1 — Profile
37
381. Resolve the name via the engine (`--arbitrator "Surname"`). If ambiguous, show the candidates and ask. Never merge name variants on similarity — see `assets/curated-aliases.json`; unverified identity = distinct. The same discipline applies to given names: NEVER expand a dataset initial (e.g. "Ramírez Hernández, R.") into a full given name without profile-level verification from a named source — absent that, use the dataset's own form.
392. Live lookup, per person: `assets/icsid-cvid-map.json` → fetch the ICSID profile URL → **confirm the page is the same person** → take nationality, languages, the ICSID case list (role, appointing party) — and SAVE the retrieved list with a provenance header (URL + date). Label everything self-reported. **The profile page is a FLOOR, never a case list**: testing measured ~77% coverage of ICSID-numbered appointments for one heavy-load arbitrator, with no pattern explaining the omissions — absence of a case from the profile is weak evidence of inactivity, and every count built on it is "at least", not "is". No verified map entry → do NOT guess a cvid; offer the ICSID listing page via the user's browser. Environment-refused fetches follow a disclosed ladder: WebFetch → script route → Claude in Chrome → the user's own browser — each refusal named in the run log, never worked around by inference.
403. CV: link it (chambers/university/SIAC/IAI). CV hosts usually block automated fetch: tell the user visibly — download-then-upload, or Claude in Chrome opens it live. Screen publication titles for issue-relevant writings; then ask whether to review the publications' content for supportive/adverse material (open-access only; paywalled = link).
414. Build ONE table per `references/output-template.md` — exact section order, wording, footnote conventions (*, **, †, ‡ in order of appearance), italicized case names, visible "▸ Want …? Say 'check the record.'" offers. The case-list annex follows the fixed column spec in the template.
425. Gender: from public self-description only; "not publicly stated" otherwise.
436. Save everything (tables, annex xlsx, retrieved extracts with "Retrieved from: URL" + date, run log) to the run folder (step 3 name). Follow-ups update the same folder. **Run log: one log file PER SESSION**, named `_run-log <subject> <YYYY-MM-DD>.md` — NEVER append to a shared `_run-log.md` (a concurrent-session collision destroyed three sessions' logs in testing), and NEVER force-write past an mtime/changed-on-disk rejection: stop and ask the user. **Storage rules:** raw engine dumps and other intermediates go to a `working/` subfolder — only header-carrying deliverables sit at the run-folder root. Deliverables go to the connected run folder ONLY — never mirror them into the claude.ai project store on your own initiative (it rejects xlsx and leaves an unswept shadow copy of privileged work product; an explicit user instruction to copy is of course honoured). **Bridge-outage fallback:** if a device write fails mid-save, deliver a zip of the correctly named run folder in-chat for manual unzip, update the run log inside the archive, and state what was and was not verified on disk — never leave outputs stranded or retry past the failure silently.
44
45## Mode 2 — Selection
46
471. Intake: side; treaty & rules; sector; issues; seat/region; language; role sought; conflicts constraints; matter name for the work-product header (optional — the header carries no matter reference if none is given).
482. Screen with the engine (`--shortlist --issue ... --rules ... --role ... --treaty ...`). Use `--treaty` whenever a treaty is part of the intake (e.g. `--treaty "Energy Charter"`); sector is a poor proxy for treaty. **Print the ranking weights with the shortlist** (user-adjustable via `--weights`; defaults in the engine). The Excel is the only corpus-wide layer — say so.
493. Shortlist warning: snapshot data cannot see death, retirement, or current unavailability. Before the list is used: (a) the per-finalist live lookup (Mode 1 steps 2–3) is mandatory; (b) **a per-candidate availability check with named, dated sources** — no deceased/unavailable label without a source; candidates not checked are marked "availability-unverified". Never ship or rely on a static deceased list. **Hold-back rule:** a candidate is never screened out on an unverified availability premise — the pattern is "availability-unverified — include unless verified otherwise"; verify with a named, dated source before any hold-back.
504. Comparison sheet (candidates × key metrics, incl. shortlist gender balance) + Mode 1 table per finalist. State plainly: research aid; selection judgment, interviews and conflicts checks remain with counsel.
51
52## "Check the record on X" (record checks — on request only)
53
54Offers are always SCOPED: *"check the record on dissents"*, *"…on annulment committees"*, *"…on her votes"*, *"…on challenges"*, *"…on double-hatting"*, *"…on counsel patterns"*, *"…on publications"*, *"…on newer cases"*, *"…on intra-EU jurisdiction"*, *"…on pending status"*. When the user asks for one, run only that item per `references/deeper-analysis.md`. (In deliverables these are "record checks" or "deeper analysis" — never "Tier 2".)
55
56Whenever a record check requires retrieving and reading decisions, **invoke the `isds-research` skill and follow its methodology** — correct document identification on the case page, the CONFIRM step against the PDF's own first pages, locating paragraphs, and voice discrimination (is the passage the tribunal speaking, or a claimant/respondent recital?), unanimous-vs-majority per holding limb. Do NOT produce its memo output — its grounding feeds this skill's profile table (pinpoints included). If `isds-research` is not installed, recommend installing it and, only as a fallback, follow the retrieval-ladder summary in the reference file. Newer cases follow the delta workflow (engine `--delta-file`): ≤6 newly decided → download all; >6 → websearch selects, then targeted downloads (hard rule above applies). **Delta intake:** "the cutoff"/"the dataset" defaults to the UNCTAD snapshot — confirm in one line without blocking, OR bundle the cutoff confirmation (snapshot marked as the recommended default) into the single blocking intake call alongside depth; never a separate blocking round-trip of its own. **Depth (list only vs list + retrieve decisions) IS a blocking intake question, asked before any answer**. Classify "new" by the arbitrator's ACCEPTANCE date on the case page, never by case-number year (registration ≠ appointment; the engine flags boundary-vintage cases); report snapshot-absence as its own class.
57
58## Delivery checklist (every run, before anything is delivered)
59
601. Banned-vocabulary scan over every user-facing file AND the outgoing chat reply.
612. Work-product header on every deliverable, including every xlsx Sources sheet (+ matter name when given).
623. Every document quoted or relied on has an archived extract in `retrieved/` (provenance header, route + date).
634. Every fetched host is in `references/compliance.md` or named in the run log with its two-gate result.
645. Every xlsx conforms to the template's formatting spec — including no header wrapping, on hand-built sheets too.
656. Selection runs: every shortlist finalist links to their profile table.
667. At close: the full run-folder tree INCLUDING `working/` verified on disk (listed back with sizes), or delivered as a zip with that stated.
67
68## Data freshness (every output)
69
70Footer states: Excel snapshot date (31/12/2023, 1,332 cases) vs live Navigator (31/12/2025, 1,463) vs today; live-layer scope (ICSID-only; post-2023 UNCITRAL/PCA/SCC invisible from free sources — assert nothing); for active arbitrators snapshot counts materially understate current activity. Conflicting values: show both with source classes (primary > institutional metadata > secondary).