# 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: ```powershell dotnet run --project tools/MBN_STOCK_WEBVIEW.DbWriteSmoke/MBN_STOCK_WEBVIEW.DbWriteSmoke.csproj -- ` --i-understand-this-writes-development-database ``` Use `--configuration ` 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<40-bit nonce>` 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: ```powershell 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.