Skip to content

[SC-72636] chore: reset fork onto upstream 26.05.0-dev (Python 3.13 + Poetry + pnpm)#96

Open
jcesarioatpeach wants to merge 666 commits intomasterfrom
johncesario/reset-onto-upstream-26.05
Open

[SC-72636] chore: reset fork onto upstream 26.05.0-dev (Python 3.13 + Poetry + pnpm)#96
jcesarioatpeach wants to merge 666 commits intomasterfrom
johncesario/reset-onto-upstream-26.05

Conversation

@jcesarioatpeach
Copy link
Copy Markdown

Summary

Resets peachfinance/redash onto upstream getredash/redash at 29425475 (26.05.0-dev). The fork's 40 commits were either already merged upstream (Datadog destination) or superseded by upstream's new stack. Only fork-specific files are carried forward.

Rollback tag: pre-upstream-reset-2026-05-04 (points to old master, still on origin)

Stack Migration

Before (fork) After (upstream)
pip + requirements.txt Poetry + pyproject.toml
yarn pnpm
Python 3.8 Python 3.13
flake8 ruff + black
node:14 node:24
CircleCI (Python 3.7 config) CircleCI (rewritten for new stack)

Fork-Specific Files Carried Forward

  • .snyk — ignore list for vulns blocked by third-party constraints + exclude globs
  • .gitignore.claude/worktrees/ and .terraform/modules/ exclusions
  • .circleci/config.yml — rewritten for Python 3.13 + Poetry + pnpm + ruff/black

Snyk Vulnerability Fixes (applied on top of upstream)

Package Before After Vulns Fixed
authlib 0.15.5 1.6.9 1 CRITICAL + 6 HIGH
pyjwt 2.4.0 2.12.0 1 HIGH
gunicorn 22.0.0 23.0.0 1 HIGH
sqlparse 0.5.0 0.5.4 1 HIGH
botocore/boto3 1.31.8/1.28.8 ≥1.35.0 urllib3 2.x compat unblocked
mako (transitive) ≥1.3.11 pin 1 HIGH (directory traversal)
pyasn1 (transitive) ≥0.6.3 pin 2 HIGH
axios (root) 0.27.2 0.31.1 2 CRITICAL + 3 HIGH
axios (viz-lib) 0.28.0 0.31.1 2 CRITICAL + 3 HIGH
lodash (viz-lib) ^4.17.10 ^4.18.1 1 HIGH
follow-redirects 1.15.11 ≥1.16.0 (pnpm override) 1 HIGH

Snyk ignored (blocked by third-party constraints, justified in .snyk):

  • SNYK-PYTHON-WERKZEUG-6808933 — fix needs Flask 3.x; debugger-only, prod-safe
  • SNYK-PYTHON-URLLIB3-* (3 vulns) — fix needs urllib3 2.x; blocked by advocate==1.0.0
  • SNYK-PYTHON-PYOPENSSL-15674459 — blocked by snowflake-connector-python==3.12.3
  • SNYK-PYTHON-CRYPTOGRAPHY-15263096 — blocked by snowflake-connector-python==3.12.3

Before / After

  • After: snyk test --severity-threshold=high --all-projectsok: true, 0 vulnerable paths (3/3 projects)

⚠️ Post-Merge Action Required

6 new DB migrations were added in upstream since the fork diverged. Must run against staging first, then production with a backup:

flask db upgrade

Test Plan

  • snyk test --severity-threshold=high --all-projects → 0 vulnerable paths
  • poetry install --no-root resolves cleanly (Python 3.13)
  • pnpm install --ignore-scripts resolves cleanly
  • Pre-reset rollback tag pre-upstream-reset-2026-05-04 pushed to origin
  • .circleci/config.yml rewritten for Python 3.13 + pnpm + Poetry + ruff/black
  • CircleCI pipeline passes
  • flask db upgrade run on staging
  • flask db upgrade run on production (after staging validates)

🤖 Generated with Claude Code

