Skip to content

feat!: sync main 1.35-1.38 into v1, release otel with the core major - #390

Merged
eli-r-ph merged 30 commits into
v1from
v1-sync-main-1.36
Oct 29, 2026
Merged

eli-r-ph merged 30 commits into
v1from
v1-sync-main-1.36

Conversation

@eli-r-ph

@eli-r-ph eli-r-ph commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

💡 Motivation and Context

main shipped 1.35.0–1.36.0 after #361 synced 1.30–1.34. This brings those releases into v1 so the v2 release does not drop them.
It also brings 1.36.1–1.38.0, except #382.
One of them, #371, makes the otel bridge import the core SDK, so otel now moves with the core major like posthogmcpsdk.

Changes

Adapted picks (every other pick changes exactly the lines upstream changed):

Pick Adaptation
#371 Keeps v1's "a processor with an unusable API key does nothing" guard, and imports core /v2
#357 Uses upstream's reserved-property helper in place of v1's, which had one caller
#360 Inlines the holdout id conversion, because v1 removed groupKeyToString (#343)
Release commits Keep v1's nested go.mod core requirements
#374 Imports core /v2; a follow-up commit adds the derived trace IDs only as a pair. A $trace_id or $span_id in DefaultEventProperties does not stop the pair, because the helper cannot see the client's config (accepted, documented)
1.36.1 release The changelog line for #382 points to v2's own non-finite handling (#394); no changeset to delete
#375 A follow-up commit, placed after the 1.38.0 release commit so CI runs on the head, imports core /v2 and builds the test clients with v1's New, which also returns an error

💚 How did you test it?

  • go vet and go test -race pass for the core, otel and posthogmcpsdk modules.
  • make api-diff is clean, and go mod tidy leaves otel and posthogmcpsdk unchanged.
  • The pinned-core check skips with its warning, because v2.0.0 is not tagged yet.
  • Not run locally: pnpm install --frozen-lockfile, because the registry was unreachable from this machine. The only lockfile change removes the otel workspace entry.

📝 Checklist

  • I reviewed the submitted code.
  • I added tests to verify the changes.
  • I updated the docs if needed.
  • No breaking change or entry added to the changelog.

If releasing new changes

  • Ran pnpm changeset to generate a changeset file

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Written with Claude Code (Claude Opus 5.5, claude-opus-5-5) under the direction of the assignee.
The assignee chose to move otel to /v2 in lockstep over two alternatives: keep otel at major 1 while it requires core v2 (mixed majors, silent context loss), or leave #371 out of v1.

🤖 Generated with Claude Code

@eli-r-ph eli-r-ph self-assigned this Oct 23, 2026
@eli-r-ph eli-r-ph changed the title feat!: sync main 1.35-1.36 into v1, release otel with the core major feat!: sync main 1.35-1.37 into v1, release otel with the core major Oct 25, 2026
@eli-r-ph eli-r-ph changed the title feat!: sync main 1.35-1.37 into v1, release otel with the core major feat!: sync main 1.35-1.38 into v1, release otel with the core major Oct 28, 2026
@eli-r-ph
eli-r-ph marked this pull request as ready for review October 28, 2026 21:01
@eli-r-ph
eli-r-ph requested a review from a team as a code owner October 28, 2026 21:01

