Restart probe assumes a new epoch despite durable room history #1424

Open
opened 2026-10-07 23:23:15 +00:00 by kayg · 0 comments
Owner

Found in the one #1403 release-server round (head d395b6e25d, runtime ef0aa12b1):

!! restart 2 stale report: not reached within 20000 ms
!! restart 2 legacy: a legacy client synced into a new epoch
restart probe: 2 findings

The unchanged restart.mjs assumes every crash after a saved edit creates a new epoch. It does not record pre/post epoch IDs or establish that no durable lineage is available. It reports no changed Markdown body, duplicate content or rebuilt-document mismatch in this run; graceful restart and the edit-save precondition pass.

Same-round read-only diagnostic: the Restart target Note is API-listed, has two collab_history_index records and one note_collab_state row. Production session.rs module docs explicitly state that with history enabled, authored updates are durable before file saves and startup resumes their Yrs lineage (DESIGN §§31,61 / #975). Its room initialization distinguishes this from the no-history crash epoch contract.

This is a candidate probe-precondition/contract mismatch, not proof of a cross-epoch merge. A legacy client synced, but the assertion text claiming a new epoch has no measured epoch evidence. Keep the existing expectation pending owner review; collect both epoch IDs and test the new-lineage refusal case separately from same-lineage durable-history recovery. Do not weaken the assertion to make this round pass. If a measured changed epoch accepts an old seed, that is a sync-collision blocker and requires a regression fix.

Found in the one #1403 release-server round (head d395b6e25da20d8c67b8b9fc1a593b813939c8a7, runtime ef0aa12b1): ``` !! restart 2 stale report: not reached within 20000 ms !! restart 2 legacy: a legacy client synced into a new epoch restart probe: 2 findings ``` The unchanged restart.mjs assumes every crash after a saved edit creates a new epoch. It does not record pre/post epoch IDs or establish that no durable lineage is available. It reports no changed Markdown body, duplicate content or rebuilt-document mismatch in this run; graceful restart and the edit-save precondition pass. Same-round read-only diagnostic: the Restart target Note is API-listed, has two collab_history_index records and one note_collab_state row. Production session.rs module docs explicitly state that with history enabled, authored updates are durable before file saves and startup resumes their Yrs lineage (DESIGN §§31,61 / #975). Its room initialization distinguishes this from the no-history crash epoch contract. This is a candidate probe-precondition/contract mismatch, not proof of a cross-epoch merge. A legacy client synced, but the assertion text claiming a new epoch has no measured epoch evidence. Keep the existing expectation pending owner review; collect both epoch IDs and test the new-lineage refusal case separately from same-lineage durable-history recovery. Do not weaken the assertion to make this round pass. If a measured changed epoch accepts an old seed, that is a sync-collision blocker and requires a regression fix.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1424
No description provided.