docs: mark H1a done via the ADR-0042 systematic pass

requirements.md H1a → [x]: the per-command near-miss matrix (entry words,
missing clauses, committed multi-forms, both modes) plus the gap fixes
(G1 `1:n relationship`, G2 select projection gloss, G3 mode-aware usage
showing all valid forms, G4 `with` CTE template, CROSS JOIN ON teaching
message) close the systematic pass. The advanced-SQL items the survey
flagged (INSERT…SELECT count, RETURNING scope) were verified already
present. One low-priority residual is deferred by decision (submit-time
expression first-set at non-projection positions).

ADR-0042: record the pre-existing `SELECT *` arity caveat (INSERT…SELECT
with a star projection isn't expanded for pre-flight arity; engine
catches it at execution — adjacent to ADR-0019 §OOS-2).
This commit is contained in:
claude@clouddev1
2026-06-06 07:44:55 +00:00
parent d6e229f0f5
commit c305dc7282
2 changed files with 27 additions and 6 deletions
+20 -5
View File
@@ -557,14 +557,14 @@ since ADR-0027.)
migration sweep of all other user-facing strings, advanced-mode
SQL-error sanitization (§OOS-2), and `messages` persistence
(§OOS-3, awaits the settings ADR).)*
- [ ] **H1a** Strong syntax-help in parse errors. When the user
- [x] **H1a** Strong syntax-help in parse errors. When the user
types something near-correct (e.g. `insert into T ('Oli')` —
forgotten `values`; or `update T set x=1` — missing WHERE),
the error should *name the missing keyword or clause* rather
than just point at the unexpected character. This is a
separate effort from H1 (which targets database errors); it
targets parser errors. Pending — multiple targeted fixes
shipping piecemeal so far (e.g. `values` becoming optional in
targets parser errors. *(Done via the **ADR-0042** systematic
pass, 2026-06-06.)* Built piecemeal first (e.g. `values` becoming optional in
INSERT removes one such case; ADR-0024's typed value slots
give per-column-type rejection wording; `insert into T (col)`
with no `values` clause now flags "looks like Form A — add
@@ -589,8 +589,23 @@ since ADR-0027.)
`col`…"* message at typing time, counted against the user-fillable
columns, with `serial`/`shortid` auto-fill named; new keys
`diagnostic.insert_arity_mismatch_form_b_simple` /
`diagnostic.insert_arity_mismatch_all_auto`). A systematic pass is
still pending.
`diagnostic.insert_arity_mismatch_all_auto`). The **ADR-0042
systematic pass** then closed it: a per-command near-miss matrix
(`tests/it/parse_error_pedagogy.rs`) locks every entry word's
bare / missing-clause / wrong-token cases plus the committed
multi-forms, in both modes; friendlier labels landed (`add` →
`1:n relationship`; bare `select` → "a projection: …"); the
usage block became mode-aware (advanced shows the SQL forms
plus the still-valid DSL fallback forms, SQL-first); `with`
got its own CTE template; and `cross join … on` now teaches
that a CROSS JOIN takes no ON clause. The advanced-SQL
diagnostics that the survey thought missing (INSERT…SELECT
count, RETURNING column scope) were verified already present.
One low-priority residual is deferred by decision: at *submit*
time a non-projection expression position (bare `where `,
`returning `) still shows the raw expression first-set —
typing-time completion already offers the right candidates
there, so the payoff is small.
- [ ] **H2** `hint` provides contextual help for the current
input or the most recent error.
- [ ] **H3** `help` provides general reference and per-command