Skip to content

Impact page: drop the progress bar, soften attribution, ship as an unlisted preview (stacks on #98) - #102

Closed
lksbrssr wants to merge 5 commits into
lukas/impact-v2from
lukas/impact-attribution
Closed

Impact page: drop the progress bar, soften attribution, ship as an unlisted preview (stacks on #98)#102
lksbrssr wants to merge 5 commits into
lukas/impact-v2from
lukas/impact-attribution

Conversation

@lksbrssr

@lksbrssr lksbrssr commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Cleans up the impact page and ships it as an unlisted preview. Stacks on #98 (base is lukas/impact-v2, not main).

What this does

1 — Remove the maturity progress bar. The four-step Defined → Emerging → Reached → Scaling bar comes out of the detail modal and the inflection-point cards; outcome × mattered already carries resolution. Deletes the now-unused maturity code (no dead paths) and fixes the status line to read not yet reviewed.

2 — Keep the field-velocity dashboard clean. An earlier pass wove tier-graded contribution claims through the modal, an aggregate strip, and the OUR HAND block. That was too much machinery for work we haven't actually done yet, so it's all been taken back out — the modal's OUR HAND is the original In practice block again, and there's no strip. The claim data model, seed, and unit tests are removed.

3 — Soften attribution to a single methodology section. In place of the grading ladder, the methodology gains one short block, "How we think about attribution":

We don't claim our interventions directly cause these fields to accelerate. Field-level attribution isn't cleanly identifiable — four fields, no counterfactual, effects that lag years, and interventions small next to the forces already moving a frontier. For now we hold that gap honestly: we name the interventions we run and read whether the field moves, without drawing a causal line between the two. Making that loop clearer is work we intend to do, and plan to publish here later.

4 — Ship it as an unlisted, un-indexed preview. The impact experience is a draft, so it's kept off the public surface:

  • Page body extracted into ImpactExperience so the canonical /impact route and a hidden preview route render identically.
  • Cryptic route /impact-preview/<key>/ with dynamicParams = false and a single generateStaticParams key — only the exact secret URL resolves, every other key 404s. Shows an "Unlisted preview" ribbon.
  • Both routes are robots: noindex, nofollow; Impact is removed from the nav; robots.txt disallows added; neither route is in the sitemap.
  • Rotate PREVIEW_KEY to invalidate an old link. (Preview URL shared privately, not in this description.)

Build / tests

  • npm run build compiles cleanly (tsc + lint pass); /impact and the preview route generate; wrong preview keys 404.
  • node --test green.
  • Draft-gated; no language claiming the methodology is final.

Screenshots (light + dark)

Methodology — "How we think about attribution"

Unlisted-preview ribbon + nav without "Impact"

lksbrssr added 3 commits August 3, 2026 14:10
Task 1 — remove the four-step Defined->Emerging->Reached->Scaling bar from
the detail modal and the equivalent card stage label. The bar mixed a state
of our own naming with states of the world; outcome x mattered now carries
resolution. Delete the unused maturity field/type/helpers (InflectionStatus,
FIELD_STAGES, stageIndexForStatus, STATUS_META, FIELD_TRACK). Fix the status
line to read 'not yet reviewed' instead of 'reviewed not yet'.

Task 2 — OUR HAND now renders a graded ContributionClaim per marker: whatWeDid,
a tier badge with its short name, confidence, the counterfactual (or its muted
null state), an Evidence(n) expander holding traced links and testimony, and a
visible 'written retrospectively' marker. Testimony that goes against us is
never filtered or demoted. LIVE SIGNAL stays its own block.

Task 3 — add the aggregate claims strip above the cards (mirrors the misses
ledger, never suppresses a zero) plus the expandable unmarkered-claims line.
Add src/lib/contribution-claims.ts: the ContributionClaim model, tier labels
and the five verbatim tier definitions, an honest seeder (whatWeDid <- IN
PRACTICE activities; tracedLinks <- named projects already linked in outputs;
tier 2 where a checkable link exists else 1; counterfactual null; testimony
omitted; confidence low; retrospective true; dates today), tally helpers, and
a build-time assertion mirroring the instrument-records pattern.

Enforce the model rules with node --test: tier>=3 requires testimony; adverse
testimony always renders; all-adverse testimony forbids high confidence;
not_supported/withdrawn require a reason and stay rendered; registeredAt<=asOf;
retrospective carries a visible marker.
…enshots

Third methodology block after interventions and observed velocity, following
the same layout, with id=evidence-grading (the strip's 'How we grade our
evidence' link target). Verbatim standfirst, the five tier definitions, and
the reflexivity note. Add light/dark screenshots of the claim modal (Evidence
expanded), the aggregate strip, and the methodology block.
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
plrd.org Ready Ready Preview Aug 3, 2026 9:00pm

Request Review

lksbrssr added 2 commits August 3, 2026 14:58
The impact experience is a draft, so keep it off the public surface until it
is signed off:

- Extract the page body into ImpactExperience so the canonical /impact route
  and a hidden preview route render identically (no duplication).
- Add /impact-preview/<key>/ with dynamicParams=false and a single
  generateStaticParams key, so only the exact secret URL resolves and every
  other key 404s. The page shows an 'Unlisted preview' ribbon.
- Mark both routes robots noindex/nofollow; drop 'Impact' from the nav; add
  robots.txt disallows. Neither route is in the sitemap.

Rotate PREVIEW_KEY to invalidate an old link.
The tier-graded contribution claims woven through the modal, the aggregate
strip, and the OUR HAND block read as too much machinery for work we have not
actually done yet. Take it back out of the field-velocity dashboard entirely:

- Restore the modal's OUR HAND 'In practice' block (activities + outputs).
- Remove the aggregate claims strip and the unmarkered-claims line.
- Delete the contribution-claim data model, seed, and unit tests.

Keep only a single, softer methodology section, 'How we think about
attribution': we don't claim our interventions directly cause these fields to
accelerate, we hold that gap honestly for now, and we intend to make the loop
clearer and publish it here later. Swap the screenshots accordingly.
@lksbrssr lksbrssr changed the title Fold attribution into the inflection-point modals; drop the progress bar (stacks on #98) Impact page: drop the progress bar, soften attribution, ship as an unlisted preview (stacks on #98) Aug 3, 2026
@lksbrssr

lksbrssr commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

Folded into #98 — these three commits now live on lukas/impact-v2 directly (progress-bar removal, attribution note in the interventions block, and the unlisted preview route). Closing this stacked PR; no longer needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant