LeVCS/crates/levcs-store/tests
Levi Neuwirth e0c599c432
Make the payload a matrix axis rather than a second row list
D3 adopts a staged projection through the same eight Wave B locations an
inline transaction reaches, and it fails differently at each. Giving adoption
its own failpoint rows would produce a parallel list that drifts from this one
the first time a location is added to either, so payload kind becomes a third
axis alongside the location the failpoint names and the action the driver
chooses - the same independence `actions` already documents.

The adoption expectation gets the two-derivation treatment the recovery
outcome has. The fixture states it, `PhysicalStateClass::adoption_outcome`
derives it, and the matrix requires them to agree. The rule is physical and
nothing else: whether a frame binding the artifacts exists on the device. No
bytes means the artifacts are unreferenced and reclaiming them is correct; a
fenced frame binds the manifest, so the pin outlives the process; fenced and
published means the writer already settled `Adopted` against a root that
references them.

Note the asymmetry against `required_outcome`. `PartialFrame` and
`WholeFrameUnfenced` are `AbsentRetriable` there and `TransferredToRecovery`
here, because bytes are on the device and only recovery may say what they mean.
A transaction that will not commit and a pin whose artifacts may be referenced
are different questions, and collapsing them is how a retriable refusal would
come to delete content.

Both derivations run on every submit row now, before any row lists
`staged_projection`. That is deliberate: turning the kind on becomes a matter of
listing it rather than of also getting the expectation right in the same commit.
Verified by stating `DefinitivePreAppendFailure` on `DuringCommittedRootBuild`,
which the class derives as `TransferredToRecovery` - the assertion names the row
and says what settling it that way would license.

No row lists `staged_projection` yet and nothing drives one, so this commit adds
no coverage claim. D3 does not merge without the adoption cases running.

`inline` is required on every submit row rather than merely allowed: it is the
payload the eight locations were characterized with, and a row that dropped it
while adding the new kind would move coverage sideways while reading as having
added some.

check-phase1.sh reports GATE_EXIT=0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 22:27:37 +02:00
..
fixtures Make the payload a matrix axis rather than a second row list 2026-08-07 22:27:37 +02:00
support Make the payload a matrix axis rather than a second row list 2026-08-07 22:27:37 +02:00
crash_matrix.rs Make the payload a matrix axis rather than a second row list 2026-08-07 22:27:37 +02:00
d0_contract.rs Accept only the braced test-item shapes this crate uses 2026-07-29 20:30:41 -04:00
frame_golden.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
namespace_snapshot.rs Answer reads from a captured root, scoped to one namespace 2026-08-07 21:34:48 +02:00
recovery_checkpoint.rs Implement D0-B storage publication interfaces 2026-07-27 22:31:32 -04:00
recovery_checkpoint_faults.rs Implement D0-B storage publication interfaces 2026-07-27 22:31:32 -04:00
recovery_eio.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
recovery_identity.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
recovery_manifest.rs Implement D0-B storage publication interfaces 2026-07-27 22:31:32 -04:00
recovery_production_codec.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
recovery_receipts.rs Implement D0-B storage publication interfaces 2026-07-27 22:31:32 -04:00
recovery_reference_frame.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
recovery_seal.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
recovery_sequences.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
recovery_step8.rs Implement D0-B storage publication interfaces 2026-07-27 22:31:32 -04:00
recovery_tail.rs Freeze Wave A: Phase 1 storage spine 2026-07-26 19:47:03 -04:00
staging_sessions.rs Make a staged projection adoptable, reclaimable, and recoverable 2026-07-31 18:18:55 -04:00