Repository navigation
Description
Lessons from the first full decision-triage run on this repository (2026-11-01). It covered 156 open issues and asked 97 researched questions: 74 were put to the maintainer and 23 had already been answered by later changes. Items 1-5 are ready to work. Items 6 and 7 need a maintainer choice, stated below. That is why this issue carries decision.
Changes go through skill-lifecycle, with scripts/build_dist.py regenerating the distributions. backlog-burndown carries decision-triage's "Needs the Maintainer" as a generated include, so check it after any edit there.
Ready to Work
- Cluster research by default and show the cost up front. Step 3 sends one
frontierresearcher per question, which here meant about 97 runs. The run instead clustered five or six questions per researcher by topic, at roughly a third of the cost, with no loss of quality the maintainer noticed. Make topic clusters the default, and have step 3 state the research count and an estimated token cost before dispatching. - Make the newest comments the evidence. The qodo_open Double-Counts and Never Clears the Open-Source Qodo App's Threaded Findings #2252 researcher recommended the design from the issue body. A later comment recorded the bot's own statement of how it behaves, which pointed to a different answer, and the maintainer had to correct the recommendation. The researcher brief should say three things:
- read every comment, newest last;
- a later maintainer or evidence comment outranks the body's design;
- a tool's or bot's own statement of its behavior is evidence to weigh against the body.
- Give the classifier an
OVERTAKENline. 23 of the 97 questions (24%) came back from research as already answered: a retired skill (Add an Away Mode to backlog-burndown and Retire unattended-handoff #3735), a merged fix, a completed rollout, or a tracker whose children had closed. Each cost afrontierpass. Let the classifier returnOVERTAKEN #n <what>after a cheap history check (git logon the named files, the state of child issues, a later decision comment). Also add a step that offers to close the overtaken issues that hold nothing else, since that offer was improvised in this run. - Say in the brief that output is posted publicly, and fix the write bound.
- Researcher output becomes a public issue comment, but the brief does not say so. Two researchers described the triaging machine's own environment (installed tool versions, a local uncommitted file) and had to be scrubbed by hand. The brief should say the output is posted publicly, and cite only the repository, its history, and GitHub state.
- "Writes nothing" was broken by three researchers, who saved issue text to scratch files. The bound should allow a named scratch directory and forbid only repository and GitHub writes.
- Ask coupled questions together. Step 5's longest-waited order separated questions that settle each other, such as Make pr_review.py and Merge Gate Item 2 Agree on an Earlier-Head Copilot Refusal #3571 with Copilot Refuses a Pull Request Carrying Only Default-Excluded Files, and No Rule Covers It #2180, Read a Bare Push's Branch After an Earlier Branch Switch in the Same Command in the Write Guard #3729/Decide Whether Every Bare Push With an Undetermined Repository Fails Closed in the Write Guard #3730/Drop the Unused leading_cd and moved Parameters From the Write Guard's Bare-Push Reader #3723, and Declare Per-Environment Secrets and Variables Once and Check Them From the Hub #2070/Hand a Variable Set of Environment Values to a Hub Task's Hook Instead of Named Pairs #2174/Say Where the Deploy-Site Task Actually Requires the SSH Key #1801. Within the age order, put questions linked through a
BLOCKSline or a shared file in the same prompt.
Needs a Maintainer Choice
- A machine-readable "deferred" state. Three answers were "not yet": Add safety hooks for opencode and codex #781, Generate the Qodo Settings Repository From the Hub So Fleet Rules Are Authored Once and Auditable #1464, Hand a Variable Set of Environment Values to a Hub Task's Hook Instead of Named Pairs #2174. Today that lives only in an answer comment, so a later classifier could read the issue as ready work. Options:
- (recommended) Add a
deferredlabel.decision-triageapplies it on a "not yet" answer.backlog-burndownand the classifier skip it, and a later triage reports deferred issues by count. - Reuse
blocked, with the comment naming the condition. This needs no new label, but it blurs "blocked on an issue" with "blocked on the maintainer's timing". - Keep comment-only and have the classifier brief read for it. Cheapest, and the least reliable.
- (recommended) Add a
- Whether a recorded approval clears the agent-safety hold. The maintainer approved eight edits under
host-setup/agent-safety/in this run (Validate the Interpreter the Agent-Safety Installer Writes Into settings.json #1172, Coding agents may claim co-author but never include session links #1264, A Parent Pinned to UTF-8 Spawning a Python Child Leaves the Child's Encoder on the Locale #1577, State the Session-Tree Bound and the Orphan Stop in Requirement 9 #2598, Nothing Checks That the Host CLAUDE.md Blocks Stay in Sync With Their Governance Sections #3601, Read a Push Option Attached to -o as Its Value in the Write Guard #3720, Drop the Unused leading_cd and moved Parameters From the Write Guard's Bare-Push Reader #3723, Read a Bare Push's Branch After an Earlier Branch Switch in the Same Command in the Write Guard #3729). "Needs the Maintainer" still holds every such edit, andbacklog-burndownaway mode reports them as needing the maintainer present, so they may just be parked again. Options:- (recommended) A recorded approval comment from an account with write access lets an attended run implement the change. Merging it still needs the maintainer present, since a human approves the diff, not just the design. Away mode keeps holding it.
- The approval also clears away mode, with the merge held at the promotion.
- Leave as is: every agent-safety edit needs the maintainer present from the start, whatever was approved earlier.
Done When
Items 1-5 are reflected in .agents/skills/decision-triage/SKILL.md and regenerated. Items 6 and 7 carry the maintainer's choice and are implemented in decision-triage, and in backlog-burndown where it is affected.
Activity
ptr727 commentedon Nov 1, 2026
Maintainer answers (2026-11-01):
Item 6, option 1: add a
deferredlabel.decision-triageapplies it on a "not yet" answer, with the resume condition stated in the answer comment.backlog-burndownand the triage classifier skip it, and a later triage reports deferred issues by count. Implementation:repo-config/labels.json, describe it besidedecisionandblockedinrepo-config/README.md"Labels", and apply it throughconfigure.sh apply;Item 7, option 1: an approval comment on an issue, from an account with write access, lets an attended run implement and drive an edit under
host-setup/agent-safety/. Merging still needs the maintainer present, since the maintainer approves the diff and not only the design. Away mode keeps holding every agent-safety edit. Write this intodecision-triage"Needs the Maintainer" (and sobacklog-burndown's generated include). It applies to the eight approvals recorded on 2026-11-01: #1172, #1264, #1577, #2598, #3601, #3720, #3723, and #3729 (with #3730).Items 1-7 are now all work.
Close the Gated Agent-Safety and Held-Decision Loose Ends
Carry the Merge Go-Ahead Into a Resumed Agent-Safety Worker
State Plainly Which Overtaken Issues Stay Open
Improve decision-triage From Its First Full Run (#3760)