test(ha-commit-barrier-rollout): RED tests for classification totality (task 1.1)
New test_commit_barrier_rollout.c: per-type rows matching the VERIFIED design table (STOP/RESUME/UPDATE/FAIL RETAIN per supersession), 13-value totality sweep, fork/SIGABRT unknown-type fail-fast, fact-hook retention contract against real persist+engine. wal_commit_mode_t + wal_classify declared in persist.h; inert sentinel stub. 8/8 RED; suite baseline zero preserved. Finding: RETAIN is registration-free (commit.c:233-239) — observable contract documented in Implementation Notes.
This commit is contained in:
parent
8fe2f1f96c
commit
fec9519960
9 changed files with 568 additions and 92 deletions
|
|
@ -116,6 +116,21 @@ int persist_wal_sync_append(persist_t* p, uint32_t type,
|
|||
const void* payload, uint32_t len,
|
||||
int* sync_rc_out);
|
||||
|
||||
/* ============================================================
|
||||
* Write-path commit classification (ha-commit-barrier-rollout)
|
||||
* ============================================================ */
|
||||
typedef enum {
|
||||
WAL_MODE_WAIT, /* request-shaped: barrier before requester reply */
|
||||
WAL_MODE_RETAIN, /* fact-shaped: retained until committed, no timeout */
|
||||
WAL_MODE_LOCAL, /* not replicated (WAL_CHECKPOINT) */
|
||||
} wal_commit_mode_t;
|
||||
|
||||
/* Pure classification lookup. detail disambiguates WAL_WORKER_CTRL only
|
||||
* (HOOK_DETAIL_WORKER_JOIN/UPDATE -> WAIT, HOOK_DETAIL_WORKER_DEAD ->
|
||||
* RETAIN). Unknown type: XCE_TESTING assert (fail fast); production logs
|
||||
* ERROR and returns WAL_MODE_RETAIN (never dropped, never confirmed early). */
|
||||
wal_commit_mode_t wal_classify(uint32_t wal_type, int detail);
|
||||
|
||||
/* Force WAL fdatasync (for tests and clean shutdown) */
|
||||
int persist_flush(persist_t* p);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue