Conversation
…ng on refusals Eight version declarations moved in lockstep: pyproject.toml, __init__.py, package.json, package-lock.json (2 sites), .claude-plugin/plugin.json, the ENGINE stamp in all four engine twins, and the metadata version in all three skill trees. The dogfood bundle's index.md engine stamp follows, and ENGINE_MD5 plus the SKILL.md sha256 prose pin are re-aimed. CHANGELOG records what the two milestones actually found, including the two items carried into 3.7 knowingly rather than quietly: eleven verbs still answering a refusal with `False`, and the SKILL.md prose pin still held in two files. Suite: 1439 passed, 7 skipped, 0 failed. The tag and the npm/PyPI publish are human-owned and NOT done here.
…op` is the 27th verb
3.6.0 made a 40-task roadmap legible: every row carries its title, the headline counts
the unauthored ones. It still could not answer what a reviewer actually asks — is this a
queue or a graveyard? A task the plan is working toward and a task the plan walked away
from both read `[scaffold]`.
An unauthored task now reports which plan wants it:
yowo — … · 2 queued · 1 abandoned · 1 adrift (add todo)
· cli-bounded-memory [queued] Bounded CLI memory
· legacy-shim [abandoned] Legacy config shim
· stray-idea [adrift] Something I jotted down
DERIVED, never stored (R:NEWFIELD). The plan that queued a task IS its milestone, so the
answer already exists in two places that cannot disagree — the task's `milestone:` and
that milestone's `status:`. A third copy would drift out of step with the thing it
describes. `archived` counts as closed alongside `done`; a `milestone:` naming nothing
is `adrift`, identical to naming none, and a read verb never raises on the typo.
`milestone-done` is where a graveyard comes from. It tallied exit criteria and never
looked at its member tasks, so a milestone closed and whatever it queued stopped being
anybody's, with nothing said. It now refuses, names every unauthored member, and offers
all three real exits — author it, drop it, or re-home it under a live milestone. A
refusal naming one fix does not present a choice, it applies pressure.
`add drop <slug> --reason "<why>"` is the 27th verb. `dropped` was already a status the
engine READ in three places and no verb could WRITE — vocabulary living only in the
reader (R:DEADWORD). Withdrawing work meant deleting a file or leaving it to rot as a
scaffold, and neither leaves a reason. The reason is required for the same purpose the
whole task serves. A `done` task is refused: that verdict was gated against a receipt,
and `reopen` is the verb that revisits it without erasing it.
The verb ripples into every registry that enumerates the set — CLI WIRED lists, three
skill trees, two READMEs, the book command reference, four count pins. E6 records that
cost, and a check now enumerates the registries so the ripple is finite rather than
discovered one CI failure at a time.
Four checks pinned the literal word `scaffold`. Rule kept, expired premise replaced:
each now asserts membership in `SCAFFOLD_KINDS` and that the word is not `direction`.
`loop.md`'s Gather step promised one word and now promises three — each registered and
proven from driven stdout, including re-detecting the sentence after a rewrite dropped
it below the claim detector's verb list.
SKILL.md lands at exactly 176/176 lines and 13258/13258 bytes: the new cookbook line and
the wired-surface entry are funded by compressing the Engine paragraph, the init bullet
and three cookbook comments — not by moving a human-set pin.
Suite: 1444 passed, 7 skipped, 0 failed.
Records the three surfaces that closed the last gap from the yowo PR #16 review, plus the three lessons they filed, drained and bound as decisions: - every status the engine reads has a verb that writes it - a close inspects what it holds - a count of pending work splits by the property the reader will act on Suite: 1444 passed, 7 skipped.
This was referenced Sep 10, 2026
Collaborator
Author
|
Superseded by #222 — same linear stack; every commit here is contained in that branch. Closing in favour of it. |
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 the last gap from the yowo PR #16 review. Supersedes #219 — contains its release commit plus this work, so 3.6.0 ships with all four gaps closed instead of three.
The gap
3.6.0 made a 40-task roadmap legible: every row carries its title, the headline counts the unauthored ones. It still could not answer what a reviewer actually asks — is this a queue or a graveyard? A task the plan is working toward and a task the plan walked away from both read
[scaffold].After
add todogroups by the same three words, sortingadriftandabandonedabovequeued— a queue of forty must not hide two strays at the bottom.Three surfaces
The word is derived, never stored (
R:NEWFIELD). The plan that queued a task is its milestone, so the answer already exists in two places that cannot disagree: the task'smilestone:and that milestone'sstatus:. A third copy would drift out of step with the thing it describes.archivedcloses a plan alongsidedone; amilestone:naming nothing isadrift, identical to naming none, and a read verb never raises on the typo.milestone-donerefuses to close over unauthored members (R:SILENTABANDON). This is where a graveyard came from — it tallied exit criteria and never looked at what it held, so a milestone closed and its queued tasks stopped being anybody's. It now names each one and offers all three exits: author it, drop it, or re-home it. A refusal naming one fix does not present a choice, it applies pressure. Same shape asR:UNDRAINEDfor lessons, one level up.add drop <slug> --reason "<why>"— the 27th verb (R:DEADWORD).droppedwas a status the engine READ in three places and no verb could WRITE. Withdrawing work meant deleting a file or letting it rot as a scaffold, and neither leaves a reason. Adonetask is refused — that verdict was gated against a receipt, andreopenrevisits it without erasing it.The ripple, and what makes it finite
A 27th verb reaches every registry that enumerates the set: CLI
WIREDlists, three skill trees, two READMEs, the book command reference, four count pins.E6records that as the verb's real cost, and a new check enumerates the registries so the ripple is a list somebody can read rather than something discovered one CI failure at a time.Four checks pinned the literal word
scaffold. Rule kept, expired premise replaced — each now asserts membership inSCAFFOLD_KINDSand that the word is notdirection.loop.md's Gather step promised one word and now promises three, each registered and driven from real stdout; one rewrite dropped the sentence below the claim detector's verb list, and the guard caught it, which is the guard working.SKILL.md lands at exactly 176/176 lines and 13258/13258 bytes — the new cookbook line and wired-surface entry are funded by compressing the Engine paragraph, the init bullet and three cookbook comments, not by moving a human-set pin.
Verification
1444 passed, 7 skipped, 0 failedon both test roots. Gated on acovers-bound receipt; engine mirrored to all four twins with both pins re-aimed.Still yours
No tag, no publish. After merge: