Skip to content

fix(ci): shorten batch-fold subjects past 72 - #1802

Closed
ScriptedAlchemy wants to merge 39 commits into
masterfrom
cursor/shorten-batch-fold-headers-e3cc
Closed

ScriptedAlchemy wants to merge 39 commits into
masterfrom
cursor/shorten-batch-fold-headers-e3cc

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Summary

  • Replays the batch-B follow-ups whose subjects failed header-max-length on master push 3f71bccb2d (run 35423924082).
  • Subjects only: 92b22f7 (73) → 69, 4c5275f (75) → 67, 943f641 (85) → 48. Bodies, trees, and the 72-character rule are unchanged.
  • Does not restore pull_request in .github/workflows/ci.yml. test(ci): close three master-tip readiness races #1794 touches different test files and is not absorbed.

Motivation

tip-commit-lint on the #1796 merge validated b4aa02ae..3f71bccb and failed three non-merge fold follow-ups. Those objects are already on master, so their SHAs cannot be edited in place. This branch rebuilds the 38 descendant commits with the same trees and the three subjects shortened, then merges that history onto master. The resulting tree matches 3f71bccb2d. The next master push lints 3f71bccb..<merge>, which contains the replacements and not the already-reachable originals.

original replacement subject
92b22f71996f (73) 80dab83216da (69) fix(pr-1633): warm diagnose fixture through the shared support helper
4c5275f31a54 (75) 6c0be4c3d629 (67) fix(pr-1740): resolve git through git_program and sort the mod line
943f641111e7 (85) f62153bbc929 (48) fix(pr-1617): share the exact-arguments dispatch

workflow_dispatch SHA: c60f23a1d9f08fbea8daa043d81fc9c045b33642

Do not merge from automation; the tip SHA above is the dispatch target.

Changes

  • No file changes. git diff 3f71bccb2d HEAD is empty.
  • Ten non-merge commits are reachable only from this side (the three shortened subjects plus seven unchanged follow-ups whose parent SHAs moved). Merge commits are excluded by the existing range linter.

Test plan

  • node scripts/lint-commit-range.mjs --repository . 3f71bccb2dba20a3271ba4bb1fc2e2fcc21a2ca5 c60f23a1d9f08fbea8daa043d81fc9c045b33642 exits 0 (10 non-merges, the three replacements included)
  • git show --no-patch --format=%B <replacement> \| npm run lint:commit exits 0 for 80dab83216da, 6c0be4c3d629, and f62153bbc929
  • cargo nextest / clippy not re-run: the tree is byte-identical to the current tip, so they cannot change

Checklist

  • No secrets, credentials, or .env files included
  • CHANGELOG.md updated (history-only; no user-facing change)
  • Breaking changes documented (none)
Open in Web Open in Cursor 

ScriptedAlchemy and others added 30 commits September 18, 2026 23:39
The review asked to add a no-`format`-injection variant of
`handle_real_server_tool_call_raw` to `support.rs`, use it from
`derives_test.rs`, and revert `CaptureTransport.incoming` to private. The
local dispatch in `call_derives` only differed from the existing helper by
skipping the default `format` injection, which its explicit
`format: "markdown"` and bare-argument error cases depend on.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-dashboard-api/src/delivery_api.rs
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
…vior

# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
The review found the two added lines landed between `dependency_hint_test`
and `edit_test` instead of their alphabetical slot; the mod list is kept
sorted (rustfmt `reorder_modules`).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
The review found `tracedecay_grep_reports_literal_matches_and_typed_failures`
ended without `fixture.harness.shutdown().await;`, unlike its siblings in
the suite, leaving the production composition to be torn down implicitly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay-code-index/tests/code_index_suite/production_orchestration.rs
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
The review required `git_repository()` to use `common::git_program()`
instead of a bare `Command::new("git")`, matching the rest of the suite so
the fixture does not depend on an ambient `git` on PATH. The merge also
placed `mod project_list_test;` out of its alphabetical slot.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
The review required deleting `.audit/ast-grep-figure.summary.txt` and
`.audit/ast-grep-rewrite.tsv`; they are one-off scratch output from the
authoring session, not part of the test.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
# Conflicts:
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
The review found `IsolatedEnv::acquire()` was bound inside
`open_port_order_project()`, so the guard dropped as soon as the fixture
was returned and the tests only passed under `--test-threads=1`. Acquire it
in each test body instead, matching `affected_tests_behavior_test.rs`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
ScriptedAlchemy and others added 9 commits September 18, 2026 23:49
# Conflicts:
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/support.rs
`cargo clippy --workspace --all-targets --locked -- -D warnings` (the CI
Clippy job) fails on `Duration::from_secs(60)` with
`clippy::duration_suboptimal_units`. `Duration::from_mins` is the form the
rest of the workspace already uses for minute-scale deadlines.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	benchmark_data/runtime/tests/test_lifecycle.py
#	crates/tracedecay-dashboard-api/src/delivery_api.rs
#	crates/tracedecay-privacy/src/rules.rs
#	crates/tracedecay/tests/mcp_suite/mcp_handler_test.rs
The review required replacing the file-local `wait_for_graph` status poll
with `crate::support::warm_code_index_search(&server, "target")`, matching
1622/1628. The fixture exposes a server through
`fixture.harness.server(&fixture.project_root)`, so the swap is direct and
the helper also waits on the search generation, not only graph serving.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The registry search ORs whitespace-separated tokens through `LIKE`. The
injection probe `search-alpha' OR '1'='1` therefore also searched for the
substring `OR`, which matched both fixture roots whenever their shared
temp directory drew a name containing it (`.tmpXoRyz`, ~2% of runs; CI run
35408468113 TRY 1). Drop the whitespace so the probe stays a single token
that breaks the quote but can match no fixture field.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	crates/tracedecay-mcp/src/handlers/hook_runtime/ingest.rs
#	crates/tracedecay-mcp/src/handlers/hook_runtime/ingest/kernels.rs
ci: integration batch B (29 reviewed prove-* PRs with follow-up fixes)
Shorten the three non-merge follow-ups that failed header-max-length.
Trees match master; only those subjects changed.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
@changeset-bot

changeset-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: c60f23a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy
ScriptedAlchemy marked this pull request as ready for review September 19, 2026 06:17
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 19, 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-09-19T06:19:10.398959Z c60f23a Draft marked ready
ℹ️ 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.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Review from the master-repair sweep: recommending we close this one rather than merge it.

  • The three over-long headers (92b22f7, 4c5275f, 943f641) are already on master; the push-time lint only checks github.event.before..github.sha, so the next master push lints a new range and the failure does not recur on its own. Nothing on master stays red because of them.
  • This branch merges a rewritten copy of 38 commits (including a second "Merge pull request ci: integration batch B (29 reviewed prove-* PRs with follow-up fixes) #1796") onto master. That doubles the history for the same tree and makes every one of those commits appear twice in git log, blame and bisect, which is a worse permanent cost than three old headers.
  • The durable fix is to lint integration branches before they are merged: that is fix(ci): lint integration commits on dispatch #1806 (lint on dispatch), which is being reviewed now, plus the batch branches are already linted locally with node scripts/lint-commit-range.mjs --repository <tree> origin/master HEAD before push.

Happy to be overruled if there is a constraint I am missing, but as it stands I will not merge a history rewrite.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Cancelled this branch's CI run 35426196773 to free the shared runner queue (10 runs deep, 2 concurrent); see the review comment above for why the PR itself should be closed rather than merged.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Closing: this branch is a history rewrite of 39 already-merged commits with an empty tree diff against master (+0/-0). The commit-header length rule is enforced going forward by the commit-msg hook and by scripts/lint-commit-range.mjs in CI; rewriting landed history is not something we merge.

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