Skip to content

fix(ci): integrate baseline runtime and fixture repairs - #4332

Open
ScriptedAlchemy wants to merge 17 commits into
masterfrom
fix/allocator-test-glibc-231
Open

ScriptedAlchemy wants to merge 17 commits into
masterfrom
fix/allocator-test-glibc-231

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Linux CI failures across the open PRs share several baseline causes. Integrate the verified fixes together so their checks run with the complete set of repairs. Merge commits retain the original source PRs' commits and review history; this PR must use a merge commit when landing.

Included source PRs:

The original fixture fixes remain: glibc 2.31-compatible allocator counters; writable lexical/provenance scratch files; correct Linux zombie detection; explicit preserved Cursor directory modes; typed same-request HTTP capacity retries; one canonical temporal fixture writer; completed durable-memory protection assertions; and joined retained-history setup before testing admission state.

Component verification before integration:

  • Strict transport cancellation: 20/20; strict deadline regression: 1; cancellation registry: 10.
  • Dashboard: 221 files / 2,137 tests passed in 215 seconds, including 43 focused tests; unchanged 300-second timeout.
  • Hook replay: 6 tests and the actual Claude journey passed; affected formatting and Clippy passed.
  • Memory admission: 56 tests; 22 ignored-dependency daemon cases; unchanged 48,000-function, four-refresh journey passed in 258.37 seconds under its original 6 GiB and 300-second limits.
  • Privacy: 137 tests plus exact Claude/Vibe transcript checks (2 tests), formatting passed.
  • Fixture checks: allocator 1, lexical 1, provenance 18, Codex app-server 14, exact Cursor restore 1, full Work-loop journey, temporal-store 177, maintenance 123, and retained-history pair 5 runs / 10 executions. Affected formatting and diff checks passed.

The source branches merged without conflicts. Integrated verification and fresh hosted CI are required on this head; component checks are not presented as a full integrated workspace pass. The separately measured cold linked-worktree hook admission issue remains under active work in #4335 and will be incorporated when verified. Production deadline/timeout budgets and existing product assertions are preserved.

@changeset-bot

changeset-bot Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: b3b4050

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

@devin-ai-integration devin-ai-integration Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Note

Newer findings are available below. Devin Review posted a newer report on this PR, in addition to the findings presented here.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

CI races local and remote TestRunner execution. The one-worker hosted run timed out after 172 of 221 files, with only 103 seconds in reported test bodies.

Keep two workers to avoid cold-import assertion failures seen with four. Reserve four CPUs for the workers, transforms, coordinator, and runtime helpers, following the existing Rust test allocation.

A two-CPU pinned full run timed out after 111 files. With four pinned CPUs, all 221 files and 2,137 tests pass in 215.0 seconds, averaging 241% CPU. The focused six files and 43 tests also pass. Timeout budgets are unchanged.
@ScriptedAlchemy ScriptedAlchemy changed the title test(bazel): keep allocator and lexical fixtures portable test(ci): use writable fixtures and canonical test authorities Oct 18, 2026
@ScriptedAlchemy ScriptedAlchemy changed the title test(ci): use writable fixtures and canonical test authorities fix(ci): integrate baseline runtime and fixture repairs Oct 18, 2026

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 1 new potential issue.

1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

Comment on lines +302 to +309
if native_session_id.is_none()
&& tracedecay_hooks::NativeContextScoutLifecycleV1::host_mounts_lifecycle(host)
&& matches!(
envelope.event,
tracedecay_hooks::HookEventV2::ToolLifecycle { .. }
| tracedecay_hooks::HookEventV2::SavedEdit { .. }
)
&& hook_v2_native_lifecycle_enabled(graph, host).await

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔴 Known-session hooks lose lifecycle evidence

When session lookup succeeds but the host spool lacks an event, redrive_pending_work admits its pending lifecycle without native evidence. The admission then completes producer work without mounting that tool or edit lifecycle, leaving Context Scout with missing events.

Learn more

The admission ledger retains the hook envelope, but not the host's native session and call identifiers. admit_replayed_envelope_with_authoritative_session can recover a session from the project database even when no host spool record exists. The guard only defers work when that lookup returns None. With a known session, admit_hook_v2_envelope receives no lifecycle mount, yet producer orchestration can complete the ledger obligation. That completion prevents a later spool replay from restoring the missing lifecycle.

Example: A Kimi edit commits its admission ledger entry, but the callback times out before spooling its native call identity. Its session already exists in the project database. Redrive resolves the session, skips the guard, and completes the edit without its call lifecycle.

Recommended fix: Defer ledger-only redrive for lifecycle-bearing hosts and events whenever lifecycle mounting is enabled, regardless of whether a session lookup succeeds. Let the host spool supply the native lifecycle before settling the ledger; handle absent or expired spool evidence as an explicit unresolved state.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

This branch has not been deployed

No deployments
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.

1 participant