docs(resilience): PR 4a — SWF classification rubric (tiers + precedents, no manifest changes)#3376
Conversation
…ts, no manifest changes)
PR 4a of cohort-audit plan 2026-04-24-002. First half of the plan's PR 4
(full-manifest re-rate) split into:
- PR 4a (this): pure documentation — central rubric defining tiers
+ concrete precedents per axis. No manifest changes.
- PR 4b (deferred): apply the rubric to revise specific coefficients
in `scripts/shared/swf-classification-manifest.yaml`. Behaviour-
changing; belongs in a separate PR with cohort snapshots and
methodology review.
This split addresses the plan's concern that PR 4 "may not be outcome-
predetermined" by separating the evaluative framework from its
application. PR 4a makes every current manifest value evaluable against
a benchmark; PR 4b applies the benchmark.
Shipped
- `docs/methodology/swf-classification-rubric.md` — new doc.
Sections:
1. Introduction + scope (rubric vs manifest boundary)
2. Access axis: 5 named tiers (0.1, 0.3, 0.5, 0.7, 0.9) w/
concrete precedents per tier, plus edge cases for
fiscal-rule caps (Norway GPFG) and state holding
companies (Temasek)
3. Liquidity axis: 6 tiers (0.1, 0.3, 0.5, 0.7, 0.9, 1.0) w/
precedents + listed-vs-directly-owned real-estate edge case
4. Transparency axis: 6 tiers grounded in LM Transparency
Index + IFSWF membership + annual-report granularity, plus
edge cases for LM=10 w/o holdings-level disclosure and
sealed filings (KIA)
5. Current manifest × rubric alignment — 24 coefficients reviewed;
6 flagged as "arguably higher/lower under the rubric" with
directional-impact analysis marked INFORMATIONAL, not
motivation for revision
6. How-to-use playbook for manifest-edit PRs (add/revise/rubric-
revise workflows)
Findings (informational only — no PR changes)
Six ratings flagged as potentially under-/over-stated against the
rubric. Per the plan's anti-pattern note (rank-targeted acceptance
criteria), the flags are INFORMATIONAL: a future manifest-edit PR
should revise only when the rubric + cited evidence support the
change, not to hit a target ranking.
Flagged (with directional impact if revised upward):
- Mubadala access 0.4 → arguably 0.5; transparency 0.6 → 0.7
(haircut 0.12 → 0.175, +46% access × transparency product)
- PIF access 0.4 → arguably 0.5; liquidity 0.4 → arguably 0.3
(net small effect — opposite directions partially cancel)
- KIA transparency 0.4 → arguably 0.5 (haircut +25%)
- QIA access 0.4 → arguably 0.5; transparency 0.4 → arguably 0.5
(haircut +56%)
- GIC access 0.6 → arguably 0.7 (haircut +17%)
Not flagged: GPFG, ADIA, Temasek (all 9 coefficients align with
their rubric tiers).
Verified
- `npm run test:data` — 6694 pass / 0 fail (unchanged — pure docs PR)
- `npm run typecheck` / `typecheck:api` — green
- `npm run lint:md` — clean
Not in this PR
- Manifest coefficient changes (PR 4b)
- Cohort-sanity snapshot before/after (PR 4b)
- Live-data audit of IFSWF engagement + LM index current values
(requires web fetch — not in scope for a doc PR)
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR adds a new methodology document ( Two internal self-contradictions need resolution before PR 4b authors can use this rubric reliably: GIC is simultaneously listed as the canonical 0.7-tier access precedent in the tier table and rated only "arguably 0.7" in the alignment section, and Mubadala's transparency target tier is stated as 0.9 in the tier table inline note but 0.7 in the alignment table (the edge-case section resolves this as 0.7-0.8, but the tier-table note is never corrected). A third minor inconsistency: PIF liquidity is labeled "AT BOUNDARY" between 0.3 and 0.5 tiers when ~40% public sits solidly inside the 0.3-tier range (30-50%), contradicting the alignment table's own assessment. Confidence Score: 4/5Pure docs PR; no code or manifest changes, but two internal contradictions should be resolved before this rubric is cited as an authoritative reference in PR 4b. The GIC-as-precedent contradiction and the Mubadala 0.9-vs-0.7 discrepancy are P1 issues because this document is explicitly designed to be the authoritative benchmark for PR 4b manifest edits — internal contradictions will directly cause inconsistent rating decisions in the next PR. Both are straightforward one-line fixes. docs/methodology/swf-classification-rubric.md — lines 58, 137, and 105 contain contradictions between the tier-definition tables and the alignment table. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[New Fund / Revised Fund] --> B{Axis 1 — Access}
B --> B1["0.1 Nil (sanctions/freeze)"]
B --> B2["0.3 Intergenerational (ADIA)"]
B --> B3["0.5 Hybrid/constrained (PIF, QIA, Mubadala)"]
B --> B4["0.6 Boundary: fiscal-rule-capped (GPFG)"]
B --> B5["0.7 Rule-based stabilization (KIA, GIC⚠)"]
B --> B6["0.9 Pure automatic (Chile ESSF)"]
A --> C{Axis 2 — Liquidity}
C --> C2["0.3 Private-majority (30-50%, PIF⚠)"]
C --> C3["0.5 Mid-liquid (50-65%, Mubadala, QIA)"]
C --> C4["0.7 Majority public (65-85%, ADIA)"]
C --> C5["0.9 Predominantly liquid (85-95%, KIA, GIC)"]
C --> C6["1.0 Fully liquid (GPFG)"]
A --> D{Axis 3 — Transparency}
D --> D2["0.3 Partial disclosure (LM 2-4, PIF)"]
D --> D3["0.5 Asset-class disclosed (LM 5-6, ADIA, QIA⚠, KIA⚠)"]
D --> D4["0.7 Audited AUM+returns (LM 7-8, GIC, Mubadala⚠)"]
D --> D5["0.9 Holdings-level (LM 9-10, Temasek)"]
D --> D6["1.0 Full holdings daily (GPFG)"]
B5 -.->|"⚠ GIC rated 0.6 in alignment"| WARN1["Contradiction: precedent vs manifest"]
D4 -.->|"⚠ note says 0.9; alignment says 0.7"| WARN2["Contradiction: tier note vs alignment"]
E1["access"] --> F["access × liquidity × transparency"]
E2["liquidity"] --> F
E3["transparency"] --> F
F --> G["effectiveMonths = rawSwfMonths × haircut"]
G --> H["score = 100 × (1 − exp(−effectiveMonths / 12))"]
Reviews (2): Last reviewed commit: "docs(resilience): PR 4a — SWF classifica..." | Re-trigger Greptile |
|
|
||
| ### Edge case — LM score vs disclosure depth | ||
|
|
||
| The LM index measures 10 governance signals (publication of |
There was a problem hiding this comment.
ADIA liquidity midpoint contradicts stated tier
The rubric intro for Axis 2 says tier assignment uses "a published range midpoint (ADIA 55-70% → 0.7 tier)", but the midpoint of 55–70% is 62.5%, which falls in the Mid-liquid mix (0.5) tier band (50–65%), not the Majority public (0.7) tier band (65–85%). Either the stated methodology should be "upper-bound of the range" (70% does clear 65%) or the ADIA row belongs at the 0.5 tier with a boundary note. As written, the rule and the assignment are internally inconsistent, which will confuse PR 4b reviewers evaluating future boundary calls.
| Combined with unchanged liquidity 0.5: haircut multiplier | ||
| 0.12 → 0.175. UAE gains material SWF-months. | ||
| - PIF access 0.4 → 0.5: modest lift. PIF liquidity 0.4 → 0.3: | ||
| modest dampening. Net: small. |
There was a problem hiding this comment.
Flag count header says 6 but the list enumerates 8
The section header reads "(6 of 24 coefficients)" yet the bullet list immediately below it contains eight distinct flags: Mubadala (access + transparency), PIF (access + liquidity), KIA (transparency), QIA (access + transparency), and GIC (access). The PR description intro also says "Six ratings flagged" while the findings table has eight rows. This discrepancy will mislead PR 4b authors who rely on the rubric as the authoritative count of pending revisions.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
Converted to draft — out of plan order. Per the plan's Gantt ( Holding as draft until #PR3A merges. The rubric content stands; the ordering is wrong. Will mark ready after PR 3A cohort snapshots ship. |
| | Nil access | **0.1** | Sanctions, asset freeze, or political paralysis makes deployment effectively impossible within a crisis window | Russia NWF (post-2022 asset freeze), Libya LIA (sanctions + frozen assets), Iran NDFI (sanctions + access concerns). Currently deferred from v1 for this reason. | | ||
| | Intergenerational savings | **0.3** | Pure long-horizon wealth-preservation mandate; no explicit stabilization rule; withdrawal requires ruler / head-of-state / parliamentary discretion with no codified trigger | ADIA (Abu Dhabi, intergenerational mandate, ruler-discretionary); Brunei BIA (deferred candidate) | | ||
| | Hybrid / constrained | **0.5** | Mandate mixes strategic + savings + partial stabilization; deployment is mechanically possible but constrained by strategic allocation locked to policy objectives (Vision 2030, industrial policy, geopolitical holdings) | PIF (Saudi Arabia, Vision 2030-locked), QIA (Qatar, long-horizon wealth-management with amiri-decree deployment), Mubadala (UAE, strategic + financial hybrid), Ireland ISIF (strategic-development mandate) | | ||
| | Explicit stabilization with rule | **0.7** | Legislated or rule-based mechanism for fiscal support during specific shock classes, with historical precedent of actual deployment | KIA General Reserve Fund (legislated finance of budget shortfalls from oil-revenue swings); GIC via Singapore's NIRC framework (explicit formula contributing fund returns to the budget); NO GPFG is BORDERLINE — has a fiscal rule capping withdrawal at ~3% expected real return, which is an access MECHANISM but also an access CONSTRAINT (see below) | |
There was a problem hiding this comment.
GIC listed as a 0.7-tier canonical precedent yet rated "arguably 0.7" in alignment
The Axis 1 tier table lists GIC as a concrete precedent for the 0.7 ("Explicit stabilization with rule") tier. But the alignment table (line 191) rates GIC access at 0.6 and hedges: "NIRC framework is explicit fiscal-contribution — arguably 0.7 tier." A fund cannot simultaneously be the rubric's named example of a tier and be ambiguously placed at a lower value — the two statements are mutually contradictory. PR 4b authors who read the tier-definition table will conclude GIC is definitively 0.7; those who read the alignment table first will conclude 0.6 is defensible.
Either remove GIC from the 0.7-tier precedents and keep it as a boundary-case example in the edge-case prose, or strengthen the alignment-table flag from "arguably 0.7" to "clearly misaligned — manifests 0.6, rubric places GIC at 0.7."
…s + flag-count Addresses P1 + 2 P2 Greptile findings on #3376 (draft). 1. **P1 — GIC tier contradiction.** GIC was listed as a canonical 0.7 ("Explicit stabilization with rule") precedent AND rated 0.6 in the alignment table with an "arguably 0.7" note. That inconsistency makes the rubric unusable as-is for PR 4b review. Removed GIC from the 0.7 precedent list and explicitly marked it as a 0.7 *candidate* (pending PR 4b evaluation), not a 0.7 *precedent*. KIA General Reserve Fund stays as the canonical 0.7 example; Norway GPFG remains the borderline case for fiscal-rule caps. 2. **P2 — ADIA liquidity midpoint inconsistency.** Methodology text said the rubric uses "midpoint" for ranged disclosures and cited ADIA 55-70% → 0.7 tier. But midpoint(55-70) = 62.5%, which sits in the 0.5 tier band (50-65%). Fixed the methodology to state the rubric uses the **upper-bound** of a disclosed range (fund's own statement of maximum public-market allocation), which keeps ADIA at 0.7 tier (70% upper bound fits 65-85% band). Added forward- compatibility note: if future ADIA disclosures tighten the range so the upper bound drops below 65%, the rubric directs the rating to 0.5. 3. **P2 — Flag-count header.** "(6 of 24 coefficients)" was wrong; the enumeration below lists 8 coefficients across 5 funds. Corrected to "8 coefficients across 5 funds" with the fund-by-fund count inline so the header math is self-verifying. Verified - `npm run lint:md` — clean - `npm run typecheck` — green (pure docs PR, no behaviour change) This PR remains in draft pending #3380 (PR 3A — net-imports denominator) merge per the plan's PR 4 → after PR 3A sequencing.
Summary
PR 4a of the cohort-audit plan (
docs/plans/2026-04-24-002-fix-resilience-cohort-ranking-structural-audit-plan.md§PR 4). Splits the plan's PR 4 (full-manifest re-rate) into:scripts/shared/swf-classification-manifest.yaml. Behaviour-changing; belongs in a separate PR with cohort snapshots and methodology review.The split addresses the plan's anti-pattern note (rank-targeted acceptance criteria): PR 4a makes every current manifest value evaluable against an explicit benchmark; PR 4b applies the benchmark as a separate decision.
Cut from
origin/main— not stacked. Pure docs; doesn't depend on any other in-flight PR.What shipped
docs/methodology/swf-classification-rubric.md— new doc:Findings (informational — no PR changes)
Six ratings flagged as potentially off-tier under the rubric:
Not flagged (rubric-aligned): GPFG (all 3 axes), ADIA (all 3), Temasek (all 3).
Per the plan's anti-pattern note: the flags are INFORMATIONAL. A future manifest-edit PR (PR 4b) should revise only when the rubric + cited evidence support the change, not to hit a target ranking.
Testing
npm run test:data— 6694 pass / 0 fail (unchanged — pure docs PR fromorigin/mainbase)npm run typecheck/typecheck:api— greennpm run lint:md— cleanWhat this PR explicitly does NOT do
Post-Deploy Monitoring & Validation
No additional operational monitoring required: pure docs + no behaviour change, no endpoints/crons/flags/Redis writes touched.Follow-up (PR 4b, deferred)
A separate manifest-edit PR applies the rubric to revise the 6 flagged coefficients, cites the evidence, publishes cohort-sanity audit snapshots before/after, and updates the rationale blocks in the YAML.
Related
docs/plans/2026-04-24-002-fix-resilience-cohort-ranking-structural-audit-plan.md§PR 4🤖 Generated with Claude Opus 4.7 (1M context) via Claude Code + Compound Engineering v2.49.0
Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]