Documentation
¶
Overview ¶
Package claims provides types for claim extraction and source validation. This enables verification that factual claims in documents are properly sourced (external references) or objectively validated (internal evidence).
Index ¶
- type Claim
- type ClaimCategory
- type ClaimsCounts
- type ClaimsCriteria
- type ClaimsDecision
- type ClaimsDecisionStatus
- type ClaimsMetadata
- type ClaimsReport
- func (r *ClaimsReport) AddClaim(c Claim)
- func (r *ClaimsReport) Evaluate() ClaimsDecision
- func (r *ClaimsReport) Finalize()
- func (r *ClaimsReport) GenerateSummaryText() string
- func (r *ClaimsReport) GetClaim(claimID string) *Claim
- func (r *ClaimsReport) IsPassing() bool
- func (r *ClaimsReport) SetCriteria(criteria ClaimsCriteria)
- func (r *ClaimsReport) ValidateDerivedClaims()
- type ClaimsSummary
- type DerivedValidation
- type ExternalSourceType
- type ExternalValidation
- type InternalValidation
- type InternalValidationMethod
- type Location
- type ReliabilityTier
- type SourceType
- type SubjectiveRecommendation
- type SubjectiveValidation
- type Validation
- func NewDerivedValidation(sourceClaimIDs []string, method, formula string) *Validation
- func NewExternalValidation(url string, sourceType ExternalSourceType) *Validation
- func NewInternalValidation(method InternalValidationMethod, evidencePath string, reproducible bool) *Validation
- func NewSubjectiveValidation(acknowledged bool, recommendation SubjectiveRecommendation) *Validation
- type ValidationEnvironment
- type Verdict
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Claim ¶
type Claim struct {
// ID is the unique identifier for this claim.
ID string `json:"id"`
// Text is the exact claim text from the document.
Text string `json:"text"`
// Location identifies where the claim appears.
Location Location `json:"location"`
// Category categorizes the type of claim.
Category ClaimCategory `json:"category"`
// Validation describes how the claim is validated.
Validation *Validation `json:"validation,omitempty"`
// Verdict is the validation result.
Verdict Verdict `json:"verdict"`
// Rationale explains the verdict.
Rationale string `json:"rationale,omitempty"`
// RelatedClaimIDs are IDs of related claims.
RelatedClaimIDs []string `json:"relatedClaimIds,omitempty"`
}
Claim represents a factual claim extracted from a document.
func NewClaim ¶
func NewClaim(id, text string, category ClaimCategory, location Location) *Claim
NewClaim creates a new claim with the given details.
func (*Claim) AddRelatedClaim ¶
AddRelatedClaim adds a related claim ID.
func (*Claim) IsBlocking ¶
IsBlocking returns true if the claim blocks publication.
func (*Claim) IsVerified ¶
IsVerified returns true if the claim is verified.
func (*Claim) NeedsReview ¶
NeedsReview returns true if the claim requires human review.
func (*Claim) SetValidation ¶
func (c *Claim) SetValidation(v *Validation) *Claim
SetValidation sets the validation and computes the verdict.
type ClaimCategory ¶
type ClaimCategory string
ClaimCategory categorizes the type of claim.
const ( // ClaimMetadata is metadata about the subject (e.g., identifiers, versions). ClaimMetadata ClaimCategory = "metadata" // ClaimTechnicalFinding is a technical observation or finding. ClaimTechnicalFinding ClaimCategory = "technical-finding" // ClaimFrameworkMapping maps to a standard framework (e.g., taxonomy IDs). ClaimFrameworkMapping ClaimCategory = "framework-mapping" // ClaimRiskAssessment is a risk or impact assessment. ClaimRiskAssessment ClaimCategory = "risk-assessment" // ClaimTimeline is a temporal claim (dates, events). ClaimTimeline ClaimCategory = "timeline" // ClaimStatistical is a statistical or numeric claim. ClaimStatistical ClaimCategory = "statistical" // ClaimGuidance is a recommendation or guidance claim. ClaimGuidance ClaimCategory = "guidance" // ClaimAttribution credits a source or author. ClaimAttribution ClaimCategory = "attribution" )
type ClaimsCounts ¶
type ClaimsCounts struct {
Total int `json:"total"`
Verified int `json:"verified"`
Unverified int `json:"unverified"`
NeedsReview int `json:"needsReview"`
Rejected int `json:"rejected"`
}
ClaimsCounts tracks claims by verdict.
func CountClaims ¶
func CountClaims(claims []Claim) ClaimsCounts
CountClaims counts claims by verdict.
type ClaimsCriteria ¶
type ClaimsCriteria struct {
// RequireAllVerified requires all claims to be verified.
RequireAllVerified bool `json:"requireAllVerified"`
// AllowSubjectiveWithDisclaimer permits subjective claims if acknowledged.
AllowSubjectiveWithDisclaimer bool `json:"allowSubjectiveWithDisclaimer"`
// AllowNeedsReview permits claims that need review (conditional pass).
AllowNeedsReview bool `json:"allowNeedsReview"`
// MinReliabilityTier is the minimum acceptable reliability for external sources.
MinReliabilityTier ReliabilityTier `json:"minReliabilityTier"`
// RequireReproducible requires internal validations to be reproducible.
RequireReproducible bool `json:"requireReproducible"`
// RequiredCategories are claim categories that must have at least one verified claim.
RequiredCategories []ClaimCategory `json:"requiredCategories,omitempty"`
}
ClaimsCriteria defines requirements for claim validation approval.
func DefaultClaimsCriteria ¶
func DefaultClaimsCriteria() ClaimsCriteria
DefaultClaimsCriteria returns standard criteria.
func StrictClaimsCriteria ¶
func StrictClaimsCriteria() ClaimsCriteria
StrictClaimsCriteria returns strict criteria for high-stakes publications.
type ClaimsDecision ¶
type ClaimsDecision struct {
// Status is the decision outcome.
Status ClaimsDecisionStatus `json:"status"`
// Passed indicates if the claims validation passed.
Passed bool `json:"passed"`
// Rationale explains the decision.
Rationale string `json:"rationale"`
// Counts summarizes claims by verdict.
Counts ClaimsCounts `json:"counts"`
}
ClaimsDecision represents the validation decision for claims.
func EvaluateClaims ¶
func EvaluateClaims(claims []Claim, criteria ClaimsCriteria) ClaimsDecision
EvaluateClaims checks claims against criteria.
type ClaimsDecisionStatus ¶
type ClaimsDecisionStatus string
ClaimsDecisionStatus represents the decision outcome.
const ( // ClaimsDecisionPass indicates all claims are verified. ClaimsDecisionPass ClaimsDecisionStatus = "pass" // ClaimsDecisionConditional indicates some claims need review. ClaimsDecisionConditional ClaimsDecisionStatus = "conditional" // ClaimsDecisionFail indicates unverified or rejected claims exist. ClaimsDecisionFail ClaimsDecisionStatus = "fail" )
type ClaimsMetadata ¶
type ClaimsMetadata struct {
// Document is the filename or path being validated.
Document string `json:"document"`
// DocumentID is the document identifier.
DocumentID string `json:"documentId,omitempty"`
// DocumentTitle is the document title.
DocumentTitle string `json:"documentTitle,omitempty"`
// DocumentVersion is the document version.
DocumentVersion string `json:"documentVersion,omitempty"`
// GeneratedAt is when the report was created.
GeneratedAt time.Time `json:"generatedAt"`
// GeneratedBy identifies what created this report.
GeneratedBy string `json:"generatedBy,omitempty"`
// ValidatedBy identifies who validated the claims.
ValidatedBy string `json:"validatedBy,omitempty"`
}
ClaimsMetadata contains report identification.
type ClaimsReport ¶
type ClaimsReport struct {
// Schema is the JSON Schema URL.
Schema string `json:"$schema,omitempty"`
// Metadata contains report identification.
Metadata ClaimsMetadata `json:"metadata"`
// Claims are the extracted and validated claims.
Claims []Claim `json:"claims"`
// Summary provides aggregated statistics.
Summary ClaimsSummary `json:"summary"`
// Criteria defines the pass requirements.
Criteria ClaimsCriteria `json:"criteria"`
// Decision is the validation outcome.
Decision ClaimsDecision `json:"decision"`
}
ClaimsReport is the report for claim validation.
func NewClaimsReport ¶
func NewClaimsReport(document string) *ClaimsReport
NewClaimsReport creates a new claims report.
func (*ClaimsReport) AddClaim ¶
func (r *ClaimsReport) AddClaim(c Claim)
AddClaim adds a claim to the report.
func (*ClaimsReport) Evaluate ¶
func (r *ClaimsReport) Evaluate() ClaimsDecision
Evaluate computes the summary and decision.
func (*ClaimsReport) Finalize ¶
func (r *ClaimsReport) Finalize()
Finalize computes all derived fields.
func (*ClaimsReport) GenerateSummaryText ¶
func (r *ClaimsReport) GenerateSummaryText() string
GenerateSummaryText creates a human-readable summary.
func (*ClaimsReport) GetClaim ¶
func (r *ClaimsReport) GetClaim(claimID string) *Claim
GetClaim returns a claim by ID, or nil if not found.
func (*ClaimsReport) IsPassing ¶
func (r *ClaimsReport) IsPassing() bool
IsPassing returns true if the report passes validation.
func (*ClaimsReport) SetCriteria ¶
func (r *ClaimsReport) SetCriteria(criteria ClaimsCriteria)
SetCriteria sets the validation criteria.
func (*ClaimsReport) ValidateDerivedClaims ¶
func (r *ClaimsReport) ValidateDerivedClaims()
ValidateDerivedClaims checks that all derived claims reference verified source claims.
type ClaimsSummary ¶
type ClaimsSummary struct {
// Counts by verdict.
Counts ClaimsCounts `json:"counts"`
// ByCategory counts claims by category.
ByCategory map[ClaimCategory]int `json:"byCategory,omitempty"`
// BySourceType counts claims by validation source type.
BySourceType map[SourceType]int `json:"bySourceType,omitempty"`
// ByReliability counts external claims by reliability tier.
ByReliability map[ReliabilityTier]int `json:"byReliability,omitempty"`
// UnverifiedClaims lists IDs of unverified claims.
UnverifiedClaims []string `json:"unverifiedClaims,omitempty"`
// NeedsReviewClaims lists IDs of claims needing review.
NeedsReviewClaims []string `json:"needsReviewClaims,omitempty"`
// RejectedClaims lists IDs of rejected claims.
RejectedClaims []string `json:"rejectedClaims,omitempty"`
}
ClaimsSummary provides aggregated statistics.
type DerivedValidation ¶
type DerivedValidation struct {
// SourceClaimIDs are the IDs of claims this is derived from.
SourceClaimIDs []string `json:"sourceClaimIds"`
// DerivationMethod describes how the claim was derived.
DerivationMethod string `json:"derivationMethod"`
// Formula is the calculation formula if applicable.
Formula string `json:"formula,omitempty"`
// Reasoning explains the derivation logic.
Reasoning string `json:"reasoning,omitempty"`
}
DerivedValidation describes claims derived from other claims.
type ExternalSourceType ¶
type ExternalSourceType string
ExternalSourceType categorizes the authority of external sources.
const ( // ExternalNVD is the NIST National Vulnerability Database. ExternalNVD ExternalSourceType = "nvd" // ExternalVendorAdvisory is an official vendor advisory. ExternalVendorAdvisory ExternalSourceType = "vendor-advisory" // ExternalFramework is official framework documentation (MITRE, OWASP, CWE). ExternalFramework ExternalSourceType = "framework-official" // ExternalPeerReviewed is a peer-reviewed publication. ExternalPeerReviewed ExternalSourceType = "peer-reviewed" // ExternalReputableVendor is from a reputable vendor (e.g., research firms). ExternalReputableVendor ExternalSourceType = "reputable-vendor" // ExternalCommunity is from community sources (blogs, forums). ExternalCommunity ExternalSourceType = "community" // ExternalAPI is from a public API (e.g., FIRST.org EPSS API). ExternalAPI ExternalSourceType = "api" )
type ExternalValidation ¶
type ExternalValidation struct {
// URL is the source URL.
URL string `json:"url"`
// SourceType categorizes the source.
SourceType ExternalSourceType `json:"sourceType"`
// Reliability indicates the trustworthiness of the source.
Reliability ReliabilityTier `json:"reliability"`
// AccessedAt is when the URL was accessed.
AccessedAt time.Time `json:"accessedAt,omitempty"`
// Archived indicates if the URL is archived (e.g., Wayback Machine).
Archived bool `json:"archived,omitempty"`
// ArchiveURL is the archive URL if different from primary URL.
ArchiveURL string `json:"archiveUrl,omitempty"`
// QuotedText is the exact text from the source supporting the claim.
QuotedText string `json:"quotedText,omitempty"`
// VerifiedMatch indicates the claim text matches the source.
VerifiedMatch bool `json:"verifiedMatch,omitempty"`
}
ExternalValidation describes validation via external source.
type InternalValidation ¶
type InternalValidation struct {
// Method describes how validation was performed.
Method InternalValidationMethod `json:"method"`
// EvidencePath is the path to code, logs, or artifacts.
EvidencePath string `json:"evidencePath,omitempty"`
// EvidenceHash is a hash of the evidence file for integrity.
EvidenceHash string `json:"evidenceHash,omitempty"`
// Reproducible indicates whether the validation can be reproduced.
Reproducible bool `json:"reproducible"`
// ReproductionSteps describes how to reproduce the validation.
ReproductionSteps string `json:"reproductionSteps,omitempty"`
// ValidatedBy identifies who performed the validation.
ValidatedBy string `json:"validatedBy,omitempty"`
// ValidatedAt is when validation was performed.
ValidatedAt time.Time `json:"validatedAt,omitempty"`
// Environment describes the validation environment.
Environment *ValidationEnvironment `json:"environment,omitempty"`
// Output is the observed output that validates the claim.
Output string `json:"output,omitempty"`
}
InternalValidation describes validation via internal evidence.
type InternalValidationMethod ¶
type InternalValidationMethod string
InternalValidationMethod describes how internal validation was performed.
const ( // MethodCodeExecution indicates the claim was validated by running code. MethodCodeExecution InternalValidationMethod = "code-execution" // MethodLabTesting indicates validation via controlled lab testing. MethodLabTesting InternalValidationMethod = "lab-testing" // MethodCodeReview indicates validation via code review/inspection. MethodCodeReview InternalValidationMethod = "code-review" // MethodLogAnalysis indicates validation via log analysis. MethodLogAnalysis InternalValidationMethod = "log-analysis" // MethodCalculation indicates the claim is a calculation from other data. MethodCalculation InternalValidationMethod = "calculation" // MethodObservation indicates direct observation of behavior. MethodObservation InternalValidationMethod = "observation" )
type Location ¶
type Location struct {
// Section is the section heading or identifier.
Section string `json:"section,omitempty"`
// Line is the line number (1-indexed).
Line int `json:"line,omitempty"`
// StartOffset is the character offset from start of document.
StartOffset int `json:"startOffset,omitempty"`
// EndOffset is the ending character offset.
EndOffset int `json:"endOffset,omitempty"`
}
Location identifies where a claim appears in a document.
type ReliabilityTier ¶
type ReliabilityTier string
ReliabilityTier indicates the trustworthiness of a source.
const ( // ReliabilityAuthoritative is an official, authoritative source (auto-accept). ReliabilityAuthoritative ReliabilityTier = "authoritative" // ReliabilityHigh is a highly reputable source (auto-accept). ReliabilityHigh ReliabilityTier = "high" // ReliabilityMedium is a moderately reputable source (requires review). ReliabilityMedium ReliabilityTier = "medium" // ReliabilityLow is an unverified or low-reputation source (reject). ReliabilityLow ReliabilityTier = "low" )
func DefaultReliabilityForSourceType ¶
func DefaultReliabilityForSourceType(st ExternalSourceType) ReliabilityTier
DefaultReliabilityForSourceType returns the default reliability tier for a source type.
func (ReliabilityTier) IsAcceptable ¶
func (r ReliabilityTier) IsAcceptable() bool
IsAcceptable returns true if the reliability tier is acceptable without review.
func (ReliabilityTier) RequiresReview ¶
func (r ReliabilityTier) RequiresReview() bool
RequiresReview returns true if the reliability tier requires human review.
type SourceType ¶
type SourceType string
SourceType identifies how a claim is validated.
const ( // SourceExternal indicates validation via external URL reference. SourceExternal SourceType = "external" // SourceInternal indicates validation via internal evidence (code, lab tests). SourceInternal SourceType = "internal" // SourceDerived indicates the claim is calculated from other validated claims. SourceDerived SourceType = "derived" // SourceSubjective indicates an estimate without objective backing. SourceSubjective SourceType = "subjective" )
type SubjectiveRecommendation ¶
type SubjectiveRecommendation string
SubjectiveRecommendation indicates what to do with a subjective claim.
const ( // RecommendKeepWithDisclaimer keeps the claim with a disclaimer. RecommendKeepWithDisclaimer SubjectiveRecommendation = "keep-with-disclaimer" // RecommendRemove removes the claim. RecommendRemove SubjectiveRecommendation = "remove" // RecommendFindSource suggests finding an external source. RecommendFindSource SubjectiveRecommendation = "find-source" // RecommendConvertToInternal suggests validating internally. RecommendConvertToInternal SubjectiveRecommendation = "convert-to-internal" )
type SubjectiveValidation ¶
type SubjectiveValidation struct {
// Acknowledged indicates if this is labeled as an estimate in the document.
Acknowledged bool `json:"acknowledged"`
// Methodology describes any methodology used for the estimate.
Methodology string `json:"methodology,omitempty"`
// Recommendation suggests what to do with this claim.
Recommendation SubjectiveRecommendation `json:"recommendation"`
// Rationale explains why this is acceptable or not.
Rationale string `json:"rationale,omitempty"`
}
SubjectiveValidation describes subjective estimates.
type Validation ¶
type Validation struct {
// Type indicates the validation approach.
Type SourceType `json:"type"`
// External contains details for externally-sourced claims.
External *ExternalValidation `json:"external,omitempty"`
// Internal contains details for internally-validated claims.
Internal *InternalValidation `json:"internal,omitempty"`
// Derived contains details for claims derived from other claims.
Derived *DerivedValidation `json:"derived,omitempty"`
// Subjective contains details for subjective estimates.
Subjective *SubjectiveValidation `json:"subjective,omitempty"`
}
Validation describes how a claim is validated. Exactly one of External, Internal, Derived, or Subjective should be set.
func NewDerivedValidation ¶
func NewDerivedValidation(sourceClaimIDs []string, method, formula string) *Validation
NewDerivedValidation creates a validation for a derived claim.
func NewExternalValidation ¶
func NewExternalValidation(url string, sourceType ExternalSourceType) *Validation
NewExternalValidation creates a validation for an external source.
func NewInternalValidation ¶
func NewInternalValidation(method InternalValidationMethod, evidencePath string, reproducible bool) *Validation
NewInternalValidation creates a validation for internal evidence.
func NewSubjectiveValidation ¶
func NewSubjectiveValidation(acknowledged bool, recommendation SubjectiveRecommendation) *Validation
NewSubjectiveValidation creates a validation for a subjective estimate.
type ValidationEnvironment ¶
type ValidationEnvironment struct {
// Product is the product being tested.
Product string `json:"product,omitempty"`
// Version is the version tested.
Version string `json:"version,omitempty"`
// Configuration describes the configuration used.
Configuration string `json:"configuration,omitempty"`
// Platform is the platform (os, arch).
Platform string `json:"platform,omitempty"`
}
ValidationEnvironment describes the environment where validation occurred.
type Verdict ¶
type Verdict string
Verdict represents the validation result for a claim.
const ( // VerdictVerified indicates the claim is verified. VerdictVerified Verdict = "verified" // VerdictUnverified indicates the claim could not be verified. VerdictUnverified Verdict = "unverified" // VerdictNeedsReview indicates the claim requires human review. VerdictNeedsReview Verdict = "needs-review" // VerdictRejected indicates the claim should be removed. VerdictRejected Verdict = "rejected" )
func DetermineVerdict ¶
func DetermineVerdict(v *Validation) Verdict
DetermineVerdict computes the verdict based on validation.
func (Verdict) IsBlocking ¶
IsBlocking returns true if the verdict blocks publication.