Impact Dashboard - #29
Conversation
|
Someone is attempting to deploy a commit to the gainforest Team on Vercel. A member of the Team first needs to authorize it. |
5980f67 to
6aa15ee
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
6aa15ee to
d80db0c
Compare
Folded in the market-signal work + restructured the detail modalMerged the crowd-forecast / prediction-market work (previously the standalone #45) into this PR so it all lives in one place, and applied the review notes on the detail modal. Detail modal — now a single column, three stacked sections:
Also renamed the Permission → Policy PL role (methodology + modal). Closing #45; everything is now stacked here. |
Detail modal — round 2 of review tweaks
(The screenshot shows the reordered field section; Our hand pills + "In practice" and the separated Live signal follow below in the same modal.) |
|
Updated the inflection-point detail modal per feedback: The field, Our hand, and Live signal now each sit on their own separated grey card against the white modal backdrop, stacked and left-aligned. Live signal is now a titled card (keeping the pulsing green globe) that holds the live-output box, crowd forecast, and the See the latest … insights link. (Screenshots shared with reviewer.) |
Integrated into the /impact dashboard (stacked on PR protocol#29, not amending it): - src/lib/market-signals.ts — maps each inflection point to its closest market, choosing Polymarket vs Kalshi per match quality, with a liquidity fallback. Public Gamma + Kalshi APIs, hourly ISR. - ImpactDashboard: crowd read on the FIELD axis (card + modal), platform badge, fallback tag, gap state; never conflated with PL contribution. - impact/page.tsx: resolveAllSignals() alongside existing live outputs. For discussion only.
ddb4dc2 to
41c5506
Compare
5a6dc42 to
651cbb1
Compare
Populate contribution.outputs on the six capital inflection points with concrete PL-network ventures as examples of the Capital instrument (the HAND/contribution axis — not field progress): - Comms that can't be switched off: Fluence, Huddle01 - Personhood without the state: Tools for Humanity (World), SpruceID, Privy - Provenance as default for truth: EQTY Lab - Agents on open rails: Fluence, Spheron, Expanso, Impossible Cloud, Lava, Fleek - Public goods financeable: + Molecule - Capital paid on verified outcomes: + WeatherXM Unverified funding relationships are hedged inline pending confirmation.
- Remove the 'funding relationship to be confirmed' qualifiers from the identity / provenance / comms outputs. - Add a TEAM_LINKS registry (team name -> website) and a Linkify renderer so each mentioned venture in the 'In practice' activities/outputs lines links to its own site. Links open in a new tab (target=_blank, rel=noopener noreferrer), consistent with the live-evidence links.
…rthcoming areas - Shared HOW_TO_READ contract constant in inflection-points.ts - "How to read this" button above the card grid opens an overlay with the statement + the field / our hand / live-signal legend (3b) - Same statement as a left-ruled pull-quote in the methodology section (3a) - Explicit forthcoming flag on focus areas: AI & Robotics tab now reads "Soon" instead of "0", and its empty state leads with a "Coming Soon" pill and "Not zero, just not yet" copy
Statement still lives in the "How to read this" overlay button; the inline callout looked out of place in the methodology section.
- Add Metaculus as a third signal platform (reputation-weighted community forecasts). Token-gated API via METACULUS_API_TOKEN with graceful fallback to just linking the question when no token/live price is available. - Memory retrieval in simulation (WBE): gap -> proxy, mapped to Metaculus Q372 "brain emulation as first route to human-level AI". - Agents run on open rails: drop the "open-weights best model by Dec 31" market (about the weights, not the infra) and map to the Polymarket "US removes public access to a major AI model in 2026" market as a contrarian/headwind signal for open, permissionless rails.
…le government - Neural distillation: map to Metaculus Q372 (brain emulation as first route to human-level AI) as a neural-data-to-AI proxy. - Memory retrieval in simulation: map to Metaculus Q2813 (date of first human whole-brain emulation). Add date-question support to the Metaculus fetcher: unscale the community CDF to a median year and show it as the headline reading (e.g. "~2068") instead of a probability. - Programmable government in production: gap again — drop the shared World market, which now lives only on "Personhood without the state in the loop".
Drop the /impact-v2 toggle so PR 98 carries only the field-velocity dashboard; #29's inflection-point design stays on its own branch/preview. Remove the v1 ImpactDashboard/MeasuringQuestions and the /impact-v2 route. Rework the page: - Hero: drop the 'inflection points got demoted' genesis; name inflection points as one marker of field velocity; frame the method as the meta-research design of 'how we do field acceleration'. - Field velocity section (was 'Field acceleration, focus area by focus area'): horizontal sticky tabs (release at methodology), Our hand on the left, field velocity + live crowd signal on the right; inflection-point sensors removed. - Methodology: name the interventions first, then field velocity as the result; drop the three questions, the 'toolkit checked against history' framing, the Mokyr/condition tags, the releases/what-changed/co-funder boxes; toolkit modal now shows the description only. - Add the five velocity-measurement methods (performance curves, latency compression, idea vintage, revealed commitments, markets). - Strip visible TODO(lukas) draft markers from published copy. Applied the Lukas editing style throughout (no em-dashes, plain verbs, no significance inflation).
…as modals Field velocity section: - Drop the talent/capital/tool-cost/cadence basket and the 'Our hand' box. - Bring back PR #29's inflection-point cards (four boxes, two rows) with their live signals and detail modals. - Add one wide field-velocity box that previews the five velocity instruments with an accelerating/decelerating/flat/n-a indicator and opens a modal with the fuller descriptions. Readings default to n/a until sources are wired. Methodology: - Rename 'The interventions' to 'PL R&D interventions'; drop the draft-pending note. - Add a downward divider between the toolkit and the velocity block. - Rename 'The difference they make' to 'Observed field velocity'. - Make the five velocity metrics clickable modals. - Reword the metric descriptions as plain explanations of what each instrument is; strip named attributions (Wright, METR, Stevenson & Kording, etc.). Restore live-output fetch (Simocracy/GainForest/Glow) for the inflection cards.
…ogether - Restore the vertical focus-area tabs from PR #29 (left column with counts), replacing the horizontal sticky bar; content sits on the right. - Methodology: add an 'Our hand' eyebrow (blue) above 'PL R&D interventions' and a 'The field' eyebrow above the velocity block; shorten 'Observed field velocity' to 'Observed velocity'. - Inflection cards/modal: relabel 'How PL is making a difference' to 'PL R&D interventions' so the velocity and methodology sections read as one system.
… (#98) * Add cross-focus-area impact dashboard 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 <noreply@anthropic.com> * Refine impact dashboard copy and logic-model alignment - 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 <noreply@anthropic.com> * feat(impact): multi-role PL pills + bottleneck-based role taxonomy Replace the single contributionLevel (substrate/originator/funder-convener) with an array of PL roles named by the bottleneck each releases: Infrastructure, Legibility, Connection, Capital, Translation, Permission. Cards now render one pill per role; the Measuring-impact Q3 tab lists all six roles and its copy reflects 'one or more' instruments. * fix(impact): drop per-role descriptions from detail modal The role pill descriptions in the inflection-point modal duplicated the 'Measuring impact' Q3 explainer. Keep the role pills (with hover titles) but remove the description list so the explanation lives in one place. * fix(impact): swap Q1/Q2 (Q1=did it matter/impact, Q2=did it happen/outcome) + self-contained role tooltips - Q1 is now 'Did it matter?' (impact) and Q2 'Did it happen?' (outcome), consistent across the inflection-point detail modal and the Measuring- impact tabs (and doc comments / live-evidence notes). - Role pills now carry a label + description tooltip matching the Measuring-impact Q3 role explainer. * fix(impact): real hover tooltip on PL role pills Native title was unreliable; replace with a scoped CSS tooltip (group/role) that shows the role's label + description on hover, pulled from the same ROLE_META used by the Measuring-impact Q3 section. * impact(redesign): two-axis color tokens + role/logic-model copy Add FIELD_COLOR (teal) / HAND_COLOR (violet) tokens; update ROLE_META and LOGIC_MODEL copy to the mockup wording. * impact(redesign): cards use THE FIELD / OUR HAND split + live signal Drop focus-area color coding (neutral icons). Card now shows a teal 'field' axis (meter + did it happen & matter) and a violet 'our hand' axis (role pills + did our work help), plus a LIVE SIGNAL block for points with live outputs. Modal recolored/reordered to A (our hand) / B, C (the field). * impact(redesign): measuring A/B/C cards + color-coded chain + toolkit section Measuring-impact section: color-code the logic-model chain by axis, dot legend (not tick-boxes), and three always-visible A/B/C question cards. Extract the six PL roles into a separate 'toolkit' section. * impact(redesign): review pass - Swap axis colors: field = purple, our hand = PL blue (#1982F4); teal removed - Live signal now a pulsing green dot; 'Live outputs' -> 'Live signal' - Cards: 'Detail' affordance (subtle top-right, not a full row); 'Methodology' removed - Detail modal: wider + two-column (our hand | the field) with full-width live signal; remove repeated status badge and the field explainer; 'the signal' -> 'the inflection point'; 'Did our work help?' -> 'Is our work making a difference?' - AI & Robotics empty state: 'inflection points' instead of 'pre-registered bets' * impact: fold in redesign + detail/measuring refinements - Detail modal: inputs/activities/outputs are now headers over their text (aligned with the field side); rename 'Field progress' to 'Progress against Inflection Point'; drop 'The only axis we control' subheading. - Generic 'Live signal' footnote on cards + detail that carry live data. - Mark communication / provenance / public-goods / verified-outcomes as Emerging (early-signal). - Measuring: remove the dot legend (already conveyed in the subheader). * impact: methodology jump link, black field color, roles-as-modal, copy - Hero: add 'Our methodology' scroll link (landing-page style); rename the section to 'Our methodology' with a #methodology anchor. - Field axis color -> black (drop purple); hand stays PL blue, live green. - Methodology block: A card is wide with role pills + a subtle 'See the roles we play' link opening a pop-out roles modal; B/C narrow. Remove the standalone toolkit section. - Copy: 'Is our work making a difference?' -> 'Our contribution to field progress'; A axis line -> 'The axis we control with our partners'. * impact: simplify methodology to three questions - Remove the inputs->impact logic-model boxes; keep just the three evenly-spaced question cards. - Measuring copy: A 'What difference are we making?', B 'Did the inflection point happen?', C 'Did reaching the inflection point matter?' - Detail modal keeps short B/C; A reworded to 'How is PL making a difference?' (card hint too). * impact: make the whole 'What difference are we making?' card clickable Card A is now a button that opens the roles modal (like the inflection detail cards), with 'See the roles we play' as a subtle hover affordance instead of the only click target. * impact: link detail cards to focus-area insights + measuring copy - Detail card bottom band now spans full width: live-signal metrics (when present) plus a 'See the latest <focus area> insights' link. - Deep-link: /insights?area=<slug> pre-selects that focus-area filter (InsightsExplorer takes an initialArea; page reads searchParams). - Measuring copy: A 'Did PL's work make a difference?', B 'Were the inflection points reached?'. * prototype(impact): crowd-forecast signals on inflection points Integrated into the /impact dashboard (stacked on PR #29, not amending it): - src/lib/market-signals.ts — maps each inflection point to its closest market, choosing Polymarket vs Kalshi per match quality, with a liquidity fallback. Public Gamma + Kalshi APIs, hourly ISR. - ImpactDashboard: crowd read on the FIELD axis (card + modal), platform badge, fallback tag, gap state; never conflated with PL contribution. - impact/page.tsx: resolveAllSignals() alongside existing live outputs. For discussion only. * impact: move crowd forecast into the horizontal Live-signal band Per review: the crowd read now sits inside the modal's full-width Live signal bar (alongside PL-backed live outputs) instead of under 'Impact — the cascade' in the field column. Gap points show a separate crowd-forecast note. Field-vs-contribution caveat preserved. * feat(impact): show market volume (money at stake) in Live signal band Thread per-market USD volume through MarketSignal (Polymarket volumeNum; Kalshi dollar_volume, falling back to contract count) and render a compact '$15k at stake' chip next to the crowd probability in the modal's Live signal band. * feat(impact): restructure detail modal + fold in market signals Per review, simplify the inflection-point detail modal into a single column with three stacked sections: - The field: card title, progress meter, Outcome and Impact (moved up under the title; drop the 'Did it happen?' / 'Did it matter?' questions and A/B/C badges). - Our hand: 'How PL is making a difference' with each PL contribution category (role) as a header + description, replacing the Inputs/Activities/Outputs split. - Live signal: unchanged (live outputs + crowd forecast with money at stake). Also rename the 'Permission' PL role to 'Policy' (methodology + modal). This commit sits on top of the crowd-forecast + volume work so it all lands in the /impact dashboard PR. * refactor(impact): reorder field, separate sections, restore PL role pills - The field: move Outcome and Impact above the progress bar; wrap the whole field section in a subtle grey card for clear visual grouping. - Add clear separation (top border + spacing) before Our hand and Live signal. - Our hand: restore PL interventions as pills with the definition on hover (RoleChips), and show the point's actual activities / examples underneath ('In practice') instead of the generic role definitions. * impact: put Our hand & Live signal on grey cards like The field Match The field's grey card treatment for Our hand and the Live-signal band so all three detail sections sit on separated grey cards against the white modal backdrop, stacked and left-aligned. Live signal is now a titled card (keeping the pulsing green globe) that holds the live-output box, crowd forecast, and the 'See the latest ... insights' link. * impact: hide live-signal detail in preview; add Provenance signals Preview cards no longer render the crowd-forecast odds or live-output metrics inline — they just show a small pulsing 'Live signal' marker so there's a reason to open the card. The full crowd forecast, live metrics, and evidence links stay in the detail modal. Also make liveEvidence a list so a point can carry multiple real-world signals, and add two to 'Provenance becomes the default for truth': Starling Lab's content-authenticity displays and Wikipedia-on-IPFS during Turkey's block. * impact: move Turkey Wikipedia-on-IPFS signal to 'Communication that cannot be switched off' The censorship-shutdown example fits the resilient-comms inflection point, not provenance. Provenance keeps the Starling Lab authenticity signal. * impact: make two-axis accents dark-mode legible The 'field' axis used a hard black (#131316) via inline styles, so in dark mode the field labels, the progress-bar fill, the active focus-area tab icon, and the B/C badges all went black-on-black. Route FIELD_COLOR / HAND_COLOR (plus new FIELD_INK and FIELD_TRACK) through theme-aware CSS variables that flip in dark mode: the field ink becomes light, the badge fill flips with dark ink, and the progress track darkens. Light mode is unchanged. * impact: drop GainForest/Glow Q3 evidence line from outcomes-verified note * radar: auto-advance slides with story-style progress bars * Add named Capital-role ventures as contribution outputs Populate contribution.outputs on the six capital inflection points with concrete PL-network ventures as examples of the Capital instrument (the HAND/contribution axis — not field progress): - Comms that can't be switched off: Fluence, Huddle01 - Personhood without the state: Tools for Humanity (World), SpruceID, Privy - Provenance as default for truth: EQTY Lab - Agents on open rails: Fluence, Spheron, Expanso, Impossible Cloud, Lava, Fleek - Public goods financeable: + Molecule - Capital paid on verified outcomes: + WeatherXM Unverified funding relationships are hedged inline pending confirmation. * Linkify named ventures in contribution copy; drop hedge text - Remove the 'funding relationship to be confirmed' qualifiers from the identity / provenance / comms outputs. - Add a TEAM_LINKS registry (team name -> website) and a Linkify renderer so each mentioned venture in the 'In practice' activities/outputs lines links to its own site. Links open in a new tab (target=_blank, rel=noopener noreferrer), consistent with the live-evidence links. * Fix inflection point card text: 'How PL is making a difference' * impact: relabel field subtitle to 'Inflection point status and impact' * impact: add "How to read this" overlay + methodology callout, mark forthcoming areas - Shared HOW_TO_READ contract constant in inflection-points.ts - "How to read this" button above the card grid opens an overlay with the statement + the field / our hand / live-signal legend (3b) - Same statement as a left-ruled pull-quote in the methodology section (3a) - Explicit forthcoming flag on focus areas: AI & Robotics tab now reads "Soon" instead of "0", and its empty state leads with a "Coming Soon" pill and "Not zero, just not yet" copy * impact: drop the "How to read this" methodology pull-quote Statement still lives in the "How to read this" overlay button; the inline callout looked out of place in the methodology section. * impact: retune crowd-forecast markets - Add Metaculus as a third signal platform (reputation-weighted community forecasts). Token-gated API via METACULUS_API_TOKEN with graceful fallback to just linking the question when no token/live price is available. - Memory retrieval in simulation (WBE): gap -> proxy, mapped to Metaculus Q372 "brain emulation as first route to human-level AI". - Agents run on open rails: drop the "open-weights best model by Dec 31" market (about the weights, not the infra) and map to the Polymarket "US removes public access to a major AI model in 2026" market as a contrarian/headwind signal for open, permissionless rails. * impact: reassign Metaculus WBE forecasts + drop World from programmable government - Neural distillation: map to Metaculus Q372 (brain emulation as first route to human-level AI) as a neural-data-to-AI proxy. - Memory retrieval in simulation: map to Metaculus Q2813 (date of first human whole-brain emulation). Add date-question support to the Metaculus fetcher: unscale the community CDF to a median year and show it as the headline reading (e.g. "~2068") instead of a probability. - Programmable government in production: gap again — drop the shared World market, which now lives only on "Personhood without the state in the loop". * impact: rename 'Capital' role to 'Funding' in methodology modal * impact-v2: add acceleration-centered data model (field-velocity.ts) Y=field acceleration via a per-FA velocity basket; inflection points demoted to pre-registered sensors (dated/falsifiable, misses kept); X restructured to tool -> targeted condition -> what we did -> observed movement. Imports from inflection-points.ts as the single source of truth; no v1 files touched. Real unknowns left as explicit TODO(lukas) placeholders. * impact-v2: add ImpactDashboardV2 (velocity basket + sensors + our hand) Field card leads with the velocity basket (trend glyphs; unknown renders honest grey) then a 'Our sensors: inflection points' list with the five status states. Hand card shows tool -> condition -> movement with a proposed-tool badge. Reuses market-signals crowd forecasts on the field axis in the sensor modal. * impact-v2: add MeasuringQuestionsV2 methodology section Three compact blocks: X->Y logic model, the three questions, and 'The toolkit, checked against history' (seven entries, each opening a modal with the full description + what-changed + co-funder gap). Adds a 'Where we need co-funders' panel. All seven historical conditions covered by releases: tags. * impact-v2: add /impact-v2 route (reframe hero + cross-link to /impact) Separate route/component tree from v1. Kept out of nav + sitemap to mirror the existing draft gating on /impact. Low-key cross-link back to the original methodology lives on v2 only. * impact-v2: add side-by-side screenshots (both dashboards, light + dark) Cards + modals for /impact (v1, unchanged) and /impact-v2 (velocity basket, sensor states incl. retired + missed-field-moved, toolkit modal, how-to-read). * impact: single field-velocity dashboard at /impact Drop the /impact-v2 toggle so PR 98 carries only the field-velocity dashboard; #29's inflection-point design stays on its own branch/preview. Remove the v1 ImpactDashboard/MeasuringQuestions and the /impact-v2 route. Rework the page: - Hero: drop the 'inflection points got demoted' genesis; name inflection points as one marker of field velocity; frame the method as the meta-research design of 'how we do field acceleration'. - Field velocity section (was 'Field acceleration, focus area by focus area'): horizontal sticky tabs (release at methodology), Our hand on the left, field velocity + live crowd signal on the right; inflection-point sensors removed. - Methodology: name the interventions first, then field velocity as the result; drop the three questions, the 'toolkit checked against history' framing, the Mokyr/condition tags, the releases/what-changed/co-funder boxes; toolkit modal now shows the description only. - Add the five velocity-measurement methods (performance curves, latency compression, idea vintage, revealed commitments, markets). - Strip visible TODO(lukas) draft markers from published copy. Applied the Lukas editing style throughout (no em-dashes, plain verbs, no significance inflation). * impact: inflection cards + wide field-velocity box; velocity metrics as modals Field velocity section: - Drop the talent/capital/tool-cost/cadence basket and the 'Our hand' box. - Bring back PR #29's inflection-point cards (four boxes, two rows) with their live signals and detail modals. - Add one wide field-velocity box that previews the five velocity instruments with an accelerating/decelerating/flat/n-a indicator and opens a modal with the fuller descriptions. Readings default to n/a until sources are wired. Methodology: - Rename 'The interventions' to 'PL R&D interventions'; drop the draft-pending note. - Add a downward divider between the toolkit and the velocity block. - Rename 'The difference they make' to 'Observed field velocity'. - Make the five velocity metrics clickable modals. - Reword the metric descriptions as plain explanations of what each instrument is; strip named attributions (Wright, METR, Stevenson & Kording, etc.). Restore live-output fetch (Simocracy/GainForest/Glow) for the inflection cards. * impact: vertical tabs (PR #29 layout); tie velocity and methodology together - Restore the vertical focus-area tabs from PR #29 (left column with counts), replacing the horizontal sticky bar; content sits on the right. - Methodology: add an 'Our hand' eyebrow (blue) above 'PL R&D interventions' and a 'The field' eyebrow above the velocity block; shorten 'Observed field velocity' to 'Observed velocity'. - Inflection cards/modal: relabel 'How PL is making a difference' to 'PL R&D interventions' so the velocity and methodology sections read as one system. * impact: drop draft framing; sticky vertical tabs; velocity label outside box; add inflection-points explainer - Remove draft/discussion language: the 'Draft for review' badge, the velocity modal's 'being wired / n/a until source connected' note, and the forthcoming empty state's 'coming soon / plan of attack' copy. - Intro jump link: 'How we measure this' -> 'Learn more about our methodology'. - Move the 'Field velocity - Is the field speeding up?' label outside the box, matching the 'Inflection points we're tracking' label style. - Make the vertical focus-area tabs sticky while scrolling the velocity section. - Add an 'Inflection points' box to the methodology's Observed velocity section with a short explainer, opening a modal. * impact: single-source velocity instruments with per-field states + charts Task 1/2/5: move the five instrument definitions into src/lib/velocity-instruments.ts as the single source of truth for that prose (rendered only in the definition modal). Declare per-focus-area instrument records with three states (reading / unwired / not_applicable), ragged by field, enforced by a build-time assertion (reading needs value+asOf+>=1 source; unwired needs candidateMetric+blocker; not_applicable needs reason). Task 3: velocity box and aggregate modal become chart slots. Add an inline SVG sparkline (log axis, confidence band, dashed unreliable tail, optional secondary normalizer line) for readings-with-series, a compact stat block for readings-without-series, an identical abstract blurred aria-hidden ghost chart for unwired, and a muted line for not_applicable. The aggregate modal is readings-and-charts only; each instrument title links to its definition modal. Task 5: seed readings from public sources (AI performance curve = METR time horizon; Neurotech performance curve = Stevenson & Kording neuron series; DHR revealed commitments = Electric Capital). Everything else is honest unwired or not_applicable. Task 6: verbatim copy for the intro, the field-velocity standfirst, the aggregate modal intro, the Observed-velocity standfirst, the instrument footnote, and the state microcopy. Stacks on #98. Draft gating unchanged. * impact: inflection points carry outcome x mattered (Task 4) Split marker resolution into independent outcome (pending/reached/missed/retired) and mattered (unknown/too_early/yes/no) so a marker can resolve true while the field goes nowhere. Derived label in one helper; mattered is never inferred from outcome. Build-time assertion requires matteredEvidence when mattered is yes/no and retiredReason when retired. Every existing marker seeded pending/unknown with predictedBy/falsifiesIf null, rendered visibly as 'date not yet set' / 'condition not yet set'. Card face shows the derived label, review date, and the two null-aware fields; the modal adds evidence/retired-reason when present. A misses ledger near the list surfaces missed/retired/reached-without-lift markers and renders at zero count. * impact: wire idea vintage (+ talent entry) from OpenAlex CSVs Follow-up to the field-velocity work. One instrument has a real data path, so it leaves the ghost state. - Ingestion: src/lib/velocity-openalex.ts parses one CSV per focus area at build time (never in the browser), retaining the # provenance lines and surfacing the frozen query string + generated date in the modal. Missing CSV => the documented unwired record (candidateMetric 'median reference age from OpenAlex', blocker 'awaiting first run of scripts/velocity/field_velocity_openalex.py', owner Lukas). - idea_vintage: series = median reference age with a ci_lo/ci_hi band; reliable=0 years render as a dashed tail and are excluded from direction. Direction is INVERTED (a falling median = building on fresher ideas = accelerating), computed in scripts/velocity/vintage-direction.mjs and covered by a node:test unit test (npm test). - revealed_commitments: the same CSV wires first_time_authors (talent entry) as the primary line with corpus_share_per_100k as a dashed normalizer; metric names it as the talent-entry component, with capital and job postings still unwired. Where a field already had a sourced reading (DHR / Electric Capital) the chart augments it. - Chart component gains a confidence band, a dashed unreliable tail, and a secondary normalizer line. Caveat rendered in both instrument modals. - Docs: src/data/velocity/README.md (CSV contract + frozen query strings) and scripts/velocity/README.md. No CSVs committed; the generator .py is added separately from Lukas's copy. - Demo screenshots (light + dark) captured from a throwaway CSV, which was deleted before this commit so no synthetic data lands. Stacks on #98. Draft gating unchanged. * impact: markets live from mapped forecasts, card/copy polish, real OpenAlex generator UI/copy pass on the field-velocity page: - Hero: retitle to 'PL R&D's impact on field velocity' and let the intro paragraphs run full width. - Inflection cards: drop the Defined/Emerging/Reached/Scaling progress bar, keep the status label. - Move the 'How to read this' button into the sticky focus-area column (under the last tab) so it stays visible while scrolling. - Field-velocity modal: remove the 'Owner: Lukas' line from unwired instruments. - Markets instrument: bring it back for Neurotech, and surface the live forecast markets already mapped to each field's inflection points (Polymarket / Kalshi / Metaculus) both in the box (compact) and the modal (full list + reflexivity caveat). EG markets becomes the not_applicable example (its markers are white space); DHR markets becomes unwired since it has proxy markets. Generator: - Add scripts/velocity/field_velocity_openalex.py (real, CC0). It queries the OpenAlex FILTER cluster (title_and_abstract.search, | = OR) to dodge the gated anonymous fulltext search, samples works per year, resolves referenced-work years, and bootstraps the idea-vintage median + CI. certifi TLS; capped backoff so an anonymous multi-hour 429 fails fast instead of sleeping. first_time_authors is intentionally left blank (a robust count needs per-author history, not a constant-size sample). No CSVs committed. Stacks on #98. * impact(data): real OpenAlex idea-vintage CSVs for all four focus areas Pulled via scripts/velocity/field_velocity_openalex.py (OpenAlex, CC0) with the frozen per-field query strings. Each CSV carries its query + generated date in the # provenance block. idea vintage now renders a live chart with CI band, dashed unreliable tail (2024+), and the inverted direction; markets already read the mapped live forecasts. first_time_authors left blank by design. Regenerate + overwrite to refresh; git history is the time series. No secrets in the data (API key passed only at runtime). Stacks on #98. * impact: idea-vintage axis + start->latest comparison; explain in methodology modals - Sparkline extracted to a shared component (src/components/VelocitySparkline.tsx) and given an optional labelled vertical axis (min/max of the series). Enabled on the idea-vintage charts (box + modal) so the reader can see what the curve indexes to (years). - Idea vintage reading now states a start->latest comparison in its trend line (e.g. '8.x y in 2005 -> 6.0 y in 2023, lower = fresher ideas') instead of only a direction word. - Methodology idea-vintage modal now renders the real per-field series as small multiples ('What it looks like today'). - Methodology inflection-points modal gains the abbreviated named x mattered framing: the two axes, the four quadrants (good case / hit-that-doesn't-lift / unnamed acceleration / noise), canonical examples (k genome, AlphaFold, Watson, AlexNet, transformers, HTS magnets), and the design implication. Stacks on #98. * impact(fix): idea-vintage direction must agree with the numbers shown Bug: E&G showed '6.0y -> 7.0y' (references getting OLDER) yet a green 'Accelerating' chip. The chip used a trailing single-year slope while the text used two raw endpoints, and on a noisy sampled series they disagreed and over-claimed. Fix: derive BOTH the direction chip and the comparison text from one calculation — the mean of the earliest 3 reliable years vs the most recent 3 — with a 0.75y flat band so an in-noise wobble reads 'flat', not a trend. The comparison now shows those same window averages (e.g. '6.0y avg (2005-2007) -> 6.3y avg (2021-2023)'). Result on the real data: E&G flat (6.0->6.3), DHR decelerating (5.0->7.0), AI accelerating (5.3->3.7), Neurotech decelerating (6.3->8.7). Unit test updated to cover the in-noise = flat case. Stacks on #98. * impact(methodology): explain how the idea-vintage sparkline is built from OpenAlex, and the guards Address three OpenAlex pitfalls, and make the previously-bare sparklines legible: - 'How the chart is built': per-year keyword-cohort sample -> resolve each reference's publication year -> pooled median age -> bootstrap CI band -> early-vs-recent direction with a flat band. States it is a sampled estimate. - 'What we guard against in OpenAlex': (1) size is not velocity, so we read an age not a count and normalize any counts against corpus growth; (2) labels drift, so cohorts are frozen title+abstract keyword queries, not OpenAlex topic labels, with the query + retrieval date stored per series; (3) recent years lag, so the last ~2 years are dashed, excluded from direction, and compared like windows. - Aggregate-modal provenance now reads 'Keyword cohort (title + abstract): <query> retrieved <date>' to make the cohort + snapshot explicit at the point of use. Copy only; the underlying pipeline already used keyword cohorts, an age metric, and a reliable-year cutoff. Stacks on #98. * impact(copy): name OpenAlex in the idea-vintage modal and convey careful use Lukas-style pass on the idea-vintage methodology copy: - 'How we build this from OpenAlex' now names the source up front (an open, CC0 catalogue of 250M+ works and their reference lists) and walks the build: keyword-cohort sample -> resolve each reference year -> pooled median age -> bootstrap CI -> early-vs-recent direction with a flat band. - Guards retitled 'Reading OpenAlex without its artefacts' with a one-line lead that OpenAlex is a moving target, then the three habits (age not count; frozen keyword cohort not topic labels; dash and drop lagging recent years). - Tightened wording (plain verbs, no em-dashes, specific numbers). Copy only. Stacks on #98. * impact: remove the maturity progress bar from the modal and cards The four-step Defined -> Emerging -> Reached -> Scaling bar mixed a state of our own naming with states of the world; outcome x mattered now carries resolution. Drop it from the detail modal and the card stage label, delete the unused maturity field/type/helpers (InflectionStatus, FIELD_STAGES, stageIndexForStatus, STATUS_META, FIELD_TRACK), and fix the status line to read 'not yet reviewed' instead of 'reviewed not yet'. * impact: fold an attribution note into the interventions block Under 'PL R&D interventions', add a short, honest note: we don't claim our interventions directly cause a field to accelerate (attribution at the field level isn't cleanly identifiable); for now we name what we run and watch whether the field moves, and intend to make the link clearer and publish it later. No separate section, no grading machinery. * Make impact dashboard an unlisted, non-indexed preview route - Move /impact -> /impact-preview-eb61fba1b98e (cryptic, unguessable slug) - Remove Impact from main nav so it isn't discoverable on the site - Add robots noindex/nofollow (page + googleBot); already absent from sitemap - Deliberately NOT added to robots.txt (would publish the secret path) - Update stale /impact doc reference --------- Co-authored-by: Lukas Bresser <noreply> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Lukas Bresser <lukas@bress.xyz> Co-authored-by: lksbrssr <lksbrssr@users.noreplace.github.com> Co-authored-by: Lukas Bresser <lukas@plrd.org> Co-authored-by: lksbrssr <lksbrssr@users.noreply.github.com>
|
Closing as superseded. This v1 Impact Dashboard was reframed into the v2 field-velocity dashboard in #98, which is now merged to main — the live |



Summary
Cross-focus-area impact dashboard at
/impact, built around a two-axis model: 🔵 our hand (the work we control with partners — the PL toolkit) and ⚫ the field (the change in the world, which moves with or without us). A "Our methodology" jump link in the hero takes first-time readers straight to the explainer.What it does
Notes
FIELD_COLOR/HAND_COLOR/LIVE_COLOR) live ininflection-points.ts.main;npm run buildpasses. (The former 🎨 Impact dashboard redesign — two-axis (the field / our hand) #35 redesign is folded in here.)