ID |
|
|---|---|
Status |
Backlog |
Bucket |
architecture |
Priority |
5 |
Theme |
diagnostics |
Created |
2026-08-03 |
Updated |
2026-08-06 |
Sealed Coordinate component on ValidationError
ValidationError.coordinate is a nullable String whose grain consumers re-derive by dot-splitting.
ValidationError.forType and forField know the grain at construction and collapse it to a string
plus null for schema-wide, and then WatchErrorFormatter reconstructs it with isTypeLevel /
typeOf predicates. A third fact about the same slot, that warnings carry no coordinate so a
coordinate filter excludes them by construction, lives only as a comment in DiagnosticsTool. A
sealed Coordinate { SchemaWide | TypeLevel | FieldLevel } component would make the grain a read
slot instead of a parse, delete the formatter’s predicates, and turn the warnings invariant into a
type fact.
Carved out of the aggregated-diagnostics MCP work at Spec review, which surfaced the lift but does
not depend on it: with coordinate still a string, that item’s coordinate-reading dimensions do the
dot-split in exactly one extractor, and one site is not the duplication this lift exists to remove.
Blast radius, measured at carve-out (re-measure at pickup): WatchErrorFormatter (the isTypeLevel
/ typeOf deletes), DiagnosticsTool’s filter comparison and wire `putIfNotNull, and six
graphitron test files asserting on coordinate strings (GraphitronSchemaBuilderTest,
ConditionCommandsPipelineTest, ConnectionTypeValidationTest, TenantScopeValidationTest,
NodeIdPipelineTest, and the typed-rejection pipeline test). Spans graphitron,
graphitron-maven-plugin, and graphitron-mcp.
Fact-base note (2026-08-06)
Sequence against the store’s coordinate key columns so the lift happens once: violations become located rows keyed by natural coordinate columns, and the sealed Coordinate lift should be specified as the Java view over that key shape rather than an independent record change.
Context and the whole-board picture: roadmap/audits/2026-08-06-fact-base-impact-sweep.md.