fix(telemetry): every send and the last-shared stamp record the origin they went to (#2571) - #2706
Merged
Merged
Conversation
…n they went to, and the receiver sentence is decided from that record (#2571) The send log kept time, outcome, status and payload but not the destination, and Settings → Usage sharing decided "404 at the default address" vs "your receiver answered 404" by comparing the CURRENT TELEMETRY_SHARING_URL to the default at read time, beside the current address. That URL is a boot-time constant, so after "override → 200 → restore the default" a local sink's acknowledgement read as the hosted receiver's. Now each entry carries the origin it was posted to (scheme + host + port after strip_url_credentials; never path, query or userinfo; total over every URL shape, stamped in the best-effort writer so no attempt is logged without one), the 2xx stamp records the origin that acknowledged it (telemetry_sharing_last_shared_host, written before the date), receiver_hint is decided from the entry, and the status carries receiver_host / configured_host / receiver_mismatch so the panel names the host that answered, says plainly when the newest send went elsewhere than the configured address and what happens next, and shows "to <host>" per row and "Last delivered <date> to <host>". Entries and stamps written before this read as "an unknown receiver" and never as a mismatch; share_url is scrubbed. No migration, no new setting. Deferred (registered): a destination change starting a new delivery episode, and the private benchmark read using the recorded origin instead of hedging. Fixes #2571 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
|
merge-train 2026-09-11: on this train. The red Four mechanical nits, none blocking, yours to take or leave:
|
…host # Conflicts: # docs/memory/feature-flows.md # docs/memory/learnings.md
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.
Summary
TELEMETRY_SHARING_URLto the default at read time. That URL is a boot-time constant, so after "override → 200 → restore the default" a local sink's acknowledgement read as the hosted receiver's.strip_url_credentials; never path, query or userinfo; a total reducer, stamped in the best-effort writer so no attempt is logged without one), and the 2xx stamp records the origin that acknowledged it (telemetry_sharing_last_shared_host, written before the date so a write cut in half never pairs a fresh date with a stale receiver).receiver_hintis decided from the entry; the status gainsreceiver_host,configured_host,receiver_mismatchandlast_shared_host, andshare_urlis scrubbed. The panel names the host that answered, says plainly when the newest send went elsewhere than the configured address and what happens next (with sharing on or off), and shows "to " per row and "Last delivered to ". Pre-existing entries and stamps read as "an unknown receiver" and never as a mismatch. No migration, no new setting.Changes
src/backend/services/telemetry_sharing_service.py—_send_host/_display_url/_entry_host, the writer stamp, the entry-based hint, the status fields, the stamp origin.src/frontend/src/components/onboarding/telemetryConsent.js—receiverLabel,receiverCopyover recorded/normalised origins only.src/frontend/src/components/settings/TelemetrySharingPanel.vue,src/frontend/src/stores/telemetrySharing.js— render the new fields; no new palette class, no new loading gate.tests/unit/test_ent437_telemetry_consent.py(six new tests, the 404 test rewritten because it pinned the read-time comparison, a router passthrough assertion),src/frontend/tests/unit/telemetryConsent.spec.js(nine new cases).docs/PRODUCT_EVENTS.md,docs/memory/architecture/backend.md, a learnings entry, the CSO diff report (no findings at the gate).Test Plan
pytest tests/unit/test_ent437_telemetry_consent.py tests/unit/test_2618_heartbeat_dueness.py tests/unit/test_ent12_telemetry_sharing.py— 114 passed;test_2669_minting_accessor_callersand the settings-sink / auth-wiring / enumeration guards green.vitest run tests/unit/telemetryConsent.spec.js tests/unit/rawColorRatchet.spec.js tests/unit/loadingGateRatchet.spec.js— 48 passed; full unit suite 2702 passed.Deferred and registered in the debt inbox: a destination change starting a new delivery episode (stamp + backfill marker honoured only for the recorded origin), and the private benchmark read using the recorded origin instead of hedging.
Fixes #2571
🤖 Generated with Claude Code