Summary
Follow-up to #12 for an opt-in early-stop knob for optional councillors.
Context
Issue #12 introduces tiered model configuration with required vs optional councillors and required-only quorum. Optional councillors are best-effort: they never trigger the required quorum decision. They are included if they finish before required quorum is reached or during the quorum grace window, and otherwise are aborted by the laggard abort sweep once required quorum is satisfied.
Follow-up
Add an optional optional_quorum config knob that lets optional councillors also contribute to an early-stop decision. For example, users could stop waiting once required quorum is met and N optional councillors have also responded, independent of the required-councillor quorum.
Why deferred from #12
The #12 design discussion explicitly deferred this to keep the first tiered-model change focused. A default of optionalCount produces no automatic savings because it resolves identically to waiting for all optional councillors to settle. Only opt-in tuning helps, there is no real-world usage data yet to tune against, and adding the knob later is non-breaking.
Acceptance sketch
Summary
Follow-up to #12 for an opt-in early-stop knob for optional councillors.
Context
Issue #12 introduces tiered model configuration with required vs optional councillors and required-only quorum. Optional councillors are best-effort: they never trigger the required quorum decision. They are included if they finish before required quorum is reached or during the quorum grace window, and otherwise are aborted by the laggard abort sweep once required quorum is satisfied.
Follow-up
Add an optional
optional_quorumconfig knob that lets optional councillors also contribute to an early-stop decision. For example, users could stop waiting once required quorum is met and N optional councillors have also responded, independent of the required-councillor quorum.Why deferred from #12
The #12 design discussion explicitly deferred this to keep the first tiered-model change focused. A default of
optionalCountproduces no automatic savings because it resolves identically to waiting for all optional councillors to settle. Only opt-in tuning helps, there is no real-world usage data yet to tune against, and adding the knob later is non-breaking.Acceptance sketch
council.optional_quorumwithcouncil.quorum-style validation against the configured optional councillor count.optional_quorumis omitted.