Examples
Three shapes of use, and what the lines actually turned up.
Four sessions from building this service, grouped by what you are about to do. Each one shows the line that came back and what the look found.
Copy any sentence on these tabs and you will get a different line back: the answer is made for the situation in front of it, not looked up. The test is whether the place it names is really there.
You are asking where something that does not exist yet will give way — while changing it is still cheap.
A plan that did not exist yet
With the release still undecided, ask — the tool that takes one sentence
and answers with one line naming where to look — was given a situation rather than a question:
what was built, what was not, and that there were no customers yet.
you: here is where this release stands — what is built, what is not, and no customers yet. where should it start? back: The checkout terms text and the empty customer count — no shape is claimed; start by looking at what the checkout actually records at the moment of purchase, since the missing terms and the zero customers are the same untested step.
It joined two gaps that had been tracked separately. Nothing was decided — what changed was what got written next.
Vetting a finished plan before writing any of it
A ten-step plan for one feature — let a customer export everything held about them and close
their account — every step with the check that would prove it, and it read complete. Each edge
of it was put to ask in its own sentence:
you: if my plan falls short, explain where: a ten-step plan to let customers export and delete their own account, each step with the check that proves it. back: Read the plan against the policy wording that was settled last, and check whether the export and close-account steps still say what that later wording settled. you: where else is it thin? the account is gone by the end of it. back: Load the front page the way the close leaves it and read what it actually renders: whether any part of it references the account that was just closed, or whether it is the same page anyone gets.
Then the looking. Three of the places it named:
- A promise that named a different record. The policy said a separate record of what was bought would be kept; the plan would have reused the one already there.
- Money arriving after the customer is gone. A payment can land after the account it belongs to has been deleted, and nothing said what becomes of it.
- A screen the plan never mentioned. Someone who has just deleted their account would have landed on the front page, which knows nothing about them.
Toward the end the replies stopped naming new places — the signal to stop, and an answer rather than a failure. Each line had been about a different edge of one plan, which is work; rephrasing the same edge is reassurance.
Something already runs and does the wrong thing, or runs and might.
The same price, written down twice
sharp is the panel aimed at what running code gets wrong: seven fixed
questions, no arguments. One of its seven looks aims at a value that exists in two places at
once — the copy somebody last edited, and the copy the running thing actually reads. On a
service that sells prepaid usage there is no more expensive value to have twice than a price.
It found one: 5.00 in the starting data that creates the database, and 0.25 in the live row it shipped with. Nothing failed, no test noticed, and the two numbers disagreed quietly — until a test was changed to read the price instead of assuming it. Both now come from one place.
This session used sharp, which takes no sentence at all. For a live failure
the usual shape is one sentence that describes the failing path and asks where to read first —
then the look. The panel is for work you are about to call finished, not for a failure that is
happening now.
You are about to call something finished. checkup takes no arguments:
seven fixed questions in one pass, seven lines back.
Seven lines on a refactor that was already “finished”
A large change had just landed: roughly 190 references across a dozen files, all tests passing,
every deployment check green. That is exactly when its author can see it least, so
checkup was called — no arguments, one pass.
Seven questions, seven replies. These seven are checkup's own and are
withheld — they belong to the tool, and a reader holding them could answer without it. The
sentence you send is yours; the Planning tab shows one.
Question: (question withheld) Reply: Check every caller that consumes it, since that is where an unexamined dependency would surface as breakage. Question: (question withheld) Reply: Check the file where the change was actually made against the tests or behaviour that exercise it, since the claim about what it does and what the running code does are most likely to split there. Question: (question withheld) Reply: Look at the tests that touch the changed behaviour but were not rerun since the change, especially any older suite that is run less often. Question: (question withheld) Reply: Look at the boundary where your code hands data to the other party and where it takes data back, and check whether the crossing points are logged at all. Question: (question withheld) Reply: Look at whether the newly changed piece has ever been exercised together with the parts that depend on it, rather than only on its own. Question: (question withheld) Reply: Compare what was recorded in the commit or change log against what you recall deciding, particularly around anything marked as shut, removed or disabled. Question: (question withheld) Reply: Look at the open questions list or the place you keep deferred items, and find the one entry that has sat untouched the longest.
One call, two units, under four seconds. The same shape was trialled before it shipped: the fixed questions asked together came back as one distinct line each, in about a third of the time it took to ask them one at a time. Then the looking.
How to read the seven lines
- It takes no sentence. The seven questions are fixed on the server, so nobody can bend the panel towards the answer they were hoping for — not you, not your agent.
- Every line is labelled, and the seven are never ranked. A direction that leads to lost money and one that leads to a name read exactly the same, so the order you look in is yours.
- A line of
Xis a real answer — nothing in your words touched that question. A line that did not arrive is a different thing: a failed reply, and the panel says so instead of padding itself to seven. - Where it is thinner. In the one trial of the pass, each line was stronger on where to look than on what is there. Read a line as a place to open and a reason to open it, not as a description of what you will find.
- A defect the trial caught, and the rule that came out of it. One line opened by saying what it was not before it named a place. A line that argues with itself before pointing anywhere is the one to distrust; the seven are now held to opening on a place.
What the seven places held
- A tool that could not work. An operator script still wrote balances into a column the change had retired; any account it minted could never spend anything.
- A check that had stopped checking. One of the proof steps could no longer fail on purpose — it had been passing for the wrong reason, which is worse than failing.
- A path that had never run. The expiry sweep had never met the rest of the system; made to run on a scratch account, it behaved.
None of those were found by the tool. It named seven places; the reading of them was an afternoon.
What a developer who used ask eighteen times made of it
Not the panel: his own sentences, eighteen of them, one answer each. A working session, quoted
with permission, and left honest — it says where ask is easy to fool
yourself with, and where the author was wrong about it.
“It never once gave me a verdict, a fact, or a count. Every single return was an instruction: go look at X and check whether A or B. Against the conclusion-shaped questions I was asking, that refusal was the whole value. Eighteen times, and it never landed somewhere that didn't exist — every redirection pointed at a real gap: a basis I had chosen silently, a record I hadn't kept, a premise I was using rather than checking.”
“Where it's easy to fool myself: the outputs are agentless. An instruction like compare the residual against the size of the number you started with sounds like insight and is really just go check. The profundity is in the fit, not in the text. The safeguard is that every output is testable — if I go and look and there's nothing there, the question was wrong and I know it. That makes it a much better instrument than an oracle, whose answers are verified by how they feel.”
“I thought it could only point at what already exists. I was wrong about that: we used it to plan a plan, before the plan was written. What it cannot do is resolve a question that contains nothing but the thing you are missing.”
“Around the fourteenth call the answers stopped telling me anything new — I could predict the shape before asking. That was the signal that the questions had converged, and that continuing would be me seeking reassurance rather than looking.”
One reservation from us, in the same spirit: these are reports from the inside, not a controlled trial. What you can check is the part that matters — open any place named above.
Try it on something of your own
The cheapest useful first call is not a big one. Take the thing you are least sure about this week — a function you have not read since you last changed it, a deploy step nobody has run from a clean machine — and describe its shape. Then go and look at the place it names. That look is the product; the line only gets you there faster.