Skip to content

feat(report): lead with the solution and apply review feedback - #17

Merged
blimmer merged 5 commits into
mainfrom
refactor/report-review-comments
May 27, 2026
Merged

feat(report): lead with the solution and apply review feedback#17
blimmer merged 5 commits into
mainfrom
refactor/report-review-comments

Conversation

@blimmer

@blimmer blimmer commented May 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Applies the round of reviewer feedback on the Chromatic story for the HTML report. The biggest change is structural — the report now leads with the PatchWave solution and promotes the cost assumptions to a hero-level control instead of a buried footnote — alongside a bump to the default cost assumptions and a few targeted UI fixes (severity-bar histogram, GitHub severity colors, CTA copy). The latest commit clarifies that the headline cost counts only merged PRs and surfaces the open PR backlog (count + average age) in its own section.

Review focus

  • Default cost assumptions ($150/hr → $200/hr, 5 → 12 min/PR). These drive every headline number in the report, so the bump is deliberately the most consequential change here. Worth a sanity check on whether $200/hr (≈$400k loaded / 2,000 hrs) and 12 min/PR read as "conservative" to a buyer, since the report still frames them that way.
  • Assumptions UX moved from a footnote to a hero disclosure. This removes AssumptionsFootnote and the appendix-assumptions deep-link/disclosure path entirely. Please confirm there's no remaining surface that linked to the old anchor.
  • Framing the headline as a floor instead of pricing the backlog. We deliberately did not fold a one-time "cost to clear the backlog" into the headline — those payoff assumptions are hard to defend in a pitch and would muddy a number whose credibility comes from tracing to observed, merged work. Instead the headline notes it excludes open PRs — "(not including the N still open)" — and the Open PR age section surfaces the count still open and their average age (new PrBacklog.openAvgAgeDays). Worth a gut check that the merged-only framing reads as honest-conservative, and that the hero "N still open" intentionally mirrors the stat in the backlog section.

Commits

  • 28222ba — feat(report): lead with the solution and apply storybook review feedback
  • 9f0e74d — feat(report): raise default cost assumptions
  • 1b2569f — feat(report): match CVE severity bars to GitHub's colors
  • 23f295d — fix(report): drop arrow from waitlist CTA label
  • c52e637 — feat(report): note the headline excludes open PRs and surface the backlog

blimmer added 4 commits May 27, 2026 10:12
Restructures the HTML report around reviewer feedback on the Chromatic
story: the solution now leads, the assumptions are a hero-level control,
and several sections are reworked.

- Hero: drop the secondary stat line; surface the global assumptions as a
  collapsed disclosure (numbers shown, expands to edit)
- Lead with the 'Today vs. PatchWave auto-merge' solution section; the
  full waitlist CTA closes the report above the methodology, with a short
  'Join the waitlist' button ending the solution section
- Calculator: tick dots at slider break points, relabel the center metric
  to 'PRs auto-merged' to match the slider, and a theme-aware --savings
  green for light-mode contrast
- Cost table: add a Time (hrs) column
- Collapse the 90-180/180+ PR-age buckets into a single 90+ bucket
- Render top repos by severity as a horizontal stacked-bar histogram
- Derive the story's global CVE totals from the per-repo rows so they
  reconcile
- Remove the adjustable-assumptions footnote now that the control is in
  the hero
Bump the modeled defaults from $150/hr and 5 min/PR to $200/hr and
12 min/PR. The $200/hr default reflects a ~$400k fully-loaded engineer
cost over 2,000 working hours, and 12 min/PR covers the context switch,
review, and merge for a single PR. The headline cost, per-person table,
and savings scenarios all recalculate from these constants, and the
methodology copy and test fixtures track the new values.
Introduce a dedicated --severity-* palette pulled from GitHub's Primer
severity roles (danger/severe/attention/neutral) and point the stacked
bar, per-repo bars, and the oldest-open age cells at it, so severities
read the same here as in GitHub's security UI in both light and dark mode.
@blimmer
blimmer marked this pull request as ready for review May 27, 2026 16:15
@blimmer
blimmer requested a review from jcarver989 as a code owner May 27, 2026 16:16
…klog

The headline cost counts only merged PRs, so it now says so — "(not including the N still open)" — framing the number as a defensible floor rather than appearing to ignore the backlog.

The Open PR age section now leads with the count still open and their average age, computed from a new PrBacklog.openAvgAgeDays. The methodology appendix notes that open PRs are excluded from the cost and reported there instead.

@jcarver989 jcarver989 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Took a look in Chromatic and changes look good!

It would be nice to sync colors from website at some point but don't think that should block us here.

Note: I didn't really look at the code this time around since it's a prototype report.

@blimmer
blimmer merged commit dbad8d8 into main May 27, 2026
9 checks passed
@blimmer
blimmer deleted the refactor/report-review-comments branch May 27, 2026 17:19
blimmer pushed a commit that referenced this pull request May 27, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.2.0](v0.1.1...v0.2.0)
(2026-05-27)


### Features

* **report:** lead with the solution and apply review feedback
([#17](#17))
([dbad8d8](dbad8d8))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: contextbridge-pr-automation[bot] <259134118+contextbridge-pr-automation[bot]@users.noreply.github.com>
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.

2 participants