95629797f8
feat(raft-sim-conformance): optional TLC-consumable trace export, default-off (task 8.1)
2026-06-24 16:49:36 +00:00
ffeb7c2cf5
docs(raft-sim-conformance): reflect runtime fault-injection flag (vs compile-time macro) in design
2026-06-24 16:36:54 +00:00
90197f8595
test(raft-sim-conformance): negative test proving oracle teeth, both directions (task 7.2)
2026-06-24 16:30:20 +00:00
62523892d9
feat(raft-sim-conformance): runtime fault-injection switch (G1 term-stamp, G3 truncate) (task 7.1)
2026-06-24 16:15:13 +00:00
7087dc19d9
docs(raft-sim-conformance): mark task 6.2 done — conformance batch ASAN/UBSAN-clean
2026-06-24 16:04:29 +00:00
47f68032b7
test(raft-sim-conformance): randomized M-seed sweep + all scenarios, zero violations (task 6.1)
2026-06-24 15:59:22 +00:00
a2933c274d
feat(raft-sim-conformance): stale-rejoin scenario, bug-851 G5 term adoption via AE (task 5.5)
2026-06-24 15:50:13 +00:00
b1f289d2cb
feat(raft-sim-conformance): Figure-8 commit-safety scenario + restore dropped 5.3 impl (task 5.4)
...
Adds raft_sim_scenario_figure8: a previous-term entry on a quorum under a
new-term leader is NOT committed until a current-term entry commits (library-
gated by raft_advance_commit; verified by a mutation test). Also restores the
raft_sim_scenario_drop_dup_reorder implementation that commit e445404 (task 5.3)
silently dropped from raft_sim.c (a stray git checkout reverted the uncommitted
impl), which had left the lib build broken with an undefined reference.
Build green: test_sim_5_3_drop_dup_reorder + test_sim_5_4_figure8 both PASS.
2026-06-24 15:38:01 +00:00
e445404439
feat(raft-sim-conformance): drop/duplicate/reorder adversarial scenario (task 5.3)
2026-06-24 15:09:31 +00:00
6976392d77
feat(raft-sim-conformance): restart-churn adversarial scenario (task 5.2)
2026-06-24 14:47:25 +00:00
7d0964dd16
feat(raft-sim-conformance): partition/heal adversarial scenario (task 5.1)
2026-06-24 14:34:22 +00:00
b844e75f3b
feat(raft-sim-conformance): raft_sim_run + deterministic replay (task 4.4)
2026-06-24 14:14:15 +00:00
5f67be4fa3
test(raft-sim-conformance): conformance Restart persistence test (task 4.3)
2026-06-24 14:05:19 +00:00
e15bbf8190
feat(raft-sim-conformance): seeded scheduler raft_sim_step + per-step invariant check (task 4.2)
...
Harness surfaced a real upstream raft.c split-brain bug (bug-1095/1096,
bug-851 family) in raft_on_vote_reply: counter-based vote tally double-counts
a duplicated vote-response and no stale-term drop -> two leaders same term.
Out of this spec's boundary (raft.c protocol); recorded as Implementation Note.
2026-06-24 13:37:03 +00:00
90e7e9c999
feat(raft-sim-conformance): action trace recorder + raft_sim_dump_trace (task 4.1)
2026-06-24 13:10:31 +00:00
f0be46fb32
feat(raft-sim-conformance): raft_sim_check_all first-failure composition (task 3.5)
2026-06-24 13:00:10 +00:00
a38d9a7271
feat(raft-sim-conformance): State Machine Safety invariant checker (task 3.4)
2026-06-24 12:51:58 +00:00
63a9740c85
feat(raft-sim-conformance): Leader Completeness invariant checker (task 3.3)
2026-06-24 12:44:18 +00:00
d9b5fd51e0
test(raft-sim-conformance): focused Log Matching checker test for R3.2 (task 3.2)
2026-06-24 12:35:36 +00:00
25b14a6dca
feat(raft-sim-conformance): Election Safety invariant checker (task 3.1)
2026-06-24 12:28:16 +00:00
b450e60d13
feat(raft-sim-conformance): bag-only Drop/Duplicate/Reorder ops (task 2.2)
2026-06-24 12:19:15 +00:00
ae4495104a
feat(raft-sim-conformance): bag push/deliver routes vote+AE RPCs through library handlers (task 2.1)
2026-06-24 12:10:11 +00:00
631854303c
feat(raft-sim-conformance): seeded PRNG + in-memory adapter callbacks + conformance init (task 1.2)
2026-06-24 11:55:11 +00:00
35c012ddc2
feat(raft-sim-conformance): add conformance-harness data types to raft.h (task 1.1)
2026-06-24 11:40:38 +00:00
2b15dfb67a
docs(raft-sim-conformance): fix mermaid pipe + semicolon syntax in design diagrams
...
Mermaid parse errors in design.md's diagrams:
- Literal `|` in flowchart node labels is read as an edge-label delimiter:
system-flow `term | 0` -> `term | 0`; checker `|{i:...}|` ->
`|{i:...}|` (entity renders as a literal `|`, meaning preserved).
- `;` is a mermaid statement separator and truncated the text it appeared in:
sequence msgs `commit_index += ; apply()` -> `commit_index advanced, apply()`
and `(R5); halt` -> `(R5), then halt`; flowchart label `responses;<br/>` ->
`responses,<br/>`.
Valid edge-label pipes (-->|violation|) and all `;` in prose/tables outside the
mermaid fences are unchanged. All three diagrams now render.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSxwb2Xt5F84ATgiAZnH8V
2026-06-24 10:43:48 +00:00
05febbc9a7
docs(specs): gap re-validation 2026-06-24 (5 HA/raft specs)
...
/kiro-validate-gap gap-focused sweep. Per-spec gap analysis written to each
spec's research.md (3 new, 2 appended), grounded in file:line evidence:
- config-upgrade-snapshot (new): real open gap — transport + (term,lsn) marker
+ COW substrate exist, but the entity-bearing snapshot PAYLOAD does not
(16-byte LSN sentinel). HARD-blocked on entity-bearing-snapshots. Closes
bug-857. Effort L (XL incl. blocker) / Risk High.
- raft-commit-safety (new): CLOSED — G4 Figure-8 commit (raft.c:733) + G6 vote
freshness (raft.c:157) done, full sim coverage; the "(0,0) stopgap / broken
build" concern is stale (build green, real vote tuple at cluster.c:435).
- raft-sim-conformance (new): mostly open — raft.tla is reference-only; only
1 of 4 invariants (Log Matching) checked in code. Missing PRNG/replay,
message-fault bag, scheduler, 3 invariant checkers, fault switches,
scenarios. Effort L / Risk Medium.
- ha-repl-hardening (append): RESCOPE/superseded — 31/33 EARS closed; Req 2.3
+ Req 6 obsolete (CTRL_PRIMARY_COMMITTING removed). Residual: docs only.
- ha-convergence-recovery (append): done bar Task 8 (live E2E); bug-1028
post-failover availability resolved 2026-06-23.
Skipped ha-elect-ctx-lifecycle (no requirements.md).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSxwb2Xt5F84ATgiAZnH8V
2026-06-24 10:04:06 +00:00
20e59d0b42
checkpoint: bug-851 root cause + raft TLA+ conformance spec family
...
Investigation & fixes (failover committed-job loss):
- root-cause bug-851 on an owned 3-node cluster: chaotic failover causes
silent committed-prefix divergence (WAL hdr.term always 0; two leaders
per term; no (term,lsn) reconcile). Evidence in repro-851/ + INVESTIGATION.
- live-validated fixes 848/849/850 (recovery-on-promotion, advertise real
applied_lsn, persist-layer contiguity guard); add waldump WAL inspector.
Specs (strict raft.tla conformance — library owns the log):
- TLA-gap-analysis.md: impl vs raft/raft.tla, gaps G1-G6.
- raft-log-replication, raft-commit-safety, raft-sim-conformance: extend
src/lib/raft to own log/commit/verification via callbacks (specs generated,
cross-spec review passed).
- ha-term-safety: controller-side adapter + config marker (R1-R7); design done.
- config-upgrade-snapshot: R8 descoped here (deps entity-bearing-snapshots, bug-857).
- roadmap + buglog (851/854/857) + .wolf knowledge updated.
2026-06-21 14:02:15 +00:00