You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
promote: run due promotions from the scheduled sweep, and say on the PR when an approval cannot promote #388
cgwalters approved cgwalters-forge/bootupd#2 on 2026-09-26 and again on 2026-10-05 and saw nothing happen. bot-promote-due knew why (coreos/bootupd is human-text, so it needs his text and /promote --human-text), but that only appears in the sweep's watch.txt, which he does not read. Eleven forge PRs are in the same state today.
Two problems:
Promotion is not deterministic end to end. bot-promote-due computes what is due, but running bot-pr promote is left to a Sonnet dispatcher job started by the supervisor on an approval action. Make the scheduled sweep (or a sibling timer unit) run the due promotions itself, with no model in the loop, and record each outcome on the board item. Keep the existing refusals (stale policy record, head moved since approval, human-text).
A refused promotion is silent. When an approval or /promote cannot promote, comment once on the forge PR with the reason and the exact next step (for human-text: edit title, body and commits, then /promote --human-text), keyed so it is not repeated for the same head and reason. Forge PRs are in the bot's own org, so this adds no bot text upstream.
Open question for cgwalters: on human-text repos, should an approval made after he has edited the title and body himself count as /promote --human-text? Today it does not.
Tests: data-driven cases for due, refused-with-reason, already-commented, and head-moved.
Scope added from cgwalters's answer on #245: accept means the PR is posted upstream as the bot. Upstream LLM rules become an advisory warning shown on the forge PR before promote, blocking only when they clearly disallow bot accounts. Keep one issue that caches the bot's view of each org/repo contribution policy, and recheck a record when its sources changed since the last submission. The verdict flip for the eight silent repos is cgwalters-bot/homegit#145 (needs his approval).
The sweep already ran bot-promote-due --apply; it now also promotes a human-text PR after /promote --human-text (bot-pr promote still checks the text is yours), and reconcile no longer asks a model to run bot-pr promote.
An approval that can't promote gets one comment on the forge PR with the reason and next step, plus the item's News; keyed by approval, head and reason. The next sweep comments on the 11 PRs now waiting for your text.
No gate or policy verdict changed. The open question (approval after your own edits counting as /promote --human-text) is at cgwalters-bot/homegit#153 (comment). Advisory warning and cached policy view: #398.
ostree#3611: rerun the red stream9 jobs #153: nothing here can promote without your approval of the exact head. bot-promote-due only decides when to run bot-pr promote, which checks the head, the policy and (for /promote --human-text) that the text is yours again; a stale approval never reaches it. Notices go only to open PRs by the bot in the forge or its own forks that carry a bot-meta section, never to the upstream PR, and only the bot's own comments count as notice keys or sign-off records. One comment per approval+head+reason (a moved head: per approval; a refusal: per approval+head, whatever its wording), so the 6h retry repeats nothing.
bootc#2499 (.vmlinuz.hmac): sign off again #151: archives only items that are Done on a fresh listing and whose issue or PR is closed for 3 days by its own closed_at; epics and anything with an open sub-issue stay; lookups are REST, archives go one at a time, 100 a run. Any unreadable item fails the run before a single archive.
Two small things, yours to decide, not fixed:
After a "needs your text" notice, pushing your reworded commits before commenting /promote --human-text can draw one "head moved" notice whose next step names plain /promote.
An item set Done long after its issue closed is archived at the next 6h run, and late token spend on an archived item no longer reaches its Actual tokens.
Activity
cgwalters-bot commentedon Oct 5, 2026
Scope added from cgwalters's answer on #245: accept means the PR is posted upstream as the bot. Upstream LLM rules become an advisory warning shown on the forge PR before promote, blocking only when they clearly disallow bot accounts. Keep one issue that caches the bot's view of each org/repo contribution policy, and recheck a record when its sources changed since the last submission. The verdict flip for the eight silent repos is cgwalters-bot/homegit#145 (needs his approval).
Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 6, 2026
Landed in cgwalters-bot/homegit#153 (and #151 reworked and merged).
bot-promote-due --apply; it now also promotes a human-text PR after/promote --human-text(bot-pr promotestill checks the text is yours), and reconcile no longer asks a model to runbot-pr promote.No gate or policy verdict changed. The open question (approval after your own edits counting as
/promote --human-text) is at cgwalters-bot/homegit#153 (comment). Advisory warning and cached policy view: #398.Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 6, 2026
Post-merge review of cgwalters-bot/homegit#153 and #151 (read in full, not by Sonnet): both hold, nothing to fix.
bot-promote-dueonly decides when to runbot-pr promote, which checks the head, the policy and (for/promote --human-text) that the text is yours again; a stale approval never reaches it. Notices go only to open PRs by the bot in the forge or its own forks that carry a bot-meta section, never to the upstream PR, and only the bot's own comments count as notice keys or sign-off records. One comment per approval+head+reason (a moved head: per approval; a refusal: per approval+head, whatever its wording), so the 6h retry repeats nothing.closed_at; epics and anything with an open sub-issue stay; lookups are REST, archives go one at a time, 100 a run. Any unreadable item fails the run before a single archive.Two small things, yours to decide, not fixed:
/promote --human-textcan draw one "head moved" notice whose next step names plain/promote.Generated-by: https://github.com/cgwalters/#llms