requirement

package
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplicabilityIntersects added in v0.0.9

func ApplicabilityIntersects(applicability, scope []string) bool

ApplicabilityIntersects returns true if any value in applicability matches any value in scope.

Types

type ApplicabilityGroupInfo added in v0.0.6

type ApplicabilityGroupInfo struct {
	ID             string   `json:"id"`
	Title          string   `json:"title"`
	Description    string   `json:"description"`
	RequirementIDs []string `json:"requirement_ids"`
}

ApplicabilityGroupInfo describes an applicability group with its member requirements.

type ApplicabilityGroupResult added in v0.0.6

type ApplicabilityGroupResult struct {
	Groups    []ApplicabilityGroupInfo `json:"groups"`
	Ungrouped []string                 `json:"ungrouped"`
}

ApplicabilityGroupResult maps applicability group definitions to their member requirements.

func CollectApplicabilityGroups added in v0.0.6

func CollectApplicabilityGroups(rp *ResolvedPolicy, filterReqIDs []string) *ApplicabilityGroupResult

CollectApplicabilityGroups builds a group-to-requirements mapping from a resolved policy's catalogs. If filterReqIDs is non-empty, only groups containing at least one matching requirement are returned.

type ArtifactSet

type ArtifactSet struct {
	Catalogs map[string]*gemara.ControlCatalog
	Policies map[string]*gemara.Policy
	Guidance map[string]*gemara.GuidanceCatalog
	Mappings map[string]*gemara.MappingDocument
}

ArtifactSet holds classified artifacts keyed by metadata.id.

func Classify

func Classify(data ...[]byte) (*ArtifactSet, error)

Classify detects and unmarshals raw artifact data into an ArtifactSet.

func ClassifyBundle

func ClassifyBundle(b *bundle.Bundle) (*ArtifactSet, error)

ClassifyBundle classifies a bundle's source and imports into an ArtifactSet.

func NewArtifactSet

func NewArtifactSet() *ArtifactSet

NewArtifactSet returns an initialized ArtifactSet.

func (*ArtifactSet) Merge

func (as *ArtifactSet) Merge(other *ArtifactSet) error

Merge combines another ArtifactSet into this one. Returns an error if any artifact ID appears in both sets.

type AssessmentRequirementInfo added in v0.0.9

type AssessmentRequirementInfo struct {
	ID            string            `json:"id"`
	ControlID     string            `json:"control_id"`
	Text          string            `json:"text"`
	Applicability []string          `json:"applicability,omitempty"`
	Parameters    map[string]string `json:"parameters,omitempty"`
}

AssessmentRequirementInfo contains assessment requirement data with parameters.

func ExtractAssessmentRequirements added in v0.0.9

func ExtractAssessmentRequirements(
	rp *ResolvedPolicy,
	filterControlID string,
	filterScope []string,
) []AssessmentRequirementInfo

ExtractAssessmentRequirements extracts requirements from a resolved policy graph with optional filtering by control ID and applicability scope.

type AssessmentSummary added in v0.0.9

type AssessmentSummary struct {
	TotalControls     int `json:"total_controls"`
	TotalRequirements int `json:"total_requirements"`
}

AssessmentSummary contains aggregate counts across controls.

type ControlSummary added in v0.0.9

type ControlSummary struct {
	ID               string `json:"id"`
	Title            string `json:"title"`
	RequirementCount int    `json:"requirement_count"`
}

ControlSummary contains per-control metadata and requirement count.

type DeltaReport added in v0.0.4

type DeltaReport struct {
	PolicyID         string                `json:"policy"`
	CatalogsCompared []string              `json:"catalogs_compared"`
	Comparisons      []ParameterComparison `json:"comparisons"`
}

DeltaReport is the result of gathering parameter comparisons across a resolved policy.

func AnalyzeDelta added in v0.0.4

func AnalyzeDelta(rp *ResolvedPolicy, set *ArtifactSet) (*DeltaReport, error)

AnalyzeDelta gathers L3 parameter values alongside the L1/L2 requirement text they map to. Returns structured pairs for the caller to interpret — no verdicts or heuristics.

type EvaluationMethodInfo added in v0.0.6

type EvaluationMethodInfo struct {
	ID       string       `json:"id"`
	Mode     string       `json:"mode"`
	Executor ExecutorInfo `json:"executor,omitempty"`
}

EvaluationMethodInfo is a serializable summary of an AcceptedMethod.

type ExecutorInfo added in v0.0.6

type ExecutorInfo struct {
	ID   string `json:"id,omitempty"`
	Name string `json:"name,omitempty"`
}

ExecutorInfo is a serializable summary of an Actor.

type ParameterComparison added in v0.0.4

