await-intent: refresh refs before op-type inference (M10 correction) #354

Merged
conductor merged 11 commits from m10-derive-refresh into master 2026-09-19 18:34:20 +01:00
Owner

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
conductor added 10 commits 2026-09-19 18:23:33 +01:00
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).
merge remote event-driven-clean (master merge) before R8 push
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 4s
CI Pipeline / lint (push) Failing after 30s
CI Pipeline / canary (push) Successful in 34s
deploy / deploy (push) Skipped
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / unit-tests (push) Failing after 4m33s
CI Pipeline / type-check (push) Failing after 12m29s
CI Pipeline / required-checks (push) Failing after 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 9s
89b603024e
chore(r8): latency-label terminology correction + lost-event fault seam landed with acceptance artifact
CI Pipeline / best-practices (push) Successful in 7s
CI Pipeline / lint (push) Failing after 28s
CI Pipeline / documentation (push) Successful in 4s
CI Pipeline / canary (push) Successful in 33s
deploy / deploy (push) Skipped
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / type-check (push) Successful in 32s
CI Pipeline / unit-tests (push) Failing after 4m38s
CI Pipeline / required-checks (push) Failing after 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 4s
e03ad9aad9
0. Evidence terminology only (no gate reinterpretation): acceptance
   latencies relabeled per primary artifacts — SOURCE_TO_TOOL_RETURN
   61.802s, TOOL_RETURN_TO_MODEL_TURN 13.636s, SOURCE_TO_MODEL_TURN
   75.438s (formerly mislabeled SOURCE_TO_MODEL_RESUME).
   REAL_ASYNC_BRIDGE_COMPLETE unchanged.
