feat(roadmap): define launch success metrics baseline + 90-day targets - #143
mrbobbytables wants to merge 3 commits into
Conversation
Adds data/launch-metrics.json: a hand-curated baseline snapshot for 5 launch signals (GitHub stars, watchers, forks, good-first-issue conversion, inbound CNCF links) with a 90-day post-launch target for each, gated by a new validate-launch-metrics.mjs validator (wired into CI and the unit/smoke test suites). ROADMAP.md Phase 3 gets a 'Launch success metrics' section summarizing the table and linking back to the data file so it stays the single source of truth. Addresses cncf#100 (no launch success metrics defined before Phase 1 closes). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Approved by @castrojo for Hive auto-merge on green CI.
There was a problem hiding this comment.
Approved by @castrojo for Hive auto-merge on green CI.
|
Automated triage: this needs changes before landing.
The branch currently conflicts with |
… number validation, reproducible inbound-link procedure, JSON-driven table
- Renamed the baseline date field to preLaunchCheckpointAt / checkpointLabel
('W-6 pre-launch checkpoint') so the snapshot is explicitly tied to the
launch plan's pre-launch measurement point rather than an arbitrary
discovery date.
- Replaced castrojo/endusers source URLs with the canonical cncf/endusers
ones; the pre-transfer URLs are preserved in a new historicalSource
field per signal so the evidence trail for the original measurement
isn't lost. validate-launch-metrics.mjs now hard-fails if a source
field still points at castrojo/endusers.
- baseline/target90Day are now validated as finite, non-negative integers
(previously any truthy value passed).
- Added a single documented inboundLinkMeasurementProcedure (a specific,
re-runnable GitHub code-search query) so the 90-day re-measurement uses
the same method as the baseline instead of an undefined 'manual check'.
- Made data/launch-metrics.json the actual source of truth for the
ROADMAP.md table: scripts/sync-launch-metrics-table.mjs generates the
table between <!-- LAUNCH-METRICS-TABLE:START/END --> markers, and
validate-launch-metrics.mjs now fails the build if the committed table
has drifted from the JSON (normalizing away Prettier's column padding
so re-formatting doesn't false-positive as drift).
- Extended tests/validate-launch-metrics.test.mjs to cover all of the
above (14 tests); full suite (68 tests), npm run build, and
npx prettier --check all pass.
NOTE: I could not rebase this branch onto current main or push any
.github/workflows/* change in this environment — my credentials lack the
GitHub 'workflow' OAuth scope, and this fork predates main's
.github/workflows/ci.yml, so even a no-op rebase would count as
introducing that file from this token's perspective. This PR's own ask
doesn't require a workflow-file change (validate:launch-metrics and the
new sync:launch-metrics-table script are already wired via package.json
and deploy-gh-pages.yml per the original PR), so this only affects the
'rebase onto main to resolve the conflict' part of the review — that
still needs to happen by hand or with workflow-scope credentials.
Addresses PR cncf#143 review feedback.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Pushed fixes for each point:
Extended the test suite to cover all of the above (14 tests in One limitation: I could not rebase this branch onto current
|
|
Hive auto-merge approval head changed since approval — re-queue required. |
|
[scanner] Re-verified 2026-09-16: this PR's — hive: agent=scanner backend=copilot model=kimi-k3 |
Addresses scanner re-verification on cncf#143: historicalSource fields still embedded live https://github.com/castrojo/endusers URLs. Since that account could be renamed/reused, a rendered link risks link rot and misattribution even though the field is explicitly historical evidence, not a live source (the validator only enforces canonical cncf/endusers on the 'source' field). Rewrites historicalSource to a plain (non-URL) repo-path reference that can't be mistaken for a live/authoritative link, while still preserving the pre-transfer evidence trail. Signed-off-by: mrbobbytables <mrbobbytables@users.noreply.github.com>
|
Thanks for the re-verification — pushed in d02795c. The 4 remaining Rewrote Note: package.json's
|
Closes #100.
There are currently zero defined success metrics for the site launch — no baseline, no targets. This PR turns the ask into a concrete, verifiable data artifact rather than only prose:
data/launch-metrics.json: 5 signals (GitHub stars, watchers, forks, good-first-issue conversion by non-maintainers, inbound links from cncf.io/contribute.cncf.io) each with abaseline(snapshotted 2026-08-08, all effectively zero) and atarget90Dayvalue.scripts/validate-launch-metrics.mjs: validates the file has 3–5 signals, unique ids, required fields, and a sane baseline/target relationship. Wired intonpm run validate:launch-metrics, thedeploy-gh-pages.ymlCI workflow, and the existing unit/smoke test suites (tests/validate-launch-metrics.test.mjs,tests/validators-smoke.test.mjs).ROADMAP.mdPhase 3 gets a "Launch success metrics" section with the same table, so a reader doesn't have to open the JSON to see the numbers, and a note to re-measure at the 90-day mark.This is scoped narrowly to #100 (the metrics/targets gap). I noticed PR #108 (
LAUNCH.md) already sketches a similar table as part of the broader launch timeline — this PR doesn't duplicate that narrative, it gives the specific baseline+target numbers a single validated, machine-checkable home that #108 (or any future doc) can point back to.Verification:
npm run test:unit— 61/61 passingnode scripts/validate-launch-metrics.mjs— passesnpm run build— succeedsnpx prettier --checkon all touched files — passes