@turnipdabeets turnipdabeets left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked each pick against its upstream commit. The unadapted ones match line for line, and the adapted ones (#357, #360, #371, #374, and the release commits) do what the table says. Moving otel to /v2 in lockstep makes sense, and the pair rule matches what posthog-node does. Thanks for the careful sync!

Comment thread otel/README.md Outdated
dustinbyrne and others added 21 commits October 28, 2026 19:02
* fix(flags): load shared definitions without a secret key

* fix(flags): make keyless cache consumers read-only

(cherry picked from commit 88d8397)
Bumps the github-actions group with 2 updates: [github/codeql-action/init](https://github.com/github/codeql-action) and [github/codeql-action/analyze](https://github.com/github/codeql-action).

Updates `github/codeql-action/init` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 155480d)
…el (#377)

Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.83.1 to 1.83.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.83.1...v1.83.2)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.83.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 863b330)
…7 in /posthogmcpsdk in the go_modules group across 1 directory (#379)

chore(deps): bump github.com/klauspost/compress

Bumps the go_modules group with 1 update in the /posthogmcpsdk directory: [github.com/klauspost/compress](https://github.com/klauspost/compress).

Updates `github.com/klauspost/compress` from 1.17.11 to 1.18.7
- [Release notes](https://github.com/klauspost/compress/releases)
- [Commits](klauspost/compress@v1.17.11...v1.18.7)

---
updated-dependencies:
- dependency-name: github.com/klauspost/compress
  dependency-version: 1.18.7
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 5c2220b)
…#357)

* fix(mcp): set $exception_source and correct mechanism.synthetic

The mcp-analytics spec requires the $exception emitted alongside a failed
tool call to carry $exception_source: "mcp.tool_call", and to mark
mechanism.synthetic only for an isError result that carried no thrown
error. buildException set neither correctly: the source property was
absent, and synthetic was hardcoded true on a path only reached for a
thrown error.

Also strip $exception_source from caller-supplied properties, matching
how $exception_level is already protected.

Generated-By: PostHog Desktop
Task-Id: b4b6b8cc-da38-4c24-a978-9e2e9b5ac5f0

* fix(mcp): strip reserved exception metadata

* fix(mcp): keep mechanism.synthetic true until the adapter can mark synthesized errors

---------

Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
Co-authored-by: Ioannis J <yiannis@posthog.com>
(cherry picked from commit de638c7)
* feat(flags): honor experiment holdouts in local flag evaluation

Local evaluation ignored `filters.holdout`, so an identifier inside an experiment's holdout was bucketed into a regular variant and disagreed with the server, silently and with no fallback.

Holdout resolution now runs after the inactive-flag check and before release conditions, returning the synthetic `holdout-<id>` variant. Membership uses the flag-level bucketing identity (group key for group-aggregated flags, device id for device-bucketed flags, distinct id otherwise) and the server's hash of `holdout-<value>`: the "-" separator, not the "." used by rollout hashing, selects a different population. Percentages are clamped to 0-100 without truncating fractions, compared inclusively, and 100 includes everyone without hashing. A holdout missing `id` or `exclusion_percentage` is skipped, leaving ordinary evaluation unchanged.

Tested: go build, go vet, gofmt, make api-diff, and go test -race -count=1 ./... at the repository root.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 2887d167-f4e8-446a-a056-202893f6ecd9

* fix(flags): keep device-bucketed partial holdouts inconclusive without a device id

---------

Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
Co-authored-by: Ioannis J <yiannis@posthog.com>
(cherry picked from commit d170fc5)
Bumps the github-actions group with 4 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action), [actions/create-github-app-token](https://github.com/actions/create-github-app-token) and [pnpm/setup](https://github.com/pnpm/setup).

Updates `github/codeql-action/init` from 4.38.3 to 4.39.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@24c5418...6f2ac81)

Updates `github/codeql-action/analyze` from 4.38.3 to 4.39.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@24c5418...6f2ac81)

Updates `actions/create-github-app-token` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Changelog](https://github.com/actions/create-github-app-token/blob/main/CHANGELOG.md)
- [Commits](actions/create-github-app-token@bcd2ba4...64ab729)

Updates `pnpm/setup` from 3.0.0 to 3.1.1
- [Release notes](https://github.com/pnpm/setup/releases)
- [Commits](pnpm/setup@fbda4c8...a088197)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/create-github-app-token
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: pnpm/setup
  dependency-version: 3.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 6ffac5a)
* feat: span processor request context

* fix: span processor review feedback

* fix: span processor review follow-ups

(cherry picked from commit c203229)
…7 in /otel (#380)

chore(deps): bump github.com/klauspost/compress in /otel

Bumps [github.com/klauspost/compress](https://github.com/klauspost/compress) from 1.17.11 to 1.18.7.
- [Release notes](https://github.com/klauspost/compress/releases)
- [Commits](klauspost/compress@v1.17.11...v1.18.7)

---
updated-dependencies:
- dependency-name: github.com/klauspost/compress
  dependency-version: 1.18.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 460c7e6)
The otel bridge now imports the core SDK for the request context, so it
moves to github.com/posthog/posthog-go/otel/v2 and shares the core release
version, like posthogmcpsdk. The release workflow sets both nested modules'
core requirement to the new version and tags them after the core release.
Both nested modules run the pinned-core build check through one script.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributors often open PRs with unsigned commits because signing isn't documented here.

(cherry picked from commit 56aa91d)
* fix(flags): fall back for incompatible local regex evaluation

* fix(flags): preserve regex fallback priority and bound repetition scans

* fix(flags): bound malformed escape scans and reject reversed counts

* fix(flags): defer malformed regex repetitions

(cherry picked from commit e8c7d37)
* feat(otel): add opt-in exception trace context

Generated-By: PostHog Desktop
Task-Id: 5681be44-4986-48db-b140-1bda88f75f96

* fix(otel): preserve request trace overrides for enqueue clients

Generated-By: PostHog Desktop
Task-Id: 5681be44-4986-48db-b140-1bda88f75f96

(cherry picked from commit 729bcf7)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
releaser-posthog-go Bot and others added 9 commits October 28, 2026 19:02
…on guide

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat(otel): add request context to application spans

Generated-By: PostHog Desktop
Task-Id: 5681be44-4986-48db-b140-1bda88f75f96

* fix: stop context enrichment after processor shutdown

Generated-By: PostHog Desktop
Task-Id: 5681be44-4986-48db-b140-1bda88f75f96

* fix: skip span context for disabled clients

Generated-By: PostHog Desktop
Task-Id: bfd18848-e498-4352-a58a-b9ba85de4198
(cherry picked from commit 94ff576)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@eli-r-ph
eli-r-ph merged commit 6527a68 into v1 Oct 29, 2026
32 checks passed
@eli-r-ph
eli-r-ph deleted the v1-sync-main-1.36 branch October 29, 2026 02:13
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.

6 participants