diff --git a/crates/oa-core/tests/r3_migration.rs b/crates/oa-core/tests/r3_migration.rs index 4956ec9d..6df5963c 100644 --- a/crates/oa-core/tests/r3_migration.rs +++ b/crates/oa-core/tests/r3_migration.rs @@ -25,7 +25,10 @@ fn frozen_v4_json_and_source_preserve_the_old_review_without_fabricating_semanti assert_eq!(baseline.sa.name, "Approved SA name"); assert_ne!(baseline.oa.name, decoded.project.named(trace.oa)); let mut expected: Value = serde_json::from_slice(JSON4).unwrap(); + assert!(expected.as_object().unwrap().get("definitions").is_none()); + assert!(decoded.project.definitions.is_empty()); expected["schema_version"] = oa_core::SCHEMA_VERSION.into(); + expected["definitions"] = serde_json::json!({}); assert_eq!(serde_json::to_value(&decoded.project).unwrap(), expected); let reopened = persistence::decode_with_report(&serde_json::to_vec(&decoded.project).unwrap()) diff --git a/harness/ordinary-source8-compatibility-implementation-20260925.md b/harness/ordinary-source8-compatibility-implementation-20260925.md index 888bbe38..2a7808e9 100644 --- a/harness/ordinary-source8-compatibility-implementation-20260925.md +++ b/harness/ordinary-source8-compatibility-implementation-20260925.md @@ -82,4 +82,21 @@ Only these evaluator names change: public_ordinary_source8_preserves_typed_refusal_and_numeric_controls Production is unchanged. The initial 294-pass/four-failure evidence remains; -repaired outcomes require the parent's next runtime gate. \ No newline at end of file +repaired outcomes require the parent's next runtime gate. +## Historical schema4 JSON oracle reconciliation + +Parent's r3_migration integration run at 0c07f53a completed four passes and one +failure. Its whole-JSON expected value updated only schema_version, omitting the +current definitions catalog. Project4::into_current already creates an empty +catalog; Project serialization requires that schema8 field. The test now asserts +that the original fixture has no definitions field and the decoded catalog is +empty, then adds exactly definitions:{} to expected JSON. Complete JSON equality, +historical baseline/prose checks, migration and reopen checks remain unchanged. +No production behavior or frozen historical fixture changes. + +The parent reports completed core, six other selected integration gates and both +actual CLI operations at 0c07f53a; that evidence remains reusable because this +repair changes only the affected integration evaluator and this note. The initial +r3 four-pass/one-failure record remains preserved. Parent owns the affected r3 +inventory/rerun and all-target Clippy/format checks on the repaired pin; this note +does not claim their outcome or repeat unrelated runtime acceptance. \ No newline at end of file