Skip to content

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 05:04
· 136 commits to main since this release
e37bc25

⚠️ 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 --runnable and hadron node update on any runnable node — refused outright today
  • hadron spec new / spec edit / spec supersede / spec extract and hadron 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 global now 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 the abstract-stale marker a body-only edit arms. Works alongside a body edit or on its own.
  • hadron team worker can amend a casting's prompt override, so a worker's individuality can be edited without recasting it.

Improvements

  • spec lint gained index-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 lint checks an abstract against its body — abstract-stale when the stored fingerprint disagrees with the content, and abstract-unverified when 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 --json emits abstractOriginHash, so a caller can check abstract freshness without dropping to hadron api.
  • hadron team whoami shows the user's URN, and an empty provenance result says so rather than printing nothing.
  • hadron where names the column a predicate reads and shows the column it actually filtered on.
  • Access docs pin both server generations and state plainly that the resourceUrn shim 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; create returning 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 extract refuses to scatter a memory across the repository you are standing in.
  • hadron coding keeps 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