Skip to content

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:

go run ./cmd/genschema schema/

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: - EvaluationReportRubric - NewEvaluationReportNewRubric - evaluation.schema.jsonrubric.schema.json

Additive Changes

New features are additive:

  • claims package is entirely new
  • EmbeddedReports field is optional on SummaryReport

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.