ADR 0016 — SoR thesis mispricing frame: "software grows up, doesn't die"
Status: Accepted Date: 2026-05-05 Audience: public Context phase: Post-Phase F — first 12mo backtest readout
Context
The first honest 12-month backtest of the SoR portfolio (2025-05-05 → 2026-05-05) returned:
| Strategy | Total return | Drawdown |
|---|---|---|
| SoR equal-weight basket | −25.99% | −43.20% |
| SPY | +27.42% | — |
| QQQ | +38.47% | — |
The SoR basket underperformed the broad market by ~50 percentage points and growth (QQQ) by ~65 points. Software multiples compressed across the basket: Atlassian, Monday, Asana, ServiceNow, Salesforce, Workday, Okta, MongoDB, Elastic, and others derated meaningfully over the window.
A reasonable response to a 50pp deficit would be: "the thesis is wrong — re-pick the basket, or step away from the bet." This ADR documents why this portfolio does not take that response, and what evidence would invalidate the thesis.
Decision
The SoR thesis is held with the following framing, which governs every allocation, ADD/TRIM/EXIT decision, and rebalance the engine emits:
Claim: In the agent economy, the user-facing interface layer of software commoditizes — agents will generate UIs on demand, with low cognitive load, fitted to context. The interface becomes disposable. What does not commoditize is the structured-data backbone underneath: the system of record that owns durable state, ownership lineage, queryable history, permissions, and the schema agents call into to act.
Market interpretation (current, mistaken): "Software is dying. Agents replace SaaS. Sell the seats-based, UI-heavy software stack."
Owner's interpretation (the thesis): Software is growing up. The interface tier compresses; the SoR tier compounds. SoR platforms become more valuable per dollar of revenue, not less, because the agents performing work need a trustworthy data spine. The market is conflating "interface commoditizes" with "the underlying platform commoditizes" — they are not the same claim.
Reference: https://thinkbuildlead.substack.com/p/software-isnt-dying-its-growing-up
The 12mo underperformance is therefore framed as mispricing of a transition, not as evidence the thesis is wrong. The 25–30% IRR target by 2029-05-04 explicitly assumes the gap closes (and overshoots) as the agent economy makes the SoR layer's value legible — this is the central return engine of the strategy.
What would invalidate the thesis
Falsifiability is the contract with the community reading this dashboard. The thesis is held until any of the following is observed:
- Customer revenue actually declines at the SoR layer. Not multiple compression — actual top-line shrinkage at SoR holdings, sustained over 4+ quarters, that cannot be explained by macro / FX / one-time customer churn. A multi-name pattern (e.g., 5+ SoR holdings show YoY revenue decline simultaneously) is stronger evidence than one outlier.
- Agents are observably acting without an SoR. Concrete examples of agent-economy workflows — sustained, at scale — that bypass the structured-data layer entirely (e.g., agents running on raw LLM memory + ad-hoc retrieval, displacing real CRM/ITSM/ERP workloads). Anecdotes do not count; aggregate platform usage shifts do.
- A pure agent-native upstart materially eats one of the buckets. If a single agent-first competitor takes meaningful market share from the SoR holdings within a bucket (Dev work, ITSM, CRM, etc.), and the displaced incumbent's share is not recovered, the bucket's thesis is broken. Note: this is bucket-specific, not portfolio-wide. One bucket failing doesn't invalidate the whole thesis; it triggers a bucket re-pick.
- 5y rolling underperformance vs SPY exceeds −20pp annualized after 2027. A 12mo gap is noise on a thesis with a 3-year horizon. A 5-year rolling gap of that magnitude is structural and would force a re-examination of whether the SoR claim is right but the basket is wrong, or whether the claim itself is wrong.
If none of these are observed, the strategy holds. The market repricing alone — even another year of relative underperformance — is not a falsifying condition under this frame. It's the entry condition.
Consequences
- The dashboard's job is to make the mispricing legible. A "thesis vs market" panel showing the SoR basket vs SPY/QQQ over rolling windows, with the gap framed as the opportunity (not the risk), is on the build queue.
- Decision rationale must reference the frame. When the engine emits HOLD or ADD on a position that has materially underperformed indices, the rationale field should reference this ADR by number so the reader can audit the assumption rather than re-derive it. Suggested:
lib/decisions.tsrationale.thesis section to include "0016-frame" tag when applicable. - Ticker-level invalidation evidence dominates basket-level invalidation. A single SoR holding showing revenue decline + customer flight is more falsifying for that name than 50pp of multiple compression across the basket. Postmortem and signal-evidence weights should reflect this asymmetry — fundamentals pillars (P1, P2, P3, P4, P5) carry more weight than price-action signals when adjudicating thesis validity. (Already reflected in
lib/decisions.tspillar weighting; this ADR documents the why.) - The community sees both the position and the kill-criteria. The four falsification conditions above should appear on the public
/aboutor/thesispage so a reader can audit, in real time, whether any of them have started to fire. - Engine value-add is a separate question. This ADR is about the basket-level thesis. Whether the agent on top of the basket adds value (vs equal-weight passive) is the strategy gate's job (ADR 0015), and that question is judged on Δ basket, not Δ market.
Alternatives considered
- De-risk the basket by adding SPY / QQQ exposure. Rejected. The portfolio is a thesis expression, not a risk-managed product. Diluting with index exposure would make 12mo numbers prettier and 3y numbers worse if the thesis plays out. The owner is comfortable with the mark-to-market drawdown as the cost of the bet.
- Re-pick the basket toward "AI-native" names (more Palantir-like, less Atlassian-like). Rejected for now. The thesis is that existing SoR platforms grow up, not that new AI-native upstarts replace them. Re-picking toward AI-native would be hedging the wrong direction. If condition (3) above (agent-native upstarts taking share within a bucket) starts firing, this stance changes per-bucket.
- Wait for confirmation before holding. Rejected. By the time the thesis is consensus, the mispricing is closed. The point of the bet is to be early. The owner's tolerance for being wrong-and-down for an extended window is the strategy.
Source files
decisions/0016-sor-thesis-mispricing-frame.md(this file)CONTEXT.md— pillars P1–P5 (the structural definition of "SoR-ness")lib/decisions.ts— rationale field; should reference0016-framein thesis rationale- (Future)
app/about/page.tsxorapp/thesis/page.tsx— public falsification-conditions surface - Memory:
project_sor_thesis_frame.md— internal session-level frame; this ADR is the public-facing version