report

package
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package report generates certification reports from records.

Package report generates certification reports from records.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BadgeMarkdown

func BadgeMarkdown(repo, branch string) string

BadgeMarkdown returns a markdown snippet to embed in a README. repo is "owner/repo", branch is typically "main".

func FormatArchitectReport added in v0.6.0

func FormatArchitectReport(result *agent.ArchitectResult, pc *agent.ProjectContext) string

FormatArchitectReport renders the architectural review as a markdown document. Part I (snapshot) is deterministic from data. Part II uses LLM analysis. Part III formats comparative recommendations with delta tables.

func FormatBadgeJSON

func FormatBadgeJSON(b Badge) ([]byte, error)

FormatBadgeJSON marshals the badge to pretty JSON.

func FormatCardMarkdown

func FormatCardMarkdown(c Card) string

FormatCardMarkdown renders the report card as a GitHub-friendly markdown block.

func FormatCardText

func FormatCardText(c Card) string

FormatCardText renders the report card as a human-readable text block.

func FormatDetailedText

func FormatDetailedText(d DetailedReport) string

FormatDetailedText produces a human-readable detailed report.

func FormatFullMarkdown

func FormatFullMarkdown(r FullReport) string

FormatFullMarkdown renders the complete report as a markdown document.

func FormatJSON

func FormatJSON(v any) ([]byte, error)

FormatJSON produces JSON output for a report.

func FormatSearchIndexJS added in v0.2.0

func FormatSearchIndexJS(entries []SearchEntry) string

FormatSearchIndexJS returns a JavaScript constant declaration containing the search index as a JSON array, suitable for embedding in an HTML page.

func FormatText

func FormatText(h HealthReport) string

FormatText produces a human-readable text report.

func FormatUnitMarkdown added in v0.1.4

func FormatUnitMarkdown(u UnitReport, r FullReport) string

FormatUnitMarkdown renders a complete per-unit report card.

func GenerateReportTree added in v0.3.0

func GenerateReportTree(r FullReport, outDir string) (int, error)

GenerateReportTree writes a hierarchical markdown report tree.

Structure:

outDir/
  index.md                          top-level index
  <pkg>/
    index.md                        package roll-up
    <filename>/
      <symbol>.md                   unit certificate (if symbol exists)
    <filename>.md                   unit certificate (file-level, no symbol)

Returns the total number of files written.

func GenerateSite added in v0.2.0

func GenerateSite(r FullReport, cfg SiteConfig) error

GenerateSite generates a complete static HTML site from a FullReport. The site is self-contained with embedded CSS and works via file:// protocol.

func GenerateUnitReports added in v0.1.4

func GenerateUnitReports(r FullReport, outDir string) (int, error)

GenerateUnitReports writes individual markdown files for each unit. Returns the number of files written and any error.

Types

type AreaSummary

type AreaSummary struct {
	Path         string  `json:"path"`
	Total        int     `json:"total"`
	Failing      int     `json:"failing"`
	AverageScore float64 `json:"average_score"`
}

AreaSummary summarizes certification for a directory or package.

type Badge

type Badge struct {
	SchemaVersion int    `json:"schemaVersion"`
	Label         string `json:"label"`
	Message       string `json:"message"`
	Color         string `json:"color"`
	Style         string `json:"style,omitempty"`
	LogoColor     string `json:"logoColor,omitempty"`
}

Badge is a shields.io-compatible endpoint badge. See https://shields.io/badges/endpoint-badge

func GenerateBadge

func GenerateBadge(c Card) Badge

GenerateBadge creates a shields.io endpoint badge from a report card.

type Card

type Card struct {
	// Header
	Repository  string `json:"repository"`
	GeneratedAt string `json:"generated_at"`
	CommitSHA   string `json:"commit_sha,omitempty"`

	// Overall grade
	OverallGrade string  `json:"overall_grade"`
	OverallScore float64 `json:"overall_score"`
	PassRate     float64 `json:"pass_rate"`

	// Counts
	TotalUnits   int `json:"total_units"`
	Passing      int `json:"passing"`
	Failing      int `json:"failing"`
	Expired      int `json:"expired"`
	Observations int `json:"observations"`

	// Grade distribution
	GradeDistribution map[string]int `json:"grade_distribution"`

	// By-language summary
	Languages []LanguageDetail `json:"languages"`

	// Top issues (up to 10)
	TopIssues []IssueCard `json:"top_issues,omitempty"`

	// Package summaries (populated for report tree navigation)
	Packages []PackageSummary `json:"packages,omitempty"`
}

Card is a concise, shareable certification report card.

func GenerateCard

func GenerateCard(records []domain.CertificationRecord, repo, commit string, now time.Time) Card

GenerateCard creates a report card from certification records.

type DetailedReport

type DetailedReport struct {
	HealthReport

	// Dimension-level averages
	Dimensions map[string]float64 `json:"dimensions,omitempty"`

	// By-language breakdown
	ByLanguage map[string]LanguageDetail `json:"by_language,omitempty"`

	// Expiring-soon units (within 14 days)
	ExpiringSoon []UnitSummary `json:"expiring_soon,omitempty"`

	// Highest-risk units (lowest scores)
	HighestRisk []UnitSummary `json:"highest_risk,omitempty"`

	// Failing/non-passing units with explanations
	Failing []UnitSummary `json:"failing,omitempty"`

	// Recurrently failing areas (directories with multiple failing units)
	RecurrentlyFailing []AreaSummary `json:"recurrently_failing,omitempty"`
}

DetailedReport extends HealthReport with richer analysis.

func Detailed

func Detailed(records []domain.CertificationRecord, now time.Time) DetailedReport

Detailed computes a full detailed report from certification records. Detailed computes a full detailed report from certification records.

type EvidenceSummary added in v0.4.0

type EvidenceSummary struct {
	Kind    string             `json:"kind"`
	Source  string             `json:"source"`
	Passed  bool               `json:"passed"`
	Summary string             `json:"summary,omitempty"`
	Metrics map[string]float64 `json:"metrics,omitempty"`
}

EvidenceSummary is a flattened view of a single evidence item for reports.

type FullReport

type FullReport struct {
	// Header
	Repository  string `json:"repository"`
	CommitSHA   string `json:"commit_sha,omitempty"`
	GeneratedAt string `json:"generated_at"`

	// Summary card
	Card Card `json:"card"`

	// Every unit with full details
	Units []UnitReport `json:"units"`

	// Dimension averages across all units
	DimensionAverages map[string]float64 `json:"dimension_averages"`

	// By-language detail
	LanguageDetail []LanguageDetail `json:"language_detail"`
}

FullReport is a complete, per-unit certification report.

func GenerateFullReport

func GenerateFullReport(records []domain.CertificationRecord, repo, commit string, now time.Time) FullReport

GenerateFullReport creates a comprehensive per-unit report.

type HealthReport

type HealthReport struct {
	TotalUnits       int     `json:"total_units"`
	Certified        int     `json:"certified"`
	CertifiedWithObs int     `json:"certified_with_observations"`
	Probationary     int     `json:"probationary"`
	Expired          int     `json:"expired"`
	Decertified      int     `json:"decertified"`
	Exempt           int     `json:"exempt"`
	PassRate         float64 `json:"pass_rate"`
	AverageScore     float64 `json:"average_score"`
}

HealthReport summarizes the certification state of a repository.

func Health

func Health(records []domain.CertificationRecord) HealthReport

Health computes a health report from certification records.

type IssueCard

type IssueCard struct {
	UnitID string  `json:"unit_id"`
	Grade  string  `json:"grade"`
	Score  float64 `json:"score"`
	Reason string  `json:"reason"`
}

IssueCard describes a single unit needing attention.

type LanguageDetail

type LanguageDetail struct {
	Name              string         `json:"name"`
	Units             int            `json:"units"`
	Passing           int            `json:"passing"`
	AverageScore      float64        `json:"average_score"`
	Grade             string         `json:"grade"`
	GradeDistribution map[string]int `json:"grade_distribution"`
	TopScore          float64        `json:"top_score"`
	BottomScore       float64        `json:"bottom_score"`
}

LanguageDetail is the unified language summary type used across all report formats. It replaces the former LanguageCard, LanguageBreakdown, and langRow types.

type PackageSummary added in v0.3.0

type PackageSummary struct {
	Path     string  `json:"path"`
	Units    int     `json:"units"`
	Grade    string  `json:"grade"`
	AvgScore float64 `json:"avg_score"`
	PassRate float64 `json:"pass_rate"`
}

PackageSummary holds roll-up stats for a single package directory.

func BuildPackageSummaries added in v0.3.0

func BuildPackageSummaries(r FullReport) []PackageSummary

BuildPackageSummaries computes per-package stats from a FullReport.

type SearchEntry added in v0.2.0

type SearchEntry struct {
	Name       string  `json:"n"`
	Path       string  `json:"p"`
	UnitID     string  `json:"id"`
	Grade      string  `json:"g"`
	Status     string  `json:"s"`
	Language   string  `json:"l"`
	Score      float64 `json:"sc"`
	PackageURL string  `json:"pu"`
	UnitURL    string  `json:"uu"`
}

SearchEntry is a compact representation of a unit for client-side search.

func BuildSearchIndex added in v0.2.0

func BuildSearchIndex(r FullReport) []SearchEntry

BuildSearchIndex creates a compact search index from a FullReport.

type SiteConfig added in v0.2.0

type SiteConfig struct {
	OutputDir     string // Directory to write the site into
	Title         string // Site title (typically repo name)
	BasePath      string // Base path for GitHub Pages subdirectory hosting
	IncludeSearch bool   // Whether to include client-side search (default: true)
}

SiteConfig configures static site generation.

type UnitReport

type UnitReport struct {
	UnitID       string             `json:"unit_id"`
	UnitType     string             `json:"unit_type"`
	Path         string             `json:"path"`
	Language     string             `json:"language"`
	Symbol       string             `json:"symbol,omitempty"`
	Status       string             `json:"status"`
	Grade        string             `json:"grade"`
	Score        float64            `json:"score"`
	Confidence   float64            `json:"confidence"`
	Dimensions   map[string]float64 `json:"dimensions"`
	Evidence     []EvidenceSummary  `json:"evidence,omitempty"`
	Observations []string           `json:"observations,omitempty"`
	Actions      []string           `json:"actions,omitempty"`
	CertifiedAt  string             `json:"certified_at"`
	ExpiresAt    string             `json:"expires_at"`
	Source       string             `json:"source"`
}

UnitReport is the complete certification detail for a single unit.

type UnitSummary

type UnitSummary struct {
	UnitID       string   `json:"unit_id"`
	Path         string   `json:"path"`
	Status       string   `json:"status"`
	Grade        string   `json:"grade"`
	Score        float64  `json:"score"`
	ExpiresAt    string   `json:"expires_at,omitempty"`
	Explanation  string   `json:"explanation,omitempty"`
	Observations []string `json:"observations,omitempty"`
}

UnitSummary is a compact representation of a unit for report lists.

Jump to

Keyboard shortcuts

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