Repository navigation
v0.14.0
⚠️ Upgrade required
This release is mandatory for anyone authoring specs, review checks, or runnable nodes.
hadron-server #1201/#1203 replaced the generic protected-write path with one door per node kind and deleted the old one. Against a current server, v0.13.0 and earlier now fail on:
hadron node add --runnableandhadron node updateon any runnable node — refused outright todayhadron spec new/spec edit/spec supersede/spec extractandhadron coding review create— these still work while the specs corpus is ungoverned, and stop the moment it is governed
v0.14.0 routes every one of those writes through the door its kind requires.
New commands & capabilities
hadron channel— the Channel noun and its messaging: list, create, read and post, with the register that tells you which channels an App installs.hadron scope— named search scopes.hadron search --scope <name>runs inside one, a default scope can be set, and every search now prints the scope it ran under rather than leaving you to guess at its reach.hadron org use— set the active org, and--scope globalnow means something concrete.hadron skill lint— the first verb of the skill command group: validates a skill's front matter and structure.hadron spec edit --abstract-still-accurate— assert you re-read a spec's abstract and it still describes the node. It re-sends the abstract unchanged so the server re-fingerprints it against the new body, which is the only way to settle theabstract-stalemarker a body-only edit arms. Works alongside a body edit or on its own.hadron team workercan amend a casting's prompt override, so a worker's individuality can be edited without recasting it.
Improvements
spec lintgainedindex-incomplete: a module or feature whose body omits a child's citation is reported, with the uncited locs named. The corpus convention is two-layer — the abstract routes by describing subjects, the body indexes by citing children — and this checks the second. Full citations, the last two atoms, and the colon-leaf form all count, as does a struck entry for a superseded child.spec lintchecks an abstract against its body —abstract-stalewhen the stored fingerprint disagrees with the content, andabstract-unverifiedwhen an abstract has a body but never had a fingerprint. Both matter because the abstract is the retrieval surface, so a drifted one answers a semantic query authoritatively and wrongly.abstract-length's remedy is tier-aware. At the rule tier a long abstract is a granularity signal and the fix is a supersede-level split. At the module/feature tier the abstract is an index, a split cannot move children, and the real defect is that it restates its children instead of routing to them.- A server refusal renders as the server's own sentence, not as a genqlient wrapper around it.
- Under
--json, the error envelope goes to stdout, so a parsing caller reads it from the stream it is already reading. node get --jsonemitsabstractOriginHash, so a caller can check abstract freshness without dropping tohadron api.hadron team whoamishows the user's URN, and an empty provenance result says so rather than printing nothing.hadron wherenames the column a predicate reads and shows the column it actually filtered on.- Access docs pin both server generations and state plainly that the
resourceUrnshim is compatibility-only.
Bug fixes
- A duplicate loc exits 5 (CONFLICT), not 1. The CLI's own agent contract already promised 5 for a taken loc elsewhere;
createreturning a generic failure for the same fact was a gap. Any caller branching on exit 1 for a taken loc must move to 5. hadron memory extractrefuses to scatter a memory across the repository you are standing in.hadron codingkeeps dotted tokens in a written trigger, and reports an unresolved endpoint as its own finding instead of folding it into another.
Full changelog: v0.13.0...v0.14.0