Skip to content

fix: repair red main, and ship nothing main's CI has not passed - #3448

Merged
vitali87 merged 8 commits into
mainfrom
claude/stoic-pascal-oeon7h
Oct 25, 2026
Merged

vitali87 merged 8 commits into
mainfrom
claude/stoic-pascal-oeon7h

Conversation

@vitali87

@vitali87 vitali87 commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Main is red: fixed. fix(sql): one statement the grammar cannot read costs only that statement #3254 and fix(sql): routines are dead-code roots, and DDL that names one calls it #3251 merged two minutes apart, each green on its own base. fix(sql): one statement the grammar cannot read costs only that statement #3254's statement-isolated re-parse blanks every SQL statement the grammar cannot read, and the tree's text is that blanked copy. fix(sql): routines are dead-code roots, and DDL that names one calls it #3251's DDL scan read root_node.text, so the CREATE AGGREGATE / CAST / OPERATOR / EVENT TRIGGER / FDW clauses it looks for were gone. 12 tests in test_sql_ddl_routine_references.py failed on every unit shard 1/2 and in SonarCloud's copy of the suite.
    • The definition processor keeps the exact bytes each recovered SQL tree was parsed from (sql_sources), and _load_ast_from_disk replaces them when it reloads an evicted tree. The bytes always belong to the tree the call pass walks.
    • The call pass cuts the root's span from those bytes and reads no file. The copy keeps every offset, so the sites line up. An edit mid-sync can't mix new DDL with the old tree. A file that starts with a blank line or comment still works, because the root starts after it.
    • A SQL file is read once, before its parse.
  • Nothing ships a red commit. Only version-bump.yml checked CI, before the tag it pushes. publish.yml (PyPI), docker-publish.yml (GHCR) and the release uploads in build-binaries.yml also run on a hand-pushed tag, a hand-created release and a dispatch, with no check. make release had none either. v0.3.10 and v0.3.11 tag today's red main, so a release created on either would have shipped it. New scripts/require_green_ci.py runs in each of them against the commit being shipped, and fails closed:
    • passes only when CI's push run on main at that commit concluded success;
    • a version bump whose own run has not finished passes on its parent's green run. That holds only when it changes nothing but what version-bump.yml commits: code-graph-rag's version lines in pyproject.toml, uv.lock and server.json, the release's NEWS.md and README.md, or nothing at all (a hand-set version);
    • every later job in publish.yml waits for it.

Demo

No user-visible change: the SQL commits restore DDL edges the tests already assert, and the release commits change release workflows only.

Type of Change

  • Bug fix
  • New feature
  • Performance improvement
  • Refactoring (no functional changes)
  • Documentation
  • CI/CD or tooling
  • Dependencies

Related Issues

Related to #3251 and #3254 (their combination turned main red). #3447 fixes the same SQL breakage with a file re-read; only one of the two SQL fixes should land.

Test Plan

  • Unit tests pass: full pytest -n auto -m "not integration" locally on the final head gives 23,576 passed. 4 tests failed only because this machine has Go 1.24.7 (CI installs >=1.27.2) and no .NET SDK; all 4 are green in CI.

  • New tests added

  • Integration tests pass (make test-integration, requires Docker)

  • Manual testing (describe below)

  • SQL fix: the 12 failures reproduced on main exactly as CI shows them, and are green with the fix. New tests, each mutation-checked (each fails when its guard is removed):

    • test_ddl_edited_after_the_parse_is_not_read_against_the_old_tree, which edits wiring.sql between the passes three ways: shorter, same length, and same length inside a blanked statement only;
    • test_an_evicted_tree_reloaded_from_an_edited_file_reads_the_reload, with a one-entry AST cache;
    • test_ddl_after_a_leading_blank_line_and_comment_references_its_routine.
  • Release gate: test_require_green_ci.py, 44 tests:

    • the verdicts, using the real v0.3.11 bump patch as the fixture. Today's v0.3.11 is refused; a fresh bump of a green commit passes, with or without its news, and so does an empty bump; a dependency version line in uv.lock is not a bump; foreign runs (another workflow, branch, event or fork) are not evidence; an incomplete reply refuses.
    • wiring: any workflow that uses a publishing action must run the gate; the files the gate admits must cover the git add line in version-bump.yml; every publish.yml job needs the gate and checks out the release tag, never a job output (CodeQL reads that as cache poisoning); Docker gates before pushing; binaries need it on tags; release.sh asks before twine upload.
    • mutation checks, each caught: Docker gate removed, uv.lock name check disabled, own-run failure ignored, a publish.yml checkout ref changed, news files refused, the empty bump refused.
  • ruff, ruff format, ty, check-yaml clean.

