Skip to content

stewards: dated waits (BB-247) - #287

Merged
trotterdylan merged 3 commits into
mainfrom
bb/bb-247-dated-waits-in-stewards-plugin-thr_euy436zb6w
Nov 9, 2026
Merged

trotterdylan merged 3 commits into
mainfrom
bb/bb-247-dated-waits-in-stewards-plugin-thr_euy436zb6w

Conversation

@trotterdylan

Copy link
Copy Markdown
Collaborator

Replacement for #286. GitHub auto-closed #286 when its stacked base branch (bb/bb-249-approve-spec-re-approval-diff-thr_dd7yycrjij) was deleted as #285 merged, and refused to reopen it after the rebase. This is the same work, rebased onto main (which now carries #285 and #284); the owner's unsigned approval of d1ad8df on #286 and the reviewer's approved verdict carry over the rebase, and no scope or behaviour changed. Diff against main is the dated-wait work only.

Implements BB-247. A steward waiting on something with a known end can now report steward_report { waitingOn, until }; the binding requeues at that date instead of requeue-default, no stall is counted while the date is ahead, and the row, bb stewards show and the project steward's digest show the date.

Stacked on BB-249's PR #285: this branch is cut from bb/bb-249-approve-spec-re-approval-diff-thr_dd7yycrjij and the PR is based on it. The migration is appended after every earlier group; if #285 merges first this is retargeted/rebase onto main.

Merging this to bb-plugins main moves the pin, builds a new bb-server image and stages a restart on every developer's server (at Restart now, or in the 03:00–05:00 ET quiet window).

Classification

owner-reviewed: the change touches server.ts and wake.ts, which the project's bigDecisions list places under the user entry "The stewards plugin's roles parsing, ready gate and approval and escalation plumbing outside the hard-coded self-widening list", and store.ts, a store migration. The stall change is escalation plumbing, so the owner's unsigned approval is the gate; the project steward posts no bb-approval.

What changes

  • host-contract.ts names no report schema in this codebase — the steward_report schema lives in server.ts, so until is added there.
  • server.ts: a future until (a YYYY-MM-DD date read as 00:00 UTC, or an ISO datetime) sets requeueAt = until instead of now + requeueDefaultMs, ignoring an explicit requeueAfter; a past until is ignored with a note; invalid, or until without waitingOn, is refused. A wait more than max-wait out is accepted and the project steward is told once (a queued digest note, keyed on the date; not an escalation and not forwarded). A dated wait is not marked noWakeSource while the date is ahead. Each report replaces the dated wait, so a report without until (or with different wait text) clears it.
  • wake-source.ts: parseUntil, and advanceStall skips and resets while requeue_until is future; counting resumes from zero after it passes.
  • store.ts: requeue_until and requeue_until_noted columns, an append-only DATED_WAIT_MIGRATIONS group appended to MIGRATIONS, and migrations.snapshot.json updated.
  • config.ts: playbook front matter max-wait (duration, default 90d). No playbook sets it (a server on an older image would reject the unknown key), so the default is what runs.
  • sidebar.ts/app.tsx: SidebarBinding.waitingUntil, and the row reads waiting on <text> until <date>.
  • wake.ts: the project steward's digest lists dated waits in their own section, separate from stalls.
  • skills/stewards/SKILL.md: documents until in the report and waiting rules.

stuck: thresholds and the deployment-deadline min are unchanged.

Testing

  • npm run typecheck in plugins/stewards: pass.
  • npm test in plugins/stewards: pass (1399 tests); the plugins workflow's matrix also runs quality_checks (stewards).
  • New tests cover each acceptance criterion: requeue at the date and not before, invalid/past until, no stall while the date is ahead and counting after it passes, the row/bb stewards show/digest visibility, and the once-per-date beyond-max-wait note.
  • The BB-83 idle wake is suppressed while a dated wait is ahead (reconcile.ts idleInActiveStage), with a unit test and an integration test that sweeps past the grace before the date.

@trotterdylan
trotterdylan merged commit d816af6 into main Nov 9, 2026
22 checks passed
@trotterdylan
trotterdylan deleted the bb/bb-247-dated-waits-in-stewards-plugin-thr_euy436zb6w branch November 9, 2026 01:20
@trotterdylan

Copy link
Copy Markdown
Collaborator Author

Merged: owner-reviewed, reviewer approved d1ad8df (bb-review round 2 on #286), approved by the owner (trotterdylan) on d1ad8df (unsigned comment 2026-11-09T01:14Z on #286), checks green. Since then: rebased onto main after #285 merged (main carries #285 and #284) — the SKILL.md edit merged with #284's change cleanly, no conflict, no scope or behaviour change. Replacement for #286, which GitHub auto-closed when its stacked base branch was deleted.

merge commit d816af6

Note: merging this moves the pin and stages a restart for every developer's server (Restart now, or in the 03:00–05:00 ET quiet window).

— from bb thread thr_euy436zb6w

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