Base: f6857fee9de59dc82cbe596ca7df4a18152004ed (origin/main at worktree creation).
This ledger names the exact legacy assertions proposed for retirement. The
receiving owner is packages/db/tests/index-update-oracle.property.test.ts.
The other blocks in each legacy file remain outside this change.
- Legacy source: packages/db/tests/btree-index-undefined-values.test.ts,
should not drop the minimum key when an upper-only range is exclusive on the (absent) lower bound (original line 252). It inserts values 1, 5, 10,
calls rangeQuery({ to: 10, fromInclusive: false }), and requires all three
keys. Its observation is the returned direct BTreeIndex set.
- Law and authority: An absent bound denotes the start of the index
(packages/db/src/query/live/ARCHITECTURE.md, Identity); the documented
IndexInterface.rangeQuery accepts separate bounds and inclusivity flags.
An inclusivity flag cannot exclude a value at a bound the caller did not
supply. This law says nothing about internal tree traversal or runtime cost.
- Independent model and history: The receiving oracle's source Map keeps
key/value ownership. For every upper bound -2, 0, 2, it filters the Map with
value <= upper; it makes no lower comparison for an absent lower bound.
Paired reads with an explicit exclusive from require value > lower,
preserving the distinction stated in the old test's comment.
The existing fixed and random campaigns apply add, same-key update, delete,
and full build to both BasicIndex and BTreeIndex, then check the upper-only
and explicit-bound reads after each action, including empty and
changed-minimum states.
- Distinction and checkpoint: A design that applies
fromInclusive: false to the implicit minimum drops a modeled key. The
comparison checks the exact returned set after each direct index action.
One wrong-output control removes the minimum from the upper-only read;
another adds the excluded boundary to an explicit-bound read. Both must
fail their intended comparison.
- Retirement gate: The new owner and both wrong-output controls passed.
/root/review_absent_bound attacked the original and revised claims,
executed the model and controls, and found no blocking survivor in the
bounded numeric scope. The named legacy block was removed; its sibling
blocks remain.
- Legacy source: packages/db/tests/index-update-short-circuit.test.ts,
does not use comparator equality to skip an update (original line 91).
With a case-insensitive comparator, it changes one key from A to a and
checks that exact A lookup becomes empty and exact a lookup owns the key.
- Law and authority: An ordered index keeps separate exact equality
buckets for values at one comparator position
(packages/db/src/query/live/ARCHITECTURE.md, Identity; the existing
comparator-group index oracle). Comparator equality alone does not authorize
skipping a source value replacement. This does not promise bucket object
identity or prohibit harmless maintenance work.
- Independent model and history: A source Map retains exact strings;
fixed input facts put A/a in one order group and B/b in another. The
receiving oracle checks both equalityLookup and lookup('eq'), plus
comparator-group range sets, after each direct action on BasicIndex and
BTreeIndex. The fixed trace updates a singleton A → a → A before adding
peers, then checks populated same-group and cross-group updates. Its
existing fixed/random
custom-comparator property now also replaces an object with a fresh object
in the same group before crossing to another group. The group IDs and exact
object handles are input facts, not production classifications.
- Distinction and checkpoint: A wrong design that skips a comparator-equal
update leaves the old exact lookup populated at the returned-action cut.
A singleton no-op update control must fail the same source-Map comparison.
A second control makes lookup('eq') return the comparator group while leaving
equalityLookup intact; it must fail as well. The fixed string trace
preserves the original value-domain and lookup-dispatch path; the generated
object lane probes the general distinction after representative retirement.
- Retirement gate: The string and generated witnesses and both controls
passed. /root/review_equal_update found two gaps in the first draft: it
checked only equalityLookup, and it updated only a populated index. The
revised witness exercises lookup('eq') and the original singleton path;
the reviewer re-ran the relevant cases and found no remaining blocker.
The named legacy block was removed; its sibling blocks remain.
The post-retirement run of the receiving oracle and both remaining legacy
files passed: 397 tests, zero type errors. Before retirement, the same three
files passed with both old blocks present. The new numeric and string controls
deliberately inject wrong returned results or skipped work and each reaches an
assertion failure at the intended public observation. No production defect was
demonstrated in these two blocks, so production code was not changed.
This round exposed two useful review gates for the broader cleanup. A
same-group update on populated data did not cover the original singleton
history, and checking equalityLookup did not cover lookup('eq') dispatch.
Both gaps survived the author's first green run and were found by an
independent reviewer. The generated object fixture also initially reused a
retired key; distinct reuse keys repaired that model-fixture error before the
final run. Future blocks should record the exact public method, smallest
state, old comment's law, and a wrong-design control before deletion. A
passing test count by itself is not a retirement gate.