Skip to content

Start W1 with internal async execution contracts and controllable tests - #147

Merged
bazer merged 5 commits into
v0.10from
codex/0.10-w1-async-contracts
Sep 17, 2026
Merged

bazer merged 5 commits into
v0.10from
codex/0.10-w1-async-contracts

Conversation

@bazer

@bazer bazer commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Why

The accepted async design needs internal execution contracts and deterministic test infrastructure before production providers are connected. The user-approved W0-F1 exception allows this bounded work while EF Core reviews the SQLite pool correction.

Changes

  • Add internal command access, async reader and deferred reader-source capabilities, with explicit cancellation tokens and borrowed-command ownership.
  • Add a shared dispatch base that performs null/lifecycle/capability validation before pre-cancellation and forwards the original command/token directly to an implemented async core.
  • Reject missing capability explicitly; never infer async support merely from DbCommand inheritance or call framework synchronous fallbacks.
  • Add controllable TUnit checkpoints for dispatch, row advancement and cleanup, including injected original exceptions and cancellation while suspended.
  • Record the first W1 slice, its limits and the remaining ownership/initialization, recovery and invocation-capture slices.

All new core types are internal. Existing synchronous execution, public APIs, production providers, transaction guards, generators and package dependencies are unchanged. Deferred acquisition is not yet an async row enumerator; enumeration cleanup, combined tokens, owned string commands and failure composition remain later work. The fixture's reader-lifetime tests establish fixture capabilities, not native-provider acceptance.

Validation

  • Focused contract tests: 29/29 passed.
  • Full unit suite: 1,864/1,864 passed, no skips/failures.
  • Core Release builds on .NET 8/9/10: zero warnings/errors.
  • Final unit-project Release build: zero warnings/errors.
  • Initial test hosts used Debug / .NET 10. An additional explicit Release / .NET 10 full unit run on 85795c5b passed 1,864/1,864; separate Release build had zero warnings/errors. These development checks are not strict release evidence; raw reports retain actual configurations and the preceding Windows CLI DLL-lock build failure.
  • Diff whitespace and local documentation links checked. These planning pages are excluded from DocFX.

No packages published or native driver changes. W0-F1, SQLite integration acceptance, final provider feasibility/public API freeze and release approval remain blocked on verified corrected-package adoption and affected evidence. This PR starts W1; it does not complete the full W1 exit gate.

Predecessors #144, #145 and the merge-forward integration #146 are merged.

CI follow-up and dependency

The first committed CI run failed the pre-existing SQLite-file cached-reference identity assertion (primary-key equality/hash assertions passed). A deterministic cleanup/publication overlap reproduced the same condition. Master-first test fix #148 and merge-forward PR #149 both passed all required CI and are merged. The fix is now on v0.10; this W1 head includes the same integration ancestry.

The original failure/artifact, deterministic negative control, two 516/516 SQLite development passes and the limits of the diagnosis are preserved in #148 and the W1 implementation record. This is separate from W0-F1 and has not been waived under its exception. Fresh CI run 35235973869 passed all 12 jobs including the Latest required gate on ae7c4bb2400537e47ee9bf0e3a0e02e80b346c76. The original failed run is not relabeled as passing. This PR is left open for review; the complete W1 exit gate remains later work.

Add explicit internal async access, reader and deferred borrowed-command source capabilities. Validate arguments, lifecycle and capability before pre-cancellation, then dispatch directly without synchronous fallback or changing existing production provider paths.

Add deterministic TUnit pause/failure fixtures and 29 contract cases covering cancellation, dispatch identity, borrowed ownership and deferred acquisition. Record 1,864 passing unit tests, clean core builds on .NET 8/9/10, the remaining W1 slices and the unresolved SQLite integration/release gates.
Stop background cleanup only for the stable-cache identity assertion, and cover a forced cleanup/publication overlap separately. Preserve the original CI failure and deterministic negative control; no production caching or SQLite pooling changes.
Preserve the first failed SQLite identity check and deterministic maintenance-overlap reproduction. Link the master-first test fix and merge-forward PR, record explicit Release unit verification and keep W0-F1 separate and open.
@bazer
bazer merged commit b52e81b into v0.10 Sep 17, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant