Peter Schafer

This site is being updated. The research model and the model portfolio are under revision, and pages showing positions and convictions are temporarily unavailable. They will return after September 30, 2026. Pages describing the method remain available.

The system

Value flows to whichever physical layer is the binding constraint. The map holds the candidate layers, including ones not yet named. Where and how hard the constraint binds is read from filings each quarter, never assumed — and when innovation routes around a constraint, the map is built to show it relaxing.

The constraint map

Rows are physical layers; columns are the five tells a filing can show. A cell is PRESENT only when found in a filing. Where more than one company has been read on a layer, the cell shows how many of them show the tell — "2 of 3" — never the union. Evidence chips: [F] filing-grade; [F-KR/PROV] a provisional Korean pattern set that a Korean-reading reviewer may overturn. Hover a cell for the names.

rung · status (as recorded)Customers pay before delivery.1 prepaymentsCustomers book future output in advance.2 capacity_reservationOrder-to-ship time is stretching.3 lead_timeCustomer pays whether or not it takes the product.4 take_or_payMargin rises on the same product.5 gm_pricing_powerASSESSED — MIXED: two expressers disagree (NVDA signature-negative, demand side; INTC signature-positive on prepayments and capacity_reservation, supply side) — the rung is not one name1 · ComputeASSESSED — MIXED: two expressers disagree(NVDA signature-negative, demand side; INTC3 of 3 PRESENT expressers: NVDA PRESENT, INTC PRESENT, CBRS PRESENT evidence tag [F] — filing-grade observed 2026-09-063 of 3 PRESENT[F]1 of 3 PRESENT expressers: NVDA ABSENT, INTC ABSENT, CBRS PRESENT evidence tag [F] — filing-grade observed 2026-09-061 of 3 PRESENT[F]2 of 3 PRESENT expressers: NVDA PRESENT, INTC PRESENT (WEAK), CBRS ABSENT evidence tag [F] — filing-grade observed 2026-09-062 of 3 PRESENT[F] · 1 weak1 of 3 PRESENT expressers: NVDA ABSENT, INTC ABSENT, CBRS PRESENT (WEAK) evidence tag [F] — filing-grade observed 2026-09-061 of 3 PRESENT[F] · 1 weak2 of 3 PRESENT expressers: NVDA ABSENT, INTC PRESENT, CBRS PRESENT (WEAK) evidence tag [F] — filing-grade observed 2026-09-062 of 3 PRESENT[F] · 1 weak3 names read: NVDA, INTC, CBRSASSESSED — MU admitted as the first non-provisional expresser (5 of 5, ruling); SK hynix and Samsung [F-KR/PROV] print as +2 prov (R-INTERSECTION-PROV).2 · Memory bandwidthASSESSED — MU admitted as the firstnon-provisional expresser (5 of 5,2 of 4 PRESENT expressers: SKHY NOT_ASSESSABLE, SSNLF NOT_ASSESSABLE, MU PRESENT, SNDK PRESENT evidence tag [F-KR/PROV] — provisional Korean pattern set; a Korean-reading reviewer may overturn observed 2026-09-062 of 4 PRESENT[F-KR/PROV]3 of 4 PRESENT expressers: SKHY ABSENT, SSNLF PRESENT (WEAK), MU PRESENT, SNDK PRESENT evidence tag [F-KR/PROV] — provisional Korean pattern set; a Korean-reading reviewer may overturn observed 2026-09-063 of 4 PRESENT[F-KR/PROV] · 1 weak3 of 4 PRESENT expressers: SKHY PRESENT (WEAK), SSNLF PRESENT (WEAK), MU PRESENT, SNDK ABSENT evidence tag [F-KR/PROV] — provisional Korean pattern set; a Korean-reading reviewer may overturn observed 2026-09-063 of 4 PRESENT[F-KR/PROV] · 2 weak2 of 4 PRESENT expressers: SKHY ABSENT, SSNLF ABSENT, MU PRESENT, SNDK PRESENT (WEAK) evidence tag [F-KR/PROV] — provisional Korean pattern set; a Korean-reading reviewer may overturn observed 2026-09-062 of 4 PRESENT[F-KR/PROV] · 1 weak4 of 4 PRESENT expressers: SKHY PRESENT, SSNLF PRESENT, MU PRESENT, SNDK PRESENT evidence tag [F-KR/PROV] — provisional Korean pattern set; a Korean-reading reviewer may overturn observed 2026-09-064 of 4 PRESENT[F-KR/PROV]4 names read: SKHY, SSNLF, MU, SNDKASSESSED — notes by name: TSEM (prepayments PRESENT-provisional, reservation held), AAOI (five ABSENT), COHR (4 of 5, ruling), LITE (1 of 5 — lead_time on the supply-allocation sentence, ruling; one read pending). Expresser count and intersection are derived on the badge, not stated here.3 · Optical interconnectASSESSED — notes by name: TSEM (prepaymentsPRESENT-provisional, reservation held), AAOI1 of 6 PRESENT expressers: TSEM ABSENT, AAOI ABSENT, COHR ABSENT, LITE ABSENT, GLW PRESENT, MRVL ABSENT evidence tag [F] — filing-grade observed 2026-09-061 of 6 PRESENT[F]2 of 6 PRESENT expressers: TSEM PRESENT, AAOI ABSENT, COHR PRESENT, LITE ABSENT, GLW ABSENT, MRVL ABSENT evidence tag [F] — filing-grade observed 2026-09-062 of 6 PRESENT[F]3 of 6 PRESENT expressers: TSEM ABSENT, AAOI ABSENT, COHR PRESENT, LITE PRESENT, GLW ABSENT, MRVL PRESENT (WEAK) evidence tag [F] — filing-grade observed 2026-09-063 of 6 PRESENT[F] · 1 weak1 of 6 PRESENT expressers: TSEM ABSENT, AAOI ABSENT, COHR PRESENT (WEAK), LITE ABSENT, GLW ABSENT, MRVL ABSENT evidence tag [F] — filing-grade observed 2026-09-061 of 6 PRESENT[F] · 1 weak1 of 6 PRESENT expressers: TSEM ABSENT, AAOI ABSENT, COHR PRESENT, LITE ABSENT, GLW ABSENT, MRVL ABSENT evidence tag [F] — filing-grade observed 2026-09-061 of 6 PRESENT[F]6 names read: TSEM, AAOI, COHR, LITE, GLW, MRVLSIGNATURE-POSITIVE — THE WORKED POSITIVE, re-read under R-GM-LANGUAGE: 3 PRESENT (prepayments, capacity_reservation, take_or_pay) / 1 ABSENT-on-language (gm) / 1 NOT_ASSESSABLE (lead_time); one name (AXTI) — AMBER (R-SINGLE-NAME-AMBER)4 · SubstrateSIGNATURE-POSITIVE — THE WORKED POSITIVE,re-read under R-GM-LANGUAGE:1 of 1 PRESENT expressers: AXTI PRESENT evidence tag [F] — filing-grade observed 2026-08-131 of 1 PRESENT[F] · 1 name1 of 1 PRESENT expressers: AXTI PRESENT evidence tag [F] — filing-grade observed 2026-08-131 of 1 PRESENT[F] · 1 name0 of 1 NOT_ASSESSABLE expressers: AXTI NOT_ASSESSABLE0 of 1 NOT_ASSESSABLE1 of 1 PRESENT expressers: AXTI PRESENT evidence tag [F] — filing-grade observed 2026-08-131 of 1 PRESENT[F] · 1 name0 of 1 ABSENT expressers: AXTI ABSENT evidence tag [F] — filing-grade observed 2026-08-130 of 1 ABSENT[F]1 name read: AXTIASSESSED — SIGNATURE-POSITIVE AS A SELLER, TWO NAMES (TSM fab-level: prepayments + capacity_reservation as one fact; AMKR: prepayments PRESENT, four ABSENT). Intersection 1 of 5 · all 2 names; any 2 of 5.5 · Advanced packagingASSESSED — SIGNATURE-POSITIVE AS A SELLER,TWO NAMES (TSM fab-level: prepayments +2 of 2 PRESENT expressers: TSM PRESENT, AMKR PRESENT evidence tag [F] — filing-grade observed 2026-09-062 of 2 PRESENT[F]1 of 2 PRESENT expressers: TSM PRESENT, AMKR ABSENT evidence tag [F] — filing-grade observed 2026-09-061 of 2 PRESENT[F]0 of 2 ABSENT expressers: TSM NOT_ASSESSABLE, AMKR ABSENT evidence tag [F] — filing-grade observed 2026-09-060 of 2 ABSENT[F]0 of 2 ABSENT expressers: TSM ABSENT, AMKR ABSENT evidence tag [F] — filing-grade observed 2026-09-060 of 2 ABSENT[F]0 of 2 ABSENT expressers: TSM NOT_ASSESSABLE, AMKR ABSENT evidence tag [F] — filing-grade observed 2026-09-060 of 2 ABSENT[F]2 names read: TSM, AMKRASSESSED — BE covered at the ONSITE-GENERATION layer (A-POWER-20260909-BE, ruling: 2 PRESENT / 3 ABSENT; intersection 1 of 5 · all 3 names → 0 of 5 · all 4 names · +1 prov); — SIGNATURE-POSITIVE AS A SELLER (CEG, GEV, VRT counted; MHI +1 prov under R-INTERSECTION-PROV); after ruling (14a) the instrument-rule cells read ABSENT with their instruments beside them.6 · PowerASSESSED — BE covered at theONSITE-GENERATION layer3 of 5 PRESENT expressers: CEG ABSENT, GEV PRESENT, VRT ABSENT, MHI PRESENT (PROVISIONAL), BE PRESENT evidence tag [F] — filing-grade observed 2026-09-063 of 5 PRESENT[F]2 of 5 PRESENT expressers: CEG PRESENT, GEV PRESENT, VRT ABSENT, MHI NOT_ASSESSABLE, BE ABSENT evidence tag [F] — filing-grade observed 2026-09-062 of 5 PRESENT[F]1 of 5 PRESENT expressers: CEG PRESENT (WEAK), GEV ABSENT, VRT ABSENT, MHI NOT_ASSESSABLE, BE ABSENT evidence tag [F] — filing-grade observed 2026-09-061 of 5 PRESENT[F] · 1 weak2 of 5 PRESENT expressers: CEG ABSENT, GEV PRESENT (WEAK), VRT ABSENT, MHI NOT_ASSESSABLE, BE PRESENT evidence tag [F] — filing-grade observed 2026-09-062 of 5 PRESENT[F] · 1 weak3 of 5 PRESENT expressers: CEG PRESENT, GEV PRESENT, VRT PRESENT (WEAK), MHI NOT_ASSESSABLE, BE ABSENT evidence tag [F] — filing-grade observed 2026-09-063 of 5 PRESENT[F] · 1 weak5 names read: CEG, GEV, VRT, MHI, BEASSESSED — MP (materials layer: prepayments, capacity_reservation, gm PRESENT; take_or_pay ABSENT-current; lead_time UNKNOWN) + HDS (reducer layer, every cell /PROV: gm PRESENT-provisional, prepayments NOT_ASSESSABLE/PROV after correction (h), backlog instrument rising). Headline counts MP; HDS prints as +1 prov (R-INTERSECTION-PROV).7 · Physical embodimentASSESSED — MP (materials layer: prepayments,capacity_reservation, gm PRESENT;1 of 2 PRESENT expressers: MP PRESENT, HDS NOT_ASSESSABLE1 of 2 PRESENT1 of 2 PRESENT expressers: MP PRESENT, HDS NOT_ASSESSABLE1 of 2 PRESENT0 of 2 NOT_ASSESSABLE expressers: MP UNKNOWN, HDS NOT_ASSESSABLE0 of 2 NOT_ASSESSABLE0 of 2 ABSENT expressers: MP ABSENT, HDS NOT_ASSESSABLE0 of 2 ABSENT2 of 2 PRESENT expressers: MP PRESENT, HDS PRESENT (PROVISIONAL)2 of 2 PRESENT2 names read: MP, HDS

Corrected 2026-09-18. Originally read: “ASSESSED — four expressers: TSEM (prepayments PRESENT-provisional, reservation held), AAOI (five ABSENT), COHR (4 of 5, ruling), LITE (1 of 5 — lead_time on the supply-allocation sentence, ruling; one read pending). Intersection 0 of 5 · all 4 names; any 5 of 5.” The hand-written note stated an expresser count and intersection that disagreed with the cells; the counts were struck.

PRESENT — every name read shows itk of n — some names read show it, some do not (never the union); also every cell of a ONE-NAME rung — one name is not the rungABSENT — tested against a real filing, not thereNOT_ASSESSABLE — the test could not runUNKNOWN — never looked[F] filing-grade evidence[F-KR/PROV] provisional Korean pattern set

The five tells, defined

signatureplain Englishwhat it looks like in a filingstrength
prepaymentsCustomers pay before delivery.Customer deposits or contract liabilities growing faster than revenue; "advance payments from customers".Descriptive, not a weight: strong — cash moves before product does. The score counts all five tells equally (PRESENT 1, WEAK 0.5). Corrected 2026-09-18. Originally read: “Strong — cash moves before product does.” The cells read as a ranking of weights; the score counts all five tells equally, so they now say they are descriptive.
capacity_reservationCustomers book future output in advance."capacity reservation agreement", "long-term supply agreement" with committed volumes or reserved wafer starts.Descriptive, not a weight: strong — commitment to a specific supplier. The score counts all five tells equally (PRESENT 1, WEAK 0.5). Corrected 2026-09-18. Originally read: “Strong — commitment to a specific supplier.” The cells read as a ranking of weights; the score counts all five tells equally, so they now say they are descriptive.
lead_timeOrder-to-ship time is stretching.MD&A language: "supply constrained", "extended lead times", "allocation".Descriptive, not a weight: the weakest reading of the five — can be inherited from upstream, not owned. The score counts all five tells equally (PRESENT 1, WEAK 0.5). Corrected 2026-09-18. Originally read: “Weakest of the five — can be inherited from upstream, not owned.” The cells read as a ranking of weights; the score counts all five tells equally, so they now say they are descriptive.
take_or_payCustomer pays whether or not it takes the product."take-or-pay", "minimum purchase commitments", "non-cancellable".Descriptive, not a weight: the strongest reading — the buyer has accepted the supplier's terms. The score counts all five tells equally (PRESENT 1, WEAK 0.5). Corrected 2026-09-18. Originally read: “Strongest — the buyer has accepted the supplier's terms.” The cells read as a ranking of weights; the score counts all five tells equally, so they now say they are descriptive.
gm_pricing_powerMargin rises on the same product.Gross margin expanding without a mix shift; price increases disclosed in MD&A.Descriptive, not a weight: strong but lagging — shows after the others. The score counts all five tells equally (PRESENT 1, WEAK 0.5). Corrected 2026-09-18. Originally read: “Strong but lagging — shows after the others.” The cells read as a ranking of weights; the score counts all five tells equally, so they now say they are descriptive.

What the map knows, and what it does not

Updated 2026-09-23: six cells in the map above changed after a stricter, tiered reading of what counts as a signature. Compute: NVIDIA prepayments now present (it received $2.8 billion of customer advances); Intel capacity reservation now absent (its customer deposits are counted once, under prepayments); Cerebras take-or-pay now weakly present (stated, not sized). Optical: Tower prepayments and Corning capacity reservation now absent (each deposit is counted once, in one cell). Power: Constellation capacity reservation now present (Microsoft buys the full output of a restarted plant)

What it knows

  • Compute — 3 names read (NVDA, INTC, CBRS); 1 of 5 signatures PRESENT on every name read Updated 2026-09-23: the count of signatures present on every name read on this rung rose from 0 to 1 — NVIDIA's own filing shows $2.8 billion of customer advances, so prepayments now reads present on all three names (3 names); on at least one name: 5 of 5 (1 only weakly).
  • Memory bandwidth — 4 names read (SKHY, SSNLF, MU, SNDK); 4 of 5 signatures PRESENT on every name read (2 names); on at least one name: 5 of 5. provisional 5 of the five cells rest on a provisional Korean pattern set.
  • Optical interconnect — 6 names read (TSEM, AAOI, COHR, LITE, GLW, MRVL); 0 of 5 signatures PRESENT on every name read (6 names); on at least one name: 5 of 5 (1 only weakly).
  • Substrate — 1 name read (AXTI); 3 of 5 signatures PRESENT on every name read (1 name); on at least one name: 3 of 5; 1 absent on every name read; 1 not assessable from the filings read.
  • Advanced packaging — 2 names read (TSM, AMKR); 1 of 5 signatures PRESENT on every name read (2 names); on at least one name: 2 of 5; 1 absent on every name read. Corrected 2026-09-18. Originally read: “Advanced packaging — 2 names read (TSM, AMKR); 1 of 5 signatures PRESENT on every name read (2 names); on at least one name: 2 of 5; 3 absent on every name read.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.
  • Power — 5 names read (CEG, GEV, VRT, MHI, BE); 0 of 5 signatures PRESENT on every name read (4 names); on at least one name: 5 of 5 (1 only weakly).
  • Physical embodiment — 2 names read (MP, HDS); 3 of 5 signatures PRESENT on every name read (1 name); on at least one name: 3 of 5. Corrected 2026-09-18. Originally read: “Physical embodiment — 2 names read (MP, HDS); 3 of 5 signatures PRESENT on every name read (1 name); on at least one name: 3 of 5; 1 absent on every name read; 1 not assessable from the filings read.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.

What it does not

  • Compute — names disagree on capacity_reservation, lead_time, take_or_pay, gm_pricing_power — shown as a fraction Updated 2026-09-23: prepayments left the signatures the names on this rung disagree about — it now reads present on all three, never as the union.
  • Memory bandwidth — names disagree on prepayments, capacity_reservation, lead_time, take_or_pay — shown as a fraction, never as the union; for SKHY, prepayments could not be tested from the documents on file; for SSNLF, prepayments could not be tested from the documents on file. Corrected 2026-09-18. Originally read: “Memory bandwidth — names disagree on prepayments, capacity_reservation, lead_time, take_or_pay — shown as a fraction, never as the union.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.
  • Optical interconnect — names disagree on prepayments, capacity_reservation, lead_time, take_or_pay, gm_pricing_power — shown as a fraction, never as the union.
  • Substrate — one name is not the rung — the cells say what that filer shows, not what every vendor on the layer shows; lead_time could not be tested from the documents on file.
  • Advanced packaging — names disagree on capacity_reservation — shown as a fraction, never as the union; for TSM, lead_time, gm_pricing_power could not be tested from the documents on file. Corrected 2026-09-18. Originally read: “Advanced packaging — names disagree on capacity_reservation — shown as a fraction, never as the union.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.
  • Power — names disagree on prepayments, capacity_reservation, lead_time, take_or_pay, gm_pricing_power — shown as a fraction, never as the union; for MHI, capacity_reservation, lead_time, take_or_pay, gm_pricing_power could not be tested from the documents on file. Corrected 2026-09-18. Originally read: “Power — names disagree on prepayments, capacity_reservation, lead_time, take_or_pay, gm_pricing_power — shown as a fraction, never as the union.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.
  • Physical embodiment — names disagree on prepayments, capacity_reservation — shown as a fraction, never as the union; for HDS, prepayments, capacity_reservation, lead_time, take_or_pay could not be tested from the documents on file; for MP, lead_time has never been looked at. Corrected 2026-09-18. Originally read: “Physical embodiment — names disagree on prepayments, capacity_reservation — shown as a fraction, never as the union; lead_time could not be tested from the documents on file.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.

Hub and spokes

One live constraint chain; candidate chains wait behind four graduation gates (G1 chokepoint · G2 pure-play · G3 credible voice · G4 testable in filings).

Semiconductor & photonics chain (rows 1–5) — the live spokeSemiconductor & photonics chain (rows 1–5)LIVE · solid1 Computecells PRESENT on every name read: 1 of 5 · all 3 names · on at least one name: any: 5 of 5 · names: NVDA, INTC, CBRS1 of 5 · all 3 namesany: 5 of 52 Memory bandwidthcells PRESENT on every name read: 4 of 5 · all 2 names · +2 prov · on at least one name: any: 5 of 5 · names: SKHY, SSNLF, MU, SNDK4 of 5 · all 2 names · +2 provany: 5 of 53 Optical interconnectcells PRESENT on every name read: 0 of 5 · all 6 names · on at least one name: any: 5 of 5 · names: TSEM, AAOI, COHR, LITE, GLW, MRVL0 of 5 · all 6 namesany: 5 of 54 Substratecells PRESENT on every name read: 3 of 5 · all 1 name · on at least one name: any: 3 of 5 · names: AXTI · 1 name — one name is not the rung3 of 5 · all 1 nameany: 3 of 55 Advanced packagingcells PRESENT on every name read: 1 of 5 · all 2 names · on at least one name: any: 2 of 5 · names: TSM, AMKR1 of 5 · all 2 namesany: 2 of 56 Power · spoke-power PROVISIONALcells PRESENT on every name read: 0 of 5 · all 4 names · +1 prov · on at least one name: any: 5 of 5 · names: CEG, GEV, VRT, MHI, BE0 of 5 · all 4 names · +1 provany: 5 of 57 Physical embodiment · pending_gatescells PRESENT on every name read: 3 of 5 · all 1 name · +1 prov · on at least one name: any: 3 of 5 · names: MP, HDS · 1 name — one name is not the rung3 of 5 · all 1 name · +1 provany: 3 of 5Space economy — candidate, gatedSpace economycandidate · dashedG1 OPENG2 OPENG3 RAWG4 OPENPhysical AI / edge AI — candidate, gatedPhysical AI /edge AIcandidate · dashedG1 PLAUSIBLEG2 WEAKG3 OPENG4 OPENQuantum + beneficiaries — candidate, gatedQuantum +beneficiariescandidate · dashedG1 PARTIALG2 PARTIALG3 UNPARSEDG4 UNPARSEDCrypto — candidate, gatedCryptocandidate · dashedG1 UNPARSEDG2 UNPARSEDG3 UNPARSEDG4 UNPARSEDPower / energy infrastructure — candidate, gatedPower / energyinfrastructurecandidate · dashedG1 RAWG2 OPENG3 UNPARSEDG4 RAWRULING A: powerowning spoke =spoke-power,PROVISIONAL. G1Defense — candidate, gatedDefensecandidate · dashedG1 OPENG2 OPENG3 OPENG4 OPENSpoke n — unnamed — candidate, gatedSpoke n —unnamedplaceholderG1 n/aG2 n/aG3 n/aG4 n/aEnterprise AI deployment — candidate, gatedEnterprise AIdeploymentcandidate · dashedG1 RAWG2 RAWG3 RAWG4 RAWinheritsShared ground truth — Shared core: the rubric, the ledgers, the citation grades, the gatesThe rep (Stage 2)analysis core — five factors, weakest link bindsLedgersConviction ledger · Performance ledger · Decision ledgerPortfolioconviction to weight — a paper bookscoresladder

Corrected 2026-09-18. Originally read: “analysis core — six factors, weakest link binds”. Six was the first rubric's factor count; the rubric in force binds on five, and the count is now read from it.

A row is a physical layer AI scaling passes through. A spoke is a separate constraint chain with its own chokepoint, voices, and ladder, sharing one core and one book. — this caption is a stored literal, not read from the record.

Drawn from core/ladder.json, data/architecture-nodes.json and the gate files at build; ladder generated 2026-09-07 08:54:42.

Superseded updates

SUPERSEDED 2026-09-23 — this update no longer describes the page: the value it reported changed again, and a newer update beside that value says so. It is kept here because a published note is never removed.

Updated 2026-09-20: the count of signatures present on every name read on this rung fell from 1 to 0 — the one signature all three names shared was gross-margin pricing power, and on one of them it is now absent

SUPERSEDED 2026-09-23 — this update no longer describes the page: the value it reported changed again, and a newer update beside that value says so. It is kept here because a published note is never removed.

Updated 2026-09-20: gross-margin pricing power joined the signatures the names on this rung disagree about — it used to read the same on all three

Retired corrections

RETIRED 2026-09-20 — this correction is no longer live: the text it corrected no longer appears on this page. It is kept here because a published correction is never removed.

Corrected 2026-09-18. Originally read: “Compute — 3 names read (NVDA, INTC, CBRS); 1 of 5 signatures PRESENT on every name read (3 names); on at least one name: 5 of 5; 1 absent on every name read.” The clauses counted a rung-level summary instead of every name read; one called a cell no one had read untestable.