v0.6.0¶
Release Date: 2026-06-01
Highlights¶
- Claims Package: Extract and validate factual claims with source tracking
- Package Rename: evaluation package renamed to rubric for clearer terminology
- Embedded Reports: Archive full-fidelity reports within SummaryReport
- JSON Schema: Automated schema generation for ClaimsReport
Overview¶
v0.6.0 introduces the claims package for factual claim extraction and source validation. This enables verification that claims in documents are properly sourced (external references) or objectively validated (internal evidence). The release also adds embedded report support to SummaryReport for archiving complete evaluation results.
New Features¶
Claims Package¶
Extract and validate factual claims from documents:
import "github.com/plexusone/structured-evaluation/claims"
report := claims.NewClaimsReport("article.md")
// Add a claim with external source validation
claim := claims.NewClaim("claim-1", "CVE has CVSS 8.8", claims.ClaimMetadata, claims.Location{Section: "severity"})
validation := claims.NewExternalValidation("https://nvd.nist.gov/vuln/detail/CVE-2026-25253", claims.ExternalNVD)
claim.SetValidation(validation)
report.AddClaim(*claim)
// Evaluate and get decision
report.Finalize()
fmt.Println(report.Decision.Status) // "pass" or "fail"
Source Types¶
Four validation approaches:
| Type | Use Case | Example |
|---|---|---|
| External | URL reference | NVD, vendor advisories, frameworks |
| Internal | Code/lab evidence | Exploit code, test results |
| Derived | Calculated from others | "Combined CVSS of 8.2" |
| Subjective | Estimates | Probability estimates |
Reliability Tiers¶
For external sources:
| Tier | Auto-Accept | Examples |
|---|---|---|
| Authoritative | Yes | NVD, vendor advisories, official frameworks |
| High | Yes | Peer-reviewed, reputable vendors, APIs |
| Medium | Review | Community sources, blogs |
| Low | Reject | Unverified sources |
Verdicts¶
Each claim receives a verdict:
- Verified: Claim backed by acceptable source
- Unverified: No validation provided
- Needs-Review: Medium-reliability source, requires review
- Rejected: Low-reliability source or failed validation
Embedded Reports¶
Archive full reports within SummaryReport:
summary := summary.NewSummaryReport("project", "v1.0.0", "RELEASE")
// Embed rubric and claims reports
summary.EmbedRubricReport("prd-review", rubricReport)
summary.EmbedClaimsReport("source-validation", claimsReport)
// Later, retrieve embedded reports
var retrievedRubric rubric.Rubric
summary.GetEmbeddedRubricReport("prd-review", &retrievedRubric)
JSON Schema Generation¶
Generate schemas for all report types:
Or programmatically:
import "github.com/plexusone/structured-evaluation/schema"
claimsSchemaJSON, _ := schema.GenerateClaimsSchema()
Use Cases¶
Security Advisory Validation¶
Validate that security advisories have proper source backing:
report := claims.NewClaimsReport("advisory.md")
// External: CVE details from NVD
report.AddClaim(*claims.NewClaim("cvss", "CVSS 8.8 High", claims.ClaimRiskAssessment, loc).
SetValidation(claims.NewExternalValidation(nvdURL, claims.ExternalNVD)))
// Internal: Exploit confirmed via code execution
report.AddClaim(*claims.NewClaim("exploit", "RCE confirmed", claims.ClaimTechnicalFinding, loc).
SetValidation(claims.NewInternalValidation(claims.MethodCodeExecution, "exploit.py", true)))
// Derived: Combined risk from other claims
report.AddClaim(*claims.NewClaim("risk", "Overall High Risk", claims.ClaimRiskAssessment, loc).
SetValidation(claims.NewDerivedValidation([]string{"cvss", "exploit"}, "aggregation", "")))
report.Finalize()
Content Publishing Workflow¶
Ensure blog posts have proper citations:
criteria := claims.ClaimsCriteria{
RequireAllVerified: true,
AllowSubjectiveWithDisclaimer: false,
MinReliabilityTier: claims.ReliabilityHigh,
}
report.SetCriteria(criteria)
report.Finalize()
if !report.IsPassing() {
fmt.Println("Cannot publish: unverified claims")
}
Migration Guide¶
Breaking Changes¶
The evaluation package has been renamed to rubric:
// Before (v0.5.0)
import "github.com/plexusone/structured-evaluation/evaluation"
report := evaluation.NewEvaluationReport("type", "doc.md")
// After (v0.6.0)
import "github.com/plexusone/structured-evaluation/rubric"
report := rubric.NewRubric("type", "doc.md")
Type and function renames:
- EvaluationReport → Rubric
- NewEvaluationReport → NewRubric
- evaluation.schema.json → rubric.schema.json
Additive Changes¶
New features are additive:
claimspackage is entirely newEmbeddedReportsfield is optional onSummaryReport
Documentation¶
- Claims Validation - Claim extraction and validation
- Report Types - Updated with ClaimsReport
- Architecture diagram added to README and docs showing Rubric + Claims → Summary relationship
- All MkDocs documentation updated for evaluation → rubric rename
Full Changelog¶
See CHANGELOG.md for the complete list of changes.