Define processing outcomes and failure contracts

This commit is contained in:
2026-09-24 17:01:19 +00:00
parent 8ffbf41b89
commit 7dc1be5a08
8 changed files with 221 additions and 43 deletions

View File

@@ -8,8 +8,8 @@ import (
"gitea.maximumdirect.net/eric/audita/internal/core/config"
"gitea.maximumdirect.net/eric/audita/internal/core/modulecatalog"
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
"gitea.maximumdirect.net/eric/audita/internal/framework/outcomes"
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
stagewarnings "gitea.maximumdirect.net/eric/audita/internal/framework/warnings"
)
const (
@@ -43,18 +43,29 @@ type Request struct {
// Decision is one validator decision for one proposal index.
type Decision struct {
ProposalIndex int `json:"proposal_index"`
Approved bool `json:"approved"`
ReasonCode string `json:"reason_code"`
Message string `json:"message"`
DiagnosticArtifactPath string `json:"diagnostic_artifact_path,omitempty"`
ProposalIndex int `json:"proposal_index"`
Approved bool `json:"approved"`
Disposition DecisionDisposition `json:"disposition"`
ReasonCode string `json:"reason_code"`
Message string `json:"message"`
DiagnosticArtifactPath string `json:"diagnostic_artifact_path,omitempty"`
}
// DecisionDisposition separates normal editorial rejection from a candidate
// excluded because its model operation could not provide a trustworthy decision.
type DecisionDisposition string
const (
DispositionApproved DecisionDisposition = "approved"
DispositionRejected DecisionDisposition = "rejected"
DispositionUnavailable DecisionDisposition = "unavailable"
)
// Result is one validator output containing exactly one decision per proposal index.
type Result struct {
ValidatorName string `json:"validator_name"`
Decisions []Decision `json:"decisions"`
Warnings []stagewarnings.StageWarning `json:"warnings,omitempty"`
ValidatorName string `json:"validator_name"`
Decisions []Decision `json:"decisions"`
Operations []outcomes.Operation `json:"operations,omitempty"`
}
type InteractionDiagnosticsWriter interface {