feat(telemetry): adopt v1 schema (telemetry_type, profile, classifiers)#60
Merged
Conversation
7448329 to
8e5802d
Compare
Aligns the anonymous 7-day heartbeat with the v1 telemetry schema
locked at axonflow-enterprise#2004 (#2008 plugin umbrella). Bundled
into the same minor as the V1.1 list-recent-decisions skill from the
prior unreleased section so users only see one minor transition.
New emitted fields on the heartbeat:
- telemetry_type: "plugin" — discriminator the receiver uses to
route plugin pings vs SDK / platform
/ synthetic on the v1 schema
- endpoint_type — localhost | private_network | remote
| unknown; mirrors SDK ClassifyEndpoint
- profile — sourced from AXONFLOW_PROFILE; reports
"unknown" when unset
deployment_mode enum normalised to v1 (`self_hosted | community_saas |
unknown`). Detection moves off AXONFLOW_MODE / AXONFLOW_AUTH onto
endpoint host + AXONFLOW_TRY=1 (community-saas behind custom
hostname). The prior `production`/`development`/`community-saas`
values are removed — analytics queries that match those must update.
Heartbeat real-stack harness updated to assert all four v1 payload
fields against a real network round-trip;
runtime-e2e/v1_telemetry_schema/ delegates to it for the
definition-of-done mechanical gate.
Bumps 1.3.0 → 1.4.0 in .codex-plugin/plugin.json + CHANGELOG.
Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com>
8e5802d to
1721bf1
Compare
This was referenced May 8, 2026
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
Adopts the v1 telemetry schema (locked at axonflow-enterprise#2004) on the codex plugin's anonymous 7-day heartbeat. Closes the codex line-item under axonflow-enterprise#2008 (4-plugin umbrella).
Bundled with the V1.1
list-recent-decisionsskill that was already sitting in the[Unreleased]section since 2026-05-07 — both ship together so users see one minor version transition.What changes on the wire
The 1.4.0 heartbeat now emits four fields the receiver routes on:
telemetry_type"plugin"endpoint_typelocalhost | private_network | remote | unknownprofileAXONFLOW_PROFILEenv or"unknown"deployment_modeself_hosted | community_saas | unknownDetection logic in
scripts/telemetry-ping.shmatches the claude-code plugin (#72) for cross-plugin parity.Definition of Done
1. Tested
bash -n scripts/telemetry-ping.sh→ clean.2. Deep self-reviewed
Hunk-by-hunk review with the 5-question protocol:
scripts/telemetry-ping.sh— replacedAXONFLOW_MODE/AXONFLOW_AUTHdeployment_mode logic with the v1 endpoint-driven classifier + AXONFLOW_TRY=1 override. Two pure-bash classifier functions (classify_deployment_mode,classify_endpoint_type). Same shape as the openclaw + claude-code plugins so cross-plugin analytics dimensions stay consistent.tests/heartbeat-real-stack/run_real_stack.sh— assertion 5 expanded from one line to four (telemetry_type, endpoint_type, profile, deployment_mode). The harness binds to 127.0.0.1, so the v1 classifier returnsendpoint_type=localhostanddeployment_mode=self_hosted— that's the v1-correct answer..codex-plugin/plugin.json— version 1.3.0 → 1.4.0.CHANGELOG.md— promoted unreleased V1.1 work into 1.4.0 release entry, added the v1 telemetry-schema additive section + the deployment_mode normalization callout.runtime-e2e/v1_telemetry_schema/— wraps the heartbeat-real-stack harness for the definition-of-done mechanical gate. Lint-clean perscripts/lint-no-mocks-in-runtime-e2e.sh.3. Runtime-proven
bash tests/heartbeat-real-stack/run_real_stack.shagainst a real local Python checkpoint server:The same harness runs in CI cross-platform (Ubuntu / macOS) via
.github/workflows/heartbeat-real-stack.yml.SoX governance
No direct CRUD against
prod-checkpoint-telemetry-events. Plugin POSTs only to public/v1/ping. Perfeedback_telemetry_table_is_sox.md.Release-class actions
Tag + Release require explicit per-version authorization per
feedback_releases_require_approval.mdandfeedback_distinguish_tag_from_release.md. This PR is for merge only.Linked