From 8aeec312b52df3b965d26c038c6f18bdeb7bbda3 Mon Sep 17 00:00:00 2001
From: Lukas Bresser
Date: Mon, 29 Jun 2026 15:51:06 +0200
Subject: [PATCH 01/18] Add cross-focus-area impact dashboard
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Adds /impact — a public, filterable dashboard that tracks PL R&D's
impact via the twelve pre-registered inflection points, one set per
focus area.
What it does:
- Filterable by focus area (vertical tab rail); a user always lands in
one area rather than seeing all twelve at once.
- Each inflection point is a card with a Defined -> Emerging -> Reached
-> Scaling field-progress meter and a PL-role tag (Substrate /
Originator / Funder & convener). Clicking opens a detail modal.
- The modal traces Q1 (did it happen — the pre-registered threshold),
Q2 (did it matter — the cascade), and Q3 (did our work make it
happen) as Inputs -> Activities -> Outputs.
- Field progress and PL contribution are kept on separate axes and
never collapsed into one score: a point can be reached with little PL
involvement and that is still a win for the field.
- For the two Economies & Governance points with live data, the modal
pulls live OUTPUTS from the same sources as the FA2 live dashboard
(GainForest, Glow, Simocracy) — labelled strictly as Q3 contribution
evidence, never as Q1 progress. Fetched server-side with 60s ISR and
graceful fallback.
- A "Measuring impact" explainer covers the logic model and the three
questions.
- Adds an "Impact" item to the main nav.
Co-Authored-By: Claude Opus 4.8
---
src/app/impact/page.tsx | 150 +++++++++
src/components/ImpactDashboard.tsx | 445 ++++++++++++++++++++++++++
src/components/MeasuringQuestions.tsx | 107 +++++++
src/lib/inflection-points.ts | 350 ++++++++++++++++++++
src/lib/site-config.ts | 1 +
5 files changed, 1053 insertions(+)
create mode 100644 src/app/impact/page.tsx
create mode 100644 src/components/ImpactDashboard.tsx
create mode 100644 src/components/MeasuringQuestions.tsx
create mode 100644 src/lib/inflection-points.ts
diff --git a/src/app/impact/page.tsx b/src/app/impact/page.tsx
new file mode 100644
index 00000000..b62a73be
--- /dev/null
+++ b/src/app/impact/page.tsx
@@ -0,0 +1,150 @@
+import type { Metadata } from 'next'
+import Breadcrumb from '@/components/Breadcrumb'
+import ImpactDashboard, { type LiveMetric, type LiveOutputs } from '@/components/ImpactDashboard'
+import MeasuringQuestions from '@/components/MeasuringQuestions'
+import { fetchSimocracyStats } from '@/lib/simocracy'
+import { fetchGainforestStats } from '@/lib/gainforest'
+import { fetchGlowStats } from '@/lib/glow'
+
+// Pull live output metrics for the Economies & Governance inflection points from
+// the same sources as the FA2 live dashboard. These are Q3 OUTPUTS (the work
+// PL-backed teams have produced) — never Q1 progress toward a threshold.
+export const revalidate = 60
+
+async function fetchLiveOutputs(): Promise {
+ const compact = (n: number) =>
+ new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 }).format(n)
+ const out: LiveOutputs = {}
+
+ const [sim, gf, glow] = await Promise.allSettled([
+ fetchSimocracyStats(),
+ fetchGainforestStats(),
+ fetchGlowStats(),
+ ])
+
+ // A binding decision at scale — Simocracy (a PL-supported deliberation mechanism).
+ if (sim.status === 'fulfilled' && !sim.value.degraded) {
+ const t = sim.value.totals
+ const metrics: LiveMetric[] = [
+ { n: t.uniqueHumans, label: 'participants' },
+ { n: t.totalSims, label: 'simulations' },
+ { n: t.totalGatherings, label: 'gatherings' },
+ ]
+ .filter((m) => m.n > 0)
+ .map((m) => ({ value: compact(m.n), label: m.label }))
+ if (metrics.length) out['A binding decision at scale'] = metrics
+ }
+
+ // Capital that pays on verified outcomes — GainForest + Glow (PL-backed MRV teams).
+ const verified: LiveMetric[] = []
+ if (gf.status === 'fulfilled' && !gf.value.degraded) {
+ const g = gf.value
+ if (g.observations > 0) verified.push({ value: compact(g.observations), label: 'species observations' })
+ if (g.certifiedOrgs > 0) verified.push({ value: compact(g.certifiedOrgs), label: 'certified orgs' })
+ }
+ if (glow.status === 'fulfilled' && !glow.value.degraded) {
+ const gl = glow.value
+ if (gl.activeFarms > 0) verified.push({ value: compact(gl.activeFarms), label: 'active solar farms' })
+ if (gl.carbon > 0) verified.push({ value: compact(gl.carbon), label: 'tCO₂ / wk' })
+ }
+ if (verified.length) out['Capital that pays on verified outcomes'] = verified
+
+ return out
+}
+
+export const metadata: Metadata = {
+ title: 'Impact',
+ description:
+ 'How we measure whether PL R&D’s work matters: the inflection points we have pre-registered across every focus area, and how we will know if they happen.',
+}
+
+// The logic-model chain: planned work on the left, intended results on the right.
+const LOGIC_MODEL = [
+ { label: 'Inputs', body: 'The resources we commit — funding, teams, convenings, standards.' },
+ { label: 'Activities', body: 'What we do with them — seeding teams, building primitives, setting standards.' },
+ { label: 'Outputs', body: 'The volume of work produced — teams funded, deployments, papers, ventures.' },
+ { label: 'Outcomes', body: 'The changes that follow — adoption, capital inflows, new entrants.' },
+ { label: 'Impact', body: 'The lasting shift in the system — an inflection point that holds.' },
+]
+
+export default async function ImpactPage() {
+ const liveOutputs = await fetchLiveOutputs()
+ return (
+
+ {/* Hero */}
+
+
+
+
+ Our impact
+
+
+ Across our four focus areas we have named a small set of{' '}
+ inflection points — specific,
+ observable, falsifiable shifts we believe would be catalytic, and that have not yet
+ happened.
+
+
+
+
+ {/* Inflection points — grey full-bleed section to set it apart from the rest of the site */}
+
+
+
+ Inflection points we are tracking
+
+
+ Select a focus area. Each card shows the pre-registered threshold (did it happen), the
+ cascade we expect if it matters, and the PL contribution we would trace. Pre-registering
+ the threshold now is what keeps us honest later — the answer in two years should be a
+ reading, not an argument.
+
+
+
+
+
+ {/* Measuring impact */}
+
+
Measuring impact
+
+ Impact is the last link in a chain that runs from the work we plan to the results we
+ intend. Inputs and activities are our planned work; outcomes and impact are the change in
+ the world that follows. We only count something as impact when it is a durable shift in the
+ system — not just activity or output.
+
+
+ {/* Logic-model chain */}
+
+ {LOGIC_MODEL.map((stage, i) => (
+
+
+
+ {i + 1}
+
+ {stage.label}
+
+
{stage.body}
+
+ ))}
+
+
+ ← Our planned work
+ Our intended results →
+
+
+ Each inflection point instantiates this chain. On its card, the Q3 detail tracks our
+ inputs, activities, and outputs; the field meter tracks the outcomes and impact they aim
+ at.
+
+
+ {/* The three questions — pick one to read its detail */}
+
+ For frontier research, the hard part is the right edge of that chain. So for every
+ inflection point we ask three questions — different jobs that should not be collapsed into
+ one metric. Select one to read how we measure it.
+
+
+
+
+ )
+}
diff --git a/src/components/ImpactDashboard.tsx b/src/components/ImpactDashboard.tsx
new file mode 100644
index 00000000..0d7ed7e4
--- /dev/null
+++ b/src/components/ImpactDashboard.tsx
@@ -0,0 +1,445 @@
+'use client'
+
+import { useEffect, useMemo, useState } from 'react'
+import {
+ CONTRIBUTION_META,
+ FIELD_STAGES,
+ FOCUS_AREAS,
+ INFLECTION_POINTS,
+ STATUS_META,
+ stageIndexForStatus,
+ type FocusAreaKey,
+ type InflectionPoint,
+} from '@/lib/inflection-points'
+import { AreaIcon, type AreaIconType } from '@/components/AreaIcons'
+
+type Filter = FocusAreaKey
+
+/** Live output metrics for a point, keyed by the point's title. Fetched server-side. */
+export type LiveMetric = { value: string; label: string }
+export type LiveOutputs = Record
+
+const FA_ICON: Record = {
+ 'digital-human-rights': 'shield',
+ 'economies-governance': 'hexagon',
+ 'ai-robotics': 'neural',
+ neurotech: 'brain',
+}
+
+export default function ImpactDashboard({ liveOutputs = {} }: { liveOutputs?: LiveOutputs }) {
+ const [filter, setFilter] = useState('digital-human-rights')
+ const [active, setActive] = useState(null)
+
+ const visible = useMemo(
+ () => INFLECTION_POINTS.filter((p) => p.area === filter),
+ [filter],
+ )
+
+ return (
+
+ Inflection points for {fa?.label ?? 'this focus area'} are being defined.
+
+
+ This focus area is still finalizing its plan of attack. Its pre-registered bets will appear
+ here once they are set.
+
+
+ )
+}
diff --git a/src/components/MeasuringQuestions.tsx b/src/components/MeasuringQuestions.tsx
new file mode 100644
index 00000000..84e27da8
--- /dev/null
+++ b/src/components/MeasuringQuestions.tsx
@@ -0,0 +1,107 @@
+'use client'
+
+import { useState } from 'react'
+import { CONTRIBUTION_META } from '@/lib/inflection-points'
+
+const QUESTIONS = [
+ {
+ q: 'Q1',
+ title: 'Did it happen?',
+ maps: 'Impact',
+ body: 'We pre-register one observable threshold and report a simple yes/no plus a date when it is reached. It is externally observable — measured the same way whether or not PL is involved.',
+ },
+ {
+ q: 'Q2',
+ title: 'Did it matter?',
+ maps: 'Outcomes',
+ body: 'A signal is only worth naming if it unlocks something. We name the second-order effects in advance and watch whether they follow. A threshold that is reached but unlocks nothing is itself a finding.',
+ },
+ {
+ q: 'Q3',
+ title: 'Did our work make it happen?',
+ maps: 'Inputs · Activities · Outputs',
+ body: 'We trace contribution rather than claim credit: which PL-funded teams, convenings, standards, or ventures were on the critical path — and reason honestly about the counterfactual: would this have happened as fast, or at all, without us?',
+ },
+]
+
+export default function MeasuringQuestions() {
+ const [active, setActive] = useState(0)
+ const item = QUESTIONS[active]
+
+ return (
+
+ Contribution sits on its own axis, separate from how far the field has moved — we never
+ collapse the two into a single score. A point can be reached with little or no PL
+ involvement; that is still a win for the field, and we record our role honestly. Each
+ card tags PL’s role as one of three:
+
+ )
+}
diff --git a/src/lib/inflection-points.ts b/src/lib/inflection-points.ts
new file mode 100644
index 00000000..d47a46e9
--- /dev/null
+++ b/src/lib/inflection-points.ts
@@ -0,0 +1,350 @@
+// Cross-focus-area inflection points and how we measure them.
+//
+// Each focus area names a small set of inflection points: specific, observable,
+// falsifiable shifts we believe would be catalytic and that have NOT yet happened
+// as of 2026. They are hypotheses, not descriptions of the present. We judge our
+// work against three questions, mapped to the fields on every point:
+//
+// Q1 (signal) Did it happen? A pre-registered threshold — yes/no + date.
+// Q2 (cascade) Did it matter? The second-order effects it should unlock.
+// Q3 (contribution) Did our work make it happen? PL's inputs -> activities -> outputs on the
+// critical path (the planned-work side of the
+// logic model), traced honestly.
+//
+// IMPORTANT — these are distinct jobs and are NOT collapsed into one score. A point
+// can be reached (Q1) and matter (Q2) with low PL contribution (Q3); that is still a
+// win for the field. So we track field progress (Q1 -> Q2) on one axis and PL's
+// contribution (Q3) on a separate, independent axis.
+//
+// Source: "Inflection points across PL R&D, and how we will measure them."
+
+export type InflectionStatus = 'watching' | 'early-signal' | 'tripped'
+
+/** PL's pre-registered role on the critical path — a claim to be evidenced, not a credit score. */
+export type ContributionLevel = 'substrate' | 'originator' | 'funder-convener'
+
+/**
+ * Q3 contribution, structured along the planned-work side of the logic model.
+ * Inputs (resources committed) -> Activities (what we do) -> Outputs (what gets produced).
+ * The outcomes and impact these aim at are tracked on the field axis (Q2, Q1).
+ */
+export type Contribution = {
+ inputs: string
+ activities: string
+ outputs: string
+}
+
+/** A pointer to live activity that is contribution evidence (Q3) — NOT a Q1 threshold reading. */
+export type LiveEvidence = {
+ label: string
+ href: string
+ note: string
+}
+
+export type InflectionPoint = {
+ /** Focus-area slug, matches /areas/. */
+ area: FocusAreaKey
+ /** The opportunity space this bet lives in. */
+ opportunitySpace: string
+ /** The inflection point, stated as a hypothesis. */
+ title: string
+ /** Q1 — observable threshold that says it happened (not yet true). */
+ signal: string
+ /** Q2 — why it matters / the cascade to watch. */
+ cascade: string
+ /** Q3 — PL contribution to trace, as inputs -> activities -> outputs. */
+ contribution: Contribution
+ /** Q3, summarized as PL's role on the critical path. */
+ contributionLevel: ContributionLevel
+ /** Field-progress lifecycle state. All start 'watching' — none reached as of 2026. */
+ status: InflectionStatus
+ /** Optional live activity from PL-backed teams — strictly Q3 evidence, never Q1 progress. */
+ liveEvidence?: LiveEvidence
+}
+
+export type FocusAreaKey =
+ | 'digital-human-rights'
+ | 'economies-governance'
+ | 'ai-robotics'
+ | 'neurotech'
+
+export type FocusAreaMeta = {
+ key: FocusAreaKey
+ label: string
+ /** Short legacy code used in the strategy docs. */
+ code: string
+ href: string
+ /** Accent color (hex from the theme) for badges and the field-progress meter. */
+ accent: string
+}
+
+export const FOCUS_AREAS: FocusAreaMeta[] = [
+ { key: 'digital-human-rights', label: 'Digital Human Rights', code: 'FA1', href: '/areas/digital-human-rights/', accent: '#1982F4' },
+ { key: 'economies-governance', label: 'Economies & Governance', code: 'FA2', href: '/areas/economies-governance/', accent: '#12bfdf' },
+ { key: 'ai-robotics', label: 'AI & Robotics', code: 'FA3', href: '/areas/ai-robotics/', accent: '#3966FE' },
+ { key: 'neurotech', label: 'Neurotech', code: 'FA4', href: '/areas/neurotech/', accent: '#E51A66' },
+]
+
+// ── Field-progress lifecycle (Q1 -> Q2). Deliberately separate from PL contribution. ──
+export const FIELD_STAGES = ['Defined', 'Emerging', 'Reached', 'Scaling'] as const
+export type FieldStage = (typeof FIELD_STAGES)[number]
+
+/** How far along the field axis a point sits, given its status. */
+export function stageIndexForStatus(status: InflectionStatus): number {
+ switch (status) {
+ case 'watching':
+ return 0 // threshold defined, waiting at it
+ case 'early-signal':
+ return 1
+ case 'tripped':
+ return 2
+ }
+}
+
+export const STATUS_META: Record = {
+ watching: {
+ label: 'Defined',
+ description: 'The threshold is defined and pre-registered. No movement toward it yet.',
+ color: '#6b6d79',
+ },
+ 'early-signal': {
+ label: 'Emerging',
+ description: 'Leading indicators are moving toward the threshold.',
+ color: '#1982F4',
+ },
+ tripped: {
+ label: 'Reached',
+ description: 'The defined threshold has been crossed.',
+ color: '#12bfdf',
+ },
+}
+
+export const CONTRIBUTION_META: Record = {
+ substrate: {
+ label: 'Substrate',
+ description: 'PL-built technology is the underlying rail this would run on.',
+ },
+ originator: {
+ label: 'Originator',
+ description: 'PL originated the mechanism, standard, or benchmark in play.',
+ },
+ 'funder-convener': {
+ label: 'Funder & convener',
+ description: 'PL funds the teams on the critical path and convenes the field.',
+ },
+}
+
+export const INFLECTION_POINTS: InflectionPoint[] = [
+ // ── FA1 · Digital Human Rights ───────────────────────────────────────────
+ {
+ area: 'digital-human-rights',
+ opportunitySpace: 'Censorship-Resistant Communication',
+ title: 'Communication that cannot be switched off',
+ signal:
+ 'A consumer-scale connectivity provider operates without state licensing or identity gating, and a metadata-resistant messenger crosses tens of millions of users; a population stays connected through a deliberate shutdown.',
+ cascade:
+ 'Censoring speech and assembly becomes impractical, not just illegal; organizing survives adversarial conditions.',
+ contribution: {
+ inputs: 'The libp2p / IPFS open-source networking stack; funding for resilient-comms and private-messaging teams.',
+ activities: 'Maintaining the substrate, funding teams, and contributing to interoperability standards.',
+ outputs: 'libp2p / IPFS deployments and the funded comms and messaging teams building on them.',
+ },
+ contributionLevel: 'substrate',
+ status: 'watching',
+ },
+ {
+ area: 'digital-human-rights',
+ opportunitySpace: 'Portable Identity, Credentials & Trust',
+ title: 'Personhood without the state in the loop',
+ signal:
+ 'A service at >100M people verifies unique humans for everyday use without a nation-state ID or KYC.',
+ cascade:
+ 'Recognition stops being rented from platforms and states; privacy-preserving personhood becomes safe to build on.',
+ contribution: {
+ inputs: 'Convening capacity across identity protocols; seed funding for portable-credential initiatives.',
+ activities: 'Convening identity-protocol teams and seeding / funding portable-credential work.',
+ outputs: 'The identity and credential initiatives PL has seeded or funded.',
+ },
+ contributionLevel: 'funder-convener',
+ status: 'watching',
+ },
+ {
+ area: 'digital-human-rights',
+ opportunitySpace: 'Verifiable Public Knowledge & Provenance',
+ title: 'Provenance becomes the default for truth',
+ signal:
+ 'Two consecutive frontier-model generations ship attested provenance by default, and a major platform or archive adopts content-addressed provenance as default.',
+ cascade:
+ 'A public record that can prove its own integrity becomes the precondition for trustworthy information in the AI era.',
+ contribution: {
+ inputs: 'Content addressing (IPFS) as the provenance substrate; funding for provenance and verifiable-compute teams.',
+ activities: 'Providing the content-addressing substrate and backing provenance / verifiable-compute teams.',
+ outputs: 'Content-addressed provenance tooling and the PL-backed teams building it.',
+ },
+ contributionLevel: 'substrate',
+ status: 'watching',
+ },
+ {
+ area: 'digital-human-rights',
+ opportunitySpace: 'Sovereign Infrastructure for AI & Agents',
+ title: 'Agents run on open rails',
+ signal:
+ 'A frontier-scale model is trained across independent decentralized hardware, or a meaningful share of agent-to-agent economic activity settles on open permissionless compute / storage / identity.',
+ cascade:
+ 'The rights architecture of the agent economy is set in the open rather than by whoever owns the cluster.',
+ contribution: {
+ inputs: 'The Filecoin / open-compute portfolio; PL capital and coordination across storage, compute, and identity.',
+ activities: 'Building open compute and storage rails and bridging them with identity for agents.',
+ outputs: 'Filecoin and the open-compute portfolio; integrations across storage, compute, and identity.',
+ },
+ contributionLevel: 'substrate',
+ status: 'watching',
+ },
+
+ // ── FA2 · Economies & Governance ─────────────────────────────────────────
+ {
+ area: 'economies-governance',
+ opportunitySpace: 'Sovereign Digital Public Infrastructure',
+ title: 'Programmable government in production',
+ signal:
+ 'At least one sovereign moves >$1B/yr of real public funds through programmable, real-time-auditable rails; 3+ jurisdictions use selective-disclosure credentials for a high-stakes function (election, passport, census).',
+ cascade:
+ 'Digital government crosses from digitization to transformation; a reference deployment others can copy.',
+ contribution: {
+ inputs: 'Standards and procurement playbooks; convening capacity with sovereigns and builders; funding for DPI primitives.',
+ activities: 'Writing standards and playbooks, convening sovereigns with builders, and funding DPI primitives.',
+ outputs: 'Published playbooks, convened sovereign–builder cohorts, and funded DPI primitives.',
+ },
+ contributionLevel: 'funder-convener',
+ status: 'watching',
+ },
+ {
+ area: 'economies-governance',
+ opportunitySpace: 'Computational Coordination & Governance',
+ title: 'A binding decision at scale',
+ signal:
+ 'A city or government makes a consequential, binding decision through a computational mechanism with tens of thousands participating, beating the legacy process on cost, turnout, or trust.',
+ cascade:
+ 'Deliberation tools move from advisory to part of real decision-making infrastructure.',
+ contribution: {
+ inputs: 'Support for computational-deliberation mechanisms (e.g. Simocracy, broad-listening tools); convening capacity.',
+ activities: 'Supporting mechanism teams and convening government teams with tool teams.',
+ outputs: 'Simocracy and broad-listening tools, and the government–tool convenings around them.',
+ },
+ contributionLevel: 'funder-convener',
+ status: 'watching',
+ liveEvidence: {
+ label: 'Simocracy governance simulation — live participation',
+ href: '/areas/economies-governance/impact/live-dashboard/',
+ note: 'Live activity from a PL-supported mechanism. This is contribution evidence (Q3) from a simulation — not the binding-decision-in-government threshold (Q1).',
+ },
+ },
+ {
+ area: 'economies-governance',
+ opportunitySpace: 'Programmable Capital Allocation',
+ title: 'Public goods become a financeable category',
+ signal:
+ '>$1B/yr flows through programmable allocation, a mainstream allocator (DFI, pension, sovereign fund) treats it as infrastructure, and a material real-world outcome is documented.',
+ cascade:
+ 'Funding public goods becomes a durable capital market rather than a niche.',
+ contribution: {
+ inputs: 'Hypercerts (PL origin) and the Gitcoin / Funding-the-Commons lineage; PL evidence and standards work.',
+ activities: 'Originating allocation mechanisms, building evidence and standards, and converting work into ventures.',
+ outputs: 'Hypercerts, Funding the Commons, and the ventures spun out of this lineage.',
+ },
+ contributionLevel: 'originator',
+ status: 'watching',
+ },
+ {
+ area: 'economies-governance',
+ opportunitySpace: 'Verifiable Real-World Infrastructure & Systems',
+ title: 'Capital that pays on verified outcomes',
+ signal:
+ 'A $1B+ climate or public-goods fund disburses against independently verified real-world outcomes, faster and cheaper than a legacy audit.',
+ cascade:
+ 'Verification becomes the rail capital runs on; the loop back to better decisions closes.',
+ contribution: {
+ inputs: 'Funding for MRV / outcome-verification teams (e.g. GainForest, Glow); benchmark and standards convening.',
+ activities: 'Backing MRV teams and convening benchmark and standards work for outcome verification.',
+ outputs: 'GainForest, Glow, and the verification benchmarks and standards they inform.',
+ },
+ contributionLevel: 'funder-convener',
+ status: 'watching',
+ liveEvidence: {
+ label: 'GainForest & Glow — live verification activity',
+ href: '/areas/economies-governance/impact/live-dashboard/',
+ note: 'Live output from PL-backed MRV teams on this critical path. Contribution evidence (Q3) — not the $1B-disbursed-against-verified-outcomes threshold (Q1).',
+ },
+ },
+
+ // ── FA4 · Neurotech ──────────────────────────────────────────────────────
+ {
+ area: 'neurotech',
+ opportunitySpace: 'Neural Augmentation (BCI)',
+ title: 'The BCI app store',
+ signal:
+ 'A regulator clears a standardized software / API layer for a commercial BCI (with medical guardrails), and the first third-party app launches and is adopted.',
+ cascade:
+ 'BCI value compounds after surgery; a developer ecosystem forms; demand shifts toward elective use.',
+ contribution: {
+ inputs: 'PL Neuro standards work for a BCI component ecosystem; convening capacity across regulators, device makers, and developers.',
+ activities: 'Defining the BCI component-ecosystem standard and convening regulators, makers, and developers.',
+ outputs: 'A draft BCI component / API standard and the regulator–maker–developer convenings around it.',
+ },
+ contributionLevel: 'originator',
+ status: 'watching',
+ },
+ {
+ area: 'neurotech',
+ opportunitySpace: 'Biologically Inspired Intelligence (NeuroAI)',
+ title: 'Neural distillation',
+ signal:
+ 'A major lab matches frontier reasoning by training on human neural data at a fraction of the parameters / energy, or venture funding surges into consumer EEG to harvest cognitive data for AI.',
+ cascade:
+ 'High-fidelity neural data becomes as valuable to AI as text; comp-neuro talent flow reverses.',
+ contribution: {
+ inputs: 'The PL Neuro talent network bridging AI labs and comp neuro; investment in neural-data infrastructure and norms.',
+ activities: 'Bridging AI-lab and comp-neuro talent and building neural-data infrastructure and norms.',
+ outputs: 'The PL Neuro talent network and the neural-data infrastructure and norms it seeds.',
+ },
+ contributionLevel: 'funder-convener',
+ status: 'watching',
+ },
+ {
+ area: 'neurotech',
+ opportunitySpace: 'Biologically Inspired Intelligence (NeuroAI)',
+ title: 'The neuromorphic energy pivot',
+ signal:
+ 'A brain-inspired model matches state-of-the-art performance at 3+ orders of magnitude better energy efficiency, and frontier labs begin acquiring neuromorphic startups.',
+ cascade:
+ 'Neurally derived design becomes foundational to commercial AI; AI is tethered to neuroscience.',
+ contribution: {
+ inputs: 'Funding for NeuroAI / neuromorphic research and demos; benchmark design defining the efficiency target.',
+ activities: 'Funding neuromorphic research and demos and defining the efficiency benchmark.',
+ outputs: 'PL-funded NeuroAI demos and the energy-efficiency benchmarks that frame the target.',
+ },
+ contributionLevel: 'funder-convener',
+ status: 'watching',
+ },
+ {
+ area: 'neurotech',
+ opportunitySpace: 'Whole Organism Emulation (WBE)',
+ title: 'Memory retrieval in simulation',
+ signal:
+ 'A reconstructed mouse connectome simulated in silico reproduces a specific behavior the biological mouse learned before its connectome was harvested.',
+ cascade:
+ 'WBE turns from speculation into a benchmarked engineering discipline; serious policy engagement begins.',
+ contribution: {
+ inputs: 'PL Neuro benchmark definition; connectomics workshops and throughput targets; engineering capacity for a demo.',
+ activities: 'Defining the WBE benchmark, running connectomics workshops, and engineering a reference demo.',
+ outputs: 'The WBE benchmark, connectomics throughput targets, and a PL-engineered demo.',
+ },
+ contributionLevel: 'originator',
+ status: 'watching',
+ },
+]
+
+export function pointsForArea(area: FocusAreaKey | 'all'): InflectionPoint[] {
+ if (area === 'all') return INFLECTION_POINTS
+ return INFLECTION_POINTS.filter((p) => p.area === area)
+}
diff --git a/src/lib/site-config.ts b/src/lib/site-config.ts
index 72a2bd97..a56a4a8c 100644
--- a/src/lib/site-config.ts
+++ b/src/lib/site-config.ts
@@ -35,6 +35,7 @@ export const mainNav: NavItem[] = [
{ name: 'Neurotech', url: '/areas/neurotech/' },
],
},
+ { name: 'Impact', url: '/impact/' },
{ name: 'Insights', url: '/insights/' },
{ name: 'Team', url: '/authors/' },
]
From fa6f6c27a0d130f0a4e94e52219c922b0bdfc8a9 Mon Sep 17 00:00:00 2001
From: Lukas Bresser
Date: Mon, 29 Jun 2026 16:08:00 +0200
Subject: [PATCH 02/18] Refine impact dashboard copy and logic-model alignment
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Inflection section intro: drop the "pre-registering keeps us honest /
reading not an argument" tail; "pre-registered" -> "defined" threshold.
- Cards: remove the redundant "Defined" status pill (the field meter
already shows stage); rename the teaser label "Signal it happened" ->
"Inflection point".
- Detail modal: tag Q1 with "Impact" and Q2 with "Outcome" so all three
questions share the logic-model row layout used by Q3's Inputs /
Activities / Outputs.
- Measuring impact: move the "each inflection point instantiates this
chain" note above the logic-model strip; style the strip labels as
grey uppercase to match the detail cards.
- Three-questions explainer: surface each question's logic-model
stage(s) — Impact, Outcomes, and Inputs/Activities/Outputs — to tie
the section back to the cards.
- Hoist LOGIC_MODEL into lib/inflection-points so the strip, the
explainer, and the modal share one vocabulary.
Co-Authored-By: Claude Opus 4.8
---
src/app/impact/page.tsx | 37 +++++++++++----------------
src/components/ImpactDashboard.tsx | 36 ++++++++------------------
src/components/MeasuringQuestions.tsx | 32 ++++++++++++++++++-----
src/lib/inflection-points.ts | 13 ++++++++++
4 files changed, 64 insertions(+), 54 deletions(-)
diff --git a/src/app/impact/page.tsx b/src/app/impact/page.tsx
index b62a73be..30fae988 100644
--- a/src/app/impact/page.tsx
+++ b/src/app/impact/page.tsx
@@ -5,6 +5,7 @@ import MeasuringQuestions from '@/components/MeasuringQuestions'
import { fetchSimocracyStats } from '@/lib/simocracy'
import { fetchGainforestStats } from '@/lib/gainforest'
import { fetchGlowStats } from '@/lib/glow'
+import { LOGIC_MODEL } from '@/lib/inflection-points'
// Pull live output metrics for the Economies & Governance inflection points from
// the same sources as the FA2 live dashboard. These are Q3 OUTPUTS (the work
@@ -58,15 +59,6 @@ export const metadata: Metadata = {
'How we measure whether PL R&D’s work matters: the inflection points we have pre-registered across every focus area, and how we will know if they happen.',
}
-// The logic-model chain: planned work on the left, intended results on the right.
-const LOGIC_MODEL = [
- { label: 'Inputs', body: 'The resources we commit — funding, teams, convenings, standards.' },
- { label: 'Activities', body: 'What we do with them — seeding teams, building primitives, setting standards.' },
- { label: 'Outputs', body: 'The volume of work produced — teams funded, deployments, papers, ventures.' },
- { label: 'Outcomes', body: 'The changes that follow — adoption, capital inflows, new entrants.' },
- { label: 'Impact', body: 'The lasting shift in the system — an inflection point that holds.' },
-]
-
export default async function ImpactPage() {
const liveOutputs = await fetchLiveOutputs()
return (
@@ -94,10 +86,8 @@ export default async function ImpactPage() {
Inflection points we are tracking
- Select a focus area. Each card shows the pre-registered threshold (did it happen), the
- cascade we expect if it matters, and the PL contribution we would trace. Pre-registering
- the threshold now is what keeps us honest later — the answer in two years should be a
- reading, not an argument.
+ Select a focus area. Each card shows the defined threshold (did it happen), the cascade we
+ expect if it matters, and the PL contribution we would trace.
@@ -113,15 +103,23 @@ export default async function ImpactPage() {
system — not just activity or output.
- {/* Logic-model chain */}
+
+ Each inflection point instantiates this chain. On its card, the Q3 detail tracks our
+ inputs, activities, and outputs; the field meter tracks the outcomes and impact they aim
+ at.
+
+
+ {/* Logic-model chain — labels styled like the detail cards */}
- Each inflection point instantiates this chain. On its card, the Q3 detail tracks our
- inputs, activities, and outputs; the field meter tracks the outcomes and impact they aim
- at.
-
{/* The three questions — pick one to read its detail */}
diff --git a/src/components/ImpactDashboard.tsx b/src/components/ImpactDashboard.tsx
index 0d7ed7e4..f23fa6d8 100644
--- a/src/components/ImpactDashboard.tsx
+++ b/src/components/ImpactDashboard.tsx
@@ -180,7 +180,6 @@ function InflectionCard({
onOpen: () => void
}) {
const fa = FOCUS_AREAS.find((f) => f.key === point.area)!
- const status = STATUS_META[point.status]
return (