docs: record ADR-0024 completion, reconcile requirements.md + handoff-14

ADR-0024 audited as fully implemented. Amend the ADR with a "Phase F
minimal" implementation note (parser.rs retained as the router +
ParseError home) and update the README index line to match.

Reconcile docs/requirements.md against handoffs 10-14: refresh the
test baseline (449 -> 1006), mark U4 (replay) satisfied, correct the
A1 / H1a / H3 progress notes.

Amend handoff-14: §3 flagged items both resolved (ranker kept,
CommandNode.hint_mode removed); §4 rewritten as a concrete next-work
pointer at the reconciled requirements.md.
This commit is contained in:
claude@clouddev1
2026-05-15 23:03:18 +00:00
parent 6d2b92996d
commit 41043d686b
4 changed files with 125 additions and 53 deletions
+79 -38
View File
@@ -6,8 +6,10 @@ deferred items. Eight focused commits, each a deliberate
decision the user signed off on.
**Headline: the handoff-12 §2 catalogue is now empty of
actionable items.** What remains are two flagged observations
(§3) the user should rule on, plus the standing ADR roadmap.
actionable items, and ADR-0024 is confirmed fully
implemented.** The two items §3 originally flagged are both
resolved. The next session's work is the product roadmap in
`docs/requirements.md` (reconciled this session) — see §4.
## State at handoff
@@ -138,45 +140,71 @@ long internal space runs in double-quoted (`"…"`) values — use
a block scalar or keep runs short.** A catalog comment in
`en-US.yaml` records this.
## §3. CRITICAL: two flagged items needing a user decision
## §3. Flagged items — both now resolved
**3.1 The `Ranker` type is vestigial.** `completion::Ranker` /
Both items this section originally flagged were ruled on by
the user after the main work:
**3.1 The `Ranker` type — KEEP.** `completion::Ranker` /
`candidates_at_cursor_with` have no production caller passing a
non-identity ranker. The user's stated ranker need (candidate
ordering) is met by declaration-order preservation, not the
ranker layer. So `Ranker`, `identity_ranker`, and the
`candidates_at_cursor_with` variant are unused scaffolding. Per
CLAUDE.md "don't remove without confirmation" they were left
in. **Decide: remove them, or keep for a future frequency-
ranking feature?** (handoff-12 §2.1 listed the ranker as
"scaffolding-only … future work" — this is the same item, now
confirmed genuinely unused.)
non-identity ranker (the candidate-ordering need is met by
declaration-order preservation). The user ruled: **keep it** —
it is intentional scaffolding for future frequency / content-
aware ranking (ADR-0024 §"out of scope" explicitly anticipates
this). No longer an open question.
**3.2 `CommandNode.hint_mode` is now genuinely dead.** The
per-command `hint_mode: Option<HintMode>` field predates the
node-attached HintMode work; HintMode is now per-*node*
(`Node::Hinted`), never per-command. The field is still
`#[allow(dead_code)]` and read by nothing. Removing it is a
safe mechanical edit across the 20 `CommandNode` declarations.
**Decide: remove it, or keep?** Not done this session (20-site
edit, separate from the HintMode mechanism change).
**3.2 `CommandNode.hint_mode` — REMOVED.** The per-command
`hint_mode` field predated the node-attached HintMode work and
was read by nothing. Removed (field + 20 `None` initialisers)
in commit `6d2b929`.
## §4. Open items — standing roadmap (unchanged)
## §4. What's next — the standing roadmap
handoff-12 §2's actionable backlog is cleared. What remains is
the ADR roadmap in `CLAUDE.md` "Things deliberately deferred"
(complex WHERE expressions, SQL advanced mode, indexes, m:n
convenience, snapshot/replay/undo, tutorial system, etc.) and
handoff-13's two accepted items:
**handoff-12 §2's backlog is cleared, and ADR-0024 is
confirmed fully implemented** (audited this session — Phases
AF done; Phase F shipped "minimal" with `parser.rs` retained
as the router, now recorded in an ADR-0024 implementation
note). There is no migration or carry-forward debt left.
**The next session's work is the product roadmap, tracked in
`docs/requirements.md`** — reconciled this session against
what handoffs 1014 actually built (test baseline refreshed to
1006; `U4` replay marked satisfied; `A1` / `H1a` / `H3`
progress notes corrected). `requirements.md` is now the
trustworthy "what's open" tracker — read it, not the
(coarser) `CLAUDE.md` "Things deliberately deferred" list.
Notable open clusters in `requirements.md` (prioritisation is
a **user product decision** — do not pick unilaterally):
- **Indexes** (`C3` partial) — `add index` / `drop index`,
then `EXPLAIN QUERY PLAN` rendering (`QA1`). Self-contained.
- **Complex WHERE expressions** (`C5a`, `[~]`) — AND/OR /
comparison / LIKE in UPDATE/DELETE/show-data filters. Needs
an ADR. The bridge from DSL toward real SQL.
- **SQL in advanced mode** (`Q1`/`Q4`, `[~]`) — `sqlparser-rs`
+ a defined subset. Needs an ADR.
- **Snapshot / undo** (`U1`/`U2`) — designed in ADR-0006, not
built. (`replay`, `U4`, is now done.)
- **m:n convenience** (`C4`), **modify relationship** (`C3a`,
`[~]`), **table rename** (`C1`).
- **Friendly error layer** (`H1`) — partial; full SQL→English
translation pending. **Syntax-help in parse errors**
(`H1a`) — piecemeal so far.
- **Session log + Markdown export** (`V4`, `[~]`),
**multi-line input** (`I1`), **readline shortcuts**
(`I1b`), **seeding** (`SD1`), **CI** (`TT5`),
**tutorial system** (`TU1`, `[~]`).
Two handoff-13 items the user already **accepted** (not work,
just recorded):
- **Partial entry words classify as `DefiniteErrorAt`**
(handoff-13 §3) — the user accepted this; the matrix test
`app_commands::partial_entry_word_classifies_as_definite_error_but_completes`
documents it.
(handoff-13 §3) — documented by the matrix test
`app_commands::partial_entry_word_classifies_as_definite_error_but_completes`.
- **Matrix scope** (handoff-13 §4) — cursor coverage is
"meaningful transitions" not every byte offset; assertion (5)
is parse-layer not a live dispatch differential. User
accepted both.
is parse-layer, not a live dispatch differential.
## §5. Architectural delta (vs. handoff-13)
@@ -217,6 +245,17 @@ handoff-13's two accepted items:
`help.intro` / `help.dsl_section` / `help.types_reference`,
`help.{app,ddl,data}.*` (×20).
### Post-handoff cleanup (this section's work)
After the eight items above, three follow-ups landed:
- `CommandNode.hint_mode` field removed (commit `6d2b929`) —
see §3.2.
- ADR-0024 amended with a "Phase F minimal" implementation
note (`parser.rs` retained as the router); `docs/adr/README.md`
index line updated to match.
- `docs/requirements.md` reconciled — see §4.
## §6. How to take over
1. **Read this file, then handoff-13, then 12** for the chain.
@@ -224,12 +263,14 @@ handoff-13's two accepted items:
escalated every ambiguous fork (HintMode mechanism, the
`Box::leak` arena's true cost, the Form C restructure twice)
rather than deciding unilaterally.
3. **Run `cargo test`** — 1006 passing, 0 failing, 1 ignored.
4. **Run `cargo clippy --all-targets -- -D warnings`** — clean.
5. **Resolve §3** — the two flagged dead-code items — with the
user.
6. Then the standing ADR roadmap (§4) is the next structural
work; pick per the user's priorities.
3. **Read `docs/requirements.md`** — reconciled this session;
it is the authoritative "what's open" tracker (§4).
4. **Run `cargo test`** — 1006 passing, 0 failing, 1 ignored.
5. **Run `cargo clippy --all-targets -- -D warnings`** — clean.
6. **Pick the next work from §4 / `requirements.md`** — but
prioritisation is a user product decision; ask, don't
assume. handoff-12's backlog and ADR-0024 are both fully
done — there is no carry-forward debt.
### Note on the typing-surface matrix