Read your longest system prompt and count the imperatives. First check the account. If it's past due, do X, unless it's a trial, in which case Y. Never touch billing without confirmation. When you're done, summarize. That is not a prompt. That is a flowchart someone flattened into a paragraph and asked a model to re-inflate on every run.
Prose is a bad container for control flow. Branches, ordering, and "unless" clauses have to be held in the model's head all at once, and the longer the paragraph, the more likely one edge quietly gets dropped mid-run.
The tell
A prompt is really a workflow when it has any of these:
- Order that matters — step two only makes sense after step one.
- Branches — "if X then… otherwise…" that decide what happens next.
- Guards — "never do Z without confirming," "stop if the input is empty."
Those are exactly the things prose hides and steps expose. In a paragraph, a missing branch looks like a normal sentence. In a flow, a missing branch is a visibly dangling edge.
Convert it, then grade the steps
rubrkit_convert_to_rubr_flow turns the sprawling instruction into a canonical rubr_flow — explicit steps and edges instead of a wall of text. The value isn't prettier formatting. It's that a flow is gradeable as a structure: you can see whether every branch has a defined outcome, whether the guards actually gate the dangerous steps, and whether the empty case goes somewhere instead of nowhere.
Once it's a flow, you audit it the same way you audit any instruction — the same ten dimensions, before it executes. Bounded behavior and failure handling stop being adjectives you hope the prose implies and become edges you can point at.
A workflow you can read as steps is a workflow you can grade as steps.
Why bother before the run
The reason is the same one that justifies auditing at all: the cheapest moment to catch a missing branch is before the agent walks into it. A flattened workflow fails halfway through a long run, on the one path you didn't spell out, and you pay for the discovery in tokens and wall-clock.
Converting first moves that discovery to a thirty-second read. The instruction that decides what your agent actually does deserves to be something you can see the shape of — not a paragraph you're trusting the model to parse correctly every single time.