Skip to content

Architecture decision records

Each record states one decision, the alternatives that were considered and the evidence that accepted it. All records listed here are accepted and in force; a later record that amends an earlier one says so. Records 0001–0010 predate the public repository and are not published; their invariants are summarized in the architecture overview.

Foundation and EF Core integration

Record Decision
ADR-0011 Version baseline and execution gates: exact .NET, EF Core and Neo4j.Driver pins, and what must pass before a feature counts
ADR-0012 EF query adapter and the initial compatibility boundary
ADR-0013 Async node persistence, optimistic concurrency and transaction ownership
ADR-0025 EF finder value equality
ADR-0029 Prepare immutable read slots before enumeration
ADR-0035 Retain prepared Cypher in EF compiled delegates
ADR-0037 Retain asynchronous-only persistence

Graph storage

Record Decision
ADR-0014 EF join-entry observation supports native relationships
ADR-0015 Explicit directed association metadata
ADR-0016 Identified relationships and native Cypher results
ADR-0021 Native storage for ordinary node foreign keys (references)
ADR-0032 Optional native references remain dependent-owned graph membership

Schema and migrations

Record Decision
ADR-0017 Storage witnesses and explicit schema comparison
ADR-0018 Migration journal and recovery boundaries
ADR-0036 A bounded design-time command subset

Querying

Record Decision
ADR-0023 Explicit server EXPLAIN without query execution
ADR-0024 Bounded scalar Contains with explicit equality semantics
ADR-0027 Nullable scalar contracts and literal Guid construction
ADR-0030 Construct DTO projections through the existing EF shaper
ADR-0031 Validate integer extrema inputs within the aggregate statement
ADR-0033 Explicit typed native search with observed index provenance
ADR-0034 Bounded native paths with typed projections and explicit direction
ADR-0038 Bounded untracked bulk mutation batches
ADR-0045 Native DateTimeOffset payloads with explicit query semantics

Fluent Cypher

Record Decision
ADR-0041 Explicit native Cypher clauses beside EF LINQ
ADR-0047 C# predicate lambdas under an agree-or-reject rule (amends 0041)
ADR-0048 Aggregates and bounded collect (extends 0041)

Transactions and observability

Record Decision
ADR-0026 Uncertain commit verification and replay contract
ADR-0028 Correlated runtime tracing with value-free events

Authoring toolchains

Record Decision
ADR-0019 Optional ontology compilation into the EF model
ADR-0020 Database-first observations and reviewed tracking proposals
ADR-0022 Optional attributed mapping generation with finalized-model verification
ADR-0039 Explicit mapping diagnostics and schema responsibility
ADR-0040 Offline database-first review between explicit versions

Developer tools and compatibility

Record Decision
ADR-0042 Application-hosted evidence tools (Doctor and Verify)
ADR-0043 Typed compiler snapshots for the static Query Lab report
ADR-0044 A read-only compatibility probe for Neo4j 5.26
ADR-0046 Integrated VS Code Query Lab with application-owned capture

Investigations behind some records: EF service map (internal EF APIs the provider depends on) and the join-entry experiment behind ADR-0014.