Explicit MariaDB persistence lane
Run with the pinned .NET SDK and a disposable loopback MariaDB 12.2.2 instance:
$env:DOTNET_ROOT = 'C:\Users\Connor\.dotnet'
# Set JOBTRACKER_MARIADB_TEST_ADMIN through the local test environment; do not commit its secret.
# Its account needs CREATE/DROP DATABASE and full privileges on newly-created jt_it_* schemas.
rtk proxy C:\Users\Connor\.dotnet\dotnet.exe test JobTrackerApi.MariaDb.Tests/JobTrackerApi.MariaDb.Tests.csproj --logger 'trx;LogFileName=mariadb.trx' --results-directory .artifacts/mariadb
Missing credentials, unreachable server, a non-loopback host, or a server version mismatch fails this lane. It never skips or substitutes SQLite. The default exact version is 12.2.2; JOBTRACKER_MARIADB_TEST_VERSION can select another explicit major.minor.patch for a separately labelled compatibility run. The test output records the server, EF, provider and applied migration versions.
The administrator connection's database is cleared before use. Each test creates a new jt_it_<guid> database, initializes it through InitializeJobTrackerAsync, and drops only that fixture's successfully-created database. Connection pooling is disabled. The additive migration test briefly removes/reapplies RD21 only inside its own new schema. These tests must never be pointed at production; the loopback check is a guard, not permission to tunnel a production server locally.
Controllers use the same minimal Identity/summarizer mocks as the existing RD21 suite; application persistence, transactions, foreign keys, indexes, revision predicates and startup reconciliation use the real server. Independent contexts use independent TCP connections. No HTTP hosting, external AI provider, browser, deployed identity or production acceptance is established by this lane.