Files

2.2 KiB

Development database write smoke

This executable is deliberately separate from the read-only DbSmoke tool. It does not load database configuration or make a database call unless the exact write acknowledgement is present:

dotnet run --project tools/MBN_STOCK_WEBVIEW.DbWriteSmoke/MBN_STOCK_WEBVIEW.DbWriteSmoke.csproj -- `
  --i-understand-this-writes-development-database

Use --configuration <path> only when the normal LocalAppData configuration is not the intended development configuration. Credentials, SQL, generated identities, and database values are never printed.

The plan covers every migrated database writer:

  • all four Oracle GraphE INPUT_* screens;
  • Oracle AList/PList definition creation and item replacement;
  • ThemeA KRX (Oracle) and NXT (MariaDB) creation;
  • EList expert creation (Oracle).

Each scenario uses a legacy-column-safe 20-character MBW<UTC-date><40-bit nonce><scenario> name, proves that name is absent, performs each production-service mutation once, reads the row back through the production read service, deletes it in finally, and verifies absence. Numeric legacy keys cannot contain the prefix, so their production next-code service supplies the numeric key and the conditional insert still rejects a concurrent collision without overwriting an existing row. A bound, read-only child-row preflight also rejects keys that have legacy orphaned PLAY_LIST, SB_ITEM, or RECOMMEND_LIST rows, so cleanup cannot delete an older row.

Both read and write retries are disabled. If a mutation outcome is unknown, the tool stops immediately and issues no retry, cleanup mutation, or later scenario. Its redacted output then reports that the uniquely prefixed row may require manual inspection.

If a known-committed manual smoke row could not be parsed or deleted, reconcile only the tool-owned current-UTC-date namespace with:

dotnet run --project tools/MBN_STOCK_WEBVIEW.DbWriteSmoke/MBN_STOCK_WEBVIEW.DbWriteSmoke.csproj -- `
  --reconcile-known-owned-manual-residue `
  --i-understand-this-writes-development-database

The recovery refuses a truncated or non-singular per-table match and never retries a delete.