Skip to content

feat(planning): make the interview settle window a setting with a longer default #7968

Description

@kyle-sexton

Refs: #6053

Agent Brief

Type: Feature
Summary: The interview server's quiet window and burst cap come from the settings layer, with a default quiet window of about 10 s so a sweep round of plain accepts wakes the agent once.

Current behavior:
Planning's server hard-codes QUIET_SECONDS = 3.0 and BURST_SECONDS = 12.0 and returns them from settle_window(). The audit run showed accepts 2-9 s apart (sweep seqs 42-51), so most plain accepts each cost one agent wake. Owner decision recorded on #6053 (2026-10-13): interim settings-layer QUIET_SECONDS of about 10 s.

Desired behavior:

  • Two settings keys (for example settleQuiet and settleBurst, in seconds) resolve through the same settings layers as the existing keys (waitTimeout, leaseTimeout) and are documented in the interview session-config reference with their defaults.
  • Defaults: quiet 10 s; burst raised with it so the burst cap stays above the quiet window (for example 30 s), and the burst never holds a reply past the watcher's wait deadline (the bridge's settle() already clamps to the deadline).
  • Invalid values (non-numeric, zero or negative, quiet greater than burst) fall back to the defaults and do not stop the server.
  • The settings panel shows the values read-only, like leaseTimeout.

Key interfaces:

  • Planning's Hub.settle_window() return value: (quiet, burst) from settings instead of module constants.
  • Settings shape: two new keys with defaults, documented in the interview session-config reference.

Acceptance criteria:

  • scripts/run-test-file.sh plugins/planning/surface/test_server.py passes, including new cases: defaults return the new values; a configured value is returned; an invalid value falls back to the default.
  • The session-config reference lists both keys with their defaults.
  • The diff touches no file registered in scripts/shared-copies.txt.
  • A planning changelog fragment is added and scripts/check-changelog-fragments.sh passes.

Out of scope:

  • The bridge's own QUIET_SECONDS/BURST_SECONDS in lib/session-bridge/ (used by other apps' view bridges).
  • Server-side auto-handling of plain accepts (sibling item).
  • Measuring wake counts against a live session (not runnable unattended).

This was generated by AI during backlog shaping. Split from #6053; the owner approved filing it in an attended backlog-shaping session on 2026-10-18.

Activity

  1. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 18, 2026
  2. added
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Oct 18, 2026
  3. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions