feat(ha-commit-barrier-rollout): dispatch-gate fact allowlist (task 4.2)

notify/update/setpreason/clrpreason admitted in CTRL_PRIMARY without
write quorum (Req 3.2 / umbrella 2.8 / bug-396): all four terminate in
receipt-style RETAIN fact paths — reviewer-traced no-block proof (no
admitted opcode reaches a barrier/WAIT path; request opcodes stay
rejected). 21/21 group; census 494/494 zero FAIL; RED→GREEN
independently reproduced via stash-rebuild.
This commit is contained in:
Rongsong Shen 2026-06-12 14:50:28 +00:00
parent 4fa38c6f88
commit 4fafeadbbc
3 changed files with 14 additions and 1 deletions

View file

@ -1561,6 +1561,16 @@ int ha_dispatch_gate(ha_state_t *ha, int opcode)
/* Read-only queries */
case OPCode_get:
case OPCode_probeConfigTag:
/* Fact-bearing ops — reports of events that already happened
* (worker job transitions/rusage, scheduler pend reasons).
* Rejecting them loses the fact forever: the reporter never
* retries (bug-396). Admit so the RETAIN path can append and
* hold them until quorum returns (Req 3.2; umbrella 2.8 —
* facts are retained, never dropped). */
case OPCode_notify:
case OPCode_update:
case OPCode_setpreason:
case OPCode_clrpreason:
return 0;
default:
return -XCE_ERR_NOT_READY;