docs(context): evidence and reasoning for the cell delta (improvise-5r8c)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
This commit is contained in:
Claude (adr009-step3)
2026-10-10 11:30:12 -07:00
committed by Edward Langley
parent 0d8fa5bca8
commit 34a0808f12
2 changed files with 9 additions and 11 deletions
+7 -8
View File
@@ -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
+2 -3
View File
@@ -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);