A checkout link is computed in src/lib/rails/check.ts. checkStoreRails calls the cart tool, then sets cartOutcome to link only when the tool payload is not an error, cartContinueUrl finds an https continue_url or continueUrl, and cartHasLineItem finds at least one line. facts.cartLink is that same result. The cart tool is create_cart on the UCP endpoint when that tool is listed. Otherwise it is legacy storefront update_cart. UCP update_cart is not called. When the payload includes a cart id and cancel_cart is listed, the check calls cancel_cart afterwards. The stored flag stays link either way. The URL is redacted and is not written to the database. agent_rails.cart_status stores the word link.
The live cards read GET /api/agent-checkout/adoption, the same feed as /agent-checkout/adoption and the agent_commerce_adoption tool. loadAdoption in src/lib/rails/adoption-load.ts keeps listed hosts only, the same set as the directory and the Protocol Matrix. summarize in src/lib/rails/adoption.ts sets checkoutLink when cartStatus is the string link, and validUcpProfile when ucpProfile is valid, on the latest completed row per host. hostsChecked is that completed set. A failed latest attempt is not the denominator. An earlier completed row stays in use after a later failure. The percentage is Math.round(count / hostsChecked × 1000) / 10. asOf is the newest checkedAt among those completed rows. The route revalidates hourly, so a later read can move. Platform cards use byPlatform for the measured Shopify pool. That pool's checkoutLink and validUcpProfile rates use the Shopify host count as their out-of number, not every store checked.
The snapshot cards use the same files as /data. loadDataPageCounts in src/lib/dataset/data-page.ts reads public/data/latest/store_answers.csv and checks it against summary.json and manifest.json. Cite the version folder, not only latest/. Checkout link yes is can_agents_get_checkout_link = yes, manifest headline.checkout and headline.checkoutPct, out of headline.tested. Valid UCP profile yes is ucp_profile_valid = yes, headline.ucp and headline.ucpPct. Shopify checkout is headline.shopifyCheckout of headline.shopify. Stores not detected as Shopify are headline.otherCheckout of headline.otherPlatforms. generated_at on the manifest is the snapshot's as-of time.
A valid profile is parseUcpProfile in src/lib/rails/parse.ts returning valid. The /.well-known/ucp body parses as JSON, ucp.version is a YYYY-MM-DD string, and ucp.services has an entry with a transport, an endpoint, or a version string. An HTML page or a block is not valid. invalid, absent, blocked, and error are not in the numerator. On the snapshot, storeAnswerStats in src/lib/dataset/answers.ts counts ucp_profile_valid yes among completed rows.
Saved proves sentences for a reachable check end with REACHABLE_CHECKOUT_CLAUSE in src/lib/precheck/reachable-proves.ts (ARC did not reach checkout in this check). That clause means this check did not open the checkout page. It is still appended when a checkout link was returned. Rows that stored an older ending are published with the current sentence.
The Index scan plan is depth cart in src/lib/index/refresh.ts. That plan stops once the item is confirmed in the cart. The score formula has a depth named reached checkout. Index scans do not produce that depth. checkoutLink does not fetch the continue URL.
Checkout WebMCP is a separate read of Shopify checkout HTML. It looks for declared tool names get_checkout, update_checkout, and complete_checkout. It does not call those tools and does not send shopper data. It is not included in the checkout-link count. A browser plan depth named checkout exists for other runs and stops before payment. It is not the Index scan, and it is not a numerator on this page.
Unpublished worker drafts are written up in docs/metrics-unpublished-drafts.md in the repository. This page does not cite them.