- Owns public, implementation-independent contracts shared by KeyLoad clients and services.
- Main contract sources:
Contracts.cs,Features/<SliceName>/Contracts/(individual request/result records),Features/QueryExecution/Contracts/QueryAst.cs,Features/ChangeFeeds/Contracts/ChangeFeeds.cs,Features/EventStreams/Contracts/Subscriptions.cs,Features/ResourceExecution/Contracts/Admission.cs,Features/ResourceExecution/Contracts/HttpAdmission.cs; storage contracts and key encoding are underStorage/StorageContracts.csandStorage/KeyCodec.cs.
- Place feature-owned public contracts under
Features/<SliceName>/using the canonical name indocs/Features/<SliceName>.md; keep truly shared primitives here only when multiple slices require them. - Contracts define caller-visible shapes, not persistence, authorization decisions, physical placement, Orleans routing, or server implementation.
- Current root-level contracts are legacy layout debt. Public contract changes require the owning feature specification and ADR where required; do not add compatibility shims or client-supplied trusted roles.
- GitHub Actions solution build:
dotnet build KeyLoad.slnx --no-restore --configuration Release. - Contract behavior is exercised by the invoking TUnit projects:
tests/KeyLoad.UnitTests,tests/KeyLoad.IntegrationTests, andtests/KeyLoad.RecoveryTests, each run only through.github/workflows/ci.yml. - Tests and qualification run only in GitHub Actions. Do not claim a local build or static review as runtime contract proof.
- Applicable skills: none installed; skill installation is prohibited by owner direction.
- Preserve net10.0/C# 14 and central package pins. Security, serialization, compatibility and trust-boundary changes require explicit contract review.
- Shared disposable cache limits, reservation interfaces and modeled snapshots belong to
Features/ResourceExecution/under ADR-058. They grant no database authority and contain no private store signing material; the integration lead alone owns these shared contracts. - Owns
Features/RelationalStorage/immutable schema metadata under ADR-055 andFeatures/QueryExecution/versioned SQL operation-envelope contracts under ADR-054. Null schema metadata preserves existing resource JSON; these contracts do not grant roles or introduce a second storage engine. - Read the root policy, architecture map, RepositoryGovernance feature, and ADR-032 first.
- Owned contract slices:
DocumentStorage,EventStreams,Messaging,Authorization,Search, andGraphTraversal; target paths areFeatures/<SliceName>/for each named slice. - Keep only genuinely shared abstractions at the project root; contract ownership and canonical docs follow the named slice.
- Shared strict collection/buffer JSON converters belong to
Features/ResourceExecution/under ADR-041. Delegate array and base64 serialization to System.Text.Json, preserve nullable tombstones and reject invalid required defaults; only the integration lead owns shared JsonDefaults registration. - Owns the frozen public
BlobStorageDTO and integrity format underFeatures/BlobStorage/and ADR-038. Shared enum/capability/resource-definition additions have one integration owner; preserve nonblob wire JSON and existing numeric values. - Owns bounded
TimeSeriesread contracts underFeatures/TimeSeries/and ADR-052: latest uses an inclusive timestamp cut, aggregates use half-open UTC ranges, and windows expose an explicit nullable exclusive end at the maximum timestamp. These contracts do not transfer storage ownership or trust caller-supplied roles. - Owns
Features/BackupRestore/Contracts/and feature-localSerialization/stable generated native partition-roster entry identities under ADR-008/011. Preserve complete PartitionRef scope, stable alias/field IDs and separate local/applied first-seen positions; these records do not establish catalog completeness or physical ownership.
- Keep feature-owned implementation inside its canonical
Features/<SliceName>/and organize it in populated, feature-local responsibility folders (such asModels/,Contracts/,Commands/,Queries/,Transport/,Hosting/,Serialization/, orValidation/). Do not leave a flat dump of unrelated responsibilities at the slice root; keep only genuinely shared building blocks and executable/composition entry points outside feature slices. Preserve namespaces and runtime contracts during physical moves.