Repository navigation
fix(ci): integrate baseline runtime and fixture repairs - #4332
ScriptedAlchemy wants to merge 17 commits into
Conversation
|
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.
There was a problem hiding this comment.
Devin Review found 1 new potential issue.
1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
| 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 |
There was a problem hiding this comment.
🔴 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.
Was this helpful? React with 👍 or 👎 to provide feedback.
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:
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.