Default-on daily heartbeat with two-tier telemetry consent - #133
Open
wkoverfield wants to merge 2 commits into
Open
Default-on daily heartbeat with two-tier telemetry consent#133wkoverfield wants to merge 2 commits into
wkoverfield wants to merge 2 commits into
Conversation
Opt-in-only telemetry answers no questions in practice: the consent prompt renders only on an interactive TTY at setup, and most quilt operators are agents running non-interactively, so the prompt never shows and nothing is ever sent. Add a second, minimal tier that can actually measure whether installs stay active. The daily heartbeat sends the shared envelope only (quilt version, platform, node major, random local id) at most once per 24h, stamped via exclusive-create so concurrent quilt processes on one machine cannot double-send, with a corrupt stamp treated as stale rather than fatal. Command events remain strictly opt-in. Any opt-out silences both tiers: a stored "no" from any version, `quilt telemetry off`, QUILT_TELEMETRY=0, the now-honored DO_NOT_TRACK convention, or a CI environment. Explicit QUILT_TELEMETRY wins over ambient signals. The heartbeat rides on ordinary command entries via a preAction hook; every hook-* command stays uninstrumented, and setup sends only after printing its unconditional disclosure so a fresh install's first send cannot precede the first chance to read what is sent. The PostHog key ships as a placeholder until the destination project exists; sends fail silently until it is replaced. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Replaces the placeholder write-only key with the dedicated project's. Verified live: a heartbeat sent through the detached-child path is queryable in the destination project. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a default-on daily anonymous heartbeat alongside the existing opt-in command-event telemetry, making telemetry two-tier with one shared kill switch.
quilt_heartbeatfires at most once per 24h from the first ordinary command of the day: quilt version, platform, node major, random local id, nothing else. The TTL stamp is claimed with exclusive-create so concurrent quilt processes cannot double-send, and a corrupt stamp self-heals instead of silently disabling the heartbeat forever.quilt telemetry off,QUILT_TELEMETRY=0,DO_NOT_TRACK(newly honored), or a setCIvariable. ExplicitQUILT_TELEMETRYwins over ambient signals.hook-*command remains uninstrumented (never stamps, never mints an id, never sends).quilt setupprints an unconditional heartbeat disclosure (TTY or not) and sends only after printing it, so a fresh install's first send cannot precede the first chance to read what is sent.quilt telemetrynow reports both tiers and the reason for the effective state.Not yet done
The PostHog key in
src/telemetry.tsandsite/index.htmlis a placeholder (phc_QUILT_PROJECT_KEY_TBD) until the destination PostHog project exists. Sends fail silently until it is replaced; do not publish 0.6.1 before swapping in the real key and seeing a livequilt_heartbeatarrive.Testing
QUILT_TELEMETRY,DO_NOT_TRACK,CI, precedence), TTL collapse of repeat sends, heartbeat payload key allow-list, corrupt-stamp self-heal, id stability across consent toggles, and hook-path silence for all fivehook-*commands including the argv fast-path trio.quilt setupis asserted to never prompt, never record a decision, and always print the heartbeat disclosure.🤖 Generated with Claude Code