Problem
Several Web session paths identify the live SessionManager by session ID alone, although copying a Pi JSONL file preserves its ID. Two distinct files can therefore be treated as the same active session.
At main f6b49ae59605b1276b8267f2886d22c03f01533c:
- Reading a selected copy can return the active original's transcript.
- Renaming the copy can write the original instead.
- Selecting the copy can skip the runtime switch.
- When a newer copy precedes the original, the UI's ID-only current lookup can change the requested path on the next refresh.
The repository already tests duplicate IDs as distinct archive entries. The missing boundary is the active runtime/file identity, not a proposal to rewrite session IDs.
Reproduction
Create and persist a session through native SessionManager, copy its actual JSONL file into the same session directory, open the copy and append different content. The adapter's selected-file read and rename tests fail on the baseline. An authenticated loopback /api/sessions/select test proves the runtime switch is wrongly skipped.
Separate actual store-action regressions show the same-ID copy being selected across two refreshes and an invalid copied transcript passing the canonical-retry gate.
All fixtures use isolated temporary files and synthetic session content, not user data.
Expected
Use ID plus the actual session file when reusing the live manager or short-circuiting selection. Preserve the existing synthetic path for an in-memory current session. The UI should consume the already-provided controller/path identity rather than derive ownership from ID equality.
No new protocol fields, identity storage, ID rewriting or permissions are required. Backend/HTTP regressions fail 3/3 before the correction; store regressions fail 2/2 before the corresponding consumer fix.
Problem
Several Web session paths identify the live SessionManager by session ID alone, although copying a Pi JSONL file preserves its ID. Two distinct files can therefore be treated as the same active session.
At main
f6b49ae59605b1276b8267f2886d22c03f01533c:The repository already tests duplicate IDs as distinct archive entries. The missing boundary is the active runtime/file identity, not a proposal to rewrite session IDs.
Reproduction
Create and persist a session through native
SessionManager, copy its actual JSONL file into the same session directory, open the copy and append different content. The adapter's selected-file read and rename tests fail on the baseline. An authenticated loopback/api/sessions/selecttest proves the runtime switch is wrongly skipped.Separate actual store-action regressions show the same-ID copy being selected across two refreshes and an invalid copied transcript passing the canonical-retry gate.
All fixtures use isolated temporary files and synthetic session content, not user data.
Expected
Use ID plus the actual session file when reusing the live manager or short-circuiting selection. Preserve the existing synthetic path for an in-memory current session. The UI should consume the already-provided controller/path identity rather than derive ownership from ID equality.
No new protocol fields, identity storage, ID rewriting or permissions are required. Backend/HTTP regressions fail 3/3 before the correction; store regressions fail 2/2 before the corresponding consumer fix.