Documentation
¶
Index ¶
- func ApplicabilityIntersects(applicability, scope []string) bool
- type ApplicabilityGroupInfo
- type ApplicabilityGroupResult
- type ArtifactSet
- type AssessmentRequirementInfo
- type AssessmentSummary
- type ControlSummary
- type DeltaReport
- type EvaluationMethodInfo
- type ExecutorInfo
- type ParameterComparison
- type ResolvedPolicy
- func (rp *ResolvedPolicy) ControlByID(controlID string) *gemara.Control
- func (rp *ResolvedPolicy) ControlCatalog(id string) *gemara.ControlCatalog
- func (rp *ResolvedPolicy) ControlIDs() []string
- func (rp *ResolvedPolicy) ControlSummaries(controlIDs []string, filterScope []string) (AssessmentSummary, []ControlSummary)
- func (rp *ResolvedPolicy) GuidanceCatalog(id string) *gemara.GuidanceCatalog
- func (rp *ResolvedPolicy) ImportedGuidanceIDs() []string
- func (rp *ResolvedPolicy) ParametersForRequirement(reqID string) []gemara.Parameter
- func (rp *ResolvedPolicy) RequirementsForControl(controlID string) []gemara.AssessmentRequirement
- type TriageCounts
- type TriageResult
- type TriagedPlan
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ApplicabilityIntersects ¶ added in v0.0.9
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
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.