AndrewChubatiuk and others added 30 commits April 17, 2024 17:46
* fix(aws-es): fixed es auth

* fixed lock

* rq v1.16
…ash#6890)

This combines the manual steps needed for installing the Python dependencies into a single Makefile target.
This code was supposed to be temporary, and raises an exception if REDASH_MULTI_ORG=true is set.
* consistent rq status naming and handling

* test fix

* make scheduled and deferred statuses cancelable
Co-authored-by: Peter Lee <yankeeguyu@gmail.com>
Use Webpack configuration for locating this asset in the same way that
client/app/index.html does.

This code path is when REDASH_MULTI_ORG=true.

Co-authored-by: github-actions <github-actions@github.com>
Restore previous functionality.

Ensure .env exists before building server.

Co-authored-by: github-actions <github-actions@github.com>
The 'codecov-action@v4' requires an organization-level upload token, not
a single repo upload token, so we're temporarily downgrading it until we
can generate an organization-level upload token.

Reference: codecov/codecov-action#1273
Thanks to substantial efforts by @andyundso, the Docker Hub
images for pgautoupgrade are now multi-arch (x86_64 and ARM64). :)
* serialize errors

* lint fix

* cover successful case
This reverts commit bd115e7, as
it turns out to be a useful security feature.

In order to remove this in a better way, we'll need to replace it
with something that provides equivalent functionality.
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](pallets/jinja@3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
"Query in queue" should switch to "Executing query", but does not.

Commands:

git revert --no-commit bd17662
git revert --no-commit 5ac5d86
vim tests/handlers/test_query_results.py
git add tests/handlers/test_query_results.py

Co-authored-by: Justin Clift <justin@postgresql.org>
…antd tooltip if they are defined (getredash#6582)" (getredash#6971)

This reverts commit c12d450.

This commit did not sort tables properly by schema, then name
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
yoshiokatsuneo and others added 27 commits February 20, 2026 13:50
* Aggregate y-value for the same x

* Fix styling error by prettier
Co-authored-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
* Update Python version to 3.13

* Limit scope for supressing warning

* Update td-client to 1.5.0 to avoid the warning
Signed-off-by: shunki-fujita <shunki-fujita@cybozu.co.jp>

Co-authored-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
* added cleint_tags

added the option to pass client tags to trino clusters source

* removed redundant checks

* removed redundant test and fixed if condition

---------

Co-authored-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
…#7644)

Trino ROW (struct) columns were serialized as plain arrays, losing
all field name information. This converts NamedRowTuple values to
dicts using the field name metadata from the trino library, so ROW
fields appear as {"field": value} instead of [value].

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
* Update changelog from wiki release notes

* Apply suggestions from code review

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
…redash#7647)

* Make gunicorn bind address configurable via REDASH_GUNICORN_BIND

Upstream commit d2a7d87 hardcoded the bind address to [::]:5000 for
IPv6 support, but this breaks on nodes where IPv6 is disabled in the
kernel. Make the bind address configurable via REDASH_GUNICORN_BIND,
defaulting to 0.0.0.0:5000 for IPv4. Users needing IPv6 dual-stack
can set REDASH_GUNICORN_BIND="[::]:5000".

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

* Default REDASH_GUNICORN_BIND to [::]:5000 to preserve upstream behavior

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
* Snapshot: 24.07.0-dev

* Snapshot: 24.08.0-dev

* Snapshot: 24.09.0-dev

* Snapshot: 24.10.0-dev

* Snapshot: 24.11.0-dev

* Snapshot: 24.12.0-dev

* Snapshot: 25.01.0-dev

* Snapshot: 25.02.0-dev

* Snapshot: 25.03.0-dev

* Snapshot: 25.04.0-dev

* Upgrade Node.js version to 24 in Dockerfile and .nvmrc; update package.json engine constraints

* Update major dependencies

* Switch from yarn to pnpm

* Switch from yarn to pnpm: ci

* Update Python version to 3.13 in CI workflow

* Refactor Netlify build command to remove pnpm installation step

* Update ESLint configuration for improved compatibility and disable specific rules

* Restyled by prettier

* Add typeRoots and types to tsconfig for improved type definitions

* Update Dockerfile.cypress to use Node 24 and streamline installation steps

* Fixed tests

* Restyled by prettier

* Update Jest snapshot comments to point to the official documentation URL

* viz-lib: refactor test setup and update snapshots for consistency

* Add babel-jest as a dev dependency for improved testing support

* Add virtual prop to visualization type selector for improved functionality

* Remove CJS/ESM compatibility shim for color-rgba

* Restyled by prettier

* Enable ESLintPlugin conditionally based on production environment

* Import d3 library in d3box.ts

* Fix pip install command in CI workflow to use python -m

* Replace d3 import with global declaration for compatibility with d3 v3

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <commits@restyled.io>
fixed typos & grammar; AppMetrica spelling, articles
* cloudflare d1 support

* updated to use sessions instead of request as suggested by @arikfr

* Refactor imports and remove dependency check

Removed dependency check for requests_session and cleaned up imports.

* Remove blank line in column info extraction

Removed unnecessary blank line in the column information extraction section.

* Add TYPE_DATETIME to query runner imports

* fix Import block is un-sorted & Local variable 'e'

* ran ruff check for fixing the lint error

* fix backend-lint errors

---------

Co-authored-by: Arik Fraimovich <arik@arikfr.com>
…72636]

Resets peachfinance/redash onto upstream/master (2942547) — 658 upstream
commits since fork diverged. All 40 fork commits were either already merged
upstream (Datadog destination) or superseded by upstream's new stack
(Poetry, pnpm, Python 3.13).

Pre-reset rollback tag: pre-upstream-reset-2026-05-04

Fork-specific additions carried forward:
- .snyk: ignore list for vulns blocked by third-party constraints
- .gitignore: .claude/worktrees/ and .terraform/modules/ exclusions
- .circleci/: config rewritten for Python 3.13 + Poetry + pnpm + ruff/black

Snyk vuln fixes applied on top of upstream:
Python (pyproject.toml):
  - authlib 0.15.5 → 1.6.9 (1 CRITICAL + 6 HIGH)
  - pyjwt 2.4.0 → 2.12.0 (1 HIGH: improper sig verification)
  - gunicorn 22.0.0 → 23.0.0 (1 HIGH: HTTP request smuggling)
  - sqlparse 0.5.0 → 0.5.4 (1 HIGH: resource exhaustion)
  - botocore/boto3 1.31.8/1.28.8 → >=1.35.0 (urllib3 2.x compat)
  - mako pinned >=1.3.11 (1 HIGH: directory traversal, transitive)
  - pyasn1 pinned >=0.6.3 (2 HIGH: recursion + allocation, transitive)

JS (pnpm):
  - axios 0.27.2→0.31.1 (root), 0.28.0→0.31.1 (viz-lib): 2 CRITICAL + 4 HIGH
  - lodash ^4.17.10→^4.18.1 (1 HIGH: code injection)
  - follow-redirects forced >=1.16.0 via pnpm.overrides (1 HIGH)

Snyk ignored (blocked by transitive constraints, justified in .snyk):
  - SNYK-PYTHON-WERKZEUG-6808933: fix needs Flask 3.x (debugger-only, prod-safe)
  - SNYK-PYTHON-URLLIB3-*: fix needs urllib3 2.x, blocked by advocate==1.0.0
  - SNYK-PYTHON-PYOPENSSL-15674459: blocked by snowflake-connector-python==3.12.3
  - SNYK-PYTHON-CRYPTOGRAPHY-15263096: blocked by snowflake-connector-python==3.12.3

Result: snyk test --severity-threshold=high → 0 vulnerable paths (3/3 projects)

Post-merge action required: run `flask db upgrade` on staging then prod
(6 new upstream DB migrations since fork diverged). Take DB backup first.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… reset (history reset PR)

# Conflicts:
#	requirements.txt
#	requirements_all_ds.txt
#	viz-lib/yarn.lock
#	yarn.lock
…build for type-check); parameterize docker_build to use DOCKER_REPOSITORY env var
…kg.dev/$GOOGLE_PROJECT_ID/peach-docker); remove DOCKER_CONTENT_TRUST (unsupported on GAR)
…ash; switch .ci/docker_build to GCP Artifact Registry
@jcesarioatpeach
Copy link
Copy Markdown
Author

