Skip to content

fix(telemetry): honor opt-out across running processes - #1880

Merged
colbymchenry merged 4 commits into
mainfrom
fix/triage-1869
Sep 16, 2026
Merged

colbymchenry merged 4 commits into
mainfrom
fix/triage-1869

Conversation

@colbymchenry

Copy link
Copy Markdown
Owner

telemetry off kept the old machine ID, and servers with cached consent could continue recording, recreate the queue on exit, and send after opt-out. This removes the identity on off, refreshes consent before recording/persistence/sending, drops old-identity memory, and checks again before each HTTP chunk and requeue. Config replacement is atomic; off also removes claimed unsent queues.

Fixes #1869. Existing environment precedence remains unchanged. Requests already started cannot be recalled; later chunks and requeues are stopped. Both telemetry documents describe that boundary and the small local consent-file read. No consent-policy or server-retention changes.

Validation: fresh main 4871114 fails the isolated multi-process reproduction for identity, persistence, interval sending and actual process exit; this build passes the same probe. All 32 telemetry tests pass, including off/on during failed in-flight sends, stale claims and environment controls. Full build passes on Linux/Node 24.16.0. Every transport is stubbed and storage disposable; no real telemetry or user config was used. Sequential ABBA recording benchmark: before 3.32/5.26 µs per increment, fixed 20.17/23.11 µs (10,000 calls per process, no network/persistence); this is measured local-read overhead, not a zero-latency claim. Mac/Windows were unavailable.

Remote head d062cc6 has exactly the tested local source tree 673c9d9e1202ab55307ddabc296c399d38c8d52c. No npm release.

@colbymchenry
colbymchenry merged commit 51116a2 into main Sep 16, 2026
bompus added a commit to bompus/codegraph that referenced this pull request Sep 16, 2026
Upstream changes:
- fix(resolution): resolve awaited TypeScript receivers safely (colbymchenry#1885)
- fix(rust): keep self method calls on the correct owner (colbymchenry#1882)
- fix(telemetry): honor opt-out (colbymchenry#1880)

Conflicts:
- CHANGELOG.md (both appended under Fixes; kept fork bullets, added upstream's)
- src/resolution/name-matcher.ts (fork's modular/binding architecture vs
  upstream's awaited-receiver machinery; kept both — awaited caches, lexical
  scope gating and the matchMethodCall fallback slot in alongside
  requireReceiverEvidence, guarded/iteration receivers and bound-call factory
  resolution)

Fork-side reconciliation:
- matchBoundReceiverCall factory path now requires the callee call to end the
  initializer (upstream's tail rule), so `await f().chain()` binds the chain
  result rather than f's return type.
- Added `new Cls().factory()` member-factory handling to the same path —
  upstream resolves the awaited member-factory case via generic name matching
  that the fork's receiver-evidence gate deliberately blocks.
- Re-baselined the fork-owned torture-multilang golden: `self.m()` refs are
  now emitted owner-scoped; `self.area` resolves via qualified-name (0.9)
  instead of bare-name exact-match (0.4), and calls to methods absent from
  Self stay unresolved.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Telemetry opt-out: telemetry off keeps the machine_id, and already-running servers keep sending

1 participant