f0a945ab96
Tests now guard against accidental drop of kartsell_migration_test by throwing when the credential source DB is the destructive rehearsal target. Distinct credential DB (kartselldb_test) prevents config collision. AEG-X-004 evidence consolidated: rehearsal .trx files + preflight markdown documented. Schema 0032 (shadow_run_queued_status_contract) verified fresh/upgrade/recovery on isolated DB. AGENTS.md: Necessity-driven (guard against destructive accident); no new feature. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
46 lines
3.2 KiB
Markdown
46 lines
3.2 KiB
Markdown
# AEG-X-004 DbUp recovery rehearsal evidence
|
|
|
|
## Traceability
|
|
|
|
- WBS: `AEG-X-004`
|
|
- Requirement: `REQ-DB-001`
|
|
- Gate: `G0`
|
|
- Source: `docs/CURRENT/WBS_EXECUTION_PROCEDURES.md`, `db/migrations/*.sql`, DbUp integration tests
|
|
- Assumption: `kartselldb_test` is the approved credential/source database and `kartsell_migration_test` is the isolated destructive migration-rehearsal target.
|
|
- Unknown: production rehearsal and DBA sign-off were not performed.
|
|
- Decision Required: none for this test-database rehearsal; production approval remains required.
|
|
|
|
## Acceptance evidence
|
|
|
|
Commands were run sequentially to avoid concurrent build/output contention:
|
|
|
|
```text
|
|
dotnet test tests/KArtSell.Integration.Tests/KArtSell.Integration.Tests.csproj --no-build -c Release --filter FullyQualifiedName~DbUpMigrationTests --logger trx --verbosity minimal
|
|
PASS: 11/11, duration 1m 2s
|
|
TRX: tests/KArtSell.Integration.Tests/TestResults/kjh20_KIMJAEHYUN-OFFI_2026-08-06_14_06_38_net10.0.trx
|
|
|
|
dotnet test tests/KArtSell.Integration.Tests/KArtSell.Integration.Tests.csproj --no-build -c Release --filter FullyQualifiedName~DbUpRecoveryTests --logger trx --verbosity minimal
|
|
PASS: 6/6, duration 28ms
|
|
TRX: tests/KArtSell.Integration.Tests/TestResults/kjh20_KIMJAEHYUN-OFFI_2026-08-06_14_07_41_net10.0.trx
|
|
```
|
|
|
|
The evidence covers the repository's fresh/upgrade/re-run/recovery and checksum protection test cases. No production database, automatic order, KIS submission, or migration mutation outside the isolated `kartsell_migration_test` fixture was used. The configured `kartselldb_test` database was not dropped or recreated.
|
|
|
|
## Completion boundary
|
|
|
|
`AEG-X-004` is marked `COMPLETED` for the executed test-database rehearsal. Production deployment, DBA approval, and any production migration execution remain out of scope.
|
|
|
|
## Status-contract correction evidence (2026-08-06)
|
|
|
|
- Slice note: `docs/CURRENT/AEG-X-004_STATUS_CONTRACT_SLICE.md`
|
|
- Migration: `db/migrations/0032_shadow_run_queued_status_contract.sql`
|
|
- Regression: `DbUpMigrationTests.Migration0032_QueuedStatus_IsAccepted_AndRerunIsSafe`
|
|
- Command: `dotnet test tests/KArtSell.Integration.Tests/KArtSell.Integration.Tests.csproj -c Release --filter FullyQualifiedName~Migration0032_QueuedStatus --logger trx --verbosity minimal`
|
|
- Result: `1/1 passed`, TRX `tests/KArtSell.Integration.Tests/TestResults/kjh20_KIMJAEHYUN-OFFI_2026-08-06_14_15_10_net10.0.trx`
|
|
- Command: `dotnet test tests/KArtSell.Integration.Tests/KArtSell.Integration.Tests.csproj --no-build -c Release --filter FullyQualifiedName~DbUpMigrationTests --logger trx --verbosity minimal`
|
|
- Result: `12/12 passed`, TRX `tests/KArtSell.Integration.Tests/TestResults/kjh20_KIMJAEHYUN-OFFI_2026-08-06_14_15_28_net10.0.trx`
|
|
- Command: `dotnet test tests/KArtSell.Integration.Tests/KArtSell.Integration.Tests.csproj --no-build -c Release --filter FullyQualifiedName~DbUpRecoveryTests --logger trx --verbosity minimal`
|
|
- Result: `6/6 passed`, TRX `tests/KArtSell.Integration.Tests/TestResults/kjh20_KIMJAEHYUN-OFFI_2026-08-06_14_16_32_net10.0.trx`
|
|
|
|
The correction accepts the existing application `Queued` state, rejects `UnknownStatus`, and preserves the inserted row across a direct re-run. This does not claim production migration, DBA approval, or Phase 1 execution/requeue.
|