feat: replace the [ok] summary line with a ✓/✗ echo marker

An audit of the command surface found the `[ok] <verb> <subject>`
summary line duplicated the echo line above it everywhere; its only
unique signal was success-vs-error. Retire it: a command's echo line
now resolves from `running: <input>` to `<input> ✓` / `<input> ✗`
on completion, and the symmetric `"<verb> <subject>" failed:` prefix
is dropped (only the reason remains). Content lines (row counts,
structure, plan tree, teaching echo) are unchanged.

Echo lines carry an EchoStatus; executed commands push Pending and
resolve the oldest-pending echo on their result event (FIFO worker —
correct under interleaving). Parse-time and pre-flight rejections are
not executed and keep their running: + caret rendering. App-command
[ok] lines (rebuild/export/replay) are payload-bearing and untouched.
ADR-0040.
This commit is contained in:
claude@clouddev1
2026-05-30 21:38:48 +00:00
parent f62cccec55
commit 8311de44a8
9 changed files with 546 additions and 124 deletions
+10 -3
View File
@@ -306,9 +306,11 @@ fn create_table_flow_updates_tables_list_and_structure_view() {
rendered.contains("Customers"),
"items panel should list Customers:\n{rendered}"
);
// ADR-0040: success is the ✓ marker on the command's echo line
// (the `[ok] create table Customers` summary line was retired).
assert!(
rendered.contains("[ok] create table Customers"),
"output should confirm success:\n{rendered}"
rendered.contains("create table Customers with pk ✓"),
"the command echo should resolve to a success marker:\n{rendered}"
);
// The structure table renders one line per column; the
// `id` row shows both the name and its `serial` type
@@ -397,7 +399,12 @@ fn drop_table_flow_clears_items_list() {
assert!(app.current_table.is_none());
let rendered = rendered_text(&mut app, &Theme::dark(), 80, 24);
assert!(rendered.contains("(none yet)"));
assert!(rendered.contains("[ok] drop table Customers"));
// ADR-0040: `drop table` is content-less, so the echo's ✓ marker
// is the entire success signal (replacing `[ok] drop table …`).
assert!(
rendered.contains("drop table Customers ✓"),
"the drop echo should resolve to a success marker:\n{rendered}"
);
}
#[test]