Help us shape the future of Go! Take the 2026 Go Developer Survey

rubric

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package rubric scores a harness guiding artifact against adh's own five-dimension rubric (SPEC-ADDITIONS §18.2) — distinct from the external skillsaw 9-dimension rubric adh consumes at its gate. It adapts skillsaw's rubric *pattern*: a deterministic floor (DetScore) that assumes a perfect base for judge-only dimensions and docks only detectable defects, an explicit list of dimensions that still need a model, and Diagnose naming the weakest deterministic dimension.

Three of the five dimensions — failure-handling, actionable-specificity, and boundary-section — are the microsoft/SkillLens quality dimensions (arXiv:2605.23899), each with published tests and anti-examples. Their deterministic detectors are skillet/skilllens (FailureMechanisms, BlacklistSections), which skillsaw scores too, so the two tools cannot disagree about whether an artifact encodes a failure mode. adh's weights, its 0..1 Deterministic factor, and its five-dimension set stay here: they grade a harness artifact, not a SKILL.md, which is why these three are worth 60 here and 35 in skillsaw. actionable-specificity is NeedsJudge, so its base is a model's to supply, against SkillLens's stated definition.

Consuming skilllens means this package now parses Markdown (via skillet/markdown); it still runs no runtime-neutrality scan, which stays skillsaw-specific.

Index

Constants

View Source
const (
	KeyOutcome      = "outcome-clarity"
	KeyFailure      = "failure-handling"
	KeySpecificity  = "actionable-specificity"
	KeyBoundary     = "boundary-section"
	KeyArchitecture = "architecture"
)

Dimension keys.

Variables

This section is empty.

Functions

func Diagnose

func Diagnose(rep Report) string

Diagnose names the highest-weight deterministic dimension scored below full, or reports that only judgment remains.

Types

type DimScore

type DimScore struct {
	Dimension
	Deterministic float64 `json:"deterministic"`
	Reason        string  `json:"reason"`
}

DimScore is a dimension's outcome: a 0..1 deterministic factor (1.0 = no detectable defect) and the reason.

type Dimension

type Dimension struct {
	Key        string `json:"key"`
	Name       string `json:"name"`
	Weight     int    `json:"weight"`
	NeedsJudge bool   `json:"needs_judge"`
}

Dimension is one rubric axis. NeedsJudge marks a dimension whose base quality is an irreducible textual judgment a model must supply.

type Report

type Report struct {
	Dims       []DimScore `json:"dims"`
	DetScore   float64    `json:"det_score"`
	NeedsJudge []string   `json:"needs_judge"`
}

Report is the rubric outcome: per-dimension scores, the weighted deterministic total (judge dims assumed perfect), and which dimensions still need a model.

func Evaluate

func Evaluate(doc string) Report

Evaluate scores doc. Judge dimensions assume a perfect base for the floor; deterministic dimensions dock detectable defects. DetScore is the weighted total in [0, 100].

Requires: doc is a whole artifact, with or without a leading YAML header. Ensures: only the markdown body is scored; a "---" header is discarded, not

measured. It is pure.

The split happens here rather than at the call sites so no caller can pass an unsplit document: a description reading "...specifically when validation error..." otherwise satisfies failure-handling, and a hedged one moves specificity, on the strength of metadata that instructs nobody. None of the five dimensions is about the header, so the block is dropped rather than returned.

Jump to

Keyboard shortcuts

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