import type { Board } from "./model.js"; import { type Ask } from "./readiness.js"; /** * Walking the flow: the same questions, in the order the work happens, standing on the board. * * A list of outstanding questions was never the wrong data — it was the wrong shape and the wrong * place. Scrolling twenty-one rows in a panel is proofreading a map by reading a list of its street * names: you cannot tell from a row that the thing it is about sits on an outside track with nothing * downstream of it, which is usually the whole problem with it. * * So the questions get the board's own order. Each hop is one job, lit where it sits, with the single * most consequential thing staves does not know about it. Answering draws the next piece and moves * along. Nobody triages, because a process supplies its own order — it is how you would walk someone * through their work out loud, and it builds and verifies in the same motion. * * Jobs staves has nothing consequential to ask about are not hops. A walk that stops at every card to * ask nothing is a tour of its own thoroughness. */ export interface Hop { /** the job this hop stands on */ job: string; name: string; /** what staves wants to know here, in full — a truncated question is not a question */ question: string; /** what it is about, for a person reading ahead */ about: string; /** 1-based, for "hop 4 of 13" */ index: number; } export interface Walk { hops: Hop[]; total: number; /** jobs passed over because nothing consequential is outstanding about them */ settled: number; } export declare function walk(b: Board, ask?: Ask): Walk;