Diagnostics Reference
This reference documents all 118 diagnostic codes emitted by the Oproto.FluentDynamoDb source generator. Each code links to a detailed page with the message format, description, triggering example, and fix.
Numbering Conventions
| Prefix | Code Range | Domain |
|---|---|---|
| DISC | 001–006 | Discriminator configuration and pattern matching |
| DYNDB | 001–036, 101–115, 120–127, 1001–1004 | Core DynamoDB entity validation and mapping |
| FDDB | 001–006, 0020–0021, 050–055, 060–062, 070–072, 080, 090, 100–104, 110–116, 120–126 | Table/index generation and configuration |
| PROJ | 001–006, 101–102 | Projection model validation |
| SEC | 001–002 | Security and package dependency checks |
Prefix Distinction: DYNDB vs FDDB
Both DYNDB and FDDB prefixes relate to the FluentDynamoDb source generator:
- DYNDB covers core entity validation — constraints on individual entity properties, key formats, type compatibility, and attribute correctness.
- FDDB covers table and index generation — multi-entity table configuration, index consolidation, projection wiring, and computed key format validation.
DYNDB Range Bands
The DYNDB prefix uses range bands to group related diagnostics by functional area:
| Range | Area |
|---|---|
| 001–036 | Core validation (keys, types, attributes, references) |
| 101–115 | Advanced type system (TTL, JSON, blobs, spatial, deprecation) |
| 120–127 | Index attribute validation (GSI/LSI configuration) |
| 1001–1004 | Extension method wrapper generation |
The varying digit widths within DYNDB (3-digit, 4-digit) reflect these logical groupings rather than an inconsistency.
FDDB Numbering Inconsistency
Codes FDDB0020 and FDDB0021 use four-digit numbering while other FDDB codes use three-digit numbering. This is a known inconsistency retained for backward compatibility — these codes were introduced before the current naming convention was established and cannot be renumbered without breaking existing suppressions.
DISC — Discriminator Configuration
| Code | Severity | Title |
|---|---|---|
| DISC001 | Warning | Both DiscriminatorValue and DiscriminatorPattern specified |
| DISC002 | Error | DiscriminatorValue or DiscriminatorPattern without DiscriminatorProperty |
| DISC003 | Error | Invalid discriminator pattern syntax |
| DISC004 | Error | Ambiguous overlapping discriminator patterns |
| DISC005 | Info | Overlapping discriminator pattern resolved |
| DISC006 | Error | Tautological exclusion guard detected |
DYNDB — Core Entity Validation
| Code | Severity | Title |
|---|---|---|
| DYNDB001 | Error | Missing partition key |
| DYNDB002 | Error | Multiple partition keys |
| DYNDB003 | Error | Multiple sort keys |
| DYNDB004 | Error | Invalid key format |
| DYNDB005 | Error | Conflicting entity types |
| DYNDB006 | Error | Invalid GSI configuration |
| DYNDB007 | Error | Missing DynamoDbAttribute |
| DYNDB008 | Warning | Ambiguous related entity pattern |
| DYNDB009 | Error | Unsupported property type |
| DYNDB010 | Error | Entity must be partial |
| DYNDB011 | Error | Multi-item entity missing partition key |
| DYNDB012 | Warning | Multi-item entity missing sort key |
| DYNDB013 | Error | Collection property cannot be key |
| DYNDB014 | Warning | Multi-item entity partition key format |
| DYNDB015 | Error | Invalid related entity type |
| DYNDB016 | Warning | Related entities require sort key |
| DYNDB017 | Warning | Conflicting related entity patterns |
| DYNDB018 | Error | Invalid key format syntax |
| DYNDB019 | Warning | Potential key collision |
| DYNDB020 | Error | Circular reference detected |
| DYNDB021 | Warning | Reserved word usage |
| DYNDB022 | Error | Invalid DynamoDB configuration |
| DYNDB023 | Warning | Performance warning |
| DYNDB024 | Error | Missing required attribute |
| DYNDB025 | Warning | Potential data loss |
| DYNDB026 | Error | Invalid GSI projection |
| DYNDB027 | Warning | Scalability warning |
| DYNDB028 | Error | Unsupported type conversion |
| DYNDB029 | Warning | Too many attributes |
| DYNDB030 | Error | Invalid attribute name |
| DYNDB031 | Error | Invalid computed key source |
| DYNDB032 | Error | Invalid extracted key source |
| DYNDB033 | Error | Circular key dependency |
| DYNDB034 | Error | Self-referencing computed key |
| DYNDB035 | Error | Invalid extracted key index |
| DYNDB036 | Warning | Invalid computed key format |
| DYNDB101 | Error | Invalid TTL property type |
| DYNDB102 | Error | Missing JSON serializer package |
| DYNDB103 | Error | Missing blob provider package |
| DYNDB104 | Error | Incompatible attribute combination |
| DYNDB105 | Error | Multiple TTL fields |
| DYNDB106 | Error | Unsupported collection type |
| DYNDB107 | Error | Nested map type missing [DynamoDbEntity] |
| DYNDB108 | Error | S2Level specified without S2 index type |
| DYNDB109 | Error | H3Resolution specified without H3 index type |
| DYNDB110 | Error | GeoHashPrecision specified without GeoHash index type |
| DYNDB111 | Error | Spatial index configuration on non-GeoLocation property |
| DYNDB112 | Warning | Missing Geospatial package |
| DYNDB113 | Warning | Deprecated [Queryable] attribute |
| DYNDB115 | Error | BlobStorage requires BlobData<T> type |
| DYNDB120 | Error | GSI sort key without partition key |
| DYNDB121 | Error | Duplicate GSI partition keys |
| DYNDB122 | Error | Duplicate GSI sort keys |
| DYNDB123 | Error | Duplicate LSI sort keys |
| DYNDB124 | Error | Empty GsiPartitionKey index name |
| DYNDB125 | Error | Empty GsiSortKey index name |
| DYNDB126 | Error | Empty LsiSortKey index name |
| DYNDB127 | Error | GSI/LSI index name conflict |
| DYNDB1001 | Error | Invalid GenerateWrapper usage |
| DYNDB1002 | Error | Invalid extension method |
| DYNDB1003 | Warning | Interface not found |
| DYNDB1004 | Warning | Interface not implemented |
FDDB — Table/Index Generation
| Code | Severity | Title |
|---|---|---|
| FDDB001 | Error | No default entity specified |
| FDDB002 | Error | Multiple default entities |
| FDDB003 | Error | Conflicting accessor configuration |
| FDDB004 | Error | Empty entity property name |
| FDDB005 | Warning | Inconsistent discriminator properties |
| FDDB006 | Error | Conflicting table namespaces |
| FDDB0020 | Error | EnableDynamicFields requires partial class |
| FDDB0021 | Warning | DynamicFields property already exists |
| FDDB050 | Error | Conflicting index Name values |
| FDDB051 | Error | Non-partial table type |
| FDDB052 | Warning | Redundant index Name specification |
| FDDB053 | Error | Conflicting index partition key attribute |
| FDDB054 | Error | Conflicting index sort key attribute |
| FDDB055 | Error | Conflicting index type |
| FDDB060 | Error | Projection source entity not found |
| FDDB061 | Error | Projection metadata inheritance failure |
| FDDB062 | Error | Projection interface violation |
| FDDB070 | Warning | Include projection without properties |
| FDDB072 | Warning | KeysOnly with UseProjection |
| FDDB080 | Error | Unresolvable source property in computed key |
| FDDB090 | Error | Format placeholder count mismatch |
| FDDB100 | Error | Key prefix conflicts with explicit computed format |
| FDDB101 | Error | Explicit discriminator pattern conflicts with key format |
| FDDB102 | Warning | Overlapping auto-derived discriminator patterns |
| FDDB103 | Info | Redundant explicit discriminator pattern |
| FDDB104 | Info | Compound discrimination resolved overlap |
| FDDB110 | Warning | Missing schema version attribute |
| FDDB111 | Error | Declared version below minimum supported |
| FDDB112 | Error | Declared version above current |
| FDDB113 | Info | Older-but-supported version, upgrade available |
| FDDB114 | Error | Major version less than 1 |
| FDDB115 | Error | Minor version less than 0 |
| FDDB116 | Error | Multiple schema version attributes detected |
| FDDB120 | Error | Constant key conflicts with computed attribute |
| FDDB121 | Error | Prefix not applicable to constant key |
| FDDB122 | Error | Cannot extract from constant key |
| FDDB123 | Error | Empty constant key value |
| FDDB124 | Error | Extracted property conflicts with DynamoDbAttribute |
| FDDB125 | Error | Computed key property has redundant Prefix |
| FDDB126 | Error | Key property references non-compile-time-constant value |
PROJ — Projection Model Validation
| Code | Severity | Title |
|---|---|---|
| PROJ001 | Error | Projection property not found |
| PROJ002 | Error | Projection property type mismatch |
| PROJ003 | Error | Invalid projection source entity |
| PROJ004 | Error | Projection must be partial |
| PROJ005 | Error | UseProjection references invalid type |
| PROJ006 | Error | Conflicting UseProjection attributes |
| PROJ101 | Warning | Projection includes all properties |
| PROJ102 | Warning | Projection has many properties |
SEC — Security and Package Dependencies
| Code | Severity | Title |
|---|---|---|
| SEC001 | Warning | Missing Encryption.Kms package |
| SEC002 | Error | Missing Amazon.Lambda.DynamoDBEvents package |