Documentation
¶
Index ¶
- Constants
- Variables
- func RedactionRules() []string
- func ReleaseLanes() []string
- func ValidateProfile(profile string) error
- type AIAnalysisRef
- type Blocker
- type BlockerRuleRow
- type BlockerRules
- type ExecutionPayload
- type GateStatus
- type Index
- type JourneyPackRow
- type LaneCatalogRow
- type LanePolicy
- type LaneRow
- type LaneRunResult
- type LaneRunner
- type LaneRunnerFunc
- type LaneStatus
- type LaneVerdict
- type Options
- type OutputPaths
- type Plan
- type ProfilePolicy
- type RedactionState
- type RoadmapLane
- type RoadmapPayload
- type SetupGapClass
- type SetupGapRow
- type Severity
- type SiblingSpec
- type WorkspaceRef
Constants ¶
const ( PlanSchemaVersion = "qamesh.release_plan.v1" IndexSchemaVersion = "qamesh.release_index.v1" RoadmapSchemaVersion = "qamesh.release_roadmap.v1" BlockingMatrixVersion = "qamesh.release_blocking.v1" )
@AX:NOTE [AUTO] @AX:SPEC: SPEC-QAMESH-004: schema version strings are persisted in release plan, index, roadmap, and blocker matrix JSON.
Variables ¶
var ( ErrInvalidProfile = errors.New("invalid qa release profile") ErrReleaseBlocked = errors.New("qa release blocked") )
Functions ¶
func RedactionRules ¶
func RedactionRules() []string
@AX:NOTE [AUTO] @AX:SPEC: SPEC-QAMESH-004: redaction rule labels must match command-preview masking behavior and JSON contract expectations.
func ReleaseLanes ¶
func ReleaseLanes() []string
@AX:ANCHOR [AUTO] @AX:SPEC: SPEC-QAMESH-004: canonical release lane IDs and order drive plan, execution, roadmap, and tests. @AX:REASON: BuildPlan, Execute, Roadmap, and release guidance expect these lane IDs and ordering to remain stable.
func ValidateProfile ¶
Types ¶
type AIAnalysisRef ¶
type BlockerRuleRow ¶
type BlockerRuleRow struct {
LanePolicy LanePolicy `json:"lane_policy"`
LaneStatus string `json:"lane_status"`
SetupGapClass string `json:"setup_gap_class"`
Severity string `json:"severity"`
LaneVerdict LaneVerdict `json:"lane_verdict"`
GateEffect string `json:"gate_effect"`
}
type BlockerRules ¶
type BlockerRules struct {
Profile string `json:"profile"`
MustLanes []string `json:"must_lanes"`
OptionalLanes []string `json:"optional_lanes"`
DeferredLanes []string `json:"deferred_lanes"`
SeverityOrder []Severity `json:"severity_order"`
MatrixVersion string `json:"matrix_version"`
RuleRows []BlockerRuleRow `json:"rule_rows"`
}
func BlockerRulesForProfile ¶
func BlockerRulesForProfile(profile string) (BlockerRules, error)
type ExecutionPayload ¶
func Execute ¶
func Execute(opts Options) (ExecutionPayload, error)
@AX:ANCHOR [AUTO] @AX:SPEC: SPEC-QAMESH-004: release gate execution aggregates deterministic lane rows into the persisted release index. @AX:REASON: CLI callers and tests depend on fail-closed blocking, skipped-after-block behavior, redaction merging, and AI advisory refs in one contract. @AX:WARN [AUTO] @AX:SPEC: SPEC-QAMESH-004: release execution has 8+ branch points across preflight, lane selection, redaction, and failure status. @AX:REASON: Fail-closed ordering, block short-circuiting, and sanitized-payload persistence can regress if branches are reordered.
type GateStatus ¶
type GateStatus string
const ( GateStatusPassed GateStatus = "passed" GateStatusWarn GateStatus = "warn" GateStatusBlocked GateStatus = "blocked" )
func AggregateGateStatus ¶
func AggregateGateStatus(rows []LaneRow) GateStatus
type Index ¶
type Index struct {
SchemaVersion string `json:"schema_version"`
ReleaseID string `json:"release_id"`
Workspace WorkspaceRef `json:"workspace"`
Profile string `json:"profile"`
StartedAt string `json:"started_at"`
EndedAt string `json:"ended_at"`
Status GateStatus `json:"status"`
SelectedLanes []string `json:"selected_lanes"`
LaneRows []LaneRow `json:"lane_rows"`
SetupGaps []SetupGapRow `json:"setup_gaps"`
Blockers []Blocker `json:"blockers"`
OutputPaths OutputPaths `json:"output_paths"`
SiblingSpecs []SiblingSpec `json:"sibling_specs"`
FeedbackRefs []string `json:"feedback_refs"`
AIAnalysisRefs []AIAnalysisRef `json:"ai_analysis_refs"`
DeterministicAuthority bool `json:"deterministic_authority"`
RedactionStatus RedactionState `json:"redaction_status"`
SourceRefs []string `json:"source_refs"`
}
type JourneyPackRow ¶
type JourneyPackRow struct {
Lane string `json:"lane"`
JourneyID string `json:"journey_id"`
Adapter string `json:"adapter"`
Source string `json:"source"`
CommandDeclared bool `json:"command_declared"`
CommandPreview string `json:"command_preview"`
CommandPreviewRedacted bool `json:"command_preview_redacted"`
Executable bool `json:"executable"`
SourceSpec string `json:"source_spec"`
AcceptanceRefs []string `json:"acceptance_refs"`
InventedCommand bool `json:"invented_command"`
}
type LaneCatalogRow ¶
type LaneCatalogRow struct {
Lane string `json:"lane"`
OwnerSpec string `json:"owner_spec"`
OwnerRepo string `json:"owner_repo"`
ReadinessContract string `json:"readiness_contract"`
ImplementationState string `json:"implementation_state"`
SupportedProfiles []string `json:"supported_profiles"`
}
func LaneCatalog ¶
func LaneCatalog() []LaneCatalogRow
type LanePolicy ¶
type LanePolicy string
const ( LanePolicyMust LanePolicy = "must" LanePolicyOptional LanePolicy = "optional" LanePolicyDeferred LanePolicy = "deferred" )
type LaneRow ¶
type LaneRow struct {
Lane string `json:"lane"`
LanePolicy LanePolicy `json:"lane_policy"`
OwnerSpec string `json:"owner_spec"`
OwnerRepo string `json:"owner_repo"`
Status LaneStatus `json:"status"`
SetupGapClass SetupGapClass `json:"setup_gap_class"`
Severity Severity `json:"severity"`
LaneVerdict LaneVerdict `json:"lane_verdict"`
RunIndexPath string `json:"run_index_path"`
ManifestPaths []string `json:"manifest_paths"`
FeedbackRefs []string `json:"feedback_refs"`
Blockers []Blocker `json:"blockers"`
SkippedReason string `json:"skipped_reason"`
DeterministicAuthority bool `json:"deterministic_authority"`
}
func NormalizeLaneRow ¶
@AX:ANCHOR [AUTO] @AX:SPEC: SPEC-QAMESH-004: lane row normalization is shared by planning, execution, and blocker matrix tests. @AX:REASON: Callers depend on a single verdict source for setup gaps, failed lanes, deferred lanes, and invalid row contracts. @AX:WARN [AUTO] @AX:SPEC: SPEC-QAMESH-004: release lane normalization has 8+ guard branches and intentionally fails closed. @AX:REASON: Blocking correctness depends on preserving setup-gap precedence, severity defaults, invalid-row quarantine, and blocker injection order.
type LaneRunResult ¶
type LaneRunResult struct {
Status LaneStatus `json:"status"`
RunIndexPath string `json:"run_index_path,omitempty"`
ManifestPaths []string `json:"manifest_paths,omitempty"`
FeedbackRefs []string `json:"feedback_refs,omitempty"`
AIAnalysisRefs []AIAnalysisRef `json:"ai_analysis_refs,omitempty"`
RedactionStatus RedactionState `json:"redaction_status,omitempty"`
}
type LaneRunner ¶
type LaneRunner interface {
RunLane(opts Options, lane string) (LaneRunResult, error)
}
type LaneRunnerFunc ¶
type LaneRunnerFunc func(opts Options, lane string) (LaneRunResult, error)
func (LaneRunnerFunc) RunLane ¶
func (fn LaneRunnerFunc) RunLane(opts Options, lane string) (LaneRunResult, error)
type LaneStatus ¶
type LaneStatus string
const ( LaneStatusPassed LaneStatus = "passed" LaneStatusWarn LaneStatus = "warn" LaneStatusWarning LaneStatus = "warning" LaneStatusFailed LaneStatus = "failed" LaneStatusBlocked LaneStatus = "blocked" LaneStatusSetupGap LaneStatus = "setup_gap" LaneStatusDeferred LaneStatus = "deferred" LaneStatusSkipped LaneStatus = "skipped" )
type LaneVerdict ¶
type LaneVerdict string
const ( LaneVerdictPass LaneVerdict = "pass" LaneVerdictWarn LaneVerdict = "warn" LaneVerdictBlock LaneVerdict = "block" )
type OutputPaths ¶
type Plan ¶
type Plan struct {
SchemaVersion string `json:"schema_version"`
Command string `json:"command"`
DryRun bool `json:"dry_run"`
Profile string `json:"profile"`
LaneCatalog []LaneCatalogRow `json:"lane_catalog"`
SelectedLanes []string `json:"selected_lanes"`
JourneyPacks []JourneyPackRow `json:"journey_packs"`
SetupGaps []SetupGapRow `json:"setup_gaps"`
BlockerRules BlockerRules `json:"blocker_rules"`
OutputPaths OutputPaths `json:"output_paths"`
SiblingSpecs []SiblingSpec `json:"sibling_specs"`
RedactionStatus RedactionState `json:"redaction_status"`
RedactionRules []string `json:"redaction_rules"`
SideEffects []string `json:"side_effects"`
}
@AX:ANCHOR [AUTO] @AX:SPEC: SPEC-QAMESH-004: release payload structs form the CLI JSON output contract. @AX:REASON: auto qa release, tests, prompt guidance, and downstream evidence tooling consume these field names and versioned envelopes.
func BuildPlan ¶
@AX:ANCHOR [AUTO] @AX:SPEC: SPEC-QAMESH-004: dry-run release plan is the side-effect-free contract for gate inspection. @AX:REASON: CLI dry-run, release execution preflight, and template guidance depend on setup gaps, blocker matrix, redaction, and sibling SPEC fields staying aligned.
type ProfilePolicy ¶
type RedactionState ¶
type RedactionState string
const ( RedactionClean RedactionState = "clean" RedactionRedacted RedactionState = "redacted" RedactionBlocked RedactionState = "blocked" )
type RoadmapLane ¶
type RoadmapLane struct {
Lane string `json:"lane"`
OwnerSpec string `json:"owner_spec"`
OwnerRepo string `json:"owner_repo"`
ImplementationState string `json:"implementation_state"`
SiblingDependency string `json:"sibling_dependency"`
ReadinessContract string `json:"readiness_contract"`
LanePolicyByProfile map[string]LanePolicy `json:"lane_policy_by_profile"`
LaunchBlockingPolicy map[string]LanePolicy `json:"launch_blocking_policy"`
}
type RoadmapPayload ¶
type RoadmapPayload struct {
SchemaVersion string `json:"schema_version"`
GeneratedAt string `json:"generated_at"`
Lanes []RoadmapLane `json:"lanes"`
SiblingSpecs []SiblingSpec `json:"sibling_specs"`
Profiles map[string]ProfilePolicy `json:"profiles"`
}
func Roadmap ¶
func Roadmap() RoadmapPayload
@AX:NOTE [AUTO] @AX:SPEC: SPEC-QAMESH-004: roadmap payload is the governance surface for release lanes and sibling SPEC dependencies. @AX:REASON: downgraded from ANCHOR during sync; grep fan-in is below threshold, but CLI --roadmap and roadmap tests still rely on this contract.
func RoadmapAt ¶
func RoadmapAt(generatedAt string) RoadmapPayload
type SetupGapClass ¶
type SetupGapClass string
const ( SetupGapNone SetupGapClass = "none" SetupGapMissingJourneyPack SetupGapClass = "missing-journey-pack" SetupGapCanaryTemplate SetupGapClass = "canary-template" SetupGapEnvMissing SetupGapClass = "env-missing" SetupGapSiblingSpecPending SetupGapClass = "sibling-spec-pending" SetupGapPolicyForbidden SetupGapClass = "policy-forbidden" SetupGapUnsafeCommand SetupGapClass = "unsafe-command" )
type SetupGapRow ¶
type SetupGapRow struct {
Lane string `json:"lane"`
SetupGapClass SetupGapClass `json:"setup_gap_class"`
Reason string `json:"reason"`
Severity Severity `json:"severity"`
Blocking bool `json:"blocking"`
OwnerSpec string `json:"owner_spec"`
OwnerRepo string `json:"owner_repo"`
InventedCommand bool `json:"invented_command"`
}
type Severity ¶
type Severity string
func SeverityOrder ¶
func SeverityOrder() []Severity
@AX:NOTE [AUTO] @AX:SPEC: SPEC-QAMESH-004: severity ordering defines threshold comparisons in the release blocker matrix.
type SiblingSpec ¶
type SiblingSpec struct {
SpecID string `json:"spec_id"`
OwnerRepo string `json:"owner_repo"`
Lanes []string `json:"lanes"`
Status string `json:"status"`
Relationship string `json:"relationship"`
}
func SiblingSpecs ¶
func SiblingSpecs() []SiblingSpec