diff --git a/.codex-plugin/marketplace.json b/.codex-plugin/marketplace.json index 039b461..61326c2 100644 --- a/.codex-plugin/marketplace.json +++ b/.codex-plugin/marketplace.json @@ -7,14 +7,14 @@ }, "metadata": { "description": "Runtime governance for OpenAI Codex. Policy enforcement on terminal commands, advisory governance via skills, PII detection, audit trails, and compliance-grade decision records.", - "version": "1.4.0" + "version": "1.4.1" }, "plugins": [ { "name": "axonflow", "source": "./", "description": "Policy enforcement, PII detection, and audit trails for OpenAI Codex. Hybrid governance — enforces policies on terminal commands (exec_command) via hooks, provides advisory governance for other tools via implicit-activation skills, and records compliance-grade audit trails. Self-hosted via Docker — all data stays on your infrastructure.", - "version": "1.4.0", + "version": "1.4.1", "author": { "name": "AxonFlow", "email": "hello@getaxonflow.com", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 0270066..51bf305 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "axonflow", "displayName": "AxonFlow Governance", "description": "Policy enforcement, PII detection, and audit trails for OpenAI Codex. Hybrid governance — enforces policies on terminal commands (exec_command) via hooks, provides advisory governance for other tools via implicit-activation skills, and records compliance-grade audit trails. Self-hosted via Docker — all data stays on your infrastructure.", - "version": "1.4.0", + "version": "1.4.1", "author": { "name": "AxonFlow", "email": "hello@getaxonflow.com", diff --git a/CHANGELOG.md b/CHANGELOG.md index 72fdd17..dcac07e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ ## [Unreleased] +## [1.4.1] - 2026-05-08 + +### Removed + +- Telemetry `profile` field and the `AXONFLOW_PROFILE` env-var read in + `scripts/telemetry-ping.sh`. The v1 schema reused `AXONFLOW_PROFILE`, + which already governs runtime policy enforcement (`dev | default | + strict | compliance`); the two name-spaces collided and a customer + setting `AXONFLOW_PROFILE=strict` would have had their heartbeat + rejected by the checkpoint validator. The field had no consumer on + the analytics side, and `deployment_mode` already covers the + topology dimension it was meant to add. Heartbeat payload no longer + emits `profile`; matching assertion removed from + `tests/heartbeat-real-stack/run_real_stack.sh`. `AXONFLOW_PROFILE` + reverts to its original governance-only meaning. + ## [1.4.0] - 2026-05-08 ### Added diff --git a/scripts/telemetry-ping.sh b/scripts/telemetry-ping.sh index 4100173..73340b5 100755 --- a/scripts/telemetry-ping.sh +++ b/scripts/telemetry-ping.sh @@ -231,13 +231,6 @@ classify_endpoint_type() { DEPLOYMENT_MODE=$(classify_deployment_mode "$ENDPOINT") ENDPOINT_TYPE=$(classify_endpoint_type "$ENDPOINT") -PROFILE_RAW="${AXONFLOW_PROFILE:-}" -if [ -z "$PROFILE_RAW" ]; then - PROFILE="unknown" -else - PROFILE="$PROFILE_RAW" -fi - HOOK_COUNT=0 HOOKS_FILE="$PLUGIN_DIR/hooks/hooks.json" if [ -f "$HOOKS_FILE" ]; then @@ -253,7 +246,6 @@ PAYLOAD=$(jq -n \ --arg runtime_version "${BASH_VERSION:-unknown}" \ --arg deployment_mode "$DEPLOYMENT_MODE" \ --arg endpoint_type "$ENDPOINT_TYPE" \ - --arg profile "$PROFILE" \ --arg instance_id "$INSTANCE_ID" \ --argjson hook_count "$HOOK_COUNT" \ --argjson platform_version "$PLATFORM_VERSION" \ @@ -268,8 +260,7 @@ PAYLOAD=$(jq -n \ deployment_mode: $deployment_mode, endpoint_type: $endpoint_type, features: ["hooks:\($hook_count)"], - instance_id: $instance_id, - profile: $profile + instance_id: $instance_id }' 2>/dev/null) if [ -z "$PAYLOAD" ]; then diff --git a/tests/heartbeat-real-stack/run_real_stack.sh b/tests/heartbeat-real-stack/run_real_stack.sh index 08c4fc4..ac5ac10 100755 --- a/tests/heartbeat-real-stack/run_real_stack.sh +++ b/tests/heartbeat-real-stack/run_real_stack.sh @@ -198,12 +198,6 @@ if [ -f "$WORK_DIR/_pings.jsonl" ]; then else fail "ping endpoint_type=$COLD_ET (expected localhost)" fi - COLD_PROFILE=$(jq -r '.profile' "$WORK_DIR/_pings.jsonl" | head -1) - if [ "$COLD_PROFILE" = "unknown" ]; then - pass "ping profile=unknown (AXONFLOW_PROFILE unset)" - else - fail "ping profile=$COLD_PROFILE (expected unknown)" - fi COLD_MODE=$(jq -r '.deployment_mode' "$WORK_DIR/_pings.jsonl" | head -1) if [ "$COLD_MODE" = "self_hosted" ]; then pass "ping deployment_mode=self_hosted (harness endpoint is 127.0.0.1)"