* feat(resilience): SWF manifest expansion + KIA split + new schema fields Phase 1 of plan 2026-04-25-001 (Codex-approved round 5). Manifest-only data correction; no construct change, no cache prefix bump. Schema additions (loader-validated, misplacement-rejected): - top-level: aum_usd, aum_year, aum_verified (primary-source AUM) - under classification: aum_pct_of_audited (fraction multiplier), excluded_overlaps_with_reserves (boolean; documentation-only) Manifest expansion (13 → 21 funds, 6 → 13 countries): - UAE: +ICD ($320B verified), +ADQ ($199B verified), +EIA (unverified — loaded for documentation, excluded from scoring per data-integrity rule) - KW: kia split into kia-grf (5%, access=0.9) + kia-fgf (95%, access=0.20). Corrects ~18× over-statement of crisis-deployable Kuwait sovereign wealth (audit found combined-AUM × 0.7 access applied $750B as "deployable" against ~$15B actual GRF stabilization capacity). - CN: +CIC ($1.35T), +NSSF ($400B, statutorily-gated 0.20 tier), +SAFE-IC ($417B, excluded — overlaps SAFE FX reserves) - HK: +HKMA-EF ($498B, excluded — overlaps HKMA reserves) - KR: +KIC ($182B, IFSWF full member) - AU: +Future Fund ($192B, pension-locked) - OM: +OIA ($50B, IFSWF member) - BH: +Mumtalakat ($19B) - TL: +Petroleum Fund ($22B, GPFG-style high-transparency) Re-audits (Phase 1E): - ADIA access 0.3 → 0.4 (rubric flagged; ruler-discretionary deployment empirically demonstrated) - Mubadala access 0.4 → 0.5 (rubric flagged); transparency 0.6 → 0.7 (LM=10 + IFSWF full member alignment) Rubric (docs/methodology/swf-classification-rubric.md): - New "Statutorily-gated long-horizon" 0.20 access tier added between 0.1 (sanctions/frozen) and 0.3 (intergenerational/ruler-discretionary). Anchored by KIA-FGF (Decree 106 of 1976; Council-of-Ministers + Emir decree gate; crossed once in extremis during COVID). Seeder: - Two new pure helpers: shouldSkipFundForBuffer (excluded/unverified decision) and applyAumPctOfAudited (sleeve fraction multiplier) - Manifest-AUM bypass: if aum_verified=true AND aum_usd present, use that value directly (skip Wikipedia) - Skip funds with excluded_overlaps_with_reserves=true (no double-counting against reserveAdequacy / liquidReserveAdequacy) - Skip funds with aum_verified=false (load for documentation only) Tests (+25 net): - 15 schema-extension tests (misplacement rejection, value-range gates, rationale-pairing coherence, backward-compat with pre-PR entries) - 10 helper tests (shouldSkipFundForBuffer + applyAumPctOfAudited predicates and arithmetic; KIA-GRF + KIA-FGF sum equals combined AUM) - Existing manifest test updated for the kia → kia-grf+kia-fgf split Full suite: 6,940 tests pass (+50 net), typecheck clean, no new lint. Predicted ranking deltas (informational, NOT acceptance criteria per plan §"Hard non-goals"): - AE sovFiscBuf likely 39 → 47-49 (Phase 1A + 1E) - KW sovFiscBuf likely 98 → 53-57 (Phase 1B) - CN, HK (excluded), KR, AU acquire newly-defined sovFiscBuf scores - GCC ordering shifts toward QA > KW > AE; AE-KW gap likely 6 → ~3-4 Real outcome will be measured post-deploy via cohort audit per plan §Phase 4. * fix(resilience): completeness denominator excludes documentation-only funds PR-3391 review (P1 catch): the per-country `expectedFunds` denominator counted ALL manifest entries (`funds.length`) including those skipped from buffer scoring by design — `excluded_overlaps_with_reserves: true` (SAFE-IC, HKMA-EF) and `aum_verified: false` (EIA). Result: countries with mixed scorable + non-scorable rosters showed `completeness < 1.0` even when every scorable fund matched. UAE (4 scorable + EIA) would show 0.8; CN (CIC + NSSF + SAFE-IC excluded) would show 0.67. The downstream scorer then derated those countries' coverage based on a fake-partial signal. Three call sites all carried the same bug: - per-country `expectedFunds` in fetchSovereignWealth main loop - `expectedFundsTotal` + `expectedCountries` in buildCoverageSummary - `countManifestFundsForCountry` (missing-country path) All three now filter via `shouldSkipFundForBuffer` to count only scorable manifest entries. Documentation-only funds neither expected nor matched — they don't appear in the ratio at all. Tests added (+4): - AE complete with all 4 scorable matched (EIA documented but excluded) - CN complete with CIC + NSSF matched (SAFE-IC documented but excluded) - Missing-country path returns scorable count not raw manifest count - Country with ONLY documentation-only entries excluded from expectedCountries Full suite: 6,944 tests pass (+4 net), typecheck clean. * fix(resilience): address Greptile P2s on PR #3391 manifest Three review findings, all in the manifest YAML: 1. **KIA-GRF access 0.9 → 0.7** (rubric alignment): GRF deployment requires active Council-of-Ministers authorization (2020 COVID precedent demonstrates this), not rule-triggered automatic deployment. The rubric's 0.9 tier ("Pure automatic stabilization") reserved for funds where political authorization is post-hoc / symbolic (Chile ESSF candidate). KIA-GRF correctly fits 0.7 ("Explicit stabilization with rule") — the same tier the pre-split combined-KIA was assigned. Updated rationale clarifies the tier choice. Rubric's 0.7 precedent column already lists "KIA General Reserve Fund" — now consistent with the manifest. 2. **Duplicate `# ── Australia ──` header before Oman** (copy-paste artifact): removed the orphaned header at the Oman section; added proper `# ── Australia ──` header above the Future Fund entry where it actually belongs (after Timor-Leste). 3. **NSSF `aum_pct_of_audited: 1.0` removed** (no-op): a multiplier of 1.0 is identity. The schema field is OPTIONAL and only meant for fund-of-funds split entries (e.g. KIA-GRF/FGF). Setting it to 1.0 forced the loader to require an `aum_pct_of_audited` rationale paragraph with no computational benefit. Both the field and the paragraph are now removed; NSSF remains a single- sleeve entry that scores its full audited AUM. Full suite: 6,944 tests pass, typecheck clean.
18 KiB
SWF classification rubric (haircut factors for sovereignFiscalBuffer)
Central rubric for classifying sovereign wealth funds under the
resilience sovereignFiscalBuffer dimension. Supports
scripts/shared/swf-classification-manifest.yaml.
Every fund in the manifest has three coefficients in its
classification: block:
classification:
access: 0..1
liquidity: 0..1
transparency: 0..1
These multiply together to form the haircut the scorer applies when computing effective SWF months of reserve coverage:
effectiveMonths = rawSwfMonths × access × liquidity × transparency
score = 100 × (1 − exp(−effectiveMonths / 12))
This doc defines what each coefficient value means with named tiers + concrete precedents, so:
- Every rating in the manifest is defensible by pointing to a tier + precedent.
- Future manifest PRs that add or revise ratings have an explicit benchmark to evaluate against.
- A reviewer can audit the manifest without re-deriving the rubric from first principles each time.
Scope boundary. This is a methodology doc, not a ground-truth table. The coefficient values live in the manifest YAML; the rubric here explains the semantic tiers those values live on. Revising a fund's rating is a manifest-YAML edit cited against a tier here, not a rubric edit.
Axis 1 — Access
"How directly can the state deploy fund assets into budget support during a fiscal shock?"
Operationalized as a combination of legal mechanism (is there a withdrawal rule?), political clarity (who authorizes deployment?), and historical precedent (has deployment actually happened?). Deployment SPEED (weeks vs months vs years) is the core signal.
| Tier | Value | Meaning | Concrete precedents |
|---|---|---|---|
| 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. |
| Statutorily-gated long-horizon | 0.20 | Withdrawals require statutory supermajority / bicameral-equivalent action; gate has been crossed in extreme cases (single, capped draw under emergency law) but NOT for ordinary stabilization. Distinct from "Intergenerational savings" (0.3) because the gate is statutory rather than ruler-discretionary — Council-of-Ministers + parliamentary or constitutional thresholds replace head-of-state direction. | KIA Future Generations Fund (Decree 106 of 1976; Council-of-Ministers + Emir decree required; gate crossed once during COVID for a small capped draw). Phase 1B addition (Plan 2026-04-25-001). |
| 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). 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). NOTE: GIC is discussed in the alignment table below as a candidate for this tier based on its NIRC framework, but the current manifest rates it 0.6 — so it's a 0.7 candidate, not a 0.7 precedent. |
| Pure automatic stabilization | 0.9 | Deployment triggers automatically when a named macro signal crosses a threshold; stabilization is the primary mandate; political authorization is post-hoc or symbolic | Chile ESSF (deploys when copper revenue falls below a rule-based target); deferred v1 candidate |
Edge case — fiscal-rule caps
A fiscal rule like Norway's ~3%-of-expected-real-return withdrawal cap creates an ambiguous access signal:
- Positive direction: the rule makes access PREDICTABLE and mechanically available for budget support every year, without political negotiation.
- Negative direction: the rule CAPS how much can be tapped, so in a severe shock the fund cannot be liquidated beyond the rule. The mechanism protects the savings against panic but rate-limits the stabilization function.
Rubric treatment: fiscal-rule-capped funds sit at the 0.5-0.7 boundary. Norway's GPFG at 0.6 (current manifest value) is defensible as "between hybrid-constrained and rule-based stabilization."
Edge case — state holding companies
Temasek-style state-holding-company assets can be deployed for fiscal support only via DIVIDEND FLOW, not via primary-asset liquidation (which would disrupt portfolio companies). This mechanism is slow (dividends are typically annual) and bounded (can't exceed portfolio earnings in a shock year). Rubric treatment: 0.3-0.4 tier, NOT the 0.5 hybrid tier — the mechanical deployment path is materially slower than QIA's amiri-decree route.
Axis 2 — Liquidity
"What share of the fund's AUM is in listed public markets and thus liquidatable within days/weeks without fire-sale discount?"
Operationalized as (public equities + listed fixed income + cash) ÷ total AUM, per the fund's most recent published asset mix. When the disclosure is a range (ADIA publishes 55-70%, not an exact ratio), the rubric uses the upper-bound of the range — the fund's own public statement is that it COULD be up to that figure, and haircut factors are designed to reward disclosed LIQUIDITY CAPACITY, not the conservative worst case. ADIA's 70% upper bound lands in the 0.7 tier (65-85%); if future ADIA disclosures tighten the range so the upper bound drops below 65%, the rubric directs the rating to 0.5.
| Tier | Value | Meaning | Concrete precedents |
|---|---|---|---|
| Illiquid-strategic dominant | 0.1 | Primarily domestic strategic holdings + policy banks + political stakes; < 30% public-market. No v1 fund sits here; reserved for future outliers | — (aspirational floor) |
| Private + illiquid majority | 0.3 | 30-50% public-market; majority in private equity, real estate, infrastructure, or strategic holdings | PIF (estimated ~40% public, dominated by Aramco + domestic megaprojects). Current manifest values PIF liquidity = 0.4 — AT BOUNDARY, defensible under either 0.3 or 0.5 tier |
| Mid-liquid mix | 0.5 | 50-65% public-market with material private sleeve | Mubadala (~50/50 per 2024 annual report); Temasek (~50% listed, ~50% unlisted per Temasek Review 2025); QIA (~60% public) — note current manifest QIA = 0.6, at the boundary of 0.5 and 0.7 tiers |
| Majority public | 0.7 | 65-85% public-market with modest private allocation | ADIA (55-70% public-market range per 2024 review, balance in alternatives + real assets) |
| Predominantly liquid | 0.9 | 85-95% public-market with modest cash + short-duration sleeves | KIA (~75-85% listed equities + fixed income — boundary 0.7/0.9, current manifest = 0.8); GIC (~90% public per 2024/25 annual report) |
| Fully liquid | 1.0 | 100% listed public markets — equities + fixed income + listed real estate. No private at all | GPFG (NBIM 2025 — 100% listed, no private markets) |
Edge case — listed real estate
GPFG's listed real estate counts toward its liquidity score; PIF's direct real estate holdings do NOT. The distinction matters for boundary calls (0.7 vs 0.9): listed = liquidatable daily; directly-owned = months to sell at disclosed valuations.
Axis 3 — Transparency
"How well-documented is the fund's governance + financials?"
Operationalized as the Linaburg-Maduell (LM) Transparency Index score, normalized against IFSWF membership status and the granularity of the fund's annual reporting.
The LM index is a 10-point scale (1 = lowest, 10 = highest). IFSWF membership is binary (member / observer / non-member). Annual-report granularity gates tier promotion independently of LM/IFSWF.
| Tier | Value | Meaning | LM benchmark | Concrete precedents |
|---|---|---|---|---|
| Opaque | 0.1 | No public AUM, no governance reporting, no LM score | LM ≤ 1 | Deferred candidates: BIA (Brunei) if LM pins at the floor post-audit |
| Partial disclosure | 0.3 | Governance structure published but AUM undisclosed; no asset-mix disclosure; LM 2-4 | LM 2-4 | PIF (audited financials but line-item allocation limited; IFSWF observer not full member; LM ~4 per current manifest) |
| Asset-class disclosed | 0.5 | Audited AUM or published ranges, asset-class-level mix, partial IFSWF engagement | LM 5-6 | ADIA (annual review with asset-class ranges, partial IFSWF engagement, LM=6). QIA (limited public disclosure, IFSWF full member with audited filings, LM=5) — QIA currently manifest=0.4 may be marginally under-rated. KIA (LM=6, partial IFSWF engagement) currently manifest=0.4 — arguably under-rated |
| Audited AUM + returns | 0.7 | Audited AUM, asset-mix breakdown, benchmark-relative returns disclosed, IFSWF full member | LM 7-8 | GIC (asset-class breakdown + 20-year rolling returns, IFSWF full member, LM=8). Mubadala (audited AUM + asset-mix, IFSWF member, LM=10) — Mubadala LM=10 argues for 0.9 tier; current manifest=0.6 may be under-rated |
| Holdings-level | 0.9 | Full asset-class + top-holdings disclosure; regular updates; IFSWF full compliance | LM 9-10 | Temasek (audited NPV + benchmarked returns + top-20 holdings + LM=10, current manifest=0.9 ✓) |
| Full holdings-level daily | 1.0 | Daily returns disclosed, holdings-level reporting, full IFSWF compliance | LM=10 | GPFG (NBIM full audited AUM, daily returns, holdings-level reporting, LM=10, IFSWF full compliance) |
Edge case — LM score vs disclosure depth
The LM index measures 10 governance signals (publication of financials, independent audit, public objectives, etc.). A fund can score LM=10 under the index while still publishing only RANGED asset-mix rather than exact holdings (Mubadala, Temasek). The rubric distinguishes these cases: LM=10 + holdings-level disclosure → 0.9-1.0 tier; LM=10 + asset-class-only disclosure → 0.7-0.8 tier. Mubadala's current manifest 0.6 under-rates the LM=10 signal against the rubric.
Edge case — sealed filings
KIA files detailed financials to the Kuwaiti National Assembly but the filings are SEALED from public disclosure. Under the rubric this sits at the 0.5 tier (asset-class disclosed + IFSWF engagement) rather than the 0.3 tier (no AUM), because the AUM is audited and disclosed to the oversight body — just not publicly. Current manifest = 0.4 is at the 0.3/0.5 boundary.
Current manifest × rubric alignment (informational, not PR-changes)
Reviewing each of the 8 current manifest values against the rubric tiers. This PR does NOT edit the manifest. The column "Rubric tier" shows where the rating falls under this rubric; "Manifest value" is the current YAML value; "Aligned?" flags whether the rating fits the rubric or looks off.
| Fund | Axis | Manifest value | Rubric tier | Aligned? | Notes |
|---|---|---|---|---|---|
| GPFG (NO) | access | 0.6 | Rule-constrained stabilization (between 0.5 and 0.7) | ✓ | Fiscal rule caps withdrawal — justifies boundary rating |
| GPFG (NO) | liquidity | 1.0 | Fully liquid | ✓ | NBIM 2025 confirms 100% listed |
| GPFG (NO) | transparency | 1.0 | Full holdings-level daily | ✓ | LM=10 + full IFSWF compliance |
| ADIA (AE) | access | 0.3 | Intergenerational savings | ✓ | No explicit stabilization mandate; ruler-discretionary |
| ADIA (AE) | liquidity | 0.7 | Majority public | ✓ | 55-70% public-market per 2024 review |
| ADIA (AE) | transparency | 0.5 | Asset-class disclosed | ✓ | LM=6; IFSWF partial engagement |
| Mubadala (AE) | access | 0.4 | Hybrid/constrained — below 0.5 tier | ⚠ | Current 0.4 is slightly under the 0.5 tier midpoint; 2024 ADQ merger arguably strengthens case for 0.5 |
| Mubadala (AE) | liquidity | 0.5 | Mid-liquid mix | ✓ | ~50/50 per 2024 report |
| Mubadala (AE) | transparency | 0.6 | Between 0.5 and 0.7 | ⚠ | LM=10 + IFSWF member argues for 0.7 (audited AUM + mix + returns); currently under-rated |
| PIF (SA) | access | 0.4 | Hybrid/constrained — below 0.5 tier | ⚠ | 0.5 tier fits the hybrid-mandate description; 0.4 is conservative. Arguable either way |
| PIF (SA) | liquidity | 0.4 | At 0.3/0.5 boundary | ⚠ | ~40% public-market sits at the top of 0.3 tier rather than middle of 0.5; 0.3 may be more honest |
| PIF (SA) | transparency | 0.3 | Partial disclosure | ✓ | LM ~4 + IFSWF observer-only |
| KIA (KW) | access | 0.7 | Explicit stabilization with rule | ✓ | General Reserve Fund's legislated budget-financing mandate is the canonical 0.7 example |
| KIA (KW) | liquidity | 0.8 | Between 0.7 and 0.9 | ✓ | 75-85% listed; defensible boundary rating |
| KIA (KW) | transparency | 0.4 | At 0.3/0.5 boundary | ⚠ | LM=6 + IFSWF partial-engagement argues for 0.5; current 0.4 is at the boundary; 0.5 may be slightly more accurate |
| QIA (QA) | access | 0.4 | Hybrid/constrained — below 0.5 tier | ⚠ | Long-horizon wealth management with amiri-decree deployment. 0.5 fits the hybrid tier; 0.4 is conservative |
| QIA (QA) | liquidity | 0.6 | Between 0.5 and 0.7 | ✓ | ~60% public-market sits at the tier boundary |
| QIA (QA) | transparency | 0.4 | At 0.3/0.5 boundary | ⚠ | LM=5 + IFSWF full member with audited filings argues for 0.5; current 0.4 is at the boundary |
| GIC (SG) | access | 0.6 | Rule-mechanism with NIRC | ⚠ | NIRC framework is explicit fiscal-contribution — arguably 0.7 tier (rule-based stabilization with historical precedent); current 0.6 is conservative |
| GIC (SG) | liquidity | 0.9 | Predominantly liquid | ✓ | ~90% public per 2024/25 report |
| GIC (SG) | transparency | 0.8 | Audited AUM + returns | ✓ | Asset-class + 20-year rolling returns; LM=8 |
| Temasek (SG) | access | 0.4 | State holding company — dividend-flow only | ✓ | Mechanical deployment is dividend-bound; 0.3-0.4 tier fits |
| Temasek (SG) | liquidity | 0.5 | Mid-liquid mix | ✓ | ~50% listed per 2025 Review |
| Temasek (SG) | transparency | 0.9 | Holdings-level | ✓ | Top-20 exposures + LM=10 |
Summary of rubric-flagged ratings — 8 coefficients across 5 funds (Mubadala ×2, PIF ×2, KIA ×1, QIA ×2, GIC ×1) out of 24 total (8 funds × 3 axes):
- Mubadala access 0.4 (arguably 0.5); transparency 0.6 (arguably 0.7)
- PIF access 0.4 (arguably 0.5); liquidity 0.4 (arguably 0.3)
- KIA transparency 0.4 (arguably 0.5)
- QIA access 0.4 (arguably 0.5); transparency 0.4 (arguably 0.5)
- GIC access 0.6 (arguably 0.7)
None of these changes are made in this PR. The flags are informational — a future manifest-edit PR (PR 4b per the plan) should evaluate each flag, cite the rubric tier, and either confirm the current rating with a stronger rationale or revise it to match the tier.
Directional impact of the flagged ratings (if revised upward)
- Mubadala 0.4 → 0.5 on access, 0.6 → 0.7 on transparency: the access × transparency product moves from 0.24 to 0.35 (+46%). 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.
- KIA transparency 0.4 → 0.5: haircut multiplier 0.7×0.8×0.4 = 0.224 → 0.7×0.8×0.5 = 0.28 (+25%). KW already top-quartile.
- QIA access 0.4 → 0.5 + transparency 0.4 → 0.5: QIA haircut 0.096 → 0.15 (+56%). Material lift for QA.
- GIC access 0.6 → 0.7: haircut 0.432 → 0.504 (+17%). SG lift.
The directional impact analysis is INFORMATIONAL and should NOT be treated as a decision to revise. Per the plan's anti-pattern note, rubric flags shouldn't be motivated by a target ranking outcome. A future manifest PR should revise ratings because the rubric + cited precedents support the change, not because the resulting ranking looks better.
How to use this rubric
When adding a new fund to the manifest
- Locate each axis value on the tier table.
- Cite the tier PLUS at least one concrete precedent (annual report page, LM index page, IFSWF profile URL).
- If the fund sits between two tiers, pick the lower tier and
explain the boundary rating in the YAML
rationale:block. - PR review checks: does the rationale's cited evidence actually land the fund at the claimed tier?
When revising an existing fund
- Cite what EVIDENCE changed: new annual report, LM score revision, IFSWF membership change, mandate amendment.
- Map the new evidence to a tier per this rubric.
- Update BOTH the coefficient AND the
rationale:text in the same PR. - For PRs that shift multiple coefficients: run the cohort-
sanity audit (see
docs/methodology/cohort-sanity-release-gate.md) and publish the contribution-decomposition table for the affected countries.
When the rubric itself needs revising
Out of scope for a manifest PR. A rubric revision requires:
- A separate methodology-decision PR citing the construct gap the revision fixes (e.g., "the current rubric doesn't handle state holding companies well — add a dedicated tier").
- Re-evaluation of every existing fund under the new rubric (the rubric and the manifest must stay in lockstep).
- Cohort-sanity audit snapshot before/after.
References
- Manifest:
scripts/shared/swf-classification-manifest.yaml - Scorer:
server/worldmonitor/resilience/v1/_dimension-scorers.tsline 1654 (scoreSovereignFiscalBuffer) - Saturating transform:
score = 100 × (1 − exp(−effectiveMonths / 12)) - Linaburg-Maduell Transparency Index methodology: https://www.swfinstitute.org/research/linaburg-maduell-transparency-index
- IFSWF member directory: https://www.ifswf.org/members
- Santiago Principles self-assessments: https://www.ifswf.org/santiago-principles
- Plan reference:
docs/plans/2026-04-24-002-fix-resilience-cohort-ranking-structural-audit-plan.md§PR 4