Reference
Diagnostics
43 rules the compiler enforces, so a registration that could not work fails the build instead of the deploy — or worse, production.
This table is rendered from the generator's own
AnalyzerReleases files, which Roslyn refuses to let drift: adding
a diagnostic without a row there fails the build. So this page lists the rules dverse
actually ships, not a copy of them.
Dverse.Commands
| Rule | Severity | Meaning |
|---|---|---|
| DVERSE091 | Error | [Command] on a method that is not a [CustomApi] handler |
| DVERSE092 | Error | Entity-scoped command location declared without an entity |
| DVERSE093 | Error | Global command location (GlobalHeader/Dashboard) declared with an entity |
| DVERSE094 | Error | Duplicate command key |
| DVERSE095 | Error | Command entity does not match the custom API's binding |
| DVERSE096 | Error | Commanded API has a request parameter that is neither Optional<T> nor nullable |
| DVERSE097 | Error | Invalid [Command] metadata (conflicting icons, Handler combined with behavior, bad key/label, unknown {response.x}) |
| DVERSE098 | Error | Malformed hook/handler reference (expected 'webresource#function') |
Dverse.Jobs
Dverse.Model
| Rule | Severity | Meaning |
|---|---|---|
| DVERSE010 | Error | dataverse.snapshot.json is unparsable; re-run 'dverse model sync' |
Dverse.Recipes
| Rule | Severity | Meaning |
|---|---|---|
| DVERSE051 | Error | [Derive] dependency cycle |
| DVERSE052 | Error | [Derive] method is not pure over the row |
| DVERSE053 | Error | [Derive] calls unanalyzable code (follow same-assembly static helpers, whitelist trivially pure framework surface, error otherwise) |
| DVERSE071 | Error | [Rollup] child has multiple lookups to the parent; set Via |
| DVERSE072 | Error | [Rollup] outside the supported subset |
Dverse.Registration
| Rule | Severity | Meaning |
|---|---|---|
| DVERSE001 | Error | Invalid stage/mode combination (async outside PostOperation) |
| DVERSE002 | Error | Pre-image declared on Create |
| DVERSE003 | Error | Filtering on a message that does not support it |
| DVERSE004 | Error | Duplicate step key |
| DVERSE011 | Error | Step entity type is not a dverse model class |
| DVERSE012 | Error | Unresolvable column reference in Filtering/[Image] |
| DVERSE013 | Error | Handler must take a single IStepContext<TEntity> parameter |
| DVERSE014 | Error | Invalid custom API handler signature |
| DVERSE015 | Error | Unsupported custom API parameter type |
| DVERSE017 | Error | Empty entity logical name in the string-entity [Step] form |
| DVERSE018 | Error | Filtering on a global (entity-less) step |
| DVERSE019 | Error | Image on a global (entity-less) step |
| DVERSE021 | Error | Image escapes provable analysis; declare [Image(...)] |
| DVERSE022 | Error | Bound entity escapes provable analysis; declare [Fetch(...)] |
| DVERSE023 | Error | [Fetch] on a method without a bound entity (not a [CustomApi] handler with IApiContext<T>) |
| DVERSE024 | Error | Duplicate step name (a Name override collides with another step's name, or mimics the reserved 'dverse: {key}' template of a different key) |
| DVERSE025 | Error | Conflicting step images (more than one [Image] of a kind, or a duplicate image alias on one step) |
| DVERSE026 | Error | RunAsUser is not a GUID (expected the systemuser id to impersonate) |
| DVERSE027 | Error | Step Id pin is not a GUID |
| DVERSE028 | Error | Optional<T> on a custom API response property (only request parameters can be caller-omitted) |
| DVERSE032 | Error | Context member invalid for the step's message/stage (post-image outside PostOperation; Query outside RetrieveMultiple pre-stages) |
| DVERSE061 | Error | Step config parameter type is not a JSON-bindable record |
| DVERSE063 | Error | Invalid step config parameter shape |
| DVERSE081 | Error | [WorkflowActivity] type is not a concrete, non-generic System.Activities.CodeActivity |