@cursor carefully review, read only, think hard, MAXIMUM EFFORT!

@cursor
Copy link
Copy Markdown

cursor Bot commented May 5, 2026

Now I have a complete picture. Let me create a comprehensive review document:

Comprehensive Review - PR #96: Reset Fork onto Upstream 26.05.0-dev

Executive Summary

This PR represents a major strategic reset of the peachfinance/redash fork onto upstream getredash/redash at commit 294254752 (26.05.0-dev). The reset is well-executed with systematic vulnerability remediation and proper preservation of fork-specific customizations.

Strengths & Positive Observations

1. Fork Reset Execution - EXCELLENT

  • Clean reset onto upstream commit 294254752 (26.05.0-dev)
  • Rollback tag pre-upstream-reset-2026-05-04 properly created and pushed
  • All 40 fork commits correctly assessed (Datadog feature already merged upstream, other changes superseded)
  • Stack migration fully aligned with upstream's modernization

2. Vulnerability Remediation - COMPREHENSIVE

All claimed vulnerability fixes are correctly applied:

Python (pyproject.toml):

  • authlib: 0.15.5 → 1.6.9 (fixes 1 CRITICAL + 6 HIGH)
  • pyjwt: 2.4.0 → 2.12.0 (fixes 1 HIGH)
  • gunicorn: 22.0.0 → 23.0.0 (fixes 1 HIGH)
  • sqlparse: 0.5.0 → 0.5.4 (fixes 1 HIGH)
  • boto3/botocore: 1.28.8/1.31.8 → ≥1.35.0
  • mako: pinned ≥1.3.11 (transitive fix)
  • pyasn1: pinned ≥0.6.3 (transitive fix)

