Skip to content

fix: address late-landing bot review findings across 11 merged PRs#1038

Merged
joeharris76 merged 1 commit into
developfrom
chore/pr-review-followup-sweep-2
Jul 8, 2026
Merged

fix: address late-landing bot review findings across 11 merged PRs#1038
joeharris76 merged 1 commit into
developfrom
chore/pr-review-followup-sweep-2

Conversation

@joeharris76

Copy link
Copy Markdown
Owner

Pull Request

Description

Consolidated fix for chatgpt-codex-connector review comments that landed on 11 already-merged PRs after they merged (late-landing findings): #1032, #1037, #1035, #1030, #1031, #1028, #1025, #1024, #1022, #1020, #1019. Each source PR's review thread will be replied to and resolved citing this PR's commit.

Type of Change

  • Bug fix
  • Documentation
  • New feature
  • Breaking change
  • Refactor / chore

Testing

Every fix has a dedicated regression test, verified to fail before the fix and pass after via git stash:

uv run -- python -m pytest tests/unit/platforms/dataframe/ tests/unit/core/results/ tests/unit/core/query_plans/ \
  tests/unit/core/manifest/ tests/unit/test_release_infrastructure.py tests/unit/test_results_exporter.py \
  tests/unit/workflows/ -q
# 2262 passed, 69 skipped

Full tests/unit/ -m fast suite (23,274 tests) also run: 3 pre-existing failures, all confirmed to reproduce identically on a clean develop checkout (unrelated to this PR — sandbox running as root bypasses two filesystem-permission-error tests, and the zstd CLI binary is absent for a third).

uv run --project _project/scripts -- python _project/scripts/todo_cli.py check-graph passes (no dangling references / cycles) after the TODO YAML edits and the TODO→DONE move.

ruff check / ruff format --check / ty check all clean on every changed file.

Public Contract Check

  • I updated docs/reference/public-contracts.md, or this PR does not change public, beta-public, deprecated, generated, experimental, or repo-only contract surfaces.
  • I checked result schema fields, MCP tool parameters, platform support status, wrapper facades, adapter subclassing hooks, and generated docs for contract-map impact. PlanMetadata.plan_fingerprint_versions and QueryResultInput.plan_capture_error are additive fields; existing .plans.json/main-file consumers are unaffected.
  • Any platform/benchmark count claim in docs is generated/checked from registry metadata, or explicitly marked editorial/non-authoritative.