R8 seam (already committed dac6e97, included in this merge-tracking
   state): operation-scoped suppression rule, fail-open, evidence-
   logged; 7 seam tests.
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
c6c18ae041
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.
chore(r8): LOST_EVENT_RECOVERY PASS — live lost-event proof + canonical evidence
CI Pipeline / best-practices (push) Successful in 4s
CI Pipeline / documentation (push) Successful in 4s
CI Pipeline / lint (push) Successful in 52s
CI Pipeline / canary (push) Successful in 50s
CI Pipeline / type-check (push) Successful in 39s
deploy / deploy (push) Skipped
CI Pipeline / gitea-offline (push) Successful in 15s
CI Pipeline / unit-tests (push) Successful in 4m43s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 4s
634821efd4
Live fault-injection proof (attempt 3, ci-c6c18ae): completion event
deliberately suppressed at the producer for one operation; first
watchdog failure-detector window (303s) consulted ci_runs authority,
recovered terminal success truthfully
(watchdog_authority_recovered), SAME await-operation invocation
returned, next MiMo turn automatic, R8_PROOF_COMPLETE, natural exit
rc=0. Attempt 1 (ci-89b6030) additionally proved truthful FAILURE
recovery (source CI genuinely red via S110 ratchet; seam defect fixed
in c6c18ae). Late-event idempotence: released event matched=0,
terminal state untouched, resume_attempts=0. All
FAILURE_RECOVERY_* targets met; SILENT_LOSS=0,
STATE_CONTRADICTION=0. Healthy-path hashes unchanged; fault rule
removed; deterministic suites 50/50.
chore(r8): qualify attempt-1 type-check cause as LIKELY_CPU_CONTENTION/CAUSE_UNCONFIRMED (S110 remains proven)
CI Pipeline / documentation (push) Successful in 4s
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / canary (push) Successful in 31s
deploy / deploy (push) Skipped
CI Pipeline / type-check (push) Successful in 32s
CI Pipeline / lint (push) Successful in 38s
CI Pipeline / unit-tests (push) Successful in 4m27s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 4s
2b2639783a
feat(tty): MiMo harness process-ownership contract — group-killed bash execution + explicit detachment
CI Pipeline / best-practices (push) Successful in 5s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / canary (push) Successful in 29s
CI Pipeline / lint (push) Successful in 37s
deploy / deploy (push) Skipped
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / gitea-offline (push) Successful in 15s
CI Pipeline / unit-tests (push) Successful in 4m46s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 4s
d9bcebb730
TTY-repair tranche: bash.ts v2 replaces bare execSync with a
process-group-owned spawn wrapper (MODE A: captured pipes, own pgid,
SIGTERM->SIGKILL group kill on timeout, listener teardown before
finalize) and an explicit detached mode (MODE B: setsid, stdin
/dev/null, output to a durable log file, unref) for nohup/setsid/&-
suffixed commands. Wait-intent compilation preserved with a STRICT
gate (normalized=true + ContinuePendingOperation + concrete operation
bound); arbitrary shell syntax passes through untouched. execFile
with argv array (no nested sh -c quoting) for the router call.
await-operation.ts pinned as canonical source (accepted healthy path,
unchanged). scripts/install_mimo_tools.py installs + hash-verifies.
tests/test_mimo_tty_contract.py: 8 tests (A-I incl. fd-no-pts,
group-kill, no-accumulation, quoting, wait-intent boundary,
await-op preservation).
test(tty): canonical tool hash parity (bash.ts + await-operation.ts) — same contract as hook parity
CI Pipeline / documentation (push) Successful in 12s
CI Pipeline / canary (push) Successful in 36s
CI Pipeline / type-check (push) Successful in 34s
CI Pipeline / lint (push) Successful in 35s
CI Pipeline / best-practices (push) Successful in 14s
deploy / deploy (push) Skipped
CI Pipeline / gitea-offline (push) Successful in 31s
CI Pipeline / unit-tests (push) Failing after 4m47s
CI Pipeline / required-checks (push) Failing after 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 5s
026a1bd919
test(tty): stabilize no-accumulation test — delta vs pre-loop snapshot of unrelated system sleeps (mount helper sleeps race the window)
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / type-check (push) Successful in 32s
CI Pipeline / lint (push) Successful in 37s
CI Pipeline / documentation (push) Successful in 13s
deploy / deploy (push) Skipped
CI Pipeline / unit-tests (push) Successful in 4m48s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 3s
efe3871916
await-intent: refresh remote refs before op-type inference (M10 correction)
CI Pipeline / best-practices (push) Successful in 3s
CI Pipeline / documentation (push) Successful in 1s
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 1s
CI Pipeline / type-check (push) Successful in 28s
CI Pipeline / canary (push) Successful in 35s
deploy / deploy (push) Skipped
CI Pipeline / lint (push) Successful in 36s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / lint (pull_request) Successful in 33s
CI Pipeline / best-practices (pull_request) Successful in 1s
CI Pipeline / documentation (pull_request) Successful in 1s
CI Pipeline / canary (pull_request) Successful in 32s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
Spec gate (headless) / spec-gate (pull_request) Successful in 3s
CI Pipeline / type-check (pull_request) Successful in 26s
CI Pipeline / unit-tests (push) Successful in 4m52s
CI Pipeline / required-checks (push) Successful in 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 2s
CI Pipeline / unit-tests (pull_request) Successful in 4m44s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 2s
efb99d4682
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.
gitea-actions Bot added the bug label 2026-09-19 18:23:38 +01:00

🤖 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>
conductor added 1 commit 2026-09-19 18:28:53 +01:00
Merge branch 'master' into m10-derive-refresh
CI Pipeline / best-practices (push) Successful in 4s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / type-check (push) Successful in 28s
CI Pipeline / lint (push) Successful in 36s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / lint (pull_request) Successful in 32s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
Spec gate (headless) / spec-gate (pull_request) Successful in 2s
deploy / deploy (push) Skipped
CI Pipeline / type-check (pull_request) Successful in 26s
CI Pipeline / unit-tests (push) Successful in 4m48s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 1s
CI Pipeline / unit-tests (pull_request) Successful in 4m42s
CI Pipeline / required-checks (pull_request) Successful in 0s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 2s
Auto-version and Release / release (pull_request) Successful in 6s
c3f81e60ec

🤖 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>
conductor merged commit f8a568714b into master 2026-09-19 18:34:20 +01:00
Sign in to join this conversation.