1. What counts
The 14-day threshold goes beyond the RFP, which sets no duration. It is there so the proof shows
an installation that kept working, not a single afternoon of test visits. “Accepted,
proof-checked page views” means page views in a site’s primary band. The gateway accepts no
event without a verified challenge proof (../reference/browser-proof.md),
so every stored event passed it. Page views that landed in the quarantine band are reported next
to the primary band and are never counted towards the threshold. A day the aggregation never read
breaks a run, like a day without page views.
Traffic generated by the project team, by scripts or by the platform’s own probe does not count.
If a project’s numbers on a day are mostly its own team’s testing, leave that day out of the
claim and say so in the evidence pull request.
2. Choosing the projects
- Draw up a list of SCF-awarded projects that run a public website or an HTTP API. Record, for each, the public source of its award (the link SCF publishes for it). A project whose award cannot be shown from a public SCF source is not used.
- Prefer variety over size: different frameworks (static, SPA, server rendered) and, for the API project, a language with a tested guide (../onboarding/overview.md).
- Send each candidate the pilot pack. Track each contact in the project’s issue tracker as a waiting item (who was asked, when, the answer); a session cannot do the outreach.
3. Permission to appear
Before a project’s name, numbers or screens appear in any evidence, a person who can speak for the project gives written permission. It is given in a public place that can be linked (a comment on the evidence pull request, or an issue in this repository) and covers each of these separately:
A project may give some and refuse others. A project that gives none still counts as using the
service, but cannot be one of the three named projects. Permission can be withdrawn at any time:
then its rows are removed from the next evidence file, its screenshots are replaced, and a video
that shows it is removed from the release.
Record each permission in
docs/adoption/participants.md when the first one exists, one row per
project:
4. Timeline
- Production signed off as ready (../deploy/production-readiness.md, section 9).
- Each project enrolls, adds its site and installs the snippet, or merges the pull request it was offered (pilot-pack.md). An operator confirms the first accepted page views in the project’s row on Global web. The API project creates a token and adds the second exporter; requests appear on Global API with normalized routes.
- A framework that has no tested example in ../onboarding/overview.md is checked on the real site, and its guide (new or updated) gets the date it was verified there.
- Wait until every web project has 14 consecutive days. Run the report daily (section 6) to see where each run stands; do not commit those daily runs.
- Generate the evidence file, take the screenshots, record the video, then open one pull request with all of it.
5. The evidence file
docs/adoption/evidence-YYYY-MM-DD.md is written by cmd/adoptionreport and never edited by
hand. For each tenant it holds:
- the summary: status, enrollment day, first accepted page view in the range, the longest run of consecutive days, whether the threshold is met, and the days with API requests;
- the seven web metrics of RFP 3.2 over the range: page views, unique visitors (the sum of daily unique visitors, ../reference/web-metrics.md), session duration, bounce rate, and the top referrers, countries, devices, browsers and operating systems;
- every day of the range with its primary numbers, quarantined page views and whether it counts;
- for API traffic: requests, status below 400, 4xx and 5xx, and p50 and p95 per day (percentiles are never combined across days), plus every route of the newest day with requests;
- a source table: every machine API request the numbers came from, with the request id the control plane logged and the SHA-256 of the answer, so any number can be traced to the server’s own log.
6. Extracting the numbers
Nothing in the evidence is typed by hand. An operator creates a key for this, uses it, and revokes it afterwards (../operators/api-keys.md).-
Create a key in the console under Operator, API keys: name
adoption evidence, scopemetrics:readfor all tenants, lifetime 30 days. Keep it in your shell only: -
Find the tenant ids:
If
next_cursoris notnull, repeat with?cursor=<next_cursor>appended. -
Write the evidence for the participating tenants, over a range that holds the 14 days (the
default is the 30 complete UTC days before today):
It prints the file it wrote and one line per tenant, for example
<id> <name>: longest run 16 days (2026-12-01 to 2026-12-16), meets the 14-day threshold; ....-fromand-toset the range (at most 366 days,-tonot after today),-min-daysthe threshold,-outthe directory,-forcereplaces a file of the same day.-rawkeeps every answer and an index of the requests outside the repository, for anyone who wants to check the hashes in the source table. -
Check that every web tenant says
meetsand the API tenant has days with requests. If one does not, the proof is not complete; do not adjust the range to hide a gap inside it. - Revoke the key in the console.
cmd/adoptionreport. Its end-to-end path was run on
2026-11-13 against the local development stack (a local project, real browsers through the
tracker and gateway, the Go example app through the collector); that output is not evidence and
is not in this directory.
7. Screenshots
Taken in production by an operator, at a desktop window width of at least 1440 pixels, as PNG, stored asdocs/adoption/screenshots/<YYYY-MM-DD>-<name>.png. Every screenshot shows only
projects with screenshot permission. If another project would be visible, narrow the view with
the filters until it is not; never blur or edit a screenshot.
Two numbers on each operator screenshot are checked against the evidence file of the same range
in the pull request description (for example page views and visitors of one project), so a
reviewer can see that the console and the machine API agree.
8. The tenant-perspective video
Recorded with the permission of one participating project, by a member of that project, on its real account in production. Setup, so nothing private is captured:- Use a browser profile with no other tabs, extensions or bookmarks bar, signed in to GitHub as that member. The member’s GitHub account must belong to this project only on the platform, so the console’s project list shows nothing else.
- Record the page content only, never the address bar. Open the console as an app window without
browser chrome (for Chromium:
chromium --app=https://app.<input I4>/) and capture that window, or capture a screen region that excludes the toolbar. The single-sign-on step to the web dashboard passes a short-lived token in the address bar (/sso?token=..., ../compliance/privacy-strategy.md); it must never appear on screen. - Sign in to GitHub before recording starts, so no GitHub password or two-factor code is typed on camera.
- 1920 by 1080, at least 30 frames per second, no audio or a voice-over without personal data.
Before publishing, watch the whole recording once and check: no address bar during step 4, no
token, key or secret, no other project’s name or data, no email address or GitHub notification.
If anything is visible, record again; do not edit it out.
Publishing: attach the file to a GitHub release of this repository and record its hash in the
evidence pull request:
9. The evidence pull request
One pull request adds, together:participants.md, the evidence file, the screenshots, and the
link to the release asset with its SHA-256. Its description lists the plan phase 20 checks and
how each is met:
- three web projects with at least 14 consecutive days and all seven metrics visible;
- the API project with volume, status distribution, p50 and p95 for normalized routes;
- the operator views listing all participating projects with filter, sort and comparison in use;
- the machine API returning their daily metrics with an operator key (the evidence file itself);
- the video showing the tenant experience on real data with no other tenant’s data;
- the first production SLO report (../runbooks/slo-report.md);
- no critical alert open on the day the evidence was taken.