package.json with "type": "module", put the
brief and the sample inputs from examples/use-cases/engineering/
beside it, then run the copied file.
The file
rank with the question on the record. The stories
and the questions are in backlog/ for the owner to read; an answer
through the run’s callbacks client carries on from there, and a no goes
back to split with the owner’s note as the finding.
What a run printed
The output below is from one real run of this file, with the two command line tools signed in on the machine. This run did not finish, and it is here because of that rather than in spite of it. The reviewer is a model from another family. Three times it read the stories and sent them back with a real problem: a dark-mode story that said every screen renders “correctly” without saying which screens or what proves it, and an export story that had quietly become two, finishing a yearly export and running one every month. Each round the writer fixed what it was told and the reviewer found something else true. On the third the loop reached its allowance and stopped. Nothing was published. A grooming loop that stops with the work unfinished is doing its job; one that runs out of attempts and passes the stories on anyway would not be. The allowance is the thing to match to the work: three rounds suit a job with a few defensible answers, and splitting a backlog of vague tickets is not that job.The team’s shape
Where a stage’s gate names a file, the package checks the file after the
job. Where it names an exit code, the command decides. Where it names a
reviewer, the reviewer’s decision decides. Where it names a person, the
run pauses until the person answers. A model’s own report of its work
never passes a stage.
Gotchas
- The reviewer reads the raw tickets, not just the stories. The review’s gate is coverage: a raw ticket with no story sends the split back, which is what happens in the proof.
- Priority is not the model’s to decide. The brief says so and the workflow ends at a person; a story order that appeared in
stories.mdwould be a model’s guess dressed as a decision. - A note that comes back unchanged fails. A split sent back with findings must change; the same bytes again end the stage rather than run a second identical review.
Source
The file isexamples/use-cases/engineering/backlog-groom-then-rank.ts; its proof, brief and
sample inputs sit beside it. The runtime package page
lists every input.