Repository navigation
feat: walk a human through what procoder cannot do for them - #228
Merged
Merged
Conversation
Closes #192. The issue asked for a generated bash script that `wizard run` executes. Reading the steps it targets settles the design differently: #66-#73 are 'create an account', 'generate a token', 'submit form Y' — not shell commands. Nothing needed executing, so nothing executes. A wizard is declarative markdown, and `run` walks it a step at a time so none is skipped by reading past it. That also keeps the shape AGENTS.md names: display it, require a separate step a human invokes. `show` is the default and prompts for nothing; `run` is the human's own invocation; `new` PRINTS a wizard to write rather than writing one, like `adr new` and `context add`. A captured value is shape-checked and never echoed — not in the accepting message, not in the rejecting one, not in the summary, which names TOKEN and never what it held. Wizards exist partly to walk somebody through generating credentials, and a token printed back is a token in the scrollback. Two mutations were applied and watched to fail: echoing the value back, and swapping Compile for MustCompile so a bad pattern panics instead of reporting NOT checked. An unreadable wizard directory reports and exits 1 rather than saying there are no wizards. Nothing found and nothing readable are different answers.
Windows CI found a real defect, not a test artifact. os.ReadDir on a path that is a FILE reports 'cannot find the path specified' there, and that satisfies os.IsNotExist — so List took the absent branch and answered 'no wizards' for a directory it could not read. Unknown reported as none, which is the one thing this codebase says it never does. Stat first and let the kind of the thing decide: absent is 0 and the empty-state line, not-a-directory and unreadable are 1 and NOT listed. The test now fails on Unix too rather than waiting for Windows to catch it: the mutation that swallows the error trips both of its assertions locally.
piwi3910
added a commit
that referenced
this pull request
Aug 27, 2026
#228's gate ran 10m09s against timeout-minutes: 10 and was reported CANCELLED. I first blamed my own branch pushes for cancelling it through the concurrency group; that was wrong, and the timestamps say so. The two most recent merges ran this job for 8m53s and 9m10s — 89% and 92% of its budget. That is not a flaky run, it is a budget with no room in it, and the next slow semgrep crosses the line whatever the change was. A timeout surfaces as "cancelled", which at the merge gate is indistinguishable from a real failure. Worse than a red build: a red that sends somebody hunting a defect that does not exist, in a repository whose rule is that a check which could not run is never reported as one that passed. The inverse deserves the same care. Twenty minutes, with the measurement written next to the number so the next person changing it knows what it was set from.
piwi3910
added a commit
that referenced
this pull request
Aug 27, 2026
) #228's gate ran 10m09s against timeout-minutes: 10 and was reported CANCELLED. I first blamed my own branch pushes for cancelling it through the concurrency group; that was wrong, and the timestamps say so. The two most recent merges ran this job for 8m53s and 9m10s — 89% and 92% of its budget. That is not a flaky run, it is a budget with no room in it, and the next slow semgrep crosses the line whatever the change was. A timeout surfaces as "cancelled", which at the merge gate is indistinguishable from a real failure. Worse than a red build: a red that sends somebody hunting a defect that does not exist, in a repository whose rule is that a check which could not run is never reported as one that passed. The inverse deserves the same care. Twenty minutes, with the measurement written next to the number so the next person changing it knows what it was set from.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #192.
The issue asked for a generated bash script that
wizard runexecutes.Reading the steps it targets settles the design differently: #66-#73 are
'create an account', 'generate a token', 'submit form Y' — not shell
commands. Nothing needed executing, so nothing executes. A wizard is
declarative markdown, and
runwalks it a step at a time so none isskipped by reading past it.
That also keeps the shape AGENTS.md names: display it, require a separate
step a human invokes.
showis the default and prompts for nothing;runis the human's own invocation;newPRINTS a wizard to writerather than writing one, like
adr newandcontext add.A captured value is shape-checked and never echoed — not in the accepting
message, not in the rejecting one, not in the summary, which names TOKEN
and never what it held. Wizards exist partly to walk somebody through
generating credentials, and a token printed back is a token in the
scrollback. Two mutations were applied and watched to fail: echoing the
value back, and swapping Compile for MustCompile so a bad pattern panics
instead of reporting NOT checked.
An unreadable wizard directory reports and exits 1 rather than saying there
are no wizards. Nothing found and nothing readable are different answers.