type ParameterComparison struct {
	// RequirementID is the assessment requirement this comparison targets (e.g. "CTL-TLS-001-AR1").
	RequirementID string `json:"requirement_id"`
	// Label is the parameter name from the policy's assessment plan (e.g. "tls_minimum_version").
	Label string `json:"label"`
	// PolicyValue is the concrete value the L3 policy sets for this parameter.
	PolicyValue string `json:"policy_value"`
	// PolicySource is the ID of the policy that provides the parameter value.
	PolicySource string `json:"policy_source"`
	// RequirementText is the L1/L2 assessment requirement text from the catalog.
	RequirementText string `json:"requirement_text"`
	// CatalogSource is the ID of the catalog that defines the requirement.
	CatalogSource string `json:"catalog_source"`
}

ParameterComparison pairs a structured L3 parameter with the L1/L2 requirement text it maps to. The caller interprets the relationship — the engine does not judge.

type ResolvedPolicy

type ResolvedPolicy struct {
	Policy           gemara.Policy
	ControlCatalogs  []gemara.ControlCatalog
	GuidanceCatalogs []gemara.GuidanceCatalog
	Unresolved       []string
	// contains filtered or unexported fields
}

ResolvedPolicy is a fully resolved policy with eagerly built indexes.

func ResolveFromCatalog added in v0.0.9

func ResolveFromCatalog(
	name string,
	cat *gemara.ControlCatalog,
) (*ResolvedPolicy, error)

ResolveFromCatalog wraps a bare ControlCatalog in a synthetic policy and resolves it. This allows callers to use catalog-oriented functions (such as ExtractAssessmentRequirements) against catalogs that are not part of an explicit policy.

func ResolvePolicy

func ResolvePolicy(policy gemara.Policy, set *ArtifactSet) (*ResolvedPolicy, error)

ResolvePolicy resolves a policy's imports against the artifact set.

func (*ResolvedPolicy) ControlByID added in v0.0.9

func (rp *ResolvedPolicy) ControlByID(controlID string) *gemara.Control

ControlByID returns the control with the given ID, or nil if not found.

func (*ResolvedPolicy) ControlCatalog

func (rp *ResolvedPolicy) ControlCatalog(id string) *gemara.ControlCatalog

ControlCatalog returns the resolved catalog with the given ID, or nil.

func (*ResolvedPolicy) ControlIDs

func (rp *ResolvedPolicy) ControlIDs() []string

ControlIDs returns all control IDs across resolved catalogs.

func (*ResolvedPolicy) ControlSummaries added in v0.0.9

func (rp *ResolvedPolicy) ControlSummaries(controlIDs []string, filterScope []string) (AssessmentSummary, []ControlSummary)

ControlSummaries computes per-control requirement counts for the given control IDs, optionally filtering by applicability scope. Controls with zero matching requirements are excluded from the result.

func (*ResolvedPolicy) GuidanceCatalog

func (rp *ResolvedPolicy) GuidanceCatalog(id string) *gemara.GuidanceCatalog

GuidanceCatalog returns the resolved guidance catalog with the given ID, or nil.

func (*ResolvedPolicy) ImportedGuidanceIDs added in v0.0.4

func (rp *ResolvedPolicy) ImportedGuidanceIDs() []string

ImportedGuidanceIDs returns the metadata IDs of guidance catalogs imported by this policy. Guidance catalogs loaded in the artifact set but not in this list are "under evaluation" — available for crosswalk but not mandated.

func (*ResolvedPolicy) ParametersForRequirement

func (rp *ResolvedPolicy) ParametersForRequirement(reqID string) []gemara.Parameter

ParametersForRequirement returns parameters from assessment plans for the given requirement ID.

func (*ResolvedPolicy) RequirementsForControl

func (rp *ResolvedPolicy) RequirementsForControl(controlID string) []gemara.AssessmentRequirement

RequirementsForControl returns assessment requirements for the given control ID.

type TriageCounts added in v0.0.6

type TriageCounts struct {
	Automated int `json:"automated"`
	Manual    int `json:"manual"`
	Total     int `json:"total"`
}

TriageCounts summarises the automation split.

type TriageResult added in v0.0.6

type TriageResult struct {
	PolicyID                string                 `json:"policy"`
	GlobalEvaluationMethods []EvaluationMethodInfo `json:"global_evaluation_methods"`
	Automated               []TriagedPlan          `json:"automated"`
	Manual                  []TriagedPlan          `json:"manual"`
	Counts                  TriageCounts           `json:"counts"`
}

TriageResult classifies a policy's assessment plans by automation mode.

func TriageAssessmentPlans added in v0.0.6

func TriageAssessmentPlans(rp *ResolvedPolicy) *TriageResult

TriageAssessmentPlans classifies each assessment plan in a resolved policy as Automated or Manual based on evaluation methods. Per-plan evaluation methods override the global default.

type TriagedPlan added in v0.0.6

type TriagedPlan struct {
	PlanID           string `json:"plan_id"`
	RequirementID    string `json:"requirement_id"`
	EvaluationMethod string `json:"evaluation_method"`
	Executor         string `json:"executor,omitempty"`
}

TriagedPlan is an assessment plan classified by automation mode.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL