Skip to content

ci: integration batch B (29 reviewed prove-* PRs with follow-up fixes) - #1796

Merged
ScriptedAlchemy merged 193 commits into
masterfrom
ci/pr-batch-b
Sep 19, 2026
Merged

ScriptedAlchemy merged 193 commits into
masterfrom
ci/pr-batch-b

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Integration batch B: 29 reviewed PRs folded with git merge --no-ff so each PR head stays an ancestor and GitHub marks it merged when this branch lands. Verdict class: reviewed MERGE-AFTER-FIX verdicts; the required fix was applied as a follow-up commit on this branch after each fold.

Every PR was reviewed for content first (verdict blocks in the coordinator's scratchpad), then validated together on one CI dispatch rather than 95 separate runner-queue slots. Files that PRs only touched to make stale CI pass (the CI-patch list in the batch rules) were kept at the batch side; master already fixed those properly. Module lists were unioned and sorted.

PR head notes
#1608 test(mcp): prove tracedecay_dependency_depth behavior a9d50525f2 stale CI hunks dropped (codex/tests.rs restored to master's unconditional Ready assert; serving.rs, locking.rs, rules.rs, lifecycle_lease.rs untouched); result
#1613 test(mcp): prove tracedecay_unused_imports behavior 60920790ba fix(pr-1613) follow-up: collapsed the duplicated unknown-tool cases to one minimal empty-project case; dropped GROUPED_USE_WITH_ONE_UNUSED_NAME and the misleadi
#1617 test(mcp): prove tracedecay_derives behavior a5fa6681f9 stale serving.rs hunk (cross-crate clone-slot rewrite) restored to master. fix(pr-1617) follow-up: added support.rs handle_real_server_tool_call_raw_exact (late
#1622 test(mcp): prove tracedecay_doc_coverage behavior 394be57896 rules.rs hunk dropped; result = graph_query_test.rs only
#1627 test(mcp): prove tracedecay_lcm_status behavior 95d7ab9b44 rules.rs/delivery_api.rs/codex tests.rs dropped (codex keeps master's unconditional Ready assert); result = lcm_test.rs only
#1633 test(mcp): prove tracedecay_diagnose behavior f07725bb62 rules.rs, delivery_api.rs, codex tests.rs and benchmark_data/runtime/tests/test_lifecycle.py all dropped. fix(pr-1633) follow-up: replaced the file-local wait_f
#1634 test(mcp): prove tracedecay_message_search behavior 22af66da95 rules.rs hunk dropped; result = session_search_test.rs only
#1635 test(mcp): prove tracedecay_field_sites behavior bcbacef22a rules.rs hunk dropped; result = graph_analysis_test.rs only
#1643 test(mcp): prove tracedecay_configuration_unset behavior 9fc8b96d97 rules.rs/locking.rs/lifecycle_lease.rs/serving.rs dropped; result = mcp_handler_test.rs + configuration_unset_test.rs
#1647 test(mcp): prove tracedecay_find_exact_symbol behavior cf675d2e18 rules.rs/locking.rs/lifecycle_lease.rs dropped; result = mcp_handler_test.rs + find_exact_symbol_test.rs
#1662 test(mcp): prove tracedecay_fact_store_update behavior 69bd6cd35d DEVIATION: kept the fact_store/crud/commands.rs call-site canonicalization instead of dropping it. Verified in source that payload_material (crud/project.rs:437
#1665 test(mcp): prove tracedecay_changelog behavior de63db2bf5 rules.rs + serving.rs dropped; result = changelog_behavior_test.rs + main.rs registration
#1667 test(mcp): prove tracedecay_analytics behavior 79aac6758d kept the real production fix (run_ledger.rs schema-v2 Unix-seconds rows + analytics.rs handler); dropped only the CI-noise hunks (serving.rs restored, locking.r
#1686 test(mcp): prove tracedecay_source_edit_rollback behavior 4770639a5c rules.rs resolved to master's side; result = mcp_handler_test.rs + source_edit_rollback_test.rs
#1693 test(mcp): prove tracedecay_context behavior c3b2f00760 mod-list conflict resolved keeping both sides sorted; rules.rs to master's side; result = mcp_handler_test.rs + context_behavior_test.rs
#1697 test(mcp): prove tracedecay_hermes_skill_bridge behavior ab2ea4f3b1 stale hunks already absent. Required GLOBAL_DB_ENV_LOCK fix NOT applied because it is already satisfied: all three tests open with open_isolated_home() -> init_
#1706 test(mcp): prove tracedecay_feedback_list behavior 54976649a0 mod-list conflict resolved keeping both sides sorted; locking.rs/lifecycle_lease.rs/rules.rs untouched; result = mcp_handler_test.rs + feedback_list_test.rs
#1707 test(mcp): prove tracedecay_project_context behavior 6de65a9927 fix(pr-1707) follow-up: moved mod project_context_test; from between dependency_hint_test and edit_test to its sorted slot after move_symbol_test
#1708 test(mcp): prove tracedecay_feedback_impact behavior 90e75ea78a production hunks absent; result = daemon/tests.rs + daemon/tests/feedback_impact.rs. fix(pr-1708) follow-up: Duration::from_secs(60) -> Duration::from_mins(1),
#1726 test(mcp): prove tracedecay_grep behavior c532fb1fed rules.rs dropped, mod list merged sorted. fix(pr-1726) follow-up: added drop(server) + fixture.harness.shutdown().await at the end of tracedecay_grep_reports_li
#1728 test(mcp): prove tracedecay_project_search behavior af6863057a all five production edits dropped (codex/tests.rs, observation_projection/apply.rs + state.rs, rules.rs restored to the batch side); result = exactly mcp_handle
#1731 test(mcp): prove tracedecay_affected_tests behavior 699bf72716 rules.rs dropped; kept advisory/host_delivery_consume_tests.rs, which the review calls a strict strengthening explained in the PR body; result = that file + mcp
#1738 test(mcp): prove tracedecay_inheritance_depth behavior 4e8d3b9a14 rules.rs dropped, mod list merged sorted; result = mcp_handler_test.rs + inheritance_depth_test.rs
#1740 test(mcp): prove tracedecay_project_list behavior 48a0639227 fix(pr-1740) follow-up: git_repository() now uses Command::new(crate::common::git_program()); also moved mod project_list_test; to its sorted slot
#1747 test(mcp): prove tracedecay_ast_grep_rewrite behavior 462f1bfc33 fix(pr-1747) follow-up: deleted .audit/ast-grep-figure.summary.txt and .audit/ast-grep-rewrite.tsv; result = mcp_handler_test.rs + ast_grep_rewrite_behavior_tes
#1757 test(mcp): prove tracedecay_files behavior 7e75057b03 "Do not merge" line treated as stale per coordinator; locking.rs/rules.rs/lifecycle_lease.rs dropped; result = mcp_handler_test.rs + files_behavior_test.rs
#1758 test(mcp): prove tracedecay_port_order behavior c083c6b8c8 fix(pr-1758) follow-up: moved IsolatedEnv::acquire() out of open_port_order_project() into the first line of each #[tokio::test], matching affected_tests_behavi
#1765 test(mcp): prove tracedecay_lcm_grep behavior e59259b94f serving.rs restored to master (drops the duplicate #[allow(clippy::await_holding_lock)]); locking.rs/rules.rs/lifecycle_lease.rs untouched; result = mcp_handler
#1768 test(mcp): prove tracedecay_node behavior 1fd2a0bbcf serving.rs restored; kept 1768's support.rs dispatch_mcp_tool_call extraction and dropped the identical helper 1617's fix had added under the name handle_real_s

🤖 Generated with Claude Code

cursoragent and others added 30 commits September 18, 2026 07:07
Call the production MCP server with a fixture whose call chains are
known, and assert the JSON a caller observes. The previous check only
rejected one absent edge, so an empty chain list still passed.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
The retired scan must refuse a real tools/call instead of returning an
empty unused-import page that looks like a clean tree.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Call tracedecay_derives through production MCP tools/call and assert
the JSON and markdown an agent receives for attached names, empty
derives, and typed misses.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Drive tracedecay_diagnose through production MCP tools/call and
assert the mapped diagnostic, filters, and missing-input refusal.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Call the production MCP tool and assert the literal read and write
sites, writes-only shape, qualifier filter, unknown qualifier, limit
stop, missing argument, and unbound receiver.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Call the production MCP server and assert window, scope, section,
fact, automation, and observatory results as literal values.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Exercise rollback through production MCP tools/call: restore retained
move preimages, replay the receipt, refuse foreign bytes, and refuse
edits that kept no preimage.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Call the tool through MCP tools/call and assert the literal answers a
caller observes: the named project, the served project, not_found, an
unmounted registry, and a failed registry read.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Publish one compiler diagnostic through the production MCP server and
assert the list tool returns that finding, refuses unknown and get
handles, and rejects a malformed handle.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Call the production MCP tools/call path and assert the registry
payload, page bounds, wildcard escape, and typed refusals a client sees.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Drive the production tools/call path and assert the cycle's covering
tests, the invalid-handle refusal, and the unknown-handle problem.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Exercise the production tools/call path and lock literal ranking, path,
limit, and cycle results for tracedecay_inheritance_depth.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Lock the production MCP payload and the bytes a structural rewrite
writes: both call sites swap arguments, while the signature, comment,
and string stay. Cover replay, conflict, and the typed refusals.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
The advisory result nests the cycle under cycle; the handle and impact
fields live on that object, not the envelope root.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Lock the production tools/call payload: leaf-first levels, one SCC's
entry and break point, limit truncation, and typed argument rejection.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Resolve rustc from the repository toolchain so the fixture emits a real
E0425, then assert the list finding carries that exact diagnostic text.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A qualified census that hits an unbound macro site fails closed. Assert
that refusal, then prove Counter::n on a file whose receivers bind.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Apply keeps the preview digest and reports the predicted bytes as
committed state. A replay returns the retained receipt, not the live
pattern, and an unmatched pattern still uses that receipt message.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A path outside the worktree, a missing file, and a directory come back
as failed source-edit results. The file bytes stay unchanged.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Lock the caller-visible census a real tools/call returns for one
session, the other session, a missing session, and a deep scan.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Repository gates reject the edition-2024 form of these shared-lock
matches. Collapse them so the field-sites proof can pass fmt.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
A daemon-unavailable cycle is not a recordable publication, so the
tool's live answers are the handle refusals. The cycle impact still
names the covering tests by their indexed symbol ids.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
…t-search-behavior-7811

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
ScriptedAlchemy and others added 23 commits September 18, 2026 23:43
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
…d line

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
# 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
…lper

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
@changeset-bot

changeset-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0f94ec9

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

@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-19T04:54:35.956386Z 0f94ec9 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.

@ScriptedAlchemy
ScriptedAlchemy merged commit 3f71bcc into master Sep 19, 2026
25 checks passed
neoneye pushed a commit to agent-memory-atlas-archive/ScriptedAlchemy--tracedecay that referenced this pull request Sep 22, 2026
workflow_dispatch admits an integration branch and previously skipped
commitlint, so batch-fold follow-ups with headers of 73, 75, and 85
characters landed in ScriptedAlchemy#1796 and failed the master push. Dispatch now
lints the commits a merge onto the default branch would introduce.

header-max-length stays 72. A dispatch of the default branch does not
rejudge published history.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.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