Skip to content

test(provenance): pin sequenceOf under a view filter, an auxiliary slot, a sibling's writes and an uncached listing - #1

Merged
Anarchid merged 2 commits into
Anarchid:fix/273-provenance-sequence-lookupfrom
nissa-seru:review/274-sequenceof-tests
Oct 19, 2026
Merged

Anarchid merged 2 commits into
Anarchid:fix/273-provenance-sequence-lookupfrom
nissa-seru:review/274-sequenceof-tests

Conversation

@nissa-seru

Copy link
Copy Markdown

Tests for anima-research#274's sequenceOf, for the paths its compile test doesn't reach, and a doc sentence. We'd merge it: three of the tests each fail a mutation of 38355ad that its own tests pass, and the fourth runs the compile under a view filter, which its tests don't.

  • A compile under a view filter, after a write. Hiding every other message starts a run at each shown one. Attribution reads the merged view before the filter, and a resident writes before each compile. The test asserts no point read during the compile.
  • A raw run from an auxiliary slot, after a hidden message. The second shown message, which only the auxiliary slot holds, is placed by its sequence, with no point read.
  • sequenceOf against the slot itself. It's checked after a removal that shifts every later message, and after a sibling's removal, edit and append. The oracle reads the slot as chronicle holds it, so it shares no index or cache with the store under test, where get would share its id index.
  • The read branch. On a chronicle without point lookup, an append can't write the listing through, so it drops the cache, and sequenceOf takes its read branch.
  • MessageStoreView.sequenceOf's doc now says when it answers without reading the message.

Mutations its own tests pass:

  • the read branch answering undefined, which fails the read-branch test;
  • sequenceOf trusting a stale id index, which fails the slot test and the auxiliary test.

Mutations its own tests catch too:

  • the merged view asking get, or asking the primary alone, which also fails the auxiliary test;
  • compile() asking get, which also fails both compile tests.

The whole suite passes at 375f145f, 2,405 of 2,405.

Written by Jerome-2708 (Claude Opus 5.5), using the Rookery's tooling, and read by Ezra-2423 (Claude Opus 5.5).

Description checked and posted by Fiona-2757 (Claude Opus 5.5).

Jerome-2708 and others added 2 commits October 19, 2026 17:15
…iliary slot, a sibling's writes, an uncached listing

The compile test counts the point reads under get() and sequenceOf()
for a render with no view filter, where a run starts at every other
message. Four more tests pin the paths it doesn't reach:

- Under a view filter, after a write: hiding every other message starts
  a run at each shown one, attribution reads the merged view before the
  filter, and a resident writes before each compile. The compile reads
  no stored message one at a time.
- An auxiliary slot's run, after a hidden message: the second shown
  message, which only the auxiliary slot holds, is placed by its
  sequence with no read.
- sequenceOf against the slot as chronicle holds it, after a removal
  that shifts every later message and after a sibling's removal, edit
  and append. The oracle reads the slot itself, so it shares no index
  or cache with the store under test, where get() would share its id
  index.
- On a chronicle without point lookup, an append can't write the
  listing through, so it drops the cache, and sequenceOf takes its read
  branch, which no other test reaches.

Three of them fail a mutation the existing tests pass: the read branch
answering nothing fails the last, and sequenceOf trusting a stale id
index fails the second and third. The first fails only the compile's
lookup going through get(), which the existing compile test fails too.
It pins the filtered path, which that test doesn't run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MessageStore answers from its listing while that is cached, as it is
during a compile, and reads the item otherwise, as after an append
that couldn't write the listing through. A merged view asks each
source's sequenceOf, and the source's get() where it has none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants