From 34a0808f12a796fd554349ee5b66a6a5743c668b Mon Sep 17 00:00:00 2001 From: "Claude (adr009-step3)" Date: Sat, 10 Oct 2026 11:30:12 -0700 Subject: [PATCH] docs(context): evidence and reasoning for the cell delta (improvise-5r8c) Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze --- context/test-evidence/command.md | 15 +++++++-------- crates/improvise-incremental/src/delta.rs | 5 ++--- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/context/test-evidence/command.md b/context/test-evidence/command.md index 90f265fe..b8cd426c 100644 --- a/context/test-evidence/command.md +++ b/context/test-evidence/command.md @@ -528,6 +528,10 @@ a wrong answer to no divergence at all. ### a_cell_data_effect_no_raw_cell_records_still_dirties_the_document +improvise-5r8c: the dirty flag now reads the cell delta, and `SortData` is the case no delta +carries (the saved order moved). The first cell-delta version failed this test; the fix is +`DataStore::reorders` in `document_shape`, and removing it fails this test alone. + The guard against the cure improvise-748f **proposed**, which is unsound. The ticket suggested raising `dirty` off `bump_changed_records`' per-record fingerprint of the raw cells, on the reading that `CellData` means cells. Five of the ten `CellData` @@ -7228,29 +7232,24 @@ group per level, where the two keyings coincide. `toggle_group_collapse` never removing a fold; the final assertion (no fold left behind once the quarter is closed again) fails. -### basis_tiers::a_write_that_compares_equal_by_the_float_rules_changes_nothing +### ui::app::basis_tiers::a_write_that_compares_equal_by_the_float_rules_changes_nothing improvise-5r8c. `0.0` over `-0.0`, `-0.0` over `0.0` and three NaN spellings move no record version and leave the document clean. It failed on the bit fingerprint (`0 -> -0` bumped the version to 2), the bug the ADR names. Faults: dirty set on every `CellData` effect fails it and two more. -### basis_tiers::a_write_that_differs_by_the_float_rules_still_changes_something +### ui::app::basis_tiers::a_write_that_differs_by_the_float_rules_still_changes_something `0.0` over NaN bumps the version and dirties. Fault: dirty read from the shape alone ignores the delta and fails this and four tests elsewhere. -### basis_tiers::cells_removed_by_a_later_geometry_effect_still_move_their_records +### ui::app::basis_tiers::cells_removed_by_a_later_geometry_effect_still_move_their_records `[SetCell, RemoveCategory]`: the removal comes after the last `CellData` drain. Fault: not reading the log at the end of the batch survived the whole suite until this test, and then fails it. A fault dropping the per-effect delta from the batch fails ten tests. -### effect::tests::a_cell_data_effect_no_raw_cell_records_still_dirties_the_document - -Predates this step. `SortData` moves the saved order and no cell delta reports it, so the -first cell-delta version of the dirty flag failed this test. `DataStore::reorders` fixes it, -and removing it from `document_shape` fails this test alone. ### model::cell::data_store::sorting_counts_as_a_reorder_only_when_it_moves_a_cell diff --git a/crates/improvise-incremental/src/delta.rs b/crates/improvise-incremental/src/delta.rs index 8836d1d2..a14c565e 100644 --- a/crates/improvise-incremental/src/delta.rs +++ b/crates/improvise-incremental/src/delta.rs @@ -7,9 +7,8 @@ use improvise_core::model::cell::{CellChange, CellKey, CellValue}; use improvise_core::model::record::RecordHash; use zset::ZSet; -/// A cell value that compares by the float rules, with every NaN one value: `-0.0` -/// equals `+0.0`. Built only by [`DeltaValue::new`], which makes both true of the -/// inner value, so the derived-looking order below is a total order. +/// A cell value that compares by the float rules, every NaN one value and `-0.0` +/// equal to `+0.0`. Only [`DeltaValue::new`] builds one, so the order is total. #[derive(Debug, Clone)] pub struct DeltaValue(CellValue);