Settings this cannot cover (repository/PyPI settings, owner's call):

  • A tag created before this merges still carries the old, ungated workflows. Renaming the PyPI trusted publisher's environment (and the one line here) cuts those off from PyPI.
  • A PyPI API token can upload with no check at all.
  • To stop an edited workflow on a branch, or a tag moved mid-run, from publishing: restrict the pypi environment to v* tags, and add a v* tag ruleset.

Checklist

  • PR title follows Conventional Commits format
  • A breaking change has ! in the title and its release notes in changes/breaking/<PR number>.md (see Breaking changes)
  • All pre-commit checks pass (make pre-commit): ruff, ruff format, ty, check-yaml run on the changed files
  • No hardcoded strings in non-config/non-constants files
  • No # type: ignore, cast(), Any, or object type hints: the gate script and its test type GitHub's JSON replies as Any and check object values with isinstance
  • New comments and docstrings explain why, not what (see Comment Policy)

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV

Summary by CodeRabbit

  • Release Reliability

    • Versioned builds, package and Docker publishing, and release scripts now require verified successful CI before proceeding. Eligible version-only updates may rely on the prior commit’s successful CI when the new run is pending or missing.
  • Bug Fixes

    • Improved SQL routine reference detection when source files change after parsing or are reloaded, including files with leading comments or blank lines.

@greptile-apps

greptile-apps Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerTREX TREX

Tested 1 flow, found no issues.

What we tested

  • Pass · Find SQL routines called by DDL · View ↗

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T12:00:47.441978Z 98c2989 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 81006bc and 993c0d6.

Files selected for processing: 1
  • codebase_rag/parsers/definition_processor.py

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 6 remain after this review.

Walkthrough

The pull request adds a CI verdict script and invokes it from release workflows and the release script. It also retains SQL source bytes when parsing changes the source text and uses those bytes when scanning SQL DDL routine references.

Changes: Green-CI shipping gate

Layer / File(s) Summary
CI evidence and version-bump verdict
scripts/require_green_ci.py
The script checks for a successful matching CI run on a main push. For pending or missing CI, it permits a qualifying single-parent version bump only when the parent’s CI succeeded.
CLI and API handling
scripts/require_green_ci.py
The CLI validates its ref, reports the verdict, and returns an exit code. GitHub API requests retry server errors and network failures up to three times.
Release-path gating and tests
.github/workflows/build-binaries.yml, .github/workflows/docker-publish.yml, .github/workflows/publish.yml, scripts/release.sh, codebase_rag/tests/test_require_green_ci.py
The release workflows and release script run the gate before shipping steps. Tests cover verdicts, version-bump qualification, CLI results, and workflow wiring.

SQL DDL source scanning

Layer / File(s) Summary
Source retention and DDL scanning
codebase_rag/parsers/definition_processor.py, codebase_rag/graph_updater.py, codebase_rag/parsers/factory.py, codebase_rag/parsers/call_processor.py, codebase_rag/tests/test_sql_ddl_routine_references.py
SQL processing retains source bytes when parsed text differs from the source slice. DDL scanning uses the retained bytes when available and falls back to the parsed root text otherwise. Tests cover edits between parsing and scanning, leading whitespace and comments, and cache eviction.

Priority: Normal

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseWorkflow
  participant require_green_ci.py
  participant GitHubAPI
  participant PublishJobs
  ReleaseWorkflow->>require_green_ci.py: pass tag or commit SHA
  require_green_ci.py->>GitHubAPI: resolve commit and query matching CI runs
  GitHubAPI-->>require_green_ci.py: return commit, run status, and changed-file data
  require_green_ci.py-->>ReleaseWorkflow: return gate verdict
  ReleaseWorkflow->>PublishJobs: run jobs after gate success
Loading

Possibly related PRs

Suggested labels: bug

Suggested reviewers: claude

Merge Risk: Minimal · up to 993c0

No actionable issue is established; the change is mergeable after normal checks.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly describes both the SQL repair and the new CI release gate. It is concise and uses Conventional Commits format.
Description check Passed The description follows the required template and provides a clear summary, change classification, related issues, test results, validation details, checklist status, and deployment limitations.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 98c2989c89

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread codebase_rag/parsers/call_processor.py Resolved
@greptile-apps

greptile-apps Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The PR appears safe to merge; no new blocking issues were found.

Summary

The PR restores SQL routine references and adds CI checks before publishing releases.

  • SQL routine links use the source bytes parsed for each tree.
  • Release uploads wait for successful CI on the commit being shipped.

Reviews (3) · Last reviewed commit: "fix(sql): scan the whole file a recovere..." · Reviewed by Greptile

Comment thread scripts/require_green_ci.py Resolved
vitali87 and others added 4 commits October 25, 2026 12:09
… re-parse

main has been red since #3251 merged on top of #3254: 12 tests in
test_sql_ddl_routine_references.py fail on every unit-test shard 1/2 and in
the SonarCloud job's copy of the suite.

#3254 re-parses a SQL file from a copy in which each statement the grammar
cannot read on its own is blanked, and the returned tree's text is that
copy. #3251 scans `root_node.text` for the routines DDL names, and the
statements it reads (CREATE AGGREGATE, CAST, OPERATOR, EVENT TRIGGER,
FOREIGN DATA WRAPPER) are exactly the ones the copy blanks, so their edges
vanished. Each PR was green against its own base; #3251 was never re-tested
after #3254 landed two minutes earlier.

The scan now reads the file as the grammar read it (grammar_bytes over the
file's bytes). The copy keeps every offset, so the sites still line up with
the tree. The tree's text remains the fallback when the file is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV
version-bump.yml checks CI before the tag it pushes, but that was the only
check. publish.yml (PyPI), docker-publish.yml (GHCR) and the release
uploads in build-binaries.yml also run on a tag pushed by hand, a release
created by hand and a dispatch, with no CI check at all, and so does `make
release`. v0.3.10 and v0.3.11 tag today's red main: creating a release on
either would have shipped it.

scripts/require_green_ci.py now runs in each of them against the exact
commit it builds, and fails closed. A commit passes when CI's push run on
main concluded success. A version bump whose own run has not concluded
passes on its parent's run, because version-bump.yml ships the bump before
CI on it can finish; the bump may change only code-graph-rag's version
lines in pyproject.toml, uv.lock and server.json. publish.yml checks out
the SHA the gate passed in every later job, so a tag moved mid-run cannot
swap the commit. A test fails when any workflow using a publishing action
does not run the gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV
…s output

CodeQL reports a checkout whose ref comes from another job's output as
untrusted code run in a privileged workflow (cache poisoning, high), and
flagged rust-wheels' `ref: needs.ci-gate.outputs.sha`. Every job checks out
the tag again, as before this branch; the gate still has to pass first. A
tag moved mid-run is the tag ruleset's to stop. The script no longer writes
the SHA it checked, which nothing reads now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV
…urce

The call pass re-read the SQL file for its DDL, so an edit landing after
the parse (a sync racing the editor, or before an evicted tree is reloaded
from disk) put the new text's routine names at the old tree's offsets.
`is_parsed_from` checks the file against the tree in hand: the
statement-isolated copy keeps the length, every newline and every byte it
does not blank, hollow or turn into a placeholder, so any other difference
means the file changed, and the call pass then reads the tree's own text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV
@vitali87
vitali87 force-pushed the claude/stoic-pascal-oeon7h branch from 4dcdab3 to 491b1e3 Compare October 25, 2026 12:09
version-bump.yml commits NEWS.md and the README re-rendered from it with
the version whenever a release has highlights, and an empty bump when the
version was set by hand. The gate admitted only version lines, so it would
refuse every such release while the bump's own CI was still running, and
the tag-triggered uploads do not retry. Both docs now pass on the parent's
run; neither is built into anything that ships (the package readme is
PYPI_README.md). A test keeps the admitted files in step with the files
version-bump.yml adds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔇 Additional comments: 1
codebase_rag/parsers/sql_recovery.py-165-167: 1

165-167: Major · Data Integrity & Integration · Quick win

⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.

Compare against the original source bytes before reading current DDL.

If recovery blanked a statement, a same-length edit anywhere in that statement can pass is_parsed_from: each parsed space accepts any source byte except newline. For example, changing only _WIRING’s SFUNC = first_sfunc, to SFUNC = first_fin , can make CallProcessor._sql_source_as_written scan the edited DDL against the old tree and emit an incorrect routine edge. The same check also accepts edits to an underscore in an otherwise unchanged tree. Retain the original grammar bytes from parsing and compare them exactly with the current file before using it. The same-length test in codebase_rag/tests/test_sql_ddl_routine_references.py also changes CREATE TABLE, so it does not isolate an edit within the blanked statement. As per path instructions: “Only comment on critical, major, or high-severity issues: logic errors, security vulnerabilities, race conditions, data loss or corruption, and breaking API changes.”

Source: Path instructions


Review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 98c2989 and 491b1e3.

Files selected for processing: 7
  • .github/workflows/publish.yml
  • codebase_rag/parsers/call_processor.py
  • codebase_rag/parsers/sql_recovery.py
  • codebase_rag/tests/test_require_green_ci.py
  • codebase_rag/tests/test_sql_ddl_routine_references.py
  • codebase_rag/tests/test_sql_statement_isolation.py
  • scripts/require_green_ci.py

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 5 remain after this review.

The call pass re-read the file and accepted it when it matched the
statement-isolated copy outside the blanked text. That let a same-length
edit inside a blanked statement through, and any edit to a real `_`, and
it compared the whole file with the root's text, which starts after a
leading blank line or comment, so such a file lost its DDL edges again.

The definition processor now keeps the bytes each SQL tree was parsed from
when its text is the isolated copy, and an evicted tree's reload from disk
replaces them, so they always belong to the tree the call pass walks. The
call pass cuts the root's span from them and reads no file. A SQL file is
read once, before its parse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV

Copy link
Copy Markdown
Owner Author

@coderabbitai Your sql_recovery.py finding (a same-length edit inside a blanked statement, or to a real _, passing is_parsed_from) was right. It's fixed in 81006bc by keeping the parsed bytes and comparing nothing. While checking it I found one more bug of mine: the check compared the whole file with the root's text, which starts after any leading blank line or comment. It's fixed in the same commit, which now cuts by the root's span. New tests:

  • same-length-inside-a-blanked-statement
  • test_ddl_after_a_leading_blank_line_and_comment_references_its_routine
  • test_an_evicted_tree_reloaded_from_an_edited_file_reads_the_reload

Each fails without its fix.


Generated by Claude Code

@coderabbitai

coderabbitai Bot commented Oct 25, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
git show --stat --oneline 81006bcb
fd -t f 'sql_recovery\.py$'
ast-grep outline codebase_rag/parsers/definition_processor.py --match 'keep_sql_source|process_file' --view expanded
ast-grep outline codebase_rag/parsers/call_processor.py --match 'sql|ddl' --view expanded
rg -n -C 5 'sql_sources|keep_sql_source|root_node.start_byte|root_node.end_byte' codebase_rag/parsers/definition_processor.py codebase_rag/parsers/call_processor.py codebase_rag/graph_updater.py codebase_rag/parsers/factory.py
rg -n -C 7 'same-length-inside-a-blanked-statement|test_ddl_after_a_leading_blank_line_and_comment_references_its_routine|test_an_evicted_tree_reloaded_from_an_edited_file_reads_the_reload' codebase_rag/tests/test_sql_ddl_routine_references.py

Length of output: 14214


🏁 Script executed:

#!/bin/bash
ast-grep outline codebase_rag/parsers/sql_recovery.py
cat -n codebase_rag/parsers/sql_recovery.py
sed -n '325,420p' codebase_rag/tests/test_sql_ddl_routine_references.py
git show 81006bcb -- codebase_rag/parsers/sql_recovery.py

Length of output: 23029


@vitali87 Thanks for fixing this in 81006bcb. The inspected code addresses the original finding:

  • is_parsed_from is removed.
  • DDL scanning uses retained parse-time bytes, sliced to the root node’s byte span.
  • Reloading an evicted SQL tree refreshes the retained bytes.

The three regression cases cover same-length edits in blanked statements, leading whitespace and comments, and edited-file reloads. I inspected the test assertions but did not run the tests.


📝 I couldn't check this conversation for new learnings, so no new learning was saved.


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

You are interacting with an AI system.

The read-once and keep-the-parsed-bytes branches raised process_file's
cognitive complexity from 14 to 17, past SonarCloud's 15 (python:S3776),
which fails the Sonar Zero Issues Gate. They move into _read_sql_once and
_settle_sql_file, and process_file is back at 14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV
@vitali87

Copy link
Copy Markdown
Owner Author

@greptile review

Comment thread codebase_rag/parsers/call_processor.py Resolved
When recovery blanks a statement that opens or closes the file, such as an
EVENT TRIGGER whose ERROR swallowed the function after it, that statement
lies outside the recovered root's span. The call pass cut the saved bytes
to that span, and keep_sql_source compared only inside it and dropped the
bytes, so the trigger's routine got no edge and looked dead. The bytes are
now kept whenever anything but whitespace lies outside the root, and the
scan reads them whole from the file's origin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4AFQuVg5X5cRio73QgHXV
@sonarqubecloud

Copy link
Copy Markdown

@vitali87

Copy link
Copy Markdown
Owner Author

@greptile review

@vitali87
vitali87 merged commit 8d969df into main Oct 25, 2026
48 checks passed
@vitali87
vitali87 deleted the claude/stoic-pascal-oeon7h branch October 25, 2026 18:05
vitali87 pushed a commit that referenced this pull request Oct 25, 2026
main now carries its own fix for the DDL scan reading the statement-isolated
re-parse (#3448: _sql_source_as_written reads the bytes the tree was parsed
from), which supersedes the copy this branch ported in to get CI green
(_sql_source_text). call_processor.py and test_sql_ddl_routine_references.py
take main's version, so they leave this PR's diff. The frozen-clock fix for
test_seconds_left_follows_the_running_deadline is not on main and stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q1Edv3KWZrD3dN9qUQGD3u
vitali87 pushed a commit that referenced this pull request Oct 25, 2026
Main's #3448 fixes the SQL DDL scan by keeping the parsed source
bytes, superseding the port of #3447 carried here; both SQL files take
main's version, so this branch no longer changes them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CHdvTdmrf7eEpdgLCmvRR
vitali87 pushed a commit that referenced this pull request Oct 26, 2026
Brings in the repair of red main (#3448). The one conflict, the seconds-left deadline test, takes main's frozen-clock version, which replaces this branch's rounding tolerance for the same Windows flake.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVdycfDFvbqaoyHWVWHJ1N
vitali87 pushed a commit that referenced this pull request Oct 26, 2026
Brings in the repair of red main (#3448) through the updated pr-4 base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVdycfDFvbqaoyHWVWHJ1N
vitali87 pushed a commit that referenced this pull request Oct 26, 2026
Brings in the repair of red main (#3448) through the updated pr-5 base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVdycfDFvbqaoyHWVWHJ1N
vitali87 pushed a commit that referenced this pull request Oct 26, 2026
Brings in the repair of red main (#3448) through the updated pr-6 base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVdycfDFvbqaoyHWVWHJ1N
vitali87 pushed a commit that referenced this pull request Oct 26, 2026
Brings in the repair of red main (#3448) through the updated pr-7 base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVdycfDFvbqaoyHWVWHJ1N
vitali87 pushed a commit that referenced this pull request Oct 26, 2026
Brings in the repair of red main (#3448) through the updated pr-8 base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVdycfDFvbqaoyHWVWHJ1N
vitali87 added a commit that referenced this pull request Oct 30, 2026
call_processor.py and test_sql_ddl_routine_references.py: took main's.
Main's own fix for the DDL scan of a recovered SQL parse
(_sql_source_as_written, #3448) supersedes the stopgap this branch had
cherry-picked (_sql_source_text), so the branch no longer touches
either file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant