Replies: 1 comment
|
Read Prow and bors-ng at HEAD to see how mature implementations handle this. One Prow chose the widest possible scope, and pays for it structurallyProw scans every comment on every configured repo, then broadcasts it: for each The cost shows up as a patch on the missing router — the This is the price of "read everywhere": without a central router, every handler must
|
Uh oh!
There was an error while loading. Please reload this page.
/milestone(#1290, PR #1293) is the first in-ticket command, and #1294 lifts itsparsing, permission and receipt machinery into a reusable layer. Neither touches the
question this thread is for: which tickets should the engine read commands from?
Today the answer is the narrowest possible one, and that was the right call for a
first command. But it decides which commands can exist at all, so it deserves a
decision rather than a default.
Where commands are read today
The only call site is nested inside the idle path:
Three conditions stack: the idle tick, auto-advance disabled, and a ticket the engine
itself opened. Outside that intersection, a
/commandcomment is never seen.This is not an oversight — #1290 states it plainly:
Why it constrains the command set
The current shape serves exactly one interaction: the engine asks a question on a
ticket it opened, and a human answers there.
/milestonefits perfectly.Commands that act on a delivery ticket do not fit at all, because those tickets are
written by humans and the engine never opens a confirmation ticket for them:
/approve— clear a human-review gate without the label dance/retry— requeue a delivery that endedai-blocked/cancel— stop an in-flight delivery/model <name>— override the engine for one deliveryNone of these has anywhere to land right now.
Option A — keep the narrow scope
Commands live only on engine-opened tickets. New interactions must follow the same
shape: the engine opens a ticket asking something, the human answers there.
For
Against
is exactly the CLI-shaped gap 里程碑推进只接受 CLI:托管租户收到提问却给不出引擎认的答案,且建 milestone 与开 release 票仍需人工 #1290 set out to close
Option B — scan
ai-*ticketsThe idle tick scans open issues carrying an
ai-label and reads their comments.For
Against
history
tickets that needs rethinking
grows from "tickets we opened" to "every delivery ticket"
Not to be confused with steering
steering_poll_seconds(src/orbi/config.py:144) polls while a Pi session isalive, inside the delivery loop (
src/orbi/runner.py:3148). In-ticket commands runon the idle tick. Different mechanism, different lifetime — they should not share
a poller, and merging them would couple command availability to whether a delivery
happens to be running.
What would settle this
Option B's cost is only justified by a command that needs it. So the useful question
is not "which option is better" but:
Which of
/approve,/retry,/cancel,/modeldo we actually want — and is anyof them worth a per-tick scan?
If the answer is none of them for now, A stands and this thread can rest. If one of
them is wanted, it should be specified first, and the scan scope decided as part of
building it — not before.
Related: #1290 (the first command), #1293 (its implementation), #1294 (extracting the
reusable layer, deliberately scope-neutral).
All reactions