myxce/.kiro/specs/ha-consistency-invariants/spec.json
Rongsong Shen 895a204438 docs(spec): ha-consistency-invariants — Criterion 2.9 now satisfied
The umbrella's implementation_status note still described the Facts-Apply
invariant as an open documented deviation owned by raft-apply-decoupling's
D1. raft-apply-decoupling has since closed it: task 4 ("Fact apply-after-
commit split") moved WAL_MODE_RETAIN fact state mutation + reactions to
the post-commit apply_committed_entry() seam (persist.c:2721) via
apply_job_update_transition(); the old apply-on-receipt path
(apply_wal_entry()) has zero production call sites. D1 (block-but-durable
under quorum loss) is implemented and soak-tested (task 7.2: kill primary
mid-fact-stream). Update the note so it doesn't read as outstanding work.
2026-07-13 08:08:41 +00:00

24 lines
1.9 KiB
JSON

{
"feature_name": "ha-consistency-invariants",
"created_at": "2026-06-10T21:40:00-07:00",
"updated_at": "2026-06-11T09:30:00-07:00",
"language": "en",
"phase": "implemented",
"approvals": {
"requirements": {
"generated": true,
"approved": true
},
"design": {
"generated": true,
"approved": true
},
"tasks": {
"generated": false,
"approved": false
}
},
"ready_for_implementation": false,
"note": "UMBRELLA CONTRACT spec (decomposed 2026-06-11): requirements.md/design.md/research.md are the authoritative contract for four implementation sub-specs — ha-commit-engine, ha-commit-barrier-rollout, ha-single-leader-role, ha-convergence-recovery (dependency order in steering/roadmap.md). Do NOT generate tasks for this spec; implement via the sub-specs. Design approved as contract; sub-spec designs inherit and slice it.",
"implementation_status": "implemented — all 4 sub-specs complete (ha-commit-engine 18/18, ha-commit-barrier-rollout 23/23, ha-single-leader-role 17/17, ha-convergence-recovery 19/19; phases reconciled 2026-07-03, all were mislabeled tasks-generated). Requirements 1-7 satisfied. Criterion 2.9 (Facts-Apply invariant, added 2026-06-25) is now SATISFIED — closed by raft-apply-decoupling task 4 (\"Fact apply-after-commit split\", 4.1/4.2) plus D1 (quorum-loss fact policy, resolved+implemented block-but-durable). WAL_MODE_RETAIN facts append-only on receipt; state mutation + reactions moved to the post-commit apply_committed_entry() seam (persist.c:2721) via apply_job_update_transition() for all 9 job-state fact types; the old apply-on-receipt path (apply_wal_entry()) has zero production call sites. Verified by task 6.3 (command/fact apply-notify timing), 7.2 (live-cluster kill-primary-mid-fact-stream soak), 7.4 (throughput regression). design.approved corrected true->matches the note's 'Design approved as contract' (was inconsistently false)."
}