Repository navigation
stewards: durable adoption decisions for unadopted Dependabot tickets, SLA clocked from the alert - #258
Closed
trotterdylan wants to merge 1 commit into
Closed
stewards: durable adoption decisions for unadopted Dependabot tickets, SLA clocked from the alert#258trotterdylan wants to merge 1 commit into
trotterdylan wants to merge 1 commit into
Conversation
… and clock the SLA from the alert In santaclaw, SC-111 (two medium alerts, no fix) was filed and sat in Backlog unlabelled for six days, up to its due date. The one point a person was meant to be asked, the deps steward's "Recommend adopting" escalation, lived in the filing thread and was lost with it; recreating the watch binding reset the SLA clock, so every report and digest since carried a due date three days later than the ticket's; and nothing mechanical warned as the real date approached. - The adoption decision is durable plugin state keyed by ticket (`deps_decisions`), raised the moment a report lists a ticket filed for a severity deps.autoAdopt does not name, and at every look as the backfill for a ticket inherited, found by dedup, or filed by a thread that never reported. It shows as a plugin-filed `decide` need on whichever binding watches the repository (`bb stewards needs`, the Stewards page, the digest's "Needs you") with choices Adopt, Dismiss as not used and Keep tracking (dismiss first when no alert has a fix), until the owner answers, the ticket is labelled, or it closes. A recreated binding re-files the item on itself. - The SLA clock is the alert's own created_at, not when this server first saw it. Once a ticket exists its Linear due date (new optional `dueDate` on the snapshot contract, served by linear) is the truth: the wake shows it, says when the SLA alone would disagree, and the batch plan only ever tightens it. - Reminders at half the way to the due date, the day before, and once overdue: the item is reworded, the project steward's next wake carries a note so the digest names the deadline instead of promising to raise it, and the log records it. - Every ops target keeps an action log (`ops_log`) of what each thread filed, commented or reopened and each decision raised, reminded or settled; `bb stewards show` prints it with the decisions. - The deps-alerts template no longer asks the steward to raise the escalation itself; the wake tells it what each answer means. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Collaborator
Author
|
Closing to discuss the design first; a ticket will follow. The branch stays. |
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.
Why
SC-111 in santaclaw: two medium Dependabot alerts (echo, go, no patched version) were filed and sat in Backlog unlabelled for six days, up to their due date. Nobody was asked whether to adopt the ticket: the deps steward's one "Recommend adopting" escalation lived in the filing thread, which was later deleted. Recreating the watch binding reset the SLA clock, so every steward report and digest since then said due 11-07 when Linear said 11-04, and nothing mechanical warned as the real date approached.
What
deps_decisionstable keyed by ticket. The decision is raised the moment asteward_reportlists a ticket filed for a severitydeps.autoAdoptdoes not name, and at every look as the backfill (a ticket inherited by a recreated binding, found by the dedup search, or filed by a thread that never reported). It shows as a plugin-fileddecideneed on whichever binding watches the repository, inbb stewards needs, on the Stewards page and in the digest's "Needs you", with choices Adopt, Dismiss as not used, Keep tracking (dismiss first when no alert has a fix). It settles when the owner answers (page orbb stewards done --choice), the ticket is labelled, or the ticket closes. A recreated binding re-files the item on itself and closes the earlier one.created_at, not when this server first saw it (alertClockAt). Once a ticket exists, its LineardueDateis the truth: the wake shows it on the alert and names the drift when the SLA alone would disagree; the batch plan uses it and only ever tightens it.dueDateis a new optional nullable field onentitySnapshotSchema(all threesource-contract.tscopies updated together; linear serves it, github leaves it absent).reminderDue), each once: the item is reworded, a note is queued for the project steward's next wake so the digest names the deadline, and it is logged.gh apidismiss and close with a comment, or move the due date).ops_log, keyed by target): filed/commented/reopened with the acting thread id, decisions raised, reminders, settlements.bb stewards show <target>prints decisions and the log, so "did anyone ask?" is answered without the filing thread.The deps-alerts template, DESIGN.md §19, README and the stewards skill are updated. The sibling bb-gate PR (same head branch) updates the live
.bbplaybook and should merge after this one: bitcomplete/bb-gate#96.Store
Two new tables, appended as
DEPS_DECISION_MIGRATIONSafter the escalation-route group;migrations.snapshot.jsonhas the four new hashes. The new statements are prepared lazily so the legacy-schema migration tests still open the store.Acceptance (replayed in
server.test.ts, "replays SC-111")bb stewards needsshows the decision with the three choices.created_atand matching Linear; a moved Linear date is shown with the drift named.bb stewards showlists that the ticket was filed, the decision raised, each reminder, and the settlement, with the filing thread's id.Tests
npm run typecheck && npm testin stewards (1234 passed), linear (157), github-watcher (84).Shipping
Merging moves the plugin pin, builds a new
bb-serverimage and stages a restart on every developer's server. Owner-reviewed: a store migration and a contract change (source-contract.ts).🤖 Generated with Claude Code