Replies: 2 comments 1 reply
Regarding "Execution eligibility: only work ready (unblocked) items, skipping blocked ones. Likely fine given unblocking value ranks blockers up":Agree, and I think the reasoning is correct. But notice it depends on the unblocking value being kept up to date, which connects to the staleness question you raise later. If a blocker's value comes from the epic it unblocks, and that epic changes but the blocker's assessment is cached and not re-run, the blocker keeps its old, lower value and never ranks up. Then the epic stays blocked with nobody working on it. You decided not to compute that value with a dependency graph. Instead the agent estimates it and writes it into the issue assessment. So the whole execution order depends on that estimate being right. If the agent does not capture how much value a task unblocks, the blocker will not rank high, and then its dependent (which is actually valuable) stays stuck with nobody working on it. This is worse in long chains, if a blocker is two or three hops away from an important epic, does it still inherit enough value, or does it get lost on the way? Two suggestions:
Regarding "Agents can also open issues for gaps or bugs they find, which then go through normal triage":Makes sense, but I would separate two cases. An agent reporting a bug is factual and verifiable, so it's safe. An agent proposing a feature or a direction is closer to inventing strategy, which is the part you keep for humans through the principles. I would let agents file bugs freely, but have a human approve feature or direction proposals first. Suggestions:
|
|
I think having it as a filter against a set of strategic priorities for making a general sense of how each bucket of work advances those priorities is useful. Beyond that I think you anyway need the human judgement so beyond a whole lot of text idk what it gives you, I have yet to read a single of those wall of texts the AI posts when they do the assessment. But for sure giving it some basis on grounded reality of what is being tried to achieve vs. limited resources should be a useful pre-filter. I think agents filing and even fixing bugs automatically is fine, but prioritization is a moving target so constantly you are gonna have to prioritize issues against each other at a given point in time based on the available context, and those strategic goals, so you still need human in the loop feeback to get something remotely useful for prioritization. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Posting this for broad feedback from the team and community.
It proposes extending the issue-prioritizer (the tool that scores and ranks our GitHub issues) into a system that decides what to work on next, runs the autonomous work to completion, and routes work that needs human judgment into a short, priority-ordered decision queue. Feedback very welcome, especially on the "human's role" section and the open questions at the end.
Strategic prioritizer: design spec
Status: draft for feedback.
What this is
The issue-prioritizer today scores open GitHub issues by Value and Cost, ranks them with pairwise comparison, and writes the scores to a project board a human browses. It was built mainly to surface the highest value-for-cost issues to work on next.
This spec extends it into a system that decides what to work on next across the whole Freenet backlog, dispatches autonomous agents to do the work that needs no human, and routes the work that does need a human into a short, priority-ordered decision queue. The scarce resource it optimizes is human attention. Agent compute is cheap and renewable, bounded only by quota.
Goals
Pipeline
Four stages, kicked off manually for now (see Running model).
1. Intake
Issues are submitted to the configured GitHub repos (the nine Freenet repos the tool already covers). An issue may carry an upfront flag that it will need human input at some point. Agents may also file issues for gaps or bugs they notice, routed through normal triage.
2. Assess
For every open issue, an agent writes a Value explanation and a Cost explanation, exploring the real code and any related issues.
3. Rank
The Value explanations are ranked against each other by ASAP active-sampling pairwise comparison, and the same for Cost. Priority is value minus cost, both in log-odds.
4. Execute
The system works down the ranked list, dispatching agents to the highest-priority ready items, parallelized as far as the budget allows.
Human gate and the decision queue
Work needs a human in two ways, and the system handles both:
When an agent reaches a human gate, it first does enough investigation that its question is well-informed, with nothing it could have answered from the code, related issues, or other available context. It does not over-prepare, because the human's answer may invalidate that work. The goal is to ask the right question at the point where the answer forks the work. It then posts that question as a comment on the issue and parks the item.
Parked items form the decision queue: the needs-human issues, ordered by priority, presented as a saved view on the project board. The human's attention goes to the top item first. An item stays parked until a project member answers.
Running model
For now the loop is started manually, typically against the quota cycle. Example: quota resets Tuesday evening, so Tuesday morning the operator says "we have this much usage, use it before reset," and kicks off a run. A run re-ranks first so new and changed issues land correctly, then executes within the budget.
Principles
The human's role
A fair critique of an autonomous prioritization system is that it removes human judgment from deciding what matters. This design keeps humans in control and concentrates their judgment where it has the most leverage. Humans stay in the loop at five points:
Open questions and defaults to confirm
Out of scope for now
Drafted with Claude (AI-assisted), pending team review.
[AI-assisted - Claude]
All reactions