Merge gh/main (4502ed2b) into fix/oplp-followups

Conflict in context/code/formula-and-io.md: #214 added FormulaId to the
wire-type list, this branch added CategoryKind. Both kept.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
This commit is contained in:
Edward Langley
2026-09-23 10:47:48 -07:00
32 changed files with 1262 additions and 142 deletions
+8 -5
View File
@@ -488,11 +488,14 @@ The serde derives that existed only for that path went with it: `Workbook`,
`DataStore`'s manual impls and the formula AST. So did indexmap's `serde` feature
in `improvise-core`, `improvise-io` and the root crate, and `improvise-formula`'s
serde dependency. Each was removed and the whole workspace rebuilt, so the
compiler named every other consumer. What remains is the wire:
`Axis` (whose `rename_all = "lowercase"` is its wire spelling), `PageAxis`, and
`CategoryKind`, which went back on when `TileEntry` began carrying it
(improvise-bqm0; `context/code/command.md`). It returned as a wire type, not as
a document one: nothing loads a `Category` through serde.
compiler named every other consumer. Two remained, and both are the wire:
`Axis` (whose `rename_all = "lowercase"` is its wire spelling) and `PageAxis`.
A third arrived with improvise-km71 by the same rule: `FormulaId`, which crosses
the wire in `ModelCommand::ReplaceFormula`, `FormulaSlot` and `FormulaEntry`.
So `improvise-formula` depends on serde again, for that one type. No derive went
back on the formula AST. A fourth, `CategoryKind`, went back on when `TileEntry`
began carrying it (improvise-bqm0; `context/code/command.md`). It returned as a
wire type, not as a document one: nothing loads a `Category` through serde.
`CellValue` was never a candidate, since it is carried on the wire too. JSON
*import* (`StartImportWizard`, `ImportJsonHeadless`) is a separate feature and is
untouched.