In plain English: fix the operation classifier so it sees fresh merges
What is this about: When a commit merges to master, the operation classifier looked at a stale local copy of the branch list and could mistake a master operation for a feature-branch one.
Why do we need it: The master/deploy wait gate (M10) requires the operation to be recognised as master-class; stale refs silently reclassified it.
Why is it still open: Awaiting CI, then merge, then the fresh M10 live proof runs on top of this fix.
What would let us close this
Derivation test: previously misclassified SHA now derives master_ci
M10 retest passes with correct binding
Version impact
patch — same behaviour, correctly
# In plain English: fix the operation classifier so it sees fresh merges
**What is this about:** When a commit merges to master, the operation classifier looked at a stale local copy of the branch list and could mistake a master operation for a feature-branch one.
**Why do we need it:** The master/deploy wait gate (M10) requires the operation to be recognised as master-class; stale refs silently reclassified it.
**Why is it still open:** Awaiting CI, then merge, then the fresh M10 live proof runs on top of this fix.
# What would let us close this
- [ ] Derivation test: previously misclassified SHA now derives master_ci
- [ ] M10 retest passes with correct binding
# Version impact
- [x] patch — same behaviour, correctly
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).
The two catch-all handlers added in dac6e97 (r8_fault.record evidence
write, notify_event_bridge seam probe) tripped the #126 silent-handler
ratchet (S110 75 -> 77), which cascaded to the lint-baseline contract
test. Both handlers now log to stderr/stdout and continue — the seam
stays fail-open but is no longer silent. S110 back to 75=75.
A just-merged master commit was invisible to branch --contains until refs
were fetched: the local clone's stale master outranked repo truth and a
master_ci operation classified as branch_ci. derive_op_type now refreshes
remote-tracking refs (bounded by GIT_TIMEOUT, fail-open) and containment
checks all refs. Generic fix; no SHA special-casing.
🤖Headless spec gate (non-blocking, #204 first slice)
Spec-gate agent produced no text output — check runner logs.
Deterministic floors still govern the merge
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.
🤖 **Headless spec gate (non-blocking, #204 first slice)**
Spec-gate agent produced no text output — check runner logs.
<details><summary>Deterministic floors still govern the merge</summary>
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
🤖Headless spec gate (non-blocking, #204 first slice)
Spec-gate agent produced no text output — check runner logs.
Deterministic floors still govern the merge
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.
🤖 **Headless spec gate (non-blocking, #204 first slice)**
Spec-gate agent produced no text output — check runner logs.
<details><summary>Deterministic floors still govern the merge</summary>
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
In plain English: fix the operation classifier so it sees fresh merges
What is this about: When a commit merges to master, the operation classifier looked at a stale local copy of the branch list and could mistake a master operation for a feature-branch one.
Why do we need it: The master/deploy wait gate (M10) requires the operation to be recognised as master-class; stale refs silently reclassified it.
Why is it still open: Awaiting CI, then merge, then the fresh M10 live proof runs on top of this fix.
What would let us close this
Version impact
🤖 Headless spec gate (non-blocking, #204 first slice)
Spec-gate agent produced no text output — check runner logs.
Deterministic floors still govern the merge
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.
🤖 Headless spec gate (non-blocking, #204 first slice)
Spec-gate agent produced no text output — check runner logs.
Deterministic floors still govern the merge
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.