Skip to content

feat(cymbal): set posthog-python wire-order cutoff at 7.31.0 - #73511

Merged
cat-ph merged 3 commits into
masterfrom
cat/cymbal-python-cutoff
Jul 27, 2026
Merged

feat(cymbal): set posthog-python wire-order cutoff at 7.31.0#73511
cat-ph merged 3 commits into
masterfrom
cat/cymbal-python-cutoff

Conversation

@cat-ph

@cat-ph cat-ph commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Problem

The eighth and final SDK flip of the wire-order standardization (PostHog/sdk-specs#11): posthog-python ships $exception_list in canonical order — caught/outermost exception first, root cause last — in 7.31.0 (PostHog/posthog-python#728, latest release posthog-v7.30.1 + that PR's lone minor changeset; no other changesets pending on main).

Python is unique in the table: its fix reverses the exception list, not frames (python frames were always bottom-up). It's also the mildest flip by construction — single-exception events (the vast majority) are unchanged by the reversal and hash identically either way; only chained-exception events change on the wire.

Changes

  • posthog-python gets canonical_since: Some(7.31.0); everything below (or unparseable) keeps having its exception list flipped.
  • New gate test asserting the list-order semantics specifically: below-cutoff versions get the list reversed with frames untouched, at/above passes through, and legacy reconstruction (re-flipping the list) ignores the cutoff.

Merge sequencing

  1. Re-verify posthog-python's latest posthog-v* release is still 7.30.x immediately before merging (other packages in the repo — e.g. the openfeature provider — release independently and don't claim this version stream).
  2. Merge this, wait for cymbal autodeploy.
  3. Merge fix(errors): emit $exception_list in canonical order (caught-first, root cause last) posthog-python#728 and release as 7.31.0; no other posthog package minor in between.

Watch et-wire-order-launch as with the previous seven. Highest event volume of the train (~2.9M/day) but the smallest behavioral delta: chained exceptions only, no frame changes, no resolution reshaping — reconstruction is byte-exact.

How did you test this code?

Automated only: new python_cutoff_gates_exception_list_normalization_by_version unit test (16 normalization tests green); clippy -D warnings and fmt clean. Eighth instance of the reviewed cutoff pattern. The companion flip branch was rebased onto posthog-python main (58 commits of drift), verified the reversal-removal is intact, with 156 tests + ruff green.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

Rollout process documented in the sdk-specs change.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Claude Code authored this under my direction as the final step of the flip rollout, following the sequencing contract established across #69837/#70879/#71365/#72350/#72962/#73319. Target version derived from the latest posthog-v release plus #728's pending changeset.

@cat-ph cat-ph self-assigned this Jul 24, 2026
7.30.0 was claimed by an unrelated release before the flip merged.
@cat-ph cat-ph changed the title feat(cymbal): set posthog-python wire-order cutoff at 7.30.0 feat(cymbal): set posthog-python wire-order cutoff at 7.31.0 Jul 27, 2026
@cat-ph
cat-ph marked this pull request as ready for review July 27, 2026 17:04
@cat-ph
cat-ph requested review from a team, ablaszkiewicz and hpouillot July 27, 2026 17:04
@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team July 27, 2026 17:04
@greptile-apps

greptile-apps Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
rust/cymbal/src/modes/processing/normalization.rs:359-371
**Test uses reversed fixture orientation**

The post-cutoff and reconstruction assertions reuse `make_list()`, which places `RootCause` before `Wrapper`, even though canonical post-flip order places the outermost exception first. This tests the inverse flow and does not verify that canonical Python input remains unchanged before reconstruction restores legacy root-cause-first order.

Reviews (1): Last reviewed commit: "fix(cymbal): move posthog-python cutoff ..." | Re-trigger Greptile

Comment thread rust/cymbal/src/modes/processing/normalization.rs Outdated
@cat-ph
cat-ph merged commit 3e25a63 into master Jul 27, 2026
187 checks passed
@cat-ph
cat-ph deleted the cat/cymbal-python-cutoff branch July 27, 2026 18:14
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 27, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-27 18:50 UTC Run
prod-us ✅ Deployed 2026-07-27 19:17 UTC Run
prod-eu ✅ Deployed 2026-07-27 19:18 UTC Run

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.

2 participants