fix: Fresh local lease bootstrap leaves the SQLite epoch behind the signed checkpoint (review finding — PR #186) - #267
Conversation
ForgeDock Review Evidence
Completed groupsreview-correctness · correctness · completed
review-data · data · completed
review-concurrency · concurrency · completed
Failed groupsNone. |
ForgeDock · Review VerdictRun Disposition: Reviewer roles: Review planRisk: Required capabilities
Execution groups
Non-executing specialist roles
Findings
[data:review-data-reenrollment-fence-process-local] [data:review-data-reenrollment-fence-process-local] Persist a recovery-fence epoch (or equivalent authenticated recovery marker) in the durable lease state and consult it for every heartbeat, guard, release, and acquire across repository instances and restarts. Do not clear the marker after the first unrelated successful acquisition; add a regression with two pre-existing lease rows, recovery, acquisition of a third item, repository reopen, and denial of all old tokens.
Verification
|
ForgeDock Review Evidence
Completed groupsreview-correctness · correctness · completed
review-data · data · completed
Failed groups
|
Closes #197
ForgeDock verified handoff
run_efaff56d-5576-4ac5-a942-54cf69a16aa5art_d2ae6f6d-cb1f-4a2f-a407-66bc6f08609c(durable artifact on the linked issue)art_302ff8c9-a774-469a-aadb-46ef93d3d815(durable artifact on the linked issue)11cdeeb102dd39cefb2ce795e17e845a2c39f4f5Summary
Completed the retained lease bootstrap repair and added a concrete SQLite repository revision: fresh local witnesses seed authenticated epoch 0, SQLite keeps the empty state at epoch 0, and monotonic conditional witness acceptance prevents stale continuity reads from regressing fencing state.
Changed paths
src/adapters/sqlite/lease-witness.test.tssrc/adapters/sqlite/lease-witness.tssrc/adapters/sqlite/orchestration-admission.test.tssrc/adapters/sqlite/sqlite-repositories.test.tssrc/adapters/sqlite/sqlite-repositories.tsAcceptance evidence
8aa2c7ae638699e9fdbcd27b37549ccba6993683Run:run_72407589-e453-408e-afa1-8572c6ae712cReviewers:correctnessSource findings:correctness:review-correctness-part-2-of-10:correctness-lease-bootstrap-epoch-mismatch**Reviewer sessio…8aa2c7ae638699e9fdbcd27b37549ccba6993683Run:run_72407589-e453-408e-afa1-8572c6ae712cReviewers:correctnessSource findings:correctness:review-correctness-part-2-of-10:correctness-lease-bootstrap-epoch-mismatchReviewer sessions:b54a4e25Confidence: HIGH Severity:…8aa2c7ae638699e9fdbcd27b37549ccba6993683Run:run_72407589-e453-408e-afa1-8572c6ae712cReviewers:correctnessSource findings: `correctness…8aa2c7ae638699e9fdbcd27b37549ccba6993683Run:run_72407589-e453-408e-afa1-8572c6ae712cReviewers:correctnessSource findings:correctness:review-correctness-part-2-of-10:correctness-lease-bootstrap-epoch-mismatchReviewer sessions:b54a4e25Confidence: HIGH Severity: HIGH **Control…8aa2c7ae638699e9fdbcd27b37549ccba6993683Run:run_72407589-e453-408e-afa1-8572c6ae712cReviewers:correctnessSource findings:correctness:review-correctness-part-2-of-10:correctness-lease-bootstrap-epoch-mismatchReviewer sessions: `b54a4e25…Verification
git diff --check— warning: in the working copy of 'src/adapters/sqlite/orchestration-admission.test.ts', LF will be replaced by CRLF the next time Git touches it | warning: in the working copy of 'src/adapters/sqlite/sqlite-repositories.test.ts', LF will be replaced by CRLF the next time Git touches it | warning: in the working copy of 'src/adapters/sqlite/sqlite-repositories.ts', LF will be replaced by CRLF the next time Git touches itC:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js run build— > forgedock@1.8.0 build | > tsc -p tsconfig.jsonC:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js run docs:build— - generating sitemap... | ✓ generating sitemap... | build complete in 5.30s.C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js test— # skipped 8 | # todo 0 | # duration_ms 82725.5009Residual risks