JavaScript (pnpm):

  • axios (root): 0.27.2 → 0.31.1
  • axios (viz-lib): 0.28.0 → 0.31.1
  • lodash (root devDeps): ^4.17.21 → ^4.18.1
  • lodash (viz-lib): ^4.17.10 → ^4.18.1
  • follow-redirects: ≥1.16.0 via pnpm.overrides

3. Fork-Specific Files - PROPERLY PRESERVED

  • .snyk: Comprehensive ignore policy with justified exceptions
  • .gitignore: Fork-specific exclusions (.claude/, .terraform/)
  • .circleci/config.yml: Completely rewritten for Python 3.13 + Poetry + pnpm

4. Stack Migration - VERIFIED

Component Before After Status
Python 3.8 3.13 ✅ Dockerfile verified
Dependency Mgmt requirements.txt Poetry + pyproject.toml ✅ No requirements.txt present
Node yarn pnpm@10.30.3 ✅ package.json verified
Linting flake8 ruff + black ✅ CircleCI config verified
Node version 14 24 ✅ CircleCI + Dockerfile verified

5. Database Migrations - ACCURATELY DOCUMENTED

The PR correctly identifies 6 new upstream migrations:

  1. 1038c2174f5d_make_case_insensitive_hash_of_query_text.py
  2. 1655999df5e3_default_alert_selector.py
  3. 7205816877ec_change_type_of_json_fields_from_varchar_.py
  4. 7ce5925f832b_create_sqlalchemy_searchable_expressions.py
  5. 9e8c841d1a30_fix_hash.py
  6. db0aca1ebd32_12_column_dashboard_layout.py

