Configuration
Every configuration file Hatsu reads, and what each one decides.
Hatsu reads a small set of declaration files and invents nothing beyond them. Two of them split along one line: nen/contract.json states a fact about the machine (how this repository is built, tested, linted, launched and shipped) and nen/workflow.json states a decision about the work (how the roster works in it). Validation is nen schema check --repo <path>, one row per file.
Read from the repositories at commit: hatsu 3c582c18a4 (v0.159.0) · nen d7a720ddcd (v0.29.0) · handbooks 39b8e06d3c (v0.13) · 2026-11-04
| File | Lives in | Decides | Reference |
|---|---|---|---|
nen/contract.json | every repository Hatsu works in | what nen executes: the pinned Nen dependency, lanes, per-verb argv, preconditions, hosts, deploy targets, launch targets, evidence, the repository's kind | contract.json.md |
nen/workflow.json | every repository Hatsu works in | what the workflow decides with: branch shape, iteration checks, tests, the coverage ladder, launch and deploy defaults, reports, notifications, commit trailers, the monitor cap, run profiles, the model matrix, review scopes, mukai.autoEn, the release unit, the advance-go gate, classify.publish, direct.publish, runners | workflow.json.md |
nen/gates.json | every repository with a readiness gate | who counts as a review round and when a PR reads ready: reviewer identities, the approval policy, round caps, check exclusions, the round quorum | gates.json.md |
nen/labels.json | every repository issues are filed in | the label vocabulary a filing is validated against, including the lang/, job/ and model/ families | labels.json.md |
nen/repos.json | every repository | the registry: consumers, maintained tools, the canon pin, the <CODE> product codes, the role nen repo classify derives | repos.json.md |
nen/colors.yml | every repository a board is rendered for | the colour vocabulary of a backlog row's status and an issue's severity | colors.yml.md |
nen/decisions.json | this plugin (read in every run) | the decision matrix: which stops a run resolves on its own, which it asks once, which are the maintainer's gates | decisions.json.md |
${XDG_CONFIG_HOME:-$HOME/.config}/hatsu/checkouts, ${XDG_STATE_HOME:-$HOME/.local/state}/hatsu/ports/<run-id>.json | the maintainer's machine, never a tree | a port run's checkouts and its resumable record (kamui, hiraishin); validated by its readers, not by nen schema check | ports.md |
${XDG_CONFIG_HOME:-$HOME/.config}/hatsu/product-terms | the maintainer's machine, never a tree; written only by the maintainer | the product-term list the pair-file guard compares a port ruling against before bankai-rule writes it (scripts/product_term_check.sh); no list is missing-configuration, never a pass | ports.md § The product-term guard |
a family's private spec repository; ${XDG_STATE_HOME:-$HOME/.local/state}/hatsu/specs/<run-id>.json | the spec repository (private, never a Hatsu tree); the maintainer's machine | a product family's living spec: the invocation grammar, id, citation and marker grammars, confidence tiers, the vocabulary rule, the persistence model, the pickers, the issue and PR Spec shapes and the capture run's record (dowsing-chain); its checks are the nen spec verbs (§ The verbs that read it; every one ships at the pin, zheref/nen#493) | spec-repo.md |
contracts/schedule.json; ~/.claude/scheduled-tasks/<name>/SKILL.md | this plugin; the maintainer's machine, registered only by the maintainer | the steady-state schedule: the quarterly drift pass, the weekly dry recapture, the morning desk as Claude Desktop local tasks (ruling R-2026-10-23-21), and the per-PR ratchet shrink in CI; printed by scripts/schedule_install.mts, never registered by it | schedule.md |
.claude/canon-values.yml | a consumer that mirrors the canonical handbooks | the canon mirror declaration hatsu:limbo keeps current | canon-values.yml.md |
contracts/skill-shape.json | this plugin | the skill shape: the Residue, Authority and Hard limits sections every touched skill carries, and the reasoned exemption list | skill-shape.json.md |
contracts/, hooks/hooks.json, the plugin manifests | this plugin | plugin-owned registries a consumer reads but does not edit: permissions, the classification taxonomy, the model registry, the config catalogue, scan rows, round-policy defaults, the hooks | plugin-registries.md |
Hatsu's own pin
dependency.source:zheref/nendependency.minimum:0.28dependency.pinned_ref:v0.28.0dependency.bootstrap.url:https://raw.githubusercontent.com/zheref/nen/v0.28.0/bootstrap/nen.shdependency.bootstrap.scriptSha256:abf2bde0ebc207588bd078acbf861377d4755562514aec26d070aafd1267ba70