Files
improvise/tests
Edward Langley 1c2361b45a fix(persistence): delete bank-info.improv, and pin why it could not be read
improvise-odbc named two readings of the parse failure at
`- JORDAN MARTINEZ` and said to decide by asking whether improvise can
WRITE that line today. It cannot: `item_list`'s `name` is
`pipe_quoted | bare_name`, `bare_name` is `[A-Za-z_][A-Za-z0-9_-]*`, and
`quote_name` mirrors it character for character, so a spaced item name is
emitted `|JORDAN MARTINEZ|`. So the reader and the writer agree and the
round-trip property is not incomplete — the file was stale.

It was stale by hand, not by drift. c48a5cd migrated it to v2025-04-09 by
editing it in place: the `Date` items were pipe-quoted and the `Entity`
ones were not, and every line of its `## Data` section names a category
`Measure` where the file declares `_Measure`. It has not been loadable
since April, and nothing loaded it, so nothing said so. Deleted rather
than regenerated: there is no generator for it — it is hand-written fake
bank data — so "regenerating" would mean inventing a canonical form and
checking in 1200 lines whose only property is that they parse, which the
generator-driven proptests already establish over a far wider input space.

What is kept is the evidence and the gap the incident actually exposed:

- `an_item_name_the_item_line_cannot_carry_round_trips` puts the file's own
  item names through `format_md`/`parse_md` and asserts the spaced ones come
  back quoted and the bare-legal one stays bare.
- `a_bare_item_name_with_a_space_is_rejected` asserts the reader really does
  refuse the unquoted line, with the quoted form parsing as the precondition.
  Without it the first test would be consistent with the reader accepting
  both spellings, which is not what happened.
- `tests/shipped_documents_load.rs` closes "a sample document exercised by
  nothing": it walks the two directories `.gitignore` un-ignores and loads
  every `.improv` in them. A directory walk, not a list of names, because a
  list is a second place to remember. Proved discriminating by dropping the
  offending line into `examples/` and watching it fail.

Unrelated, reported not fixed: `foo.improv` in the repo root has no version
line at all and is equally unloadable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-19 22:36:12 -07:00
..