docs: handoff 18 — record the post-ADR-0027 manual-testing pass

The multi-form usage-template fix (151ed08) and the reviewed
`add index` syntax decision (kept as-is), so the next agent
does not re-flag a settled question.
This commit is contained in:
claude@clouddev1
2026-05-19 08:45:45 +00:00
parent 151ed084a3
commit 39b92a7558
+36 -3
View File
@@ -18,12 +18,13 @@ run. `S6` and `C5a` are both satisfied; nothing from ADRs
## State at handoff ## State at handoff
**Branch:** `main`. Working tree clean. **11 commits** since **Branch:** `main`. Working tree clean. **12 commits** since
handoff-16 (`ac41938`), all local — push asynchronously, not handoff-16 (`ac41938`), all local — push asynchronously, not
blocking. handoff-17 (`dfd3c51`) is mid-chain; it documents blocking. handoff-17 (`dfd3c51`) is mid-chain; it documents
the ADR-0026 landing and is superseded by this file. the ADR-0026 landing and is superseded by this file.
``` ```
151ed08 hint: show the matching usage template for multi-form commands
a326849 ADR-0027: existing-cases sweep + docs (step F) a326849 ADR-0027: existing-cases sweep + docs (step F)
9e10997 runtime: debounce the validity indicator (ADR-0027 step E) 9e10997 runtime: debounce the validity indicator (ADR-0027 step E)
1a9d950 ui: validity indicator rendering + warning theme colour (ADR-0027 step D) 1a9d950 ui: validity indicator rendering + warning theme colour (ADR-0027 step D)
@@ -37,7 +38,7 @@ f75f71b WHERE expressions: wire into update/delete/show data + SQL gen (ADR-0026
f0b2043 walker: add Subgrammar node + recursion-depth cap (ADR-0026 step 1) f0b2043 walker: add Subgrammar node + recursion-depth cap (ADR-0026 step 1)
``` ```
**Tests:** **1099 passing, 0 failing, 1 ignored** (`cargo **Tests:** **1100 passing, 0 failing, 1 ignored** (`cargo
test` — up from 1039 at handoff-16). The ignored test is the test` — up from 1039 at handoff-16). The ignored test is the
long-standing `` ```ignore `` doc-test in long-standing `` ```ignore `` doc-test in
`src/friendly/mod.rs`. Typing-surface matrix: **161 cells**. `src/friendly/mod.rs`. Typing-surface matrix: **161 cells**.
@@ -91,6 +92,38 @@ Six steps, one commit each (`e22f933`..`a326849`):
- **F — sweep + docs.** `input_verdict` tests confirm the - **F — sweep + docs.** `input_verdict` tests confirm the
schema check fires across the identifier-taking commands. schema check fires across the identifier-taking commands.
## §2a. Post-ADR-0027 — a manual-testing pass
After ADR-0027 landed, a round of manual testing surfaced
three things; all are resolved.
- **Bug, fixed (`151ed08`).** A parse error in `add index …`
showed the `add column` usage. `add` / `drop` are
multi-form commands and both the ambient hint and the
submit-time usage block picked the *first* form
unconditionally. New `grammar::usage_key_for_input`
disambiguates by the form word after the entry keyword;
the hint shows the committed form, `render_usage_block`
too (bare `add` / `drop` still shows the whole family).
- **`add index` syntax — reviewed, deliberately kept.** The
inconsistency is real: `add column [to] [table] <T>: <col>
(<type>)` vs `add index [as <name>] on <T> (<cols>)`. It
was weighed and **left as-is** — `add index … on <T>
(<cols>)` is intentionally SQL-idiomatic
(`CREATE INDEX … ON t (cols)`), the colon shape was built
for "one column *with a type*" and an index has neither.
A future agent should **not** re-flag this as a bug; if
the owner later wants the entity-command separators
unified, that is a deliberate ADR-0025 amendment / design
pass, not a drive-by fix.
- **No index parameters / no `unique` — by design.** ADR-0025
scoped `add index` to plain non-unique indexes; there is
no `unique`-index syntax and no constraint syntax at all
(`NOT NULL` / `UNIQUE` / `CHECK` / `DEFAULT` are the
pending `C3`). ADR-0018's `unique` handling only
*detects + displays* an existing constraint — nothing
creates one. Not a gap in the help; the help is accurate.
## §3. Architectural delta (vs. handoff-17) ## §3. Architectural delta (vs. handoff-17)
### Diagnostics ### Diagnostics
@@ -171,7 +204,7 @@ Prioritisation is a user product decision — ask.
especially its "As-built notes" (post-walk diagnostics, especially its "As-built notes" (post-walk diagnostics,
the pre-rendered message, the `timeout` debounce, coarse the pre-rendered message, the `timeout` debounce, coarse
spans, the deferred highlight/hint wiring). spans, the deferred highlight/hint wiring).
4. **Run `cargo test`** — 1099 passing, 0 failing, 1 ignored. 4. **Run `cargo test`** — 1100 passing, 0 failing, 1 ignored.
5. **Run `cargo clippy --all-targets -- -D warnings`** — clean. 5. **Run `cargo clippy --all-targets -- -D warnings`** — clean.
6. **Pick the next work from §5** — ADR-0028 is the natural 6. **Pick the next work from §5** — ADR-0028 is the natural
pick; prioritisation is a user decision, so ask. pick; prioritisation is a user decision, so ask.