This repository is optimized for agent-assisted work on DeltaLakeSharp, an experimental Delta Lake SDK for .NET built from managed C# code and a native Rust V3 runtime.
- V3 native Rust is the recommended SDK runtime for external consumers.
- V1 Spark and V2 DataFusion remain service-backed compatibility modes.
- Public read APIs are Arrow-first and stream
RecordBatchvalues by default. DbDataReaderand materialization helpers are adapters, not the preferred default for large tables.- ADBC is read-only, path-scoped, and backed by the V3 runtime.
src/DeltaLakeSharp.Client/- main managed SDK surface and backend abstractionsrc/DeltaLakeSharp.Adbc/- ADBC driver over the V3 client pathsrc/DeltaLakeSharp.Testing/- test and container harness supportsrc/DeltaLakeSharp.Server/v3/- Rust native runtimesrc/DeltaLakeSharp.Server/v1/andsrc/DeltaLakeSharp.Server/v2/- service-backed compatibility serverstests/- MSTest unit, compatibility, and integration coveragetests/DeltaLakeSharp.Tests/IntegrationScenarios/- executable public SDK workflow scenariosexamples/- compile-checked consumer examplesapi/- semantic public API inventory and machine-readable indexdocs/ai/- AI-optimized integration guidancedocs/architecture/,docs/how-to/, anddocs/adr/- focused architecture, workflow, and decision docs
- Keep public APIs explicit and capability-aware.
- Prefer streaming Arrow APIs for unknown-size data.
- Do not hide backend capability failures behind empty results or silent fallbacks.
- Treat partition tokens as opaque backend-generated descriptors.
- Treat protocol upgrades as explicit, irreversible table operations.
- Do not log storage credentials, SAS tokens, object-store secrets, or real private paths.
- Keep V1/V2 Docker-backed tests separate from normal non-container validation.
- After any code change, assess whether tracked markdown files need updates.
- Update docs in the same change when behavior, setup, validation commands, architecture, public API usage, limitations, or troubleshooting guidance changes.
- Prefer focused updates to existing docs over creating new docs.
- If no markdown update is needed, say so in the final summary.
- Do not commit code changes until documentation impact has been considered.
Documentation targets:
- Architecture or runtime behavior:
docs/architecture/ - Consumer workflows:
docs/how-to/ - AI and agent guidance:
docs/ai/ - Validation and contributor commands:
CONTRIBUTING.mdandAGENTS.md - Public API changes:
README.md,api/public-api.md, andapi/semantic-index.json
Required PR CI runs Windows and Linux jobs. Windows is the broad compatibility runner, including net472; Linux validates net8.0 portability and the V3 native runtime. macOS validation is local/manual unless a future workflow adds it explicitly.
dotnet build DeltaLakeSharp.sln /p:SkipRustBuild=true -m:1dotnet build examples\DeltaLakeSharp.Client.Examples\DeltaLakeSharp.Client.Examples.csproj /p:SkipRustBuild=truedotnet test tests\DeltaLakeSharp.Client.Compatibility.Tests\DeltaLakeSharp.Client.Compatibility.Tests.csprojRun Rust validation from src/DeltaLakeSharp.Server/v3:
cargo testFor V3 runtime changes, build the Rust fixture and run focused V3 tests:
dotnet test tests\DeltaLakeSharp.Tests\DeltaLakeSharp.Tests.csproj --filter "TestCategory=V3"On macOS ARM64, prefer the explicit ARM64 net8.0 invocation when validating V3 tests locally:
dotnet test tests\DeltaLakeSharp.Tests\DeltaLakeSharp.Tests.csproj --framework net8.0 --arch arm64 --filter "TestCategory=V3" /p:PlatformTarget=arm64 /p:SkipRustBuild=trueV3 performance smoke tests are structural CI gates and should stay separate from BenchmarkDotNet trend runs:
dotnet test tests\DeltaLakeSharp.Tests\DeltaLakeSharp.Tests.csproj --framework net8.0 --filter "FullyQualifiedName~NativeRustPerformanceSmokeTests" /p:SkipRustBuild=trueREADME.mdapi/public-api.mdapi/semantic-index.jsondocs/ai/bootstrap.mddocs/ai/capabilities.mddocs/architecture/execution-model.mddocs/architecture/native-interop.mdsrc/DeltaLakeSharp.Client/DeltaTableServiceClient.cssrc/DeltaLakeSharp.Client/Internal/NativeRustBackend.cssrc/DeltaLakeSharp.Server/v3/src/interop/native.rs