Skip to content

trunk-merge/pr-100947/b7ce5be5-508d-4dc3-9e1c-7748b76f6a3c - #124270

Closed
trunk-io[bot] wants to merge 207 commits into
masterfrom
trunk-merge/pr-100947/b7ce5be5-508d-4dc3-9e1c-7748b76f6a3c
Closed

trunk-io[bot] wants to merge 207 commits into
masterfrom
trunk-merge/pr-100947/b7ce5be5-508d-4dc3-9e1c-7748b76f6a3c

Conversation

@trunk-io

@trunk-io trunk-io Bot commented Oct 27, 2026

Copy link
Copy Markdown
Trunk Merge Pull Request Banner

This pull request was created and is being managed by Trunk Merge.

This pull request is based on the master branch at SHA a9bd34eb85f250b6177985a66954feffacc67b93.

See more details about each PR in the batch here:

When CI completes, this pull request will be closed automatically.

Pull Requests Being Tested

This pull request is testing a batch with the changes from pull requests 100947, 123232, 123535, and 123695 - batching documentation.

Dependencies

This pull request depends on the changes from pull requests 124184, 123250, 123419, 124125, 122639, 124028, 123708, 122978, 124226, 121966, 123512, 121720, 123456, 124023, 123983, 124039, 124042, 124157, 123897, 123927, 124204, 124198, 123698, 124218, 123938, 123999, 122437, 124242, 124241, and 123868.

dmarchuk and others added 30 commits October 21, 2026 23:31
Include and exclude on a custom column cell used the column's label as the
filter key. Once a column was renamed, that key named no attribute, so
exclude removed no rows and include returned no logs.

customColumnFilterTarget now reads the key and type from the column
expression: the attributes. and resource_attributes. shorthands, the
"Add as column" lookup expression, and a bare service_name column. Other
HogQL keeps the label, as before. The popover's add/remove column toggle
still keys on the label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 updated
Run: 42023344-91b7-4f07-b684-5ae8fad7ec9d

Co-authored-by: lricoy <2034367+lricoy@users.noreply.github.com>
Staff tier sets, pin toggles, admin recomputes, suspension tier drops, the daily sweep, and the backfill now each write an email_sending_tier_changed row on the Team scope, with before/after values and the decision reason. Staff changes carry the acting user; the sweep and the backfill carry a Trigger naming the job. The rows are staff-only, like suspension rows, so the acting staff user does not reach the org activity log or customer destinations.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Staff tier saves now record reason staff_set, so every row says how the tier
moved. The describer reads it to say "set" for a staff save and "moved" for
a computed change, and drops the reason for staff saves. A held sweep decision
is asserted to write no row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The sweep task now passes its own trigger instead of the service guessing
it from a missing user. Staff paths reuse the team they already load and
resolve the acting user once, only when a row is written.

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>
2 updated
Run: 84cd4ff0-f6b0-4106-a717-ebb59d363e55

Co-authored-by: lricoy <2034367+lricoy@users.noreply.github.com>
# Conflicts:
#	products/aeo/mcp/tools.yaml
#	products/web_analytics/frontend/contentAutopilot/ContentAutopilot.stories.tsx
#	services/mcp/src/tools/generated/aeo.ts
# Conflicts:
#	products/aeo/mcp/tools.yaml
#	products/web_analytics/frontend/contentAutopilot/ContentAutopilot.stories.tsx
#	services/mcp/src/tools/generated/aeo.ts
trunk-io Bot added 26 commits October 27, 2026 17:22
@tests-posthog

tests-posthog Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Django migration SQL — 2 new migrations to review

We've detected new migrations on this PR. Review the SQL output for each migration:

posthog/migrations/1414_remove_filesystem_rows_for_deleted_insights.py

/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/anyio/from_thread.py:119: SyntaxWarning: 'return' in a 'finally' block
  return result
2026-10-27T17:34:34.396027Z [error    ] Path must be a valid database or directory containing databases. [posthog.exceptions_capture] pid=6772 tid=139993683696512
Traceback (most recent call last):
  File "/home/runner/work/posthog/posthog/posthog/geoip.py", line 15, in <module>
    geoip: Optional[GeoIP2] = GeoIP2(cache=8)
                              ~~~~~~^^^^^^^^^
  File "/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/django/contrib/gis/geoip2.py", line 116, in __init__
    raise GeoIP2Exception(
        "Path must be a valid database or directory containing databases."
    )
django.contrib.gis.geoip2.GeoIP2Exception: Path must be a valid database or directory containing databases.
/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/sshtunnel.py:1040: SyntaxWarning: 'return' in a 'finally' block
  return (ssh_host,
/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/langchain_core/_api/deprecation.py:27: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater.
  from pydantic.v1.fields import FieldInfo as FieldInfoV1
System check identified some issues:

WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
?: (staticfiles.W004) The directory '/home/runner/work/posthog/posthog/frontend/dist' in the STATICFILES_DIRS setting does not exist.
--
-- Raw Python operation
--
-- THIS OPERATION CANNOT BE WRITTEN AS SQL

products/aeo/backend/migrations/0007_citation_check_brand_sentiment.py

2026-10-27T17:35:24.249785Z [error    ] Path must be a valid database or directory containing databases. [posthog.exceptions_capture] pid=8014 tid=140339864607616
Traceback (most recent call last):
  File "/home/runner/work/posthog/posthog/posthog/geoip.py", line 15, in <module>
    geoip: Optional[GeoIP2] = GeoIP2(cache=8)
                              ~~~~~~^^^^^^^^^
  File "/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/django/contrib/gis/geoip2.py", line 116, in __init__
    raise GeoIP2Exception(
        "Path must be a valid database or directory containing databases."
    )
django.contrib.gis.geoip2.GeoIP2Exception: Path must be a valid database or directory containing databases.
/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/langchain_core/_api/deprecation.py:27: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater.
  from pydantic.v1.fields import FieldInfo as FieldInfoV1
System check identified some issues:

WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
?: (staticfiles.W004) The directory '/home/runner/work/posthog/posthog/frontend/dist' in the STATICFILES_DIRS setting does not exist.
BEGIN;
--
-- Add field brand_sentiment to aeocitationcheck
--
ALTER TABLE "posthog_aeo_citation_check" ADD COLUMN "brand_sentiment" varchar(16) NULL;
--
-- Add field brand_sentiment_score to aeocitationcheck
--
ALTER TABLE "posthog_aeo_citation_check" ADD COLUMN "brand_sentiment_score" double precision NULL;
COMMIT;

Last updated: 2026-10-27 17:35 UTC (a97e700)

✅ Django migration risk — migration analysis complete

We've analyzed your migrations for potential risks.

Summary: 1 Safe | 1 Needs Review | 0 Blocked

⚠️ Needs Review

May have performance impact

posthog.1414_remove_filesystem_rows_for_deleted_insights
  └─ #1 ⚠️ RunPython: RunPython data migration needs review for performance

✅ Safe

Brief or no lock, backwards compatible

aeo.0007_citation_check_brand_sentiment
  └─ #1 ✅ AddField
     Adding nullable field requires brief lock
     model: aeocitationcheck, field: brand_sentiment
  └─ #2 ✅ AddField
     Adding nullable field requires brief lock
     model: aeocitationcheck, field: brand_sentiment_score

📚 How to Deploy These Changes Safely

AddField:

This operation acquires a brief lock but doesn't rewrite the table.

Deployment uses lock timeouts with automatic retries, so lock contention will cause retries rather than connection pile-up.

RunPython:

Use batching for large data migrations:

  • Use .iterator() to avoid loading all rows into memory
  • Use .bulk_update() instead of saving individual objects
  • Batch size: 1,000-10,000 rows per batch
  • Add pauses between batches
  • Consider background jobs for very large updates (millions of rows)

See the migration safety guide

Last updated: 2026-10-27 17:36 UTC (a97e700)

@trunk-io trunk-io Bot closed this Oct 27, 2026
@trunk-io
trunk-io Bot deleted the trunk-merge/pr-100947/b7ce5be5-508d-4dc3-9e1c-7748b76f6a3c branch October 27, 2026 17:57
@trunk-io

trunk-io Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Author

Static Badge   Static Badge   Static Badge

Failed Test Failure Summary Logs
Scenes-App/Experiments ExperimentWithHealthFindings play-test The Storybook test could not find the text “Why?” on the experiment page. Logs ↗︎
ReportContextMenu routes the dismiss submenu's note button through the dialog instead of applying it The ReportInterviewInvite component failed because the Kea store does not contain the featureFlagLogic path required to check a feature flag. Logs ↗︎

View Full Report ↗︎ ⋅ Docs

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.