Summary
Session creation persisted session metadata through an already-resolved sessions_dir while the load/update path fed the raw workspace root; the two chains re-enter project_sessions_dir through its is_resolved_sessions_dir branch, which depends on dunce::canonicalize and diverges on CI /tmp tempdirs, so metadata was written to a directory the reader never checks.
Fix: feed the raw workspace root to the persistence layer for local workspaces (remote workspaces keep the mirror-resolved path), making project_sessions_dir the single source of truth for both chains.
Area
src/crates/assembly/core/src/agentic/session/session_manager.rs (create chain + metadata workspace path selection). Crate: bitfun-core.
Reproduction or evidence
At 32f2427, the create chain passes session_storage_path to create_session_if_absent (session_manager.rs, create block :2778); is_resolved_sessions_dir branch present (:1113/:1149). Under CI tempdirs the canonicalize-resolved branch diverges from the raw-root branch → persist/read land in different directories → ubuntu CI flaky.
Environment
ubuntu/macos CI runners (tempdir /tmp volatility); baseline 32f2427. The ubuntu flaky face cannot be reproduced locally on a Windows host → verified via remote CI Rust Build Check(ubuntu) + CLI Tests(ubuntu) runs.
AI-assisted change. Testing: verified locally (cargo check exit 0; cargo test --features agent-runtime session_manager::tests 137 passed, 0 failed); ubuntu flaky face covered by remote CI runs.
Summary
Session creation persisted session metadata through an already-resolved sessions_dir while the load/update path fed the raw workspace root; the two chains re-enter project_sessions_dir through its is_resolved_sessions_dir branch, which depends on dunce::canonicalize and diverges on CI /tmp tempdirs, so metadata was written to a directory the reader never checks.
Fix: feed the raw workspace root to the persistence layer for local workspaces (remote workspaces keep the mirror-resolved path), making project_sessions_dir the single source of truth for both chains.
Area
src/crates/assembly/core/src/agentic/session/session_manager.rs (create chain + metadata workspace path selection). Crate: bitfun-core.
Reproduction or evidence
At 32f2427, the create chain passes session_storage_path to create_session_if_absent (session_manager.rs, create block
:2778); is_resolved_sessions_dir branch present (:1113/:1149). Under CI tempdirs the canonicalize-resolved branch diverges from the raw-root branch → persist/read land in different directories → ubuntu CI flaky.Environment
ubuntu/macos CI runners (tempdir /tmp volatility); baseline 32f2427. The ubuntu flaky face cannot be reproduced locally on a Windows host → verified via remote CI Rust Build Check(ubuntu) + CLI Tests(ubuntu) runs.
AI-assisted change. Testing: verified locally (
cargo checkexit 0;cargo test --features agent-runtime session_manager::tests137 passed, 0 failed); ubuntu flaky face covered by remote CI runs.