Skip to content

dst: remove the keep-serving watch machinery (RFC 0067 follow-up) - #743

Closed
ragnorc wants to merge 1 commit into
claude/rfc-0067-remove-recovery-machineryfrom
claude/rfc-0067-dst-keep-serving-removal
Closed

ragnorc wants to merge 1 commit into
claude/rfc-0067-remove-recovery-machineryfrom
claude/rfc-0067-dst-keep-serving-removal

Conversation

@ragnorc

@ragnorc ragnorc commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Stacked on #741 (recovery machinery removed). Harness-only follow-up: the DST keep-serving watch could only be entered by a live handle refused on a pending recovery sidecar, and no writer arms one any more.

What is removed

  • Scenario::keep_serving_ops, the watch (KeepServingWatch), the interrupting-op widening (WatchInterrupt, CompositionHypothesis, composition_hypotheses, op_modes, WatchRuling, reconcile_watch_resolution, resolve_keep_serving_watch), the keep-serving-* report row prefixes, and the six arming/resolution sites woven through the universe loop. About 900 harness lines.
  • The LiveWriteAvailability oracle and its detector (census: 21 oracles, 24 detectors, regenerated).
  • The clean-recovery-state legality carve-out (is_recovery_barrier_rejection) and its reopen-heals-barrier@ row: the engine no longer emits "requires a clean recovery state" anywhere.

What stays

  • reconcile_after_failure and its single-op hypothesis arbitration are untouched: every failure still reconciles in its own iteration, which is exactly why a second unjudged op can no longer exist.
  • The issue-554 panel survives as dst_availability_panel_survives_harsh_faults_issue_554: the same 13 seeds under the same harsh fault plan (error_pct 80, Lance realm), and every seed must run green — any red is a genuine availability or oracle regression, no longer a designed wedge.

Evidence

The cost golden is byte-identical, which is the knob's standing constraint ("must never perturb an existing pin's op stream or rng draws") holding through its removal. Full DST suite green from the crate directory (46 scenarios), DST clippy clean, fmt clean. Engine crates untouched.

The keep-serving watch existed to prove issue #554: a live handle refused
on its own failed attempt's recovery sidecar, with reconcile's reopen
deferred so the wedge stayed observable. Since RFC 0067 no writer arms a
recovery operation, so the shape cannot be entered: the widened-arbitration
pin and its seed search retired earlier after their searches found no
schedule reaching it, and this removes the machinery itself.

Removed from the harness: Scenario::keep_serving_ops, KeepServingWatch,
WatchInterrupt, WatchRuling, the composition-hypothesis widening
(op_modes, CompositionHypothesis, composition_hypotheses,
reconcile_watch_resolution), resolve_keep_serving_watch, the KEEP_SERVING
row prefixes, the six arming and resolution sites in the universe loop,
and the LiveWriteAvailability oracle (the census records 21 oracles, 24
detectors). The clean-recovery-state legality carve-out and its
reopen-heals-barrier row go with it: the engine no longer emits that text.
reconcile_after_failure and its single-op arbitration are unchanged.

The issue-554 panel stays as
dst_availability_panel_survives_harsh_faults_issue_554: the same 13 seeds
under the same harsh fault plan, every seed must run green; any red is a
genuine availability or oracle regression rather than a designed wedge.

The cost golden is unchanged, which is the knob's standing constraint (it
never perturbed a pinned universe's op stream or draws) holding through
its removal.
@ragnorc
ragnorc force-pushed the claude/rfc-0067-dst-keep-serving-removal branch from 16947dc to bd171bb Compare September 17, 2026 19:17
@ragnorc

ragnorc commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Consolidated into #744, which carries this stack's complete history merged with current main and revalidated as one tree.

@ragnorc ragnorc closed this Sep 17, 2026
@azimafroozeh
azimafroozeh deleted the claude/rfc-0067-dst-keep-serving-removal branch September 29, 2026 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant