From 2457a80cc22112f613538aec332e4a3f835e7a06 Mon Sep 17 00:00:00 2001 From: Michael Heller <21163552+mdheller@users.noreply.github.com> Date: Thu, 2 Jul 2026 11:31:59 -0400 Subject: [PATCH] =?UTF-8?q?docs(strategy):=20UNAPPROVED=20draft=20strategy?= =?UTF-8?q?=20briefs=20=E2=80=94=20sovereign=20correctness=20thesis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DRAFT / not endorsed. Working analysis from a 2026-07-02 session: - strategy memo (thesis + live-market retest + seven-ideals scorecard) - design-partner matrix (recommends Finance-Gulf lighthouse) - Gulf-Finance lighthouse brief (bound to economic-prophet/open_ep_framework) All files DRAFT-prefixed with unapproved banners; README marks the folder not-decision-authority. Shared thesis: moat = verified CORRECTNESS (confidential computing went table-stakes). --- docs/strategy/DRAFT-design-partner-matrix.md | 43 ++++++++++ .../DRAFT-gulf-finance-lighthouse-brief.md | 79 ++++++++++++++++++ ...AFT-strategy-memo-sovereign-reasoning.docx | Bin 0 -> 13595 bytes docs/strategy/README.md | 28 +++++++ 4 files changed, 150 insertions(+) create mode 100644 docs/strategy/DRAFT-design-partner-matrix.md create mode 100644 docs/strategy/DRAFT-gulf-finance-lighthouse-brief.md create mode 100644 docs/strategy/DRAFT-strategy-memo-sovereign-reasoning.docx create mode 100644 docs/strategy/README.md diff --git a/docs/strategy/DRAFT-design-partner-matrix.md b/docs/strategy/DRAFT-design-partner-matrix.md new file mode 100644 index 0000000..c08200d --- /dev/null +++ b/docs/strategy/DRAFT-design-partner-matrix.md @@ -0,0 +1,43 @@ +> ⚠️ **UNAPPROVED DRAFT — strategy brief, not endorsed.** Working analysis produced in a +> 2026-07-02 session. Scores are structured estimates, not validated facts. Do not cite or +> act on without review. See `README.md` in this folder. + +# Design-partner selection matrix — regulated vertical × localization force × our fit + +**Purpose:** pick the *one* first design partner to validate the open risk — is *correctness attestation* a felt buyer need today? +**Method:** 6 vertical×region cells where hard localization bites, scored 1–5 on 5 weighted dimensions. Scores are structured estimates; items marked ⚠ are assumptions to verify with the partner. + +## Scoring dimensions (weights sum to 100) + +| Dim | Weight | What it measures | +|---|---|---| +| Localization force | 25 | How *legally compelled* in-border processing is (hard mandate vs. transfer-permitting) | +| Correctness pain | 25 | How acutely the vertical feels "is the answer right" — our unique wedge | +| Our asset fit | 20 | Existing assets/brains we can move with *now* | +| Verified-compute differentiation | 15 | Where the dimensional/correctness gate visibly outclasses TEE-only | +| Entry speed / capital | 15 | How fast + funded the buyer is (design partner ≠ full procurement) | + +## The matrix + +| Vertical × Region | Loc. force (25) | Correctness pain (25) | Asset fit (20) | VC diff (15) | Entry/capital (15) | **Weighted** | +|---|---|---|---|---|---|---| +| **Finance — Gulf (SAMA/UAE)** | 4 | 5 | 3 ⚠ | 5 | 5 | **4.35** | +| **Finance — India (RBI)** | 5 | 5 | 4 | 5 | 2 | **4.35** | +| **Health — Indonesia** | 5 | 5 | 3 | 4 | 2 | **4.00** | +| **Finance — Brazil (open finance)** | 3 | 5 | 3 | 5 | 3 | **3.80** | +| **Health — EU (EHDS)** | 4 | 5 | 3 | 4 | 2 | **3.75** | +| **Gov/Sovereign — EU** | 5 | 3 | 2 | 3 | 2 | **3.15** | + +## Recommendation: Finance — Gulf (Saudi SAMA / UAE) + +Finance-Gulf and Finance-India tie at the top on the axes that make the *thesis* true (localization + correctness + differentiation). The tiebreak is **Entry/capital (5 vs 2)** — and for a *design partner* (not a TAM play) that is the dimension that matters most: you want a fast, funded, motivated first reference, not the biggest market. + +- **Why Gulf wins the tiebreak:** sovereign buyers are capital-rich, move fast, and have an explicit AI-sovereignty appetite right now (Confidential Computing Summit 2026 is themed *"AI Sovereignty"*). They will co-fund a lighthouse. +- **Why finance, not health:** finance's correctness pain is *numeric* — valuation, risk, regulatory reporting — which is exactly where the dimensional/sympy correctness gate visibly beats TEE-only confidentiality. Health's pain is real but the medicine brain isn't launched, and health procurement is slower. +- **Our asset:** `economic-prophet` (the canonical economic engine) + the Sloan/econ finance brain are the strongest existing fit — bind, don't reinvent. + +**#2 / scale-up target:** Finance-India (same top score, larger TAM, but slower and price-sensitive — pursue after the Gulf lighthouse proves the "correctness" wedge). + +## Honest caveats (verify with partner, don't research further) +- ⚠ Gulf asset-fit scored 3 on an assumption of *no existing regional presence*. If there's a channel/relationship, this jumps to 4 and the recommendation strengthens. +- The whole exercise rests on the still-open risk: that "correctness attestation" is felt *today*. The Gulf lighthouse *is* the test of that risk — a passing correctness gate on a regulatory-reporting or risk-valuation workload is the falsifiable proof. diff --git a/docs/strategy/DRAFT-gulf-finance-lighthouse-brief.md b/docs/strategy/DRAFT-gulf-finance-lighthouse-brief.md new file mode 100644 index 0000000..a9179d5 --- /dev/null +++ b/docs/strategy/DRAFT-gulf-finance-lighthouse-brief.md @@ -0,0 +1,79 @@ +> ⚠️ **UNAPPROVED DRAFT — strategy brief, not endorsed.** Working analysis produced in a +> 2026-07-02 session. Assumes an unconfirmed Gulf channel; success metrics are proposed, not +> agreed. Do not cite or act on without review. See `README.md` in this folder. + +# Gulf-Finance lighthouse brief + +**Design partner:** a SAMA (Saudi) or UAE-central-bank–regulated bank +**The bet being tested:** that *correctness attestation* — proving a computation is **right**, not just that it ran privately — is a felt buyer need **today**, not ahead of the market. +**Binds to:** `economic-prophet` / `open_ep_framework` (do not reinvent). **Runs in-region.** **Emits evidence on the reasoning spine.** + +--- + +## 1. Why this cell (recap) + +Finance-Gulf tied Finance-India at the top of the design-partner matrix (4.35) on the thesis-making axes — localization force, correctness pain, verified-compute differentiation — and won the tiebreak on **entry speed + capital**: sovereign Gulf buyers are funded, fast, and have an explicit AI-sovereignty appetite right now. Finance (not health) because its correctness pain is **numeric** — the home turf of the dimensional/sympy gate — and because `open_ep_framework` is our strongest existing asset fit. + +## 2. The workload (bound to real modules) + +A bank's **regulatory profitability + capital computation** — the numbers it must defend to the regulator — run end to end on the existing engine: + +| Regulatory obligation | `open_ep_framework` module | What is computed | +|---|---|---| +| IFRS 9 Expected Credit Loss | `expected_loss.py` | ECL = PD × LGD × EAD, staged | +| Basel III capital charge | `capital.py` | RWA-driven capital requirement | +| Funds Transfer Pricing | `ftp.py` | risk-adjusted funding cost | +| Economic profit / RAROC | `product_objects.py`, `attribution.py` | EP after capital charge; return on risk-adjusted capital | +| Zero-EP / breakeven pricing | `breakeven.py` | the price that makes EP = 0 | +| Recovery surface | `recovery.py` | LGD recovery modeling | +| Audit trail | `audit.py`, `validation.py` | the existing evidence surface we extend | + +These are exactly the figures a Gulf bank must **prove** to SAMA / the UAE central bank, **in-country**, on a recurring reporting cycle. The pain is not hypothetical — it is a standing regulatory obligation with penalties. + +## 3. What the correctness gate proves that TEE cannot + +This is the whole wedge. A confidential-computing (TEE) competitor can prove the ECL job *ran privately on unmodified code inside a sealed enclave*. It proves **nothing about whether the ECL number is right**. Our dimensional/sympy correctness gate proves the computation is **valid**: + +- **Dimensional consistency** — PD is dimensionless [0,1]; LGD is dimensionless [0,1]; EAD and ECL are currency; the product's units must reconcile to currency. A unit error (e.g. a bps/decimal confusion in LGD) is caught and blocked, not silently reported to the regulator. +- **Identity/invariant checks** — capital ratios in range, EP = revenue − cost − capital-charge reconciles, breakeven solve satisfies EP = 0 on replay. +- **Replayable proof** — the gate emits a receipt that lets the regulator (or internal audit) *re-derive* the number, not just trust that it ran. + +> **The sentence no hyperscaler can say:** "This ECL/capital figure was computed **where your data is governed**, and here is a **replayable proof that the number is correct** — not merely a proof that it ran privately." + +## 4. Sovereignty posture + +- Executes at **`locus = trusted_private`** (in-region, in-bank) — reuses the `SyncCycleReceipt.locus` vocabulary already in sourceos-spec. +- No cross-border transfer of customer/exposure data → satisfies the sector-specific localization that actually binds in the Gulf (SAMA/UAE central bank), independent of the softer transfer-permitting privacy regime. +- The local model does the reasoning; the correctness gate + canon do the proving. Confidential computing (TEE) is used as the **confidentiality channel**, not the differentiator. + +## 5. Evidence emitted + +Extend the engine's existing `audit.py` output onto the reasoning-evidence spine: +- a `ReasoningRun` per computation cycle (status → `completed`/`blocked`), +- a **correctness receipt** (the gate result) referenced from each reported figure, +- bound to the existing `policy_simulation_uvmc_audit.json`-style audit artifact. +This makes the regulatory pack **replayable**, not just signed. + +## 6. Falsifiable success metric (this IS the risk test) + +The lighthouse succeeds iff **the bank's risk/finance team treats the correctness receipt as decision-relevant** — i.e. one of: +1. they run a real reporting-cycle ECL or capital figure through the gate and it **catches a defect** they would otherwise have filed, OR +2. they state the replayable proof **reduces their regulatory-review / audit burden** (a signed statement, not a vibe). + +If neither happens, the honest read is that correctness is ahead of the market (the Musketeer risk) — and we learn that from *one* partner in weeks, not from more desk research. + +## 7. Thin PoC scope (what to actually build) + +Deliberately small — this tests demand, not capability: +1. Wire the **dimensional/sympy gate** around `expected_loss.py` + `capital.py` (two engines, not all seven). +2. Emit the **correctness receipt** + `ReasoningRun` from `audit.py`. +3. Run one **synthetic-but-realistic** SAMA/IFRS-9 portfolio in-region; demonstrate a caught unit/identity defect on a seeded-error variant. +4. One-page **regulator-facing replay demo**: "here is the number, here is the proof, re-derive it." + +Everything else in `open_ep_framework` (FTP, recovery, attribution, UVMC) is out of PoC scope — pull in only after the wedge is validated. + +## 8. Honest risks / caveats +- ⚠ **Assumed no existing Gulf channel.** If there is a relationship, PoC-to-signature compresses sharply. Confirm first. +- The gate's value depends on the bank's figures having **derivable structure** to check (ECL/capital do; some downstream adjustments are judgmental overlays the gate can't validate — scope to the mechanical core). +- Sovereign procurement can still be slow even when appetite is high; a **design-partner PoC** (not a sale) is the right first vehicle to stay fast. +- Regulator acceptance of a "replayable proof" as audit-reducing is itself unproven — success metric #2 is the softer of the two; prioritize #1 (catch a real defect). diff --git a/docs/strategy/DRAFT-strategy-memo-sovereign-reasoning.docx b/docs/strategy/DRAFT-strategy-memo-sovereign-reasoning.docx new file mode 100644 index 0000000000000000000000000000000000000000..d6d6bcc26c772408cbbe6ebb0531bb0e187455de GIT binary patch literal 13595 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