v0.30.0
v0.30.0 - 2026-07-11
Specification
- The format now commits to non-filesystem source selectors:
sourcestays a
single string, and its kind is detected from the selector itself — glob
metacharacters make a glob, an existing filesystem entry is a path, and any
other selector describes the evaluated material in prose (for example
"open tickets in the support queue"), resolved by evaluating tools. The
frontmatter shape andquality.schema.jsonare unchanged. The specification
version moves to0.11 (Draft): what asourceselector means in a
conforming document has changed.
CLI
- Evaluation runs resolve every source selector through a per-kind resolver.
Path and glob selectors keep the deterministic workspace walk; a prose
selector is dispatched to the invoking harness as aresolveSourcework
request on the existing checkpoint transport, and the returned material is
validated, capped, hashed, and captured into the run artifact before any
dependent judgment. Selector kinds are detected and pinned at run creation
and honored on resume. - A selector kind the selected evaluator cannot resolve now fails the run at
plan time with the newselector_unsupportedcategory — naming the
selector, its detected kind, and the remedy — distinct from
source_unavailable, which keeps meaning the named material is missing. evaluation.jsonbumps to schema version 6 and gains a per-areasources
provenance record: each area's selector, detected kind, serving resolver
(and harness runtime when harness-resolved), bundle hash, capture time, and
per-file hashes — with captured content kept for harness-gathered evidence
so resume re-judges against the exact evidence of record.qualitymd evaluation run --dry-run --jsonand run receipts now include
the per-area source dispatch plan (selector, detected kind, resolver).- Evaluation runs now resolve area sources as the format specification
defines: a source-less root area evaluates the QUALITY.md file's directory,
a source-less child area inherits the nearest ancestor's source, and glob
selectors (for exampledocs/**/*.md) are expanded. Previously these were
silently packaged as empty evidence. - An area source that resolves to no readable files now fails the run loudly
withsource_unavailable, naming the unresolved selector, instead of
judging the area against an empty source bundle. - Source packaging skips symlinked directories and files, sockets, and
devices instead of crashing on them (is a directory), so repositories with
committed symlinks evaluate and resume cleanly. qualitymd lintno longer reports spec-permitted extension frontmatter as
invalid-frontmatter: a key that names no model property is now the
warning-severityunknown-keyadvisory, so conforming documents carrying
extension properties lint valid and load. Misplaced root keys on nested
areas remain errors.quality.schema.jsonnow accepts any non-empty scalar (string, number, or
boolean) for content scalars such asassessment, rating-level
criterion, andratingsoverride values, matchinglint; its$comment
no longer claims a rating-level ordering check that no tool performs.
/quality skill
- The harness checkpoint loop now serves
resolveSourceresolution requests
alongside judgment requests: the skill gathers exactly the material the
request's selector describes and returns it verbatim, or reports
source_unavailablewhen it does not exist. /qualityskill metadata now declares version0.30.0and requires the
qualitymdCLI0.30.xline.
Compatibility / migration
- The QUALITY.md specification moves to
0.11 (Draft). Asourceselector is
now defined for non-filesystem material: a selector that is neither a glob
nor an existing filesystem path is prose describing the evaluated material,
where before only filesystem selectors were defined. Existing path and glob
selectors are unchanged. - Runner
evaluation.jsonartifacts now use schema version6and add the
per-areasourcesprovenance record; in-flight version 5 runner runs should
be started fresh. - A selector kind the selected evaluator cannot resolve now fails the run at
plan time with the newselector_unsupportedcategory.source_unavailable
keeps its narrower meaning: the named material is missing.
Compatibility:
- CLI:
v0.30.0 - QUALITY.md specification:
0.11 (Draft) - /quality skill:
0.30.0, requiresqualitymd >=0.30.0 <0.31.0