Documentation
¶
Overview ¶
Package policyengine evaluates workspace and enterprise policy rules.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Action ¶
type Action struct {
Kind ActionKind `json:"kind"`
Reason string `json:"reason,omitempty"`
RecoveryScenario string `json:"recovery_scenario,omitempty"`
Commands []string `json:"commands,omitempty"`
}
type ActionKind ¶
type ActionKind string
const ( ActionMergeToDev ActionKind = "merge_to_dev" ActionMergeForward ActionKind = "merge_forward" ActionRecoverOnce ActionKind = "recover_once" ActionEscalate ActionKind = "escalate" ActionCloseoutLane ActionKind = "closeout_lane" ActionCleanupSession ActionKind = "cleanup_session" ActionBlock ActionKind = "block" )
type DecisionEvent ¶
type DecisionEvent struct {
LaneID string `json:"lane_id"`
RuleID string `json:"rule_id"`
Priority int `json:"priority"`
Kind DecisionKind `json:"kind"`
Action ActionKind `json:"action"`
Explanation string `json:"explanation"`
CreatedAt time.Time `json:"created_at"`
}
type DecisionKind ¶
type DecisionKind string
const ( DecisionMerge DecisionKind = "merge" DecisionRecover DecisionKind = "recover" DecisionEscalate DecisionKind = "escalate" DecisionCloseout DecisionKind = "closeout" DecisionCleanup DecisionKind = "cleanup" DecisionBlock DecisionKind = "block" )
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
func DefaultEngine ¶
func DefaultEngine() Engine
func (Engine) Evaluate ¶
func (e Engine) Evaluate(ctx LaneContext) Evaluation
type Evaluation ¶
type Evaluation struct {
Kind string `json:"kind"`
Context LaneContext `json:"context"`
Actions []Action `json:"actions"`
Events []DecisionEvent `json:"events"`
BlockedHandoff *PolicyBlockedHandoff `json:"blocked_handoff,omitempty"`
}
type FallbackStep ¶
type FallbackStep struct {
Kind string `json:"kind"`
Description string `json:"description"`
Commands []string `json:"commands,omitempty"`
RequiresApproval bool `json:"requires_approval,omitempty"`
}
FallbackStep describes one safe next step after a policy block.
type LaneContext ¶
type LaneContext struct {
LaneID string `json:"lane_id"`
GreenLevel int `json:"green_level"`
GreenContractSatisfied bool `json:"green_contract_satisfied"`
BranchStatus string `json:"branch_status,omitempty"`
BranchBehind int `json:"branch_behind,omitempty"`
VerificationBlocked bool `json:"verification_blocked"`
Blocker string `json:"blocker,omitempty"`
ReviewStatus string `json:"review_status,omitempty"`
DiffScope string `json:"diff_scope,omitempty"`
RequestedAction string `json:"requested_action,omitempty"`
Repository string `json:"repository,omitempty"`
Branch string `json:"branch,omitempty"`
Actor string `json:"actor,omitempty"`
ActorScope string `json:"actor_scope,omitempty"`
PolicySource string `json:"policy_source,omitempty"`
PolicyBlockReason string `json:"policy_block_reason,omitempty"`
Completed bool `json:"completed"`
RetryCount int `json:"retry_count"`
RetryLimit int `json:"retry_limit"`
}
func NormalizeContext ¶
func NormalizeContext(ctx LaneContext) LaneContext
type PolicyBlockedHandoff ¶
type PolicyBlockedHandoff struct {
Kind string `json:"kind"`
Status string `json:"status"`
Reason string `json:"reason"`
PolicySource string `json:"policy_source"`
ActorScope string `json:"actor_scope"`
Actor string `json:"actor,omitempty"`
RequestedAction string `json:"requested_action"`
Repository string `json:"repository,omitempty"`
Branch string `json:"branch,omitempty"`
TechnicalFailure bool `json:"technical_failure"`
ApprovalRequired bool `json:"approval_required"`
Fallback []FallbackStep `json:"fallback"`
}
PolicyBlockedHandoff exposes a structured refusal plus safe execution path.
type Rule ¶
type Rule struct {
ID string
Priority int
When func(LaneContext) bool
Actions func(LaneContext) []Action
}
Click to show internal directories.
Click to hide internal directories.