Concepts
The loop, the gates, and the Nen contract.
Read from the repositories at commit: hatsu 3c582c18a4 (v0.159.0) · nen d7a720ddcd (v0.29.0) · handbooks 39b8e06d3c (v0.13) · 2026-11-04
The loop
Per request, the loop is ren (work a request), and it runs without being asked: breath (warm up the effort: prove the base tip builds) → rasengan (author the change) → kokusen (verify the finished tree, then commit) → amaterasu (launch handling) → spiritual-message (the turn's report) → jutaisho (the bell). It loops on every later message. It never pushes and never opens a pull request.
Five phases are yours to call, and no agent ever prompts for them: aka (push), mukai (review and PR), the merge, kagutsuchi (non-production upload) and mugetsu (publish, G3). Everything between them runs on its own; only a genuine G5 interrupts you: red required tests, touched-file coverage under the ladder, a semantic merge conflict, an unsettled adversarial finding, a stuck-PR escalation.
The gates
Hatsu drives work to a gate and stops there. Clause ids are the governance constitution's.
| Gate | Clause | What it is | Delegable? |
|---|---|---|---|
| G1 | CON-4 | epic approval: you apply one delivery-mode label | never |
| G1-M | CON-25 | release into build: the building stage label | the one delegated crossing, under four named carve-outs inside a logged run |
| G2 | CON-5 | merge to main | never, save one PR: every PR ends at en's merge prompt; getsuga merges its own release proposal inside § 3a |
| G3 | CON-6 | release go/no-go: publishing | never on an agent's word: only your typed go, by name, as a mugetsu step of your own futon chain, or as your own answer to kazaana's one question after the tag it cut |
| G4 | CON-7 | policy or spec change: a PR into a canon repository, whose product is the process | the same as G2 |
| G5 | CON-47 | anything else human-only: a semantic conflict, a new business rule, signing material, a supply-chain failure | never; its definition is "the decision is yours" |
Nothing merges main except the release skill merging its own release-proposal PR inside its stated bounds. Nothing casts a review vote. Nothing publishes a release on its own authority: publication runs only on your typed go at G3. No GitHub App, no bot identity.
The Nen contract
nen is a hard, version-ranged, fail-closed dependency with auto-install. Every deterministic step is one of its verbs; there is no improvised fallback for a Nen-owned operation. nen/contract.json is the single source of truth for the pin: dependency.minimum (the range) and dependency.pinned_ref (the build the bootstrap installs) move independently. Absent, the warm-up runs Nen's own checksum-verified bootstrap, fetched to a file, never piped; out of range, it re-pins through the verb; a checksum failure is never retried. The session halts only when the bootstrap itself fails, printing the exact command for you to run.
Hatsu's own pin today:
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
nen/contract.json
The file sits where Nen itself looks for a repository's dependency declaration, in Nen's own shape, so Nen validates it (nen schema check --repo <path>). Beside the dependency block it carries a project block: the lanes (one per buildable tree), the per-verb argv for build, test, lint, coverage, archive, deploy and release, hosts, deploy targets and launch targets. A verb a lane does not have is declared as an explicit unsupported seat with the reason in the repository's own words, because a stated fact is better than a broken declaration. Its policy half, nen/workflow.json, states a decision about the work: branch shape, iteration checks, tests, the coverage ladder, reports, notifications, commit trailers, the monitor cap, run profiles and the model matrix. The Configuration page lists every file.