From 525b5fe4d74ab75f711651fe3a36b988b07abc4d Mon Sep 17 00:00:00 2001 From: cesnimda Date: Mon, 2 Nov 2026 21:59:47 +0100 Subject: [PATCH] test(phase10): record 89 document and data compatibility checks --- docs/redesign/phase-10/P10-04.md | 22 ++++++++++++++++++ .../p10-04-evidence/document-contracts.trx.gz | Bin 0 -> 4946 bytes .../p10-04-import-compatibility.trx.gz | Bin 0 -> 6590 bytes .../p10-04-local-data-compatibility.trx.gz | Bin 0 -> 4853 bytes 4 files changed, 22 insertions(+) create mode 100644 docs/redesign/phase-10/P10-04.md create mode 100644 docs/redesign/phase-10/p10-04-evidence/document-contracts.trx.gz create mode 100644 docs/redesign/phase-10/p10-04-evidence/p10-04-import-compatibility.trx.gz create mode 100644 docs/redesign/phase-10/p10-04-evidence/p10-04-local-data-compatibility.trx.gz diff --git a/docs/redesign/phase-10/P10-04.md b/docs/redesign/phase-10/P10-04.md new file mode 100644 index 00000000..2a07ce96 --- /dev/null +++ b/docs/redesign/phase-10/P10-04.md @@ -0,0 +1,22 @@ +# P10-04 — Functional and data integrity qualification + +2 November 2026. PARTIALLY COMPLETE. Selected document-contract regression executed against Phase 10 application sources after CLEAN-20. This checkpoint is not full regression or final acceptance. + +## Fresh results + +PASSED: 27 tests, zero failures/skips, native exit 0, across ApplicationAssetsTests, CvRevisionReadinessTests and CvExportRevisionTests. Coverage includes association/tenant isolation, canonical-profile ownership, letter history and restoration, null/inherited overrides, stale-write rejection and PDF-export revision preconditions. Local in-memory/temporary SQLite fixtures, mocked PDF exporter; no physical PDF acceptance, production database, model or provider validation. + +Command: pinned local .NET SDK 9.0.317, Release test with `--no-restore`, filter `FullyQualifiedName~ApplicationAssetsTests|FullyQualifiedName~CvRevisionReadinessTests|FullyQualifiedName~CvExportRevisionTests`, TRX logger. Restore separately passed with locked mode; lockfiles and product source remained unchanged. Initial invocation incorrectly passed `--locked-mode` to dotnet test and was rejected by MSBuild before running tests; this was corrected by separate locked restore, without configuration edits. + +Raw native evidence: [document-contracts.trx.gz](p10-04-evidence/document-contracts.trx.gz). Uncompressed SHA256 `692a0fe8016140c3198e76e6b3c1d56f438d80390666bc7f1b2dc06b4ac4ead5`. Test records identify individual cases and execution timestamps. + +## Remaining qualification + +Additional PASSED executions, same Release assembly and native exit 0: + +- ProfileCvControllerTests: 36 passed, zero failures/skips. Includes import admission, reviewed persistence and deterministic/fixture parsing with mocked AI dependencies. No live classifier/model or provider was used. [Native TRX](p10-04-evidence/p10-04-import-compatibility.trx.gz), uncompressed SHA256 `844cd54ff382bff0d48429336f8588ab010f0c72ea255ca02fe300b1561dc513`. +- SqliteDateTimeOffsetCompatibilityTests and CareerProfileServiceTests: 26 passed, zero failures/skips. Local canonical-profile history plus SQLite submission capture, sparse/missing-attachment package handling, owner-scoped date ordering and extraction endpoints. [Native TRX](p10-04-evidence/p10-04-local-data-compatibility.trx.gz), uncompressed SHA256 `1ac55913fdc3b705afbed27829fb280bef08d33c62fa26faa2c04e23c0c95908`. + +The three filters are disjoint: 89 distinct backend cases passed, zero failed/skipped. They are selected regression coverage, not a complete backend pass. + +Migration rehearsal/rollback, MariaDB integration, sidecar, complete suites, security acceptance, hosted CI and human/device qualification remain NOT RUN here. Reuse unchanged accepted renderer evidence only within its source/fixture/environment boundaries. No migration or destructive cleanup is proposed. P10-05 remains open; production remains NO-GO. diff --git a/docs/redesign/phase-10/p10-04-evidence/document-contracts.trx.gz b/docs/redesign/phase-10/p10-04-evidence/document-contracts.trx.gz new file mode 100644 index 0000000000000000000000000000000000000000..459d95e3f33cf7b8318b95bdf4b073314fca7100 GIT binary patch literal 4946 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 Q%l6y<2l{xr78#)c06xF60RR91 literal 0 HcmV?d00001 diff --git a/docs/redesign/phase-10/p10-04-evidence/p10-04-import-compatibility.trx.gz b/docs/redesign/phase-10/p10-04-evidence/p10-04-import-compatibility.trx.gz new file mode 100644 index 0000000000000000000000000000000000000000..90e06e23237f0a46f22075946c55c25706118a93 GIT binary patch literal 6590 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 bqW>+eU;gHc4bI=Mn=k(lpK>frpqu~zyy1b6 literal 0 HcmV?d00001