mavend: centralize action validation boundary (slice 4)

This commit is contained in:
2026-09-06 12:53:54 +04:00
parent 6a402bf556
commit 356766bce1
32 changed files with 2061 additions and 178 deletions
+37
View File
@@ -52,3 +52,40 @@ func noteActionResolution(ctx context.Context, source, fn string, resolved bool)
Reason: reason,
})
}
// noteActionValidation records the structural validation outcome in the
// decision trace. Three outcomes: unresolved (matcher miss), valid
// (structurally admissible), or invalid (structurally malformed).
func noteActionValidation(ctx context.Context, v router.ActionValidationResult) {
rec := decision.From(ctx)
if rec == nil {
return
}
switch {
case v.Unresolved:
rec.Note(decision.Claim{
Stage: decision.StageAction,
Claimant: "action-validation",
Outcome: decision.Declined,
Reason: "unresolved",
})
case v.Valid:
rec.Note(decision.Claim{
Stage: decision.StageAction,
Claimant: "action-validation",
Outcome: decision.Won,
Reason: "valid",
})
default:
reason := "invalid"
if len(v.Issues) > 0 {
reason = "invalid:" + v.Issues[0].Reason
}
rec.Note(decision.Claim{
Stage: decision.StageAction,
Claimant: "action-validation",
Outcome: decision.Declined,
Reason: reason,
})
}
}