--- id: "bug-704" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "controller" severity: "unknown" timestamp: "2026-06-18" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: ["src/controller/testsuite/{test_repl_majority", "test_commit_barrier_rollout", "test_coldstart_lsn0", "test_demotion_convergence}.c"] tags: ["durable", "commit", "majority", "self-cap", "test-fixture", "ha-commit-durability", "task-2.2"] related: ["bug-661", "bug-693"] legacy: true --- # bug-704: controller suite regressions after capping commit self-contribution at durable_lsn… ## Description controller suite regressions after capping commit self-contribution at durable_lsn: test_repl_majority/test_commit_barrier_rollout/test_coldstart_lsn0/test_demotion_convergence got -ETIMEDOUT / committed_lsn=0 (Expected N Was 0) ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause ha-commit-durability 2.2 changed majority_candidate_locked self-cap from highest_appended_lsn to persist_durable_lsn. Existing commit-path fixtures prime current_lsn (appended tip) but never set durable_lsn, so under the new cap self contributed 0 and committed_lsn never advanced. ## Fix In every commit-path stub/in-memory-primed fixture, set durable_lsn to the appended tip (appended_lsn / current_lsn-1) right after committed_lsn=0, preserving the pre-durability 'self covers every appended entry' model. The durability precondition itself is exercised by dedicated new tests. ## Verification _Not recorded (migrated from buglog.json)._ ## References - Related: bug-661, bug-693