refactor: merge cycle policy into semantic validation layer

Wire SemanticValidator into the production validator pipeline and
consolidate cycle-policy types under core:validation.

- Add SemanticValidator(CycleExitRule(requirePolicyForCycles=false))
  to the prod ValidationPipeline (no-op default, preserves behavior)
- Move CyclePolicy/Binding/Signature/Factory from core:transitions.policy
  to core:validation.policy (validation already owns ValidationContext)
- Rename CyclePolicyBindingRule -> CycleExitRule (issue code unchanged)
- Delete dead CyclePolicyResolver + PolicyValidation
This commit is contained in:
2026-05-30 12:57:01 +04:00
parent d68c76ee3c
commit 32d15de034
10 changed files with 52 additions and 45 deletions
@@ -35,6 +35,8 @@ import com.correx.core.tools.registry.ToolRegistry
import com.correx.core.transitions.resolution.DefaultTransitionResolver
import com.correx.core.validation.artifact.ArtifactPayloadValidator
import com.correx.core.validation.pipeline.ValidationPipeline
import com.correx.core.validation.semantic.SemanticValidator
import com.correx.core.validation.semantic.rules.CycleExitRule
import com.correx.infrastructure.InfrastructureModule
import com.correx.infrastructure.artifactscas.DefaultMaterializingArtifactWriter
import com.correx.infrastructure.inference.DefaultProviderRegistry
@@ -106,7 +108,16 @@ fun main() {
transitionResolver = DefaultTransitionResolver { condition, ctx -> condition.evaluate(ctx) },
contextPackBuilder = DefaultContextPackBuilder(DefaultContextCompressor()),
inferenceRouter = inferenceRouter,
validationPipeline = ValidationPipeline(validators = listOf(ArtifactPayloadValidator(artifactStore))),
validationPipeline = ValidationPipeline(
validators = listOf(
ArtifactPayloadValidator(artifactStore),
SemanticValidator(
rules = listOf(
CycleExitRule(requirePolicyForCycles = false),
),
),
),
),
approvalEngine = approvalEngine,
riskAssessor = DefaultRiskAssessor(),
promptResolver = { path -> InfrastructureModule.createPromptLoader().load(path) },