---
title: ARC0030 - Composite key requires accessor registration
editUrl: https://github.com/Cratis/Arc/edit/main/Documentation/backend/csharp/code-analysis/ARC0030.md
description: Register complete composite-key accessors when protected-read key generation cannot cover a declared type.
lastUpdated: 2026-10-18T00:00:00.000Z
---


<!-- Copyright (c) Cratis. All rights reserved. -->
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->

## Register the uncovered key type

The model-graph generator reports this informational diagnostic when a statically declared custom composite key cannot receive complete generated accessors and the compilation references Chronicle's accessor registry. Partial types, external types or bases, and inaccessible or otherwise unsupported member shapes can prevent complete generation.

Register every public readable non-indexed instance-property getter, including inherited getters, through `ProtectedReadModelKeyAccessors.Register<T>()` before startup. Registration covers the exact runtime type, not its subclasses. See [register composite protected-key accessors](/arc/backend/csharp/chronicle/protected-key-accessors/) for the API and strict-mode configuration.

This diagnostic does not fail the build: registration can exist elsewhere in the application. In strict mode, including runtimes without dynamic-code support, missing coverage throws `ProtectedReadModelKeyAccessorMissing`. Compatible JIT execution can instead use the reflection fallback with a warning. Neither this diagnostic nor a successful registration establishes whole-Arc NativeAOT safety.