⚠️ CRITICAL: These require flask db upgrade on staging then production

6. GCP Artifact Registry Migration - COMPLETED

  • .ci/docker_build: Updated to push to us-docker.pkg.dev/${GOOGLE_PROJECT_ID}/peach-docker
  • .circleci/docker_build: Updated to use GCP Artifact Registry
  • ✅ Repository references: Updated from getredash/redash to peachfinance/redash in build scripts

⚠️ Issues Found - 1 MINOR INCONSISTENCY

Issue #1: Incomplete Repository Reference Update

Severity: MINOR (cosmetic)

Location: viz-lib/package.json:24

"url": "git+https://github.com/getredash/redash.git"

Should be:

"url": "git+https://github.com/peachfinance/redash.git"

Impact: This is purely metadata used by npm/pnpm for package info. It doesn't affect build, runtime, or functionality. However, for consistency with the other updates in commit 37e5022a7, it should be updated.

Other acceptable references: The remaining getredash/redash references found are appropriate:

  • CHANGELOG.md, README.md, CONTRIBUTING.md: Historical PR links and upstream references
  • Code comments: References to specific upstream issues/PRs for context
  • bin/release_manager.py: Upstream repo reference (may be unused in fork)

📊 Technical Verification

Commit History Analysis

37e5022a7 - fix: update hardcoded getredash/redash references (GCP Artifact Registry)
5589ff873 - fix: update Docker push targets to GCP Artifact Registry
5a0048c61 - fix: remove --ignore-scripts from frontend-unit-tests
f49902e2d - fix: regenerate pnpm-lock.yaml after auto-merge
c2ada5ee2 - Merge peachfinance/master (conflict resolution)
c90278a0b - fix: use sudo for corepack enable in CircleCI
209093447 - chore: reset fork onto upstream 26.05.0-dev + resolve Snyk vulns ⭐
294254752 - Snapshot: 26.05.0-dev (upstream base)

The commit history shows iterative fixes after the main reset, which is normal for complex migrations.

CircleCI Configuration

The new .circleci/config.yml is comprehensive:

  • ✅ backend-lint: Python 3.13 + ruff + black
  • ✅ backend-unit-tests: Docker Compose + Poetry
  • ✅ frontend-lint: Node 24 + pnpm
  • ✅ frontend-unit-tests: Full test suite
  • ✅ build-docker-image: Proper integration

🎯 Recommendations

REQUIRED Before Merge:

  1. Update viz-lib/package.json repository URL for consistency
  2. Verify CircleCI passes (currently 1 failed check - Restyled, which is cosmetic)

REQUIRED After Merge (Production):

  1. ⚠️ Run flask db upgrade on STAGING first
  2. ⚠️ Validate staging environment thoroughly
  3. ⚠️ Take production database backup
  4. ⚠️ Run flask db upgrade on production
  5. ⚠️ Monitor for migration-related issues

Optional (Lower Priority):

  1. Consider updating .github/ISSUE_TEMPLATE/ references (currently point to upstream)
  2. Consider whether bin/release_manager.py should point to fork

📝 Summary Assessment

Overall Grade: A-

This is an exceptionally well-executed fork reset with:

  • ✅ Complete stack migration aligned with upstream
  • ✅ Comprehensive vulnerability remediation (10 packages fixed)
  • ✅ Proper preservation of fork-specific customizations
  • ✅ Accurate documentation of migration requirements
  • ✅ Clean commit history with iterative fixes
  • ⚠️ One minor inconsistency (viz-lib package.json)

Risk Level: MEDIUM (primarily due to 6 new DB migrations requiring production deployment)

Recommendation: APPROVE after fixing viz-lib/package.json reference


The work demonstrates strong technical discipline in:

  1. Fork maintenance strategy
  2. Security vulnerability management
  3. Build system modernization
  4. Dependency management hygiene

The only concern is ensuring the database migrations are tested thoroughly on staging before production deployment.

Open in Web Open in Cursor 

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.