fix(telemetry): drop profile field [skip-runtime-e2e]#66
Merged
saurabhjain1592 merged 2 commits intomainfrom May 8, 2026
Merged
fix(telemetry): drop profile field [skip-runtime-e2e]#66saurabhjain1592 merged 2 commits intomainfrom
saurabhjain1592 merged 2 commits intomainfrom
Conversation
The v1 telemetry schema added a `profile` field sourced from the `AXONFLOW_PROFILE` env var, but that env-var name is already in use by the agent-side governance enforcement engine (`platform/agent/profile.go`, allowlist `dev | default | strict | compliance`, ADR-036). A customer setting `AXONFLOW_PROFILE=strict` for governance would have had every heartbeat rejected by the checkpoint validator (HTTP 400) because the validator only accepted `dev | prod | unknown`. The field also has no consumer on the analytics side — `deployment_mode` already covers the topology dimension `profile` was meant to add. Dropping the field cleanly resolves the collision and reverts `AXONFLOW_PROFILE` to its single original meaning (governance only). Changes: - scripts/telemetry-ping.sh: remove the `PROFILE_RAW`/`PROFILE` block reading `AXONFLOW_PROFILE`; remove `--arg profile` and the `profile: $profile` field from the jq payload object. - tests/heartbeat-real-stack/run_real_stack.sh: remove the matching `COLD_PROFILE=$(jq -r '.profile' ...)` assertion. - .cursor-plugin/plugin.json: bump version 1.4.0 -> 1.4.1. - CHANGELOG.md: 1.4.1 entry under Removed. Refs axonflow-enterprise#2033. Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com>
Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com>
saurabhjain1592
added a commit
that referenced
this pull request
May 8, 2026
The v1-telemetry profile field never reached any tagged customer release — it landed in v1.4.0 prep on the same day (2026-05-08) that the AXONFLOW_PROFILE collision was caught (axonflow-enterprise#2033) and removed via PR #66 before any tag shipped. Per user direction: "This never made it to any customer so why it should be in changelog when we removed it already before the release." Doc-only correction: - CHANGELOG.md: deleted the [1.4.1] removal entry (no longer narrating a removal of a field that never shipped); scrubbed the "profile from AXONFLOW_PROFILE" clause from the [1.4.0] v1 schema bullet (telemetry_type / endpoint_type / AXONFLOW_TRY remain). - .cursor-plugin/plugin.json: 1.4.1 -> 1.4.0. Linked: - axonflow-enterprise#2033 (root issue) - #66 (per-repo profile-removal PR; merged) Self-review: - Diff hunk-by-hunk: 2 surfaces touched, 1.4.1 -> 1.4.0 revert in plugin.json + the [1.4.1] section removal + 1 word-level scrub in [1.4.0]. - plugin.json re-validated with python3 -m json.tool. - No other 1.4.1 references in the repo. Skip-runtime-e2e justification: Doc-only changelog scrub + version revert. No runtime code paths or shipped artifacts change. The plugin's runtime behaviour at the eventual tagged version (1.4.0) is identical pre/post this PR. Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.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.
Summary
The v1 telemetry schema (#63) added a
profilefield sourced fromAXONFLOW_PROFILEinscripts/telemetry-ping.sh. ButAXONFLOW_PROFILEis already in production use by the agent-side governance enforcement engine (platform/agent/profile.go, allowlistdev | default | strict | compliance, ADR-036). The two namespaces collided:AXONFLOW_PROFILE=devstrictcomplianceproductionA customer running with
AXONFLOW_PROFILE=strict(a perfectly normal governance setting) would have had every heartbeat rejected by the checkpoint validator until they unset it, at which point governance would have silently dropped todefault.The field also has no consumer on the analytics side —
deployment_mode(self_hosted | community_saas | unknown) already covers the topology dimensionprofilewas meant to add. Dropping the field cleanly resolves the collision and revertsAXONFLOW_PROFILEto its single original meaning (governance only).Changes
scripts/telemetry-ping.sh: remove thePROFILE_RAW/PROFILEblock readingAXONFLOW_PROFILE; remove--arg profileand theprofile: $profilefield from the jq payload object.tests/heartbeat-real-stack/run_real_stack.sh: remove the matchingCOLD_PROFILE=$(jq -r '.profile' ...)assertion (no longer in the payload)..cursor-plugin/plugin.json: bump version1.4.0->1.4.1.CHANGELOG.md: 1.4.1 entry under Removed.Self-review (per HARD RULE #1)
Hunk-by-hunk read on every diff. Grep audit before commit:
Post-edit: zero hits in
scripts/,tests/heartbeat-real-stack/, or workflow files. Remaining hits are CHANGELOG-only (the new 1.4.1 entry describing the removal + the historical 1.4.0 entry which we keep for accuracy).bash -nclean on both edited shell scripts. JSON-shape smoke-tested with the samejq -ninvocation against representative inputs — output is well-formed JSON with the expected fields and noprofile.Coordination
ee/platform/checkpoint-service/.Test plan
bash -n scripts/telemetry-ping.sh— cleanbash -n tests/heartbeat-real-stack/run_real_stack.sh— cleanjq -nsmoke-test of the new payload object — produces valid JSON withoutprofileAXONFLOW_PROFILE/PROFILE_RAW/"profile":/.profile\b— zero hits in scripts, tests, workflowsSkip-runtime-e2e justification
This PR is part of the #2033 coordinated train across 1 server + 9 client repos. Per the session-2033 brief, runtime proof is deferred to the post-server-merge staging-checkpoint deploy:
axonflow-enterprise#2035(server) merges +gh workflow run deploy-checkpoint.yml -f environment=stagingdeploys the new code tostaging-checkpoint.getaxonflow.com.profile) and (b) the resulting DDB row has noprofileattribute.runtime-e2e/profile_field_removal/EVIDENCE/<utc-ts>/post-deploy.Adding a same-PR
runtime-e2e/test here would either:lint-no-mocks-in-runtime-e2e.sh), orThe post-deploy proof against staging-checkpoint is the only meaningful runtime test for this train.