You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The assumption the whole layer rests on is re-checked automatically, on the tool the layer actually ships with.
Scope
The measurement campaign (#632) proved that a hook's session identifier equals the one the export carries. It proved it by running one session, not by construction, and a tool update can break it without notice. The campaign's own conclusion was that this belongs in continuous integration.
It is not there. Worse, the only issue that mentions CI probing is #653, which covers the four tools that are not in milestone 14 — so the one tool everything currently rests on is the one left unprobed.
Includes: a probe run in CI that opens a session, captures the hook payload and the exported attributes, and asserts the identifiers match.
Includes: asserting the attributes the design depends on are still present: session.id on the token and cost counters, prompt.id and event.sequence on api_request and on skill_activated.
Includes: asserting the redaction behaviour has not changed, since a day when third-party skill names stop being replaced is a day the design gets simpler and nobody would otherwise notice.
Identifiers are minted client-side, before any model call. On Codex and Copilot a provider pointed at an address that answers nothing still opens a session, fires the hook and emits telemetry — measured, at zero quota. Claude Code was measured with real sessions; whether the same trick applies to it is the first thing this issue should establish, because it decides whether the probe can run on every pull request or only nightly.
The probes from the campaign are reusable as-is.
Done When
A pull request that would break the identifier join fails CI.
The probe reports which attributes it checked, so a silent removal is visible in the log rather than only in a red cross.
The probe distinguishes "the tool changed" from "the probe is broken", and never reports the second as the first.
Its quota cost per run is stated in the issue when the free method is settled.
Completion Evidence
A deliberately broken fixture that turns CI red, and a normal run that stays green at a known cost.
Outcome
The assumption the whole layer rests on is re-checked automatically, on the tool the layer actually ships with.
Scope
The measurement campaign (#632) proved that a hook's session identifier equals the one the export carries. It proved it by running one session, not by construction, and a tool update can break it without notice. The campaign's own conclusion was that this belongs in continuous integration.
It is not there. Worse, the only issue that mentions CI probing is #653, which covers the four tools that are not in milestone 14 — so the one tool everything currently rests on is the one left unprobed.
session.idon the token and cost counters,prompt.idandevent.sequenceonapi_requestand onskill_activated.It should be nearly free
Identifiers are minted client-side, before any model call. On Codex and Copilot a provider pointed at an address that answers nothing still opens a session, fires the hook and emits telemetry — measured, at zero quota. Claude Code was measured with real sessions; whether the same trick applies to it is the first thing this issue should establish, because it decides whether the probe can run on every pull request or only nightly.
The probes from the campaign are reusable as-is.
Done When
Completion Evidence
A deliberately broken fixture that turns CI red, and a normal run that stays green at a known cost.
Relations