Prefix: rejection_.
The legacy walk’s error verdicts, in the sealed rejection hierarchy’s own vocabulary. Transitional by construction: each kind of verdict moves out as its detection is rebuilt store-native, and the family empties as that migration completes.
Where to start
- rejection_validation_error
-
The rejection residue: one legacy-walk validation error per row, transcribed in the sealed Rejection hierarchy’s own spellings by the residue loader (the exhaustive-switch site beside the report’s producer), from the walk’s error stream and never the assembled report, so a detection-minted family is structurally absent from this relation’s input.
How this family meets the others
store_-
1 foreign key from this family’s rows into that one.
Why the name is right
The legacy walk’s verdicts, transcribed in the sealed Rejection hierarchy’s own spellings (kind, variant, lsp_code, attempt_kind and stub_key are all that hierarchy’s words) and carrying the same retirement clock as walk_: transitional by construction, drained family by family as detections migrate store-native. Deliberately not validator_, both because that names a role and because the validation phase outlives the hierarchy and may one day want its own name.
rejection_validation_error
The rejection residue: one legacy-walk validation error per row, transcribed in the sealed Rejection hierarchy’s own spellings by the residue loader (the exhaustive-switch site beside the report’s producer), from the walk’s error stream and never the assembled report, so a detection-minted family is structurally absent from this relation’s input. Transitional with a drainage mechanism: a rejection family that acquires its own derivation view arm (intent_authored_claim_conflict is the first) leaves this relation, the drainage declaration in the residue loader’s test enumerates what still routes through, and the relation retires with the sealed hierarchy whose vocabulary it transcribes. Rows replace wholesale per snapshot at the dev session’s cadence; a batch run’s partition stays empty.
Primary key: (graph_name, ordinal). Foreign key: (graph_name) references store_graph (graph_name). Check: "KIND" IN('AUTHOR_ERROR', 'INVALID_SCHEMA', 'DEFERRED').
graph_name(CHARACTER VARYING, not null)-
the owning graph’s partition, anchored by store_graph; the leading key dimension that keeps one workspace’s graphs apart
ordinal(INTEGER, not null)-
emit order in the walk’s error stream, 0-based; the key’s tie-breaker, covering coordinate-less and location-less rows on the javac_diagnostic key convention
kind(CHARACTER VARYING, not null)-
RejectionKind.name(): the author-error / invalid-schema / deferred fork; a closed CHECK because the model owns this small projection
variant(CHARACTER VARYING, not null)-
the rejection leaf’s class name with its package stripped, enclosing classes kept (Rejection.AuthorError.UnknownName, UpdateRowsError.NoUniqueKeyCoverage): plain simple names collide across sub-hierarchies and would fuse two families in the dimension that exists to split them. An open column, since a CHECK enumerating sealed-hierarchy leaves would be a hand-maintained second copy of a taxonomy the compiler already enforces
lsp_code(CHARACTER VARYING, nullable)-
the stable machine-readable code the leaf declares through its sub-seal’s lspCode(), NULL for the deliberately codeless leaves; the loader’s explicit match over the code-bearing sub-seals fills it, and the membership-binding test pins both readers of the hierarchy to one declaration set
attempt_kind(CHARACTER VARYING, nullable)-
AttemptKind.name() on UnknownName rows (which lookup space the name resolution failed in), NULL on every other variant; open for the same reason as variant
attempt(CHARACTER VARYING, nullable)-
the name the author wrote, on UnknownName rows; NULL elsewhere
stub_key(CHARACTER VARYING, nullable)-
the Deferred row’s stub anchor: the stubbed GraphitronField leaf’s class name with its package stripped (enclosing class kept); NULL on non-deferred rows and on the inline-defer sites whose StubKey names no leaf class, whose rows cluster on message instead
type_name(CHARACTER VARYING, nullable)-
the coordinate’s owning type at the DDL’s universal grain; NULL on schema-wide rows. The loader is the one site decoding ValidationError’s coordinate convention (forType / forField) into this pair; when the sealed Coordinate component lands, the loader reads a switch instead and no column changes
field_name(CHARACTER VARYING, nullable)-
the coordinate’s field name; NULL on type-level and schema-wide rows, the universal grain’s absent case
message(CHARACTER VARYING, not null)-
the report’s rendered message, coordinate prefix included; a transcribed fact because the walk authored it, but display material: never a dimension, never an agreement anchor, and expected to change text as detections take over rejection families
file(CHARACTER VARYING, nullable)-
path of the SDL source carrying the location, as store_source spells a schema file and java_file.file a compiled one: the loader writes the location’s source name as it reads it, so nothing in this stratum computes a spelling and the file dimension cannot fork on one. A consumer whose protocol names a document by URI renders one at its own boundary. NULL where the error carries no located source
source_line(INTEGER, nullable)-
source line of the error’s location, 1-based; NULL where unlocated
source_column(INTEGER, nullable)-
source column of the error’s location, 1-based; NULL where unlocated
rejection_validation_error_directive
The ordered decode of a DirectiveConflict row’s directives list, one row per named directive in the rejection’s own order (the DDL’s standing pattern for multi-valued decodes). A residue-only mechanism: the store-native pilot’s claiming directives are rows on the claim views already, under the violated coordinate. Nothing joins these rows into a scalar on the read surface, which carries no directive column at all; a consumer asking which findings involve one directive joins this relation for the residue arm and the claim views for the pilot, which answers membership where a joined set could only have answered equality.
Primary key: (graph_name, error_ordinal, position). Foreign key: (graph_name, error_ordinal) references rejection_validation_error (graph_name, ordinal).
graph_name(CHARACTER VARYING, not null)-
the owning graph’s partition, carried through the parent error row
error_ordinal(INTEGER, not null)-
the parent rejection_validation_error row’s ordinal
position(INTEGER, not null)-
0-based position in the rejection’s own directives list; order is the minted fact, the sorted render is a projection
directive(CHARACTER VARYING, not null)-
one directive name, without the leading @, exactly as the rejection lists it; every listed directive is applied at the rejection’s own declaration per DirectiveConflict’s contract