Documentation

  • I updated the relevant user-facing docs (docs/operations/repo-admin-settings.md).
  • I added regression notes for behavior changes (inline comments explain each fix's "why").
  • I confirmed API contract wording remains accurate.

Code Quality

  • I ran formatting and lint/type checks.
  • I reviewed impacted modules for backwards compatibility and migration impact.
  • I added/updated tests for behavior changes and error paths.
  • I confirmed public contracts and release checklists are still valid.

Artifact Hygiene

  • I did not commit raw screenshots, browser reports, generated logs, benchmark outputs, or temporary binary artifacts.
  • No binary/raw evidence files added.

Notes

Not CODEOWNERS-gated (no changes under benchbox/core/query_plans/parsers/**, benchbox/core/expected_results/**, or the other soundness-critical paths) — squash auto-merge will be enabled.

🤖 Generated with Claude Code


Generated by Claude Code

Sweep of chatgpt-codex-connector review comments that landed after their
respective PRs merged (#1032, #1037, #1035, #1030, #1031, #1028, #1025,
#1024, #1022, #1020, #1019). Each fix includes a regression test verified
to fail before the fix and pass after:

- qpc-05/#1032: thread the real DataFrame plan-capture-error cause through
  to both the .plans.json companion (existing_errors=) and the main result
  row (plan_capture_error field); reset per-run capture-error state on
  ExpressionFamilyAdapter (qpc-15 w1-w3 implemented).
- #1037: fix qpc-13's scope_limit path (_spark_helpers.py lives directly
  under benchbox/platforms/, not benchbox/platforms/dataframe/) and add the
  missing deps.needs: [qpc-05] to qpc-13 and qpc-15 planning YAMLs.
- #1035: gate human-action-required.yaml's branch-rename admin action (w2)
  on the default-branch switch (w3) too, matching the source TODO's
  A-before-B sequencing.
- #1030: release-cut's git commit now passes --no-verify, since the
  curation step already deleted .pre-commit-config.yaml and
  _project/scripts/ (the local hook entrypoints) from the working tree.
- #1031: fix `python -m benchbox platform list` -> `benchbox platforms list`
  (plural, actual console script) across both DuckLake TODO planning files.
- #1028: correct plan_changed against the full tree-walk fallback so a pure
  fingerprint-encoding-version bump (v1->v2) is never misreported as a
  changed plan; thread fingerprint_version through PlanMetadata/PlanHistory
  so version-boundary crossings are excluded from flapping/version-history
  diffs.
- #1025: normalize a "Z"-suffixed timestamp to "+00:00" before
  datetime.fromisoformat(), which only accepts "Z" from Python 3.11 -
  the project's floor is 3.10.
- #1024: recursively strip physical_operator.platform_metadata across the
  full operator tree for anonymized exports, not just the top-level
  raw_explain_output - many parsers copy raw EXPLAIN text into per-node
  metadata under platform-specific key names.
- #1022: match each repeated query failure to its own error entry (FIFO per
  query_id) instead of always reusing the first; synthesize a standalone
  FAILED row for any error not actually consumed by a queries[] row, not
  just for query_ids absent from queries[] entirely.
- #1020: document orphaned-commit-detector.yml as a third instance of the
  known "scheduled workflow absent from default branch" class in
  repo-admin-settings.md; use the latest PR (by number) as the branch-diff
  cutoff and skip the branch when that PR closed without merging, so an
  abandoned closed PR's commits aren't misreported as orphans.
- #1019: move the qpc-01 planning YAML from TODO/ to DONE/ (already Completed).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKw2UhgHuzYPo3y5MfarD6
@joeharris76 joeharris76 enabled auto-merge (squash) July 7, 2026 23:56

@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: de98320f9c

ℹ️ 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 benchbox/core/manifest/plan_metadata_utils.py
Comment thread benchbox/core/results/builder.py
@joeharris76 joeharris76 merged commit 860dc5a into develop Jul 8, 2026
22 checks passed
@joeharris76 joeharris76 deleted the chore/pr-review-followup-sweep-2 branch July 8, 2026 00:15
joeharris76 added a commit that referenced this pull request Jul 8, 2026
…1052)

* fix: address late-landing bot review findings on PR #1038 and #1041

- #1038 (plan_metadata_utils.py): a brand-new query_id whose fingerprint_version
  differs from prev's default fell into the version-comparability-mismatch
  branch, which fell back to prev_metadata.plan_versions.get(query_id, 0) -
  writing an invalid version 0 (validate_plan_metadata rejects versions < 1).
  Bypass that branch entirely for query_ids absent from prev_metadata: there is
  no prior recording to be "not comparable" to, so a new query always starts
  at version 1.
- #1038 (schema.py): plan_capture_error was added to ResultBuilder's in-memory
  query_results dict, but the actual JSON export goes through schema.py's
  _build_query_results_section, a separate serialization path that copies only
  specific fields onto the compact queries[] entry. Added plan_capture_error
  there too, so the real DataFrame capture-failure cause reaches the persisted
  bundle, not just the in-memory representation.
- #1041 (validate-submission.yml): the "Reject non-maintainer vendor/
  additions" step's OWNER/MEMBER/COLLABORATOR allowlist didn't account for the
  trusted same-repo auto/results-mirror-* PRs that
  sync-results-data-to-published.yml opens with secrets.GITHUB_TOKEN (authored
  by github-actions[bot]), so a maintainer's vendor bundle published through
  that path was blocked. Added the same two-signal trust check
  (head.repo.fork == false AND the mirror branch pattern) the "Validate
  bundles" step's manifest waiver already uses.

Each fix has a regression test verified to fail before the fix and pass after.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKw2UhgHuzYPo3y5MfarD6

* fix: reconstruct plan_capture_error on result reload (#1052 review)

The export fix alone was incomplete: _reconstruct_query_results() copied
iter/stream/run_type/test_type from the compact queries[] entry but not
plan_capture_error, so an export -> load -> re-export round trip silently
dropped the real DataFrame capture-failure cause again even though it
survived the first export.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKw2UhgHuzYPo3y5MfarD6

---------

Co-authored-by: Claude <noreply@anthropic.com>
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