fix: user metadata named 'level' is a real field everywhere — the engine-internal node layer no longer shadows it in sort/filter/aggregation, and the indexing views stop stamping a phantom 0 into its column; index epoch 2 rebuilds existing brains at first open

Also completes the v8.10.2 write-granularity law for the transact() plan
path: a metadata-only batch update never rewrites the vector-bearing noun
record (planUpdate staged the unconditional save the update() fix removed).
Seven pins in tests/integration/level-field-shadow.test.ts including the
reporting consumer's exact repro rows; orderBy JSDoc documents the ordering
contract and the announced field-addressing law.
This commit is contained in:
David Snelling 2026-08-03 11:57:32 -07:00
parent 099579f716
commit 958a085926
8 changed files with 259 additions and 17 deletions

View file

@ -245,7 +245,9 @@ describe('rc.8 no-freeze migration deference (isMigrating / stampBrainFormat / b
it('the brain-format marker module exports the compiled epoch + data-format constants', () => {
// cor imports these from '@soulcraft/brainy/brain-format' (Hook 3) so both
// sides share ONE source of truth — no duplicated constant to drift.
expect(EXPECTED_INDEX_EPOCH).toBe(1)
// Epoch 2: user metadata named `level` became indexable (the reserved-name
// shadow fix, 2026-08-03) — pre-fix brains rebuild derived indexes at open.
expect(EXPECTED_INDEX_EPOCH).toBe(2)
expect(CURRENT_DATA_FORMAT).toBe('8.0')
})
})