Add validator chain provenance
This commit is contained in:
@@ -82,6 +82,14 @@ sanitizing the lane ID:
|
||||
"normalizer": "noop"
|
||||
}
|
||||
],
|
||||
"validator_chains": [
|
||||
{
|
||||
"stage": "extract",
|
||||
"lane_id": "spells",
|
||||
"module_key": "dnd/spells",
|
||||
"validators": []
|
||||
}
|
||||
],
|
||||
"validation_status": "approved",
|
||||
"started_at": "2026-01-01T00:00:00Z",
|
||||
"completed_at": "2026-01-01T00:00:01Z"
|
||||
@@ -103,6 +111,11 @@ references.
|
||||
`validation_status` is `approved` when no raw outputs were rejected and
|
||||
`rejected` when one or more raw outputs were rejected.
|
||||
|
||||
`validator_chains` records the resolved validator chain for each validation
|
||||
point. Entries include stage, lane ID when applicable, module key, and validators
|
||||
with key and execution class. Empty chains are recorded with an empty
|
||||
`validators` array.
|
||||
|
||||
`normalized_outputs` summarizes each normalized lane output without embedding
|
||||
payload bytes. Entries include lane ID, normalizer module key, source ID, media
|
||||
type, and response schema provenance where available.
|
||||
|
||||
@@ -3,17 +3,15 @@
|
||||
This roadmap defines the target state for making validation a first-class,
|
||||
composable pipeline concern.
|
||||
|
||||
Current pipeline behavior is raw-output based. The runner can execute
|
||||
`contracts.RawValidator` chains from `pipeline.RawValidationRegistry` for
|
||||
`chunk`, `extract`, `merge`, and `normalize` outputs. Empty chains approve by
|
||||
Current pipeline behavior is raw-output based. The runner validates `chunk`,
|
||||
`extract`, `merge`, and `normalize` outputs through `contracts.Validator`
|
||||
chains resolved from `pipeline.ValidatorChainRegistry`. Empty chains approve by
|
||||
default, validator rejection records a rejected raw output, and rejected output
|
||||
does not pass to the next stage. Production currently registers no raw
|
||||
validators, and non-empty pipeline-configured validator lists are rejected so
|
||||
they cannot appear in manifests without executing.
|
||||
does not pass to the next stage. Production currently registers no validators,
|
||||
and non-empty pipeline-configured validator lists are rejected until
|
||||
stage-scoped override syntax is implemented.
|
||||
|
||||
Legacy candidate validator contracts and D&D spell validators still exist under
|
||||
`internal/modules/extract/dnd/spells`, but they are not part of the current
|
||||
runner path. The desired end state is that validator implementations, validator
|
||||
The desired end state is that validator implementations, validator
|
||||
registration, and default module-to-validator mappings are explicit, reviewable,
|
||||
and independent of concrete module packages.
|
||||
|
||||
@@ -21,9 +19,8 @@ and independent of concrete module packages.
|
||||
|
||||
- Move artifact and module-output validation behavior out of `internal/modules`
|
||||
and into `internal/validators`.
|
||||
- Retire or replace the legacy candidate-oriented `contracts.Validator`,
|
||||
`ValidationRequest`, and `ValidationResult` path after equivalent raw-output
|
||||
validators exist.
|
||||
- Keep the raw module-output `contracts.Validator`, `ValidationRequest`, and
|
||||
`ValidationResult` path as the single framework validator contract.
|
||||
- Keep each validator in its own package.
|
||||
- Mirror the stage and domain shape of `internal/modules` where a validator is
|
||||
module-specific.
|
||||
@@ -261,11 +258,10 @@ The validator framework should support validation of outputs from `chunk`,
|
||||
enough for stage-specific validators to inspect the output they care about while
|
||||
ignoring irrelevant fields.
|
||||
|
||||
The current `contracts.RawValidationRequest` is the right starting point. It
|
||||
already carries stage, lane, module, source, source and chunk provenance,
|
||||
response schema metadata, raw payload, and run metadata. The final contract
|
||||
should evolve from that raw-output shape rather than from the legacy
|
||||
artifact-candidate `ValidationRequest`.
|
||||
The current `contracts.ValidationRequest` carries stage, lane, module, source,
|
||||
source and chunk provenance, response schema metadata, raw payload, and run
|
||||
metadata. The final contract should continue evolving from that raw-output
|
||||
shape.
|
||||
|
||||
Additional fields needed for the full validator system include:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user