fix(validation): resolve F-007 artifact validator CAS-hash conflation

ArtifactPayloadValidator passed the logical slot name into the
content-hash-keyed CAS store, crashing every workflow with a typed
produces slot. Validator now reads payloads from a content map threaded
through ValidationContext (populated from the orchestrator's per-session
artifact cache across all stages) and no longer depends on ArtifactStore.

Also records the slot->CAS-hash mapping as a new ArtifactContentStoredEvent
(registered for serialization), emitted at both CAS write sites, so
artifact content is recoverable from CAS by hash after a cold start.
This commit is contained in:
2026-06-08 17:26:34 +04:00
parent 3f59faaa08
commit d518400b5f
7 changed files with 206 additions and 13 deletions
@@ -225,7 +225,7 @@ fun main() {
inferenceRouter = inferenceRouter,
validationPipeline = ValidationPipeline(
validators = listOf(
ArtifactPayloadValidator(artifactStore),
ArtifactPayloadValidator(),
SemanticValidator(
rules = listOf(
CycleExitRule(requirePolicyForCycles = false),