Type is the kind of work a sitting was doing: build:feature, fix:defect, plan:spec, and the rest of a closed set. It is not the product. It is not a Goal on the objective tree. Storage is a session annotation. The console word is Type. The old word was Goal. assay goals is a deprecated alias of assay type.

Why a closed set

Free text does not aggregate. One real job splits across a dozen labels and a dozen spend totals. Type is a closed vocabulary. Assay admits a member or refuses. It does not coerce a near miss. Two escapes are answers, not errors:
  • other — none of the labels fits. Requires a note. That note is how a gap in the vocabulary becomes visible.
  • skip — the opening does not say what the human was trying to achieve. Forcing a guess there is noise.

The labels

LabelMeans
build:featureNew functionality, tool, or capability
fix:defectRepair a broken behaviour whose cause is known
debug:diagnoseFind out why something fails; cause not yet known
refactor:cleanupRestructure without changing behaviour
test:verifyWrite, run, or repair tests
review:codeReview a diff, branch, or package
audit:securitySecurity, leakage, or correctness risk
release:shipCut a release, publish, or deploy
explore:codebaseOrient; no change intended yet
plan:specSpec, plan, ADR, task breakdown
design:architectureSystem or integration structure
design:uiInterface, page, or visual theme
docs:writeAuthor or update documentation
docs:syncReconcile a document with the system it describes
docs:extract-publicDerive a public version of private material
content:write-proseProse that is not documentation
content:edit-styleRewrite, restyle, revoice, translate
catalog:curateCatalog, list, or survey
research:topicExternal research or options
analyze:dataAnalyse a dataset or body of records
analyze:forecastForward-looking forecast
ops:run-routineRecurring operational routine
ops:check-statusCurrent state of a system or account
ops:monitorWatch over time for a condition
ops:configureInstall or set up a tool or environment
chat:trivialGreeting or exchange with no work in it
A host may register its own vocabulary for declared types. Assay stores the vocabulary ref. It does not replace this set for the judge.

How a type gets there

SourceHow
DeclaredProducer declareSession, or assay declare --type, or the session page in the console
JudgeLocal (or opted-in) model picking from the closed set
HeuristicCheap features, no full content
Rank: declared > judge > heuristic.

Read

assay type
Spend, tokens, and valence per type. Sittings with spend and no label are an unannotated bucket. They are not dropped. Dashboard /type is off the nav. Set type from the session page. See Sessions.