You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This list decomposes the existing P5 scope without expanding compatibility promises. Every leaf is ⏳ Planned; implementation directories, profiles, manifests, runners and reports below are planned deliverables, not existing execution evidence. A parent completes only when all its leaves pass. Aggregate node P5-GATE requires P5-01 through P5-06 and all four gate leaves. P5-07 retains its original post-P5 evaluation scope and is outside the P5 exit-blocking set; it promises no diesel support. This removes the gate dependency cycle without reducing database delivery scope.
The first leaf of each parent inherits its hard prerequisites from the main roadmap; later leaves inherit them transitively through the listed edges. Parent IDs such as P2-06 mean all their leaves; nodes such as P3-GATE mean the whole phase gate. File/directory ownership is limited to the stated unit; shared interface or manifest changes must be coordinated serially, even when other directories differ.
An evidence key suite-v1#group denotes the planned tests/roadmap/suite-v1.json and its named group. Each manifest must enumerate immutable case IDs, input hashes, expected outcomes, positive/negative/boundary/budget classification and an exact denominator. tools/RustSharp.Conformance is to gain --manifest <path> --group <group>; this future entry point is not a currently executable command. The deliverable column bounds the accompanying test directories. Local reports are planned at artifacts/p5/local/<suite>/<group>.json; native CI uploads equivalent reports with stable run and artifact links. Ignored artifacts need not be committed. Decision leaves freeze versions and numeric budgets first. Extensions add a new manifest version; they never delete, relax or replace existing cases or adjust denominators at closure.
Every report records compiler SHA, tool/provider/server versions, profile, lock hash, platform/RID, command, denominator, failure reasons, timeout, maximum attempts/backoff, PID/parent PID/start time and cleanup outcome. Runners support cancellation, numeric resource caps and owned-resource-only cleanup. Database unavailability is blocked evidence, never a skip or pass. Functional leaves require corresponding positive, negative, boundary and budget evidence. Local and CI passes are recorded separately, and every declared runtime cell actually executes.
P5-01: Provider boundary
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-01.01
⏳ Planned
Freeze provider/backend/server/API and resource profile; own docs/profiles/database-provider-v1.json.
P3-GATE, P2-06
Exactly SQLite, PostgreSQL, MySQL and SQL Server have pinned .NET providers, native assets, server versions, supported types and numeric connection/row/byte/deadline limits; exclusions cannot remove the parent contract.
p5-provider-v1#profile
P5-01.02
⏳ Planned
Connection and command ownership; own src/RustSharp.Runtime/Database/Connection.cs and Command.cs.
P5-01.01
Open/close/reopen and parameter binding work; use-after-dispose, double ownership and missing parameters fail predictably; disposing an idle or failed command releases its connection exactly once.
p5-provider-v1#connection-command
P5-01.03
⏳ Planned
Typed values and errors; own src/RustSharp.Runtime/Database/Values.cs and Errors.cs.
P5-01.02
Round trips preserve null, numeric extrema, decimal precision, text encoding, timestamps and binary data declared by the profile; invalid conversion, overflow and provider errors retain stable categories and source causes.
p5-provider-v1#values-errors
P5-01.04
⏳ Planned
Cancellation and disposal; own src/RustSharp.Runtime/Database/Cancellation.cs.
P5-01.02
Pre-cancel, in-flight cancel, timeout and dispose/cancel races terminate within frozen deadlines; repeated cancellation is harmless and returns no live owned connection, reader or child process.
p5-provider-v1#cancel-dispose
P5-01.05
⏳ Planned
Transaction state machine; own src/RustSharp.Runtime/Database/Transaction.cs.
P5-01.03, P5-01.04
Commit/rollback/dispose and supported isolation levels have explicit effects; double completion, failed commit and cancellation roll back or return a documented terminal error; locks are released within the budget.
p5-provider-v1#transaction
P5-01.06
⏳ Planned
Provider adapter reachability; own tests/database/provider-contract/ and its AOT roots.
P5-01.03, P5-01.04, P5-01.05
Every frozen adapter runs connection/value/error/cancel/transaction groups on CoreCLR and Native AOT; no runtime model generation, reflection fallback or trimming/AOT warning is reachable.
p5-provider-v1#aot-contract
P5-02: sqlx: SQLite, PostgreSQL and MySQL
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-02.01
⏳ Planned
Freeze exact sqlx API/features and backend matrix; own docs/profiles/sqlx-v1.json.
P5-01, P3-04
Inventory identifies every selected public member and feature combination for all three engines, references frozen provider versions and assigns fixed positive, negative, boundary and budget case IDs.
p5-sqlx-v1#profile
P5-02.02
⏳ Planned
SQLite query/type adapter; own compat/sqlx/sqlite/.
P5-02.01
Parameterized CRUD and all mapped values round-trip; null, empty result, uniqueness and busy/locked errors match the contract; file and in-memory databases respect byte/row limits and disposal.
p5-sqlx-v1#sqlite
P5-02.03
⏳ Planned
PostgreSQL query/type adapter; own compat/sqlx/postgres/.
P5-02.01
Parameterized CRUD, server errors and profile types pass against the pinned server; Unicode/null/numeric bounds preserve values; wrong type, oversized row and disconnected server fail within bounds.
p5-sqlx-v1#postgres
P5-02.04
⏳ Planned
MySQL query/type adapter; own compat/sqlx/mysql/.
P5-02.01
Parameterized CRUD and signed/unsigned, decimal, temporal and binary mappings pass for frozen SQL mode/charset; coercion, truncation and connection loss cannot silently change accepted results.
p5-sqlx-v1#mysql
P5-02.05
⏳ Planned
Pool and streaming integration; own compat/sqlx/pool/ and compat/sqlx/stream/.
P5-02.02, P5-02.03, P5-02.04
Each engine exercises pool saturation, checkout timeout, backpressure, early stream Drop and cancellation; max connections/rows/buffer bytes stay bounded and a released connection is reusable.
p5-sqlx-v1#pool-stream
P5-02.06
⏳ Planned
Transaction and rollback integration; own compat/sqlx/transaction/.
P5-02.05
Commit, rollback, isolation and declared savepoints preserve database state for all three engines; statement error, disconnect and cancellation prove rollback/no partial commit or a stable indeterminate-outcome error.
p5-sqlx-v1#transaction
P5-02.07
⏳ Planned
Migrations and executable API coverage; own compat/sqlx/migrate/ and tests/database/sqlx/.
P5-02.06
Ordered migrations, re-run, checksum mismatch and mid-migration failure are deterministic on each engine; complete manifest passes CoreCLR/AOT with no missing API case, skipped server or owned-resource leak.
p5-sqlx-v1#migration-coverage
P5-03: Offline checked SQL
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-03.01
⏳ Planned
Freeze schema snapshot protocol; own docs/profiles/sqlx-schema-v1.json.
P5-02, P3-02
Protocol pins dialect/provider/schema hash/query hashes/parameter and result types, canonical ordering and numeric schema/query budgets; version mismatch and unsupported metadata have named diagnostics.
p5-sqlx-checked-v1#snapshot-format
P5-03.02
⏳ Planned
Bounded snapshot acquisition; own tools/RustSharp.Conformance/Database/SchemaSnapshot.cs.
P5-03.01
Capture for each of the three sqlx engines produces byte-identical canonical snapshots from unchanged schema; authentication failure, cancellation and metadata/byte limits clean up connections and omit secrets.
p5-sqlx-checked-v1#snapshot-capture
P5-03.03
⏳ Planned
Offline query/type verification; own compat/sqlx/macros/checked-query/.
P5-03.02
With networking disabled, valid queries compile using only locked snapshots; invalid SQL, absent columns, parameter arity/types and nullable-result mismatches fail at stable source spans.
p5-sqlx-checked-v1#offline-check
P5-03.04
⏳ Planned
Staleness and adversarial limits; own tests/database/sqlx-checked/fail/ and budget/.
P5-03.03
Missing/tampered/stale snapshots never trigger online fallback; limit-minus-one, limit and limit-plus-one schema/query inputs have deterministic diagnostics, bounded work and no unowned file overwrite.
p5-sqlx-checked-v1#stale-budget
P5-03.05
⏳ Planned
Macro provenance and runtime agreement; own tests/database/sqlx-checked/run/.
P5-03.03, P5-03.04
Expanded query bindings retain original source mapping and match actual rows from the frozen schema on CoreCLR/AOT; changed runtime schema returns the declared error rather than corrupt typed values.
p5-sqlx-checked-v1#runtime-parity
P5-04: tiberius and SQL Server
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-04.01
⏳ Planned
Freeze tiberius API/features/server profile; own docs/profiles/tiberius-v1.json.
P5-01, P3-04
Exact upstream API identity, .NET provider, SQL Server version, authentication/TLS modes, type inventory and numeric pool/stream/time budgets are fixed; unsupported modes fail explicitly.
p5-tiberius-v1#profile
P5-04.02
⏳ Planned
SQL Server command/type adapter; own compat/tiberius/query/ and types/.
P5-04.01
Parameterized CRUD and all declared types including null, precision, Unicode and binary boundaries round-trip; bad parameter types, duplicate keys and server errors preserve stable categories.
p5-tiberius-v1#query-types
P5-04.03
⏳ Planned
SQL Server pool and streaming; own compat/tiberius/pool/ and stream/.
P5-04.02
Pool saturation, reader backpressure, empty/multiple declared result sets and early Drop have deterministic ownership; row/byte limits and checkout timeouts release reusable connections.
p5-tiberius-v1#pool-stream
P5-04.04
⏳ Planned
SQL Server transaction/cancellation; own compat/tiberius/transaction/.
P5-04.03
Commit, rollback, declared isolation/savepoints and cancel/disconnect races prove database effects; failed/cancelled commands cannot return poisoned connections to the pool as healthy.
p5-tiberius-v1#transaction-cancel
P5-04.05
⏳ Planned
SQL Server migration contract; own tests/database/tiberius/migrations/.
P5-04.04
Versioned migration fixtures cover first apply, repeat, checksum drift and partial failure; rollback/recovery policy leaves the recorded schema state and no unreleased locks.
p5-tiberius-v1#migrations
P5-04.06
⏳ Planned
SQL Server AOT/API coverage; own tests/database/tiberius/aot/.
P5-04.02, P5-04.03, P5-04.04, P5-04.05
All manifest groups execute with the pinned live SQL Server on Windows/Linux x64 CoreCLR/AOT; authentication/TLS negative cases are real and no server unavailability is counted as a pass.
p5-tiberius-v1#aot-coverage
P5-05: sea-orm
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-05.01
⏳ Planned
Freeze sea-orm entity/API/backend profile; own docs/profiles/sea-orm-v1.json.
P5-02, P5-04, P3-02
Exact member/feature inventory fixes entities, relation cardinalities, migration and transaction behavior for all four engines, plus explicit unsupported combinations and numeric graph/query budgets.
p5-sea-orm-v1#profile
P5-05.02
⏳ Planned
Static entity and generated metadata model; own compat/sea-orm/entity/ and codegen/.
P5-05.01
Equivalent static/generated entities produce deterministic field/key/null mappings without runtime generation; duplicate keys, unsupported fields and generator limits yield stable source diagnostics.
p5-sea-orm-v1#entities
P5-05.03
⏳ Planned
Entity CRUD and query mapping; own compat/sea-orm/query/.
P5-05.02
Parameterized create/read/update/delete and selected filters/pagination work across four engines; empty results, conflicting writes, nulls and page bounds have explicit outcomes.
p5-sea-orm-v1#crud
P5-05.04
⏳ Planned
Relations and bounded loading; own compat/sea-orm/relation/.
P5-05.03
Declared one-to-one/one-to-many/many-to-many traversal preserves keys and nullability; missing/duplicate related keys, cycles and graph/query limits fail or truncate only as the frozen contract permits.
p5-sea-orm-v1#relations
P5-05.05
⏳ Planned
Entity transactions and migrations; own compat/sea-orm/transaction/ and migration/.
P5-05.03
Multi-entity atomic operations and ordered schema migrations prove commit/rollback/cancel effects on each backend; migration drift, dependency cycles and mid-step failure follow documented recovery.
p5-sea-orm-v1#transaction-migration
P5-05.06
⏳ Planned
ORM AOT and inventory reconciliation; own tests/database/sea-orm/.
P5-05.04, P5-05.05
Every selected API/feature/backend cell has an executable case; generated/static entity parity, cleanup and graph budgets pass CoreCLR/AOT without reflection fallback or missing inventory entries.
p5-sea-orm-v1#aot-inventory
P5-06: Database applications and published matrix
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-06.01
⏳ Planned
Build four-engine application fixtures; own samples/database-api/.
P5-02, P5-03, P5-04, P5-05
One declared sample scenario per engine demonstrates CRUD, pooling, transaction, cancellation and migration; expected effects and isolated service/database ownership are specified before execution.
p5-database-apps-v1#fixtures
P5-06.02
⏳ Planned
Native Windows x64 database runner; own .github/workflows/p5-windows.yml.
P5-06.01
All four apps publish and run on native win-x64 under CoreCLR/AOT against pinned services; failed auth, timeout and shutdown prove cleanup, with zero skipped engine/runtime cells.
p5-database-apps-v1#win-x64
P5-06.03
⏳ Planned
Native Linux x64 database runner; own .github/workflows/p5-linux.yml.
P5-06.01
All four apps publish and run on native linux-x64 under CoreCLR/AOT; identical scenario IDs/expected effects match Windows, including cancellation and native dependency resolution.
p5-database-apps-v1#linux-x64
P5-06.04
⏳ Planned
Publish compatibility and exclusions matrix; own docs/database-compatibility.md and docs/database-compatibility_zh.md.
P5-06.02, P5-06.03
Bilingual matrix reconciles every engine/provider/server/API/feature/version/RID cell with immutable report links; missing evidence remains open, and upstream source compatibility is never inferred.
p5-database-apps-v1#matrix
P5-06.05
⏳ Planned
Reproduce service setup and failure cleanup; own eng/database/ and tests/database/cleanup/.
P5-06.04
A clean runner replays locked setup and reports; startup failure, cancellation and exhausted retries clean only owned services/databases/processes, redact secrets and preserve diagnostic artifacts.
p5-database-apps-v1#reproduce-cleanup
P5-07: Post-exit diesel evaluation
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-07.01
⏳ Planned
Freeze bounded evaluation questions; own probes/diesel/profile-v1.json.
P5-GATE
After P5 exits, pin the candidate upstream version, selected APIs/backends, probe count and time/work limits; write feasibility questions without adding a supported profile.
p5-diesel-evaluation-v1#scope
P5-07.02
⏳ Planned
Probe type system and macros; own probes/diesel/language/.
P5-07.01
Finite positive/negative probes identify required trait/generic/macro features and reproducible diagnostics; unsupported cases remain explicit findings rather than skipped successes.
p5-diesel-evaluation-v1#language
P5-07.03
⏳ Planned
Probe backend/native/AOT feasibility; own probes/diesel/backend/.
P5-07.01
The fixed backend probe set records native dependencies, ownership and AOT reachability, including bounded failure reasons; no probe result becomes an implementation or compatibility claim.
p5-diesel-evaluation-v1#backend
P5-07.04
⏳ Planned
Record a feasibility decision; own docs/adr/diesel-profile.md.
P5-07.02, P5-07.03
Decision reconciles every probe and states defer/reject or a separately scoped future implementation, required language/macro/backend/AOT work and costs; P5 exit evidence remains unchanged.
p5-diesel-evaluation-v1#decision
P5-GATE: Finite exit gate
ID
Status
Deliverable / ownership
Depends on
Done when
Evidence
P5-GATE.01
⏳ Planned
Freeze complete exit inventory; own tests/roadmap/p5-exit-v1.json.
P3-GATE, P2-06, P5-01, P5-02, P5-03, P5-04, P5-05
Inventory enumerates all required API/feature/backend cases and the four-engine × two-RID × two-runtime application matrix (16 cells); every cell has immutable inputs and a case denominator.
p5-exit-v1#inventory
P5-GATE.02
⏳ Planned
Collect independent local and native CI evidence; own eng/database/Collect-P5Evidence.ps1.
P5-GATE.01, P5-06
All frozen manifests pass with zero failures/skips, Release zero warnings/errors, valid IL and AOT output; reports identify the same final SHA and preserve engine/runtime parity and cleanup evidence.
p5-exit-v1#evidence
P5-GATE.03
⏳ Planned
Reject incomplete aggregate evidence; own tools/RustSharp.Conformance/Database/P5ExitGate.cs.
P5-GATE.02
Missing/duplicate cells, changed denominators, wrong versions/SHA/RID, fake native execution, unavailable services and absent cleanup all fail; aggregation cannot silently accept a smaller matrix.
p5-exit-v1#aggregator-negative
P5-GATE.04
⏳ Planned
Publish gate provenance and update status; own the P5 sections of paired roadmap/front-page documents.
P5-GATE.03
Immutable CI run/artifact links and reproducible commands accompany the fixed denominator; both languages change status together only after P5-01 through P5-06 and all gate leaves pass.