Found while dogfooding the seven-leg flow on #97. The MOVES dict in
devague/cli/_commands/learn.py holds 15 entries, but the CLI registers 20
verbs. Five are absent: deviate, summary, plan, learn, and explain.
MOVES drives two surfaces, so the gap is user-visible in both:
-
devague explain <move> reads it directly, so three shipped verbs 404:
$ devague explain deviate
error: unknown move: deviate
(Same for explain summary and explain plan. The hint then lists only
the 15 known moves, which reads as "deviate isn't a move" rather than
"deviate is missing from a lookup table".)
-
bare devague learn renders its Moves: block by iterating the same
dict, so the taught inventory silently omits the entire execution seam —
the deviate and summary verbs that 0.18.0 shipped.
This is pre-existing, not a regression: deviate/summary landed in 0.18.0
and plan well before that, and neither shipped a MOVES row. The #97 branch
adds a lapse row for its own new verb and deliberately leaves this alone, so
the fix stays reviewable on its own.
Suggested fix: add the five missing rows, then pin the invariant with a test
that walks the registered subparsers and asserts every verb has a MOVES
entry — otherwise the next verb repeats this.
Found while dogfooding the seven-leg flow on #97. The
MOVESdict indevague/cli/_commands/learn.pyholds 15 entries, but the CLI registers 20verbs. Five are absent:
deviate,summary,plan,learn, andexplain.MOVESdrives two surfaces, so the gap is user-visible in both:devague explain <move>reads it directly, so three shipped verbs 404:(Same for
explain summaryandexplain plan. The hint then lists onlythe 15 known moves, which reads as "deviate isn't a move" rather than
"deviate is missing from a lookup table".)
bare
devague learnrenders itsMoves:block by iterating the samedict, so the taught inventory silently omits the entire execution seam —
the
deviateandsummaryverbs that 0.18.0 shipped.This is pre-existing, not a regression:
deviate/summarylanded in 0.18.0and
planwell before that, and neither shipped aMOVESrow. The #97 branchadds a
lapserow for its own new verb and deliberately leaves this alone, sothe fix stays reviewable on its own.
Suggested fix: add the five missing rows, then pin the invariant with a test
that walks the registered subparsers and asserts every verb has a
MOVESentry — otherwise the next verb repeats this.