2eb3227ad0ec57fb259d12f754a183dfafb94de2
4
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c6c18ae041 |
fix(r8): silent-handler ratchet compliance in fault seam — log instead of pass
CI Pipeline / best-practices (push) Successful in 5s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / canary (push) Successful in 31s
CI Pipeline / lint (push) Successful in 38s
deploy / deploy (push) Skipped
CI Pipeline / type-check (push) Successful in 27s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / unit-tests (push) Successful in 4m27s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 3s
The two catch-all handlers added in
|
||
|
|
dac6e97e16 |
feat(r8): operation-scoped lost-event fault-injection seam (disabled by default)
REAL_ASYNC_BRIDGE R8: narrowest reversible fault for lost-event failure-recovery. scripts/r8_fault.py consults $RUNE_WR_ROOT/r8_suppress_rules.json keyed by EXACT operation_id; notify_event_bridge.py records the suppression decision (no .done file, no bridge POST) and returns, so the waiter's watchdog/authority recovery path is the only route to terminal truth. Fail-open design: absent/corrupt rule file means normal delivery. Evidence appended to r8_fault_log.jsonl. Healthy-path delivery semantics untouched (guard clause only). Tests: tests/test_r8_fault_injection.py (7). |
||
|
|
4e8e081f48 |
feat(event-driven): completion-file producer in CI notify + wr-root env harmonization
CI Pipeline / best-practices (push) Successful in 11s
CI Pipeline / documentation (push) Successful in 9s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / canary (push) Successful in 36s
CI Pipeline / type-check (push) Successful in 32s
CI Pipeline / lint (push) Successful in 48s
CI Pipeline / lint (pull_request) Successful in 48s
CI Pipeline / best-practices (pull_request) Successful in 7s
CI Pipeline / canary (pull_request) Successful in 35s
CI Pipeline / documentation (pull_request) Successful in 8s
deploy / deploy (push) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 27s
CI Pipeline / type-check (pull_request) Successful in 36s
CI Pipeline / unit-tests (push) Successful in 4m26s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 5s
CI Pipeline / unit-tests (pull_request) Successful in 4m36s
CI Pipeline / required-checks (pull_request) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 5s
- notify_event_bridge: writes durable resumes/<operation_id>.done BEFORE the bridge POST — delivery no longer depends on the daemon being alive (R3); best-effort on the same terms as the POST, never fails CI - completion_file: honors both WR_ROOT (daemon) and RUNE_WR_ROOT (repo) conventions, WR_ROOT wins — daemon, waiter, and test roots can no longer disagree about delivery location - tests/test_completion_delivery: notify-writes-when-bridge-down, write failure never fails CI, root resolution under both conventions REAL_ASYNC_BRIDGE gates covered: R3 (partial — daemon side proven in mimo-wait-resume tests/test_wr_v04_completion.py: 7/7 incl. R4 7ms wake, R9 durability, R10 byte-identical duplicates) |
||
|
|
e1a71efeb9 |
feat(ci): event-driven CI qualification wait over the existing W/R bridge (T16 16C/16D/16E)
CI Pipeline / best-practices (push) Successful in 9s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / canary (push) Successful in 37s
CI Pipeline / lint (push) Successful in 46s
Auto-version and Release / release (push) Successful in 53s
deploy / deploy (push) Failing after 16s
CI Pipeline / unit-tests (push) Successful in 2m50s
CI Pipeline / gitea-offline (push) Successful in 15s
CI Pipeline / type-check (push) Successful in 26s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 4s
- deploy.yml sleep-30 polling loop REPLACED: registers a gitea-identity PROCESS_EVENT wait, yields in select() on the FIFO, resumes on the ci.yml notify-event-bridge WAKE, then re-reads the canonical Gitea verdict (deploy_qualify.py). Event payload is never completion truth. - ci.yml gains notify-event-bridge (always(), best-effort): a red CI wakes the waiter as loudly as a green one; bridge unreachable -> watchdog recovery covers the lost wake. - event_wait.py: register_process_wait gains provider/event_type/sha identity (16E: ONE bridge primitive; builder + gitea are adapters); open_fifo_reader + caller-owned fifo_fd close the 16Y#10 race (event before waiter in select()); await_resume_event returns eof instead of busy-looping on a caller-owned fd. - ci_event_wait.py watchdog: failure DETECTOR only — liveness-gated re-arm, one-shot authority recovery on lost events, truthful failure when no verdict exists; timestamps emitted for the 16D latency proof. - tests: 8 held-outs on the REAL daemon (shared wr_daemon fixture in conftest — no duplicated helpers). Daemon-side: /process-event passes through provider/event_type/sha (defaults preserve T15); lease_path sanitizes slash-bearing session ids (resume delivery was impossible for them — found live, fixed in daemon snapshot 79434e0). Suite 1861 green; ratchets PASS; Henxels rc=0. |