Repository navigation
docs: sweep the user-facing pages for the verb split and restore page trigger phrases - #922
Merged
Merged
Conversation
abcd launch --dry-run now renders the cut the next launch ship would make beside its bundle report: the derived version, the deciding impact, the records, the guard and findings verdicts, in text under its own line and in --json under a new cut key (cut_error when it cannot be read). It is the same deterministic emit and render the changelog verb used, with no prose and no agent. A refused cut is reported and changes nothing about the dry run's exit. The changelog verb goes with no alias (adr-40). abcd changelog is an unknown command whose note names abcd launch --dry-run. Its placement, sentence, parity note and DOGFOODING recall entry go with it, and its tests move onto the preview: the tree-digest check, the refused cut still exiting 0, the JSON, the page set, the uncommitted-records refusal and the subdirectory read. The dry run now reads the checkout root wherever it is run, as the cut always has. Before, from a subdirectory it read the subdirectory as a repository that declares no artefact kind and refused before reaching the cut, which would have lost the subdirectory read the changelog verb had. The dry run's own targeted lines are dropped when the cut is read, because the cut lists the same intents and says which ones it moves. The pages, the composer agent, the brief and the principle that named the verb now name the preview. The launch chapter no longer says the preview always exits 0 (a peer finding): a --baseline that names no release tag exits 2, and an undeclared kind or a missing payload is refused. Step 3 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5
…t-3-launch-preview
Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5
…is-repo prepare-this-repo folds into the ahoy page's install section in the next commit, so its name leaves the two strings that send a reader to it. The implement loop's brief refusal for a base with no AGENTS.md now names /abcd:ahoy install, the plugin command whose preparation merges the conventions into AGENTS.md. It names the plugin command, not the bare binary call, because a default `abcd ahoy install` writes no AGENTS.md. The repo lint's warning for docs/ with no .abcd/docs-lint.json now says to run abcd ahoy install, the binary step that seeds that file. Step 4 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5
The product thinker's placement of 2026-10-09 folds prepare-this-repo into ahoy install (itd-2610090831227812, decision 6 of its spec). The fold is page-only: the binary and its refusals do not change. commands/ahoy.md's install section now carries the whole preparation workflow around the binary call it already made: the ownership refusal, the authority ordering, orient, audit, adopt, the working-conventions block, the downstream rule and the definition of done. The account of what the binary install does follows under its own heading. A repository already prepared goes straight to the binary half. commands/prepare-this-repo.md is deleted with no alias (adr-40). prepare-this-repo leaves pagesWithNoVerb and record-lint's host_delegated list. `abcd prepare-this-repo`, never a verb, is still an unknown command; it moves to retiredTokens, whose note names /abcd:ahoy install. The onboarding, tool-conventions-file, persona and hooks-arming tests now read commands/ahoy.md; a new page test holds each phase to the install section and the old page absent. The brief folds 15-prepare-this-repo.md into a section of 01-ahoy.md, drops register row 15 and the index entry, and repoints the host- delegated paragraphs, 08-skills.md, 04-naming.md's exemption list, 16-lint.md (whose opening named the page as live), 08-abcd.md, 14-ingest.md and 19-identity.md. The release-gate manifest drops the chapter and the page, with its checker count, prompt hash and the receipt example rehashed. The two review flags on the deleted chapter are removed: the sentences they named left with it. README and commands/lint.md name /abcd:ahoy install. The bootstrap test that refuses an unrunnable `ahoy install` in README no longer counts the slash command, which the host runs and whose page resolves the binary through the plugin root before PATH. Step 4 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5
Two peer findings on 01-ahoy.md, folded in with step 4's change to that chapter. The chapter called `status` a plugin-page alias for the bare form. It is not: commands/ahoy.md hands every word to the binary, which refuses `status` like any other word it does not register, so `abcd ahoy status` is an unknown command on both surfaces. The user-scope tree, declared the one inventory, left out files the shipped code reads or writes under the home folder: oracle-routing.json, interviews/, cache-attestation and statusline.json, which the symlink rule in 03-configuration.md already lists, and backups/, where the status-line change keeps its copies of the harness settings file. Step 4 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5
Step 3 repointed the composer's preview source at the launch preview's cut without the prompt_version bump and agents changelog entry record-lint's agent_contract rule requires. It also adds changelog to the brief's list of names retired with no alias. Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5
…4-ahoy-install-conventions # Conflicts: # .abcd/development/brief/04-surfaces/08-abcd.md
…kers The shortcut straight to the binary's half keyed on the working-conventions markers, which only the host-run preparation writes, so a repository adopted through the binary install alone, abcd's own checkout among them, would have been walked through the whole preparation again. The page now starts from the detection pass: a managed repository goes to the binary's half unless the person asks to prepare it, and an unmanaged one starts at Phase 0. The brief's mirror sentence follows, and the spec's line on the loop hint now says /abcd:ahoy install, matching what shipped. Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5
The product thinker's placement of 2026-10-09 merges the sources commands into one person's command named library (itd-2610090831227812, P4). This step carries the memory and source sub-trees; consult and ingest fold into the library page in the next step. abcd library is one top-level verb under Records (decision 1) carrying both sub-trees, and every sub-verb keeps its name (decision 7): init, add, declassify, ledger, sync-banlist and cite-check act on the sources corpus, ingest, ask and lint on the checkout's memory store. The two stores and their core packages stay unconnected (decision 10). Bare library renders both stores, an unreadable one as a line naming what would create it, and refuses only when neither reads (decision 8), so bare library inside a checkout with no corpus renders where bare source exited 3. abcd memory and abcd source are unknown commands with no alias (adr-40); retiredTokens names library for each. The guard's abcd-source-ledger-flip entry matches library ledger --flip, so an agent still cannot flip a citation line. Both pre-commit hook copies run library sync-banlist. The corpus and memory strings a reader acts on, the provenance a new memory page records, the sentence and example manifests, the DOGFOODING recall list and the help table name library. commands/library.md replaces memory.md and source.md; consult.md and ingest.md are repointed at library, and guard.md, banlist.md and update.md's network list name it. The brief folds 04-surfaces/07-memory.md and 33-source.md into 07-library.md, with one register row, and the index, help table, bare-invocation paragraph, product chapters, naming exemptions and internals chapters follow. The release-gate manifest swaps the two chapters for the one, rehashed with its receipt example. The shipped itd-36's two links to the folded chapter point at 07-library.md so they resolve. The snapshot, CLI reference and chapter appendix are regenerated. Step 5 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5
A pre-commit guard committed before the sources verbs became library runs `source sync-banlist --refresh`. A binary without that verb makes the hook skip the refresh with one stderr line, so the confidential-name block silently stops being refreshed (spc-2610100613109045, decision 13). ahoy now reports an abcd-owned hook naming the old verb as the gap banlist.hook_retired_verb, and ahoy install rewrites that spelling in place, leaving every other line, the maintainer's own included. A hook without abcd's marker is never edited. Step 5 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5
Refs: iss-2610110233253365 Assisted-by: Claude:claude-opus-5-5
…lings The hand-written region of a surface chapter states no sub-verb and no flag, which live only in the generated appendix (TestSurfaceChapterProseStatesNoShape). The folded library chapter named both in its new paragraphs; they now describe the verbs in words. Assisted-by: Claude:claude-opus-5-5
…erb-split-5-library
The flip refusal named only the library spelling, so an agent could flip a citation line through any binary older than the library verb, which still answers `abcd source ledger --flip` and is often reachable (the plugin root's copy, an older build). A second entry refuses the retired spelling with the same reason, watched fail first. The guard page names both. The per-byte work bar grows with the registry, as its comment says; the new entry takes the hostile shape to about 24.7, so the bar moves from 24 to 28, still far below the hundred a dropped bound costs. Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5
abcd library add given neither --private nor --public now asks one question at a terminal, naming both answers and what each means, and proceeds with the answer; off a terminal (a pipe, CI, a host's shell) it refuses with exit 2 naming the flags, and deciding later writes nothing. The question is drawn by the same door the setup interview uses, and its words and the answer-to-class resolution live in internal/core/source. --private replaces --confidential, which goes with no alias under adr-40 and is refused as any unknown flag on a corpus verb is. The stored folder confidential/ and the custom.confidential field keep their names. The library page tells the agent to ask the person through the host's question tool unless they already said, and to pass the answer as the flag (spc-2610100613109045 step 6, A13, decision 9). Assisted-by: Claude:claude-opus-5-5
The judgement halves of /abcd:consult and /abcd:ingest now live on commands/library.md: searching the corpus, the hard rule's identifying paraphrase layer, reading a document first, deciding its class and key, the quality check and the close-out, and the fuller ledger guidance. Both pages are deleted (itd-2610090831227812, P4), so every page but the board backs a verb: pagesWithNoVerb holds the board alone and record-lint's host_delegated list is empty. The page says plainly that library add registers a document and that library ingest registers nothing, distilling into memory pages instead, and its memory section is retitled to match (iss-2610110233253365). abcd consult and abcd ingest stay unknown commands with no alias (adr-40); their retiredTokens notes name /abcd:library, and the ingest note names library add as the registrar. The brief folds 13-consult.md and 14-ingest.md into 07-library.md's new consulting-and-registering section and its acceptance list, drops their register rows and index entries, and rewrites the host-delegated and No skills paragraphs of 04-surfaces/README.md and 05-internals/08-skills.md, whose payload and page-to-verb claims now match the tree. Every other brief line naming either page as live (01-ahoy.md, 20-banlist.md, 03-configuration.md, the ledger glossary entry) points at the library, as do the script-first principle and the draft itd-2609292108089653. The release-gate manifest drops the two chapters and names, rehashed with its receipt example, and the four brief-review flags against 14-ingest.md go with the chapter. Step 6 of spc-2610100613109045. Assisted-by: Claude:claude-opus-5-5 Refs: iss-2610110233253365
record-lint now refuses /abcd:consult, /abcd:ingest, /abcd:prepare-this-repo, /abcd:version and /abcd:source in the development record, naming each successor. A line that says the page retired, a historical line, or a quoted audit-evidence line still passes, and /abcd:memory stays free for memory notes (spc-2610100613109045 decision 11). The intent's version criterion gains the word that marks its spelling as retired, the one line the ban found. Assisted-by: Claude:claude-opus-5-5
The guide names each retired command with its successor: the version page to the board and --version, changelog to the launch preview, prepare-this-repo to ahoy install, and memory, source, consult and ingest to library. It moves each memory and source sub-verb under library, keeps library add and library ingest apart, says what a script reading the cut from the preview checks, walks the ahoy install run that rewrites a pre-commit hook still naming source sync-banlist, and says where the agents' commands went. The how-to index lists it. The terminology page keeps the two library stores apart too: library add registers a document in the corpus, library ingest distils one into memory pages, and neither does the other's job. The install guide's adoption section carries the prepare, onboard and bootstrap words the retired page's description held. Refs: iss-2610110233253365 Assisted-by: Claude:claude-opus-5-5
…rb split The naming chapter's exemption list is rewritten from the verbs the binary registers after the merges, the ahoy row names connect and credential among the write paths, the task_classes enum gains intent_consistency, the agent contract is said to check the field's presence and not its values, and three verbs, not two, refuse bare. The scope page marks reflect as shipped and an agent's command. The surfaces overview names which command pages call on the agents no verb dispatches, exempts hidden subtrees from the sub-verb row rule, and stops citing a resolved issue as the tracker of an open gap. The board chapter's stale-binary paragraph names every retired token and stops calling consult and ingest host-delegated pages, which are gone. Assisted-by: Claude:claude-opus-5-5
The host picks a plugin page to load from its description, and a page's description is its bare verb's sentence. The verb split folded the register and consult workflows into the library page and the repository preparation into ahoy's install, whose sentences describe neither, so the phrases that told the host when to load the deleted pages were gone. A small map, keyed by page name, now declares "use when" text that the generator appends to that page's description after the sentence, and to nothing else: the command list, the help and the reference keep the bare sentence. Library's text carries the deleted ingest and consult pages' phrases and says registering is library add, never library ingest. Ahoy's carries the prepare, onboard, scaffold and bootstrap phrases and names ahoy install. Each entry is one line opening "Use when", at most 300 characters. The sentence gate now holds a page's description to the sentence plus its declared text, and a page outside the map still to the sentence alone. The surfaces overview in the brief says so. Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5
The guide said every corpus sub-verb but init exits 3 with no corpus; sync-banlist --refresh, the hook's mode, prints one line and exits 0, so a script author would have read the hook's refresh as a hard failure. Also a serial comma and two capitals after a colon, per the writing style. Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5
The brief said no open record tracked the gap where agents/ pages are checked against the surface register in neither direction; it now names the capture. Refs: iss-2610110456358519 Assisted-by: Claude:claude-opus-5-5
…t-3-launch-preview
…4-ahoy-install-conventions
…erb-split-5-library
REPPL
enabled auto-merge
October 11, 2026 06:12
…y-install-conventions
…erb-split-5-library
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.
Step 7 of spc-2610100613109045: the user-facing and brief sweep. It also restores the trigger phrases the folded plugin pages lost.
Stacked on #921 (step 6) and the steps below it. Until those merge, this diff shows their commits too.
docs/how-to/upgrade-to-v0.14.0.mdnames each retired command and its successor. It moves every memory and source sub-verb underlibrary, and explains--confidentialbecoming--private. It also covers the launch preview's exit code andcutfield against the old changelog command, theahoy installrun that rewrites a hook still namingsource sync-banlist, and where the agents' commands went.docs/how-to/README.mdlists it.docs/reference/terminology.mdkeepslibrary add(registers a document) apart fromlibrary ingest(distils into memory pages). The install guide's adoption section says thatahoy installis how to prepare, onboard or bootstrap a repository.retired-plugin-pagesentry refuses a live mention of a retired plugin page, as decision 11 words it. Its test was watched fail first.description:is generated from its verb's sentence, and the host chooses which page to load from it. The folded pages had lost the "use when" phrases the deleted pages carried. A declaredpageUseWhenmap now adds them to the library and ahoy page descriptions only, never to the CLI sentence or help. Tests hold each part, and a test holds that the library text never sayslibrary ingestregisters anything.04-naming.md,04-scope.md,04-surfaces/README.mdand08-abcd.md. A docs-currency review checked every user-facing claim against the code, and the one stale line it found is fixed.agents/pages are checked against the surface register in neither direction.Not in this step: the library-and-memory comparison page (A8) waits on open question 12. The guide's statement that the host refuses a typed agent page waits on step 8's live capture.
Refs: itd-2610090831227812
Refs: iss-2610110233253365
Refs: iss-2610110456358519
Assisted-by: Claude:claude-opus-5-5