A schedule-convention setting, the two new tax categories, a disposal before the in-service date and a depreciation catch-up each need their feature now (tax_categories_gain_exempt, disposal_before_service, depreciation_catch_up), so no write before consent leaves books P2 refuses or misreads; replayed names are read with P2's TIN detector (B-28). The cutover runs end to end through the real P2 and P3 binaries in a test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
78 files changed
+1375
-4
No files matched your search
@@ -1380,3 +1380,27 @@ fn a_write_waiting_for_the_upgrade_journals_nothing() {
|
||||
assert_eq!(*store.journal_format(), ledger_store::format::current());
|
||||
store.verify().unwrap();
|
||||
}
|
||||
|
||||
/// The replay fuzz target (`fuzz_store_replay`: the writer and the viewer
|
||||
/// agree on every journal) draws its lines from every event type this
|
||||
/// version reads, P3's included (`asset.basis_set`, `party.creditor_set`
|
||||
/// were missing: the fuzzer never wrote them, so it never checked the two
|
||||
/// readers agree on them).
|
||||
#[test]
|
||||
fn the_replay_fuzzer_writes_every_event_type() {
|
||||
let target = include_str!("../../../fuzz/fuzz_targets/fuzz_store_replay.rs");
|
||||
let list = target
|
||||
.split("const TYPES: &[&str] = &[")
|
||||
.nth(1)
|
||||
.and_then(|rest| rest.split("];").next())
|
||||
.expect("the fuzz target's TYPES");
|
||||
let missing: Vec<&str> = EVENT_TYPES
|
||||
.iter()
|
||||
.copied()
|
||||
.filter(|t| *t != "store.created" && !list.contains(&format!("\"{t}\"")))
|
||||
.collect();
|
||||
assert!(
|
||||
missing.is_empty(),
|
||||
"the replay fuzzer never writes {missing:?}"
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user