The pipeline takes a ticket and delivers finished work. It plans, writes the code, runs
the tests, reviews its own output, fixes what the review finds, opens a pull request.
Against a single repository it needs no supervision.
Real tickets cross repositories. An API change lands in the service that provides it, then
in the client library that calls it, then in the tool that wraps that client, in that order.
The pipeline stops at the repository boundary.
What a stop is
A stop is the pipeline halting and handing back to a person. It reports what it found,
what it expected and what it needs, then does nothing further.
A stop is the pipeline declining to guess, and usually that is correct. Carrying on past
a mismatch produces code that compiles, passes its own tests, and breaks the contract the
next repository depends on.
The problem is frequency. Every stop interrupts a person.
The goal: reduce how often a stop is necessary, without turning a legitimate stop into
a guess.
Stopping less often by learning to guess would score better on the primary metric and
make the pipeline worse.
Why it is hard
A bigger context window does not solve it. Four questions have no answer today once a task
crosses a repository boundary:
- Which repositories should this change be validated against?
- What carries forward to the next step, and what gets dropped?
- When something turns out wrong, which repository do we go back to?
- Is this a real fix, or the same failure again? Inside one repository the pipeline already
counts repeat failures and gives up rather than thrashing. Across repositories there is
no equivalent.
Where a run stops
Four points, each a different kind of missing knowledge.