Repository navigation
stewards: dated waits (BB-247) - #287
Merged
trotterdylan merged 3 commits intoNov 9, 2026
Merged
Conversation
trotterdylan
deleted the
bb/bb-247-dated-waits-in-stewards-plugin-thr_euy436zb6w
branch
November 9, 2026 01:20
Collaborator
Author
|
Merged: owner-reviewed, reviewer approved d1ad8df ( merge commit d816af6
— from bb thread thr_euy436zb6w |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 ofrequeue-default, nostallis counted while the date is ahead, and the row,bb stewards showand 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_dd7yycrjijand the PR is based on it. The migration is appended after every earlier group; if #285 merges first this is retargeted/rebase ontomain.Classification
owner-reviewed: the change touches
server.tsandwake.ts, which the project'sbigDecisionslist places under theuserentry "The stewards plugin's roles parsing, ready gate and approval and escalation plumbing outside the hard-coded self-widening list", andstore.ts, a store migration. The stall change is escalation plumbing, so the owner's unsigned approval is the gate; the project steward posts nobb-approval.What changes
host-contract.tsnames no report schema in this codebase — thesteward_reportschema lives inserver.ts, sountilis added there.server.ts: a futureuntil(aYYYY-MM-DDdate read as 00:00 UTC, or an ISO datetime) setsrequeueAt = untilinstead ofnow + requeueDefaultMs, ignoring an explicitrequeueAfter; a pastuntilis ignored with a note; invalid, oruntilwithoutwaitingOn, is refused. A wait more thanmax-waitout 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 markednoWakeSourcewhile the date is ahead. Each report replaces the dated wait, so a report withoutuntil(or with different wait text) clears it.wake-source.ts:parseUntil, andadvanceStallskips and resets whilerequeue_untilis future; counting resumes from zero after it passes.store.ts:requeue_untilandrequeue_until_notedcolumns, an append-onlyDATED_WAIT_MIGRATIONSgroup appended toMIGRATIONS, andmigrations.snapshot.jsonupdated.config.ts: playbook front mattermax-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 readswaiting 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: documentsuntilin the report and waiting rules.stuck:thresholds and the deployment-deadline min are unchanged.Testing
npm run typecheckinplugins/stewards: pass.npm testinplugins/stewards: pass (1399 tests); thepluginsworkflow's matrix also runsquality_checks (stewards).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-waitnote.reconcile.tsidleInActiveStage), with a unit test and an integration test that sweeps past the grace before the date.