Repository navigation
Conversation
Wire the hermes RuntimeID through the full install pipeline: runtimematrix, skilldest (new hermes-profile root kind), skillroot (HermesProfile input, ~/.hermes default root, ~/.hermes/profiles/<profile> for named profiles), installplan/installstate pair validation, artifact manifests and bundles, skillartifact bindings, ownership, projection and skillprojection, install/uninstall transaction groups (up to four roots), runtimecompat policy (certified hermes 0.4.2) and runtimeprobe (hermes binary probe). - install and update admit hermes like the other runtimes; QA skills project to hermes with the same ownership proof, while the six Pi actors remain Pi-only (cortex.qa.pi-actor.v1 has no Hermes equivalent) - doctor reports hermes installs; the line omits qa_backend fields because no QA backend is registered for hermes yet - runtimecompat certifies hermes 0.4.2; uncertified versions follow the default uncertified-admission disclosure Refs #303
- install and update accept --hermes-profile <name>; a named profile resolves the hermes root to ~/.hermes/profiles/<name> while other runtimes ignore it - skillrender: structural test pins the emitted SKILL.md frontmatter to the Hermes-documented schema (name/description/license + nested cortex-* metadata), parsed from the emitted bytes - docs: runtime parity statements updated to include Hermes Agent Refs #303
Fleet review (glm)Lens: requirements + adversarial. The RuntimeHermes enum wiring itself is consistent: every consumer of the three-runtime list (adapterplan, artifact, installplan, installstate, installtxn, uninstalltxn, ownership, projection, skillartifact, skilldest, skillroot, runtimecompat, runtimeprobe) was updated in the same commit, parity tests were updated, the profile-name validation blocks path traversal, and the named-profile install/update tests assert no writes leak to the default root. Two things fail against issue #303 and the repo's own contract. First, a named-profile installation can never be removed: install accepts --hermes-profile and writes to ~/.hermes/profiles//, but uninstall takes no arguments and always resolves the default ~/.hermes root, leaving cortex-written files that cortex cannot remove. Second, the issue's frontmatter acceptance criterion explicitly requires the emitted SKILL.md files to be additionally parsed with the Hermes skill loader against a scratch profile directory, and the PR marks that scope item done, but the diff contains only the structural frontmatter test in skillrender; no Hermes-loader parse exists anywhere in the diff. Blocking (2)
Suggestion (2)
Question (1)
Verdict: not ready |
Fleet review (qwen38)Lens: evidence. The Hermes wiring is thorough and each acceptance checkbox in issue #303 is backed by code and parity tests: Blocking (1)
Suggestion (1)
Question (1)
Verdict: not ready |
Fleet review (deepseek)Lens: evidence + test design. The Hermes wiring itself is consistent: RuntimeHermes ripples through every consumer the PR names (runtimematrix, skilldest, skillroot, installplan/installstate, artifact, skillartifact, ownership, projection, install/uninstall transactions, runtimecompat, runtimeprobe) and the per-runtime parity fixtures were updated rather than bypassed. Two gaps keep it from merge-ready. First, the issue's frontmatter acceptance criterion is only half evidenced: a Go line parser pins the emitted keys, but nothing in the diff ever parses the emitted SKILL.md with the Hermes loader against a scratch profile, while the issue checklist marks that step done. Second, the new install target is one-way: Blocking (2)
A second effect: the uninstall root list is also the guard for the four-runtime group, so a user who installed into a named profile gets a clean-looking
Suggestion (3)
Verdict: not ready |
Fleet review (glmflash)Lens: adversarial. The runtime-matrix ripple (enum, validPair, runtimeRank, transaction group caps 3→4, probe spec, policy) is consistent and well-tested across all 35 packages, and the profile-name validation is genuinely defensive. But attacking the lifecycle boundaries exposes two blocking gaps: (1) a named-profile install is unreachable by uninstall — the CLI uninstall path takes no --hermes-profile flag and defaultUninstallDependencies resolves HermesProfile="" to ~/.hermes, so Blocking (2)
Suggestion (1)
Question (2)
Verdict: not ready |
Fleet review (mimo)Lens: requirements. The diff wires a fourth runtime (hermes) through the whole install stack and satisfies most of issue #303's checked scope: --hermes-profile on install/update, default and named profile roots with per-root install state, QA skills projected to Hermes with the Pi actor contract untouched, doctor reporting, certified 0.4.2, and per-runtime parity updates across 53 files. Two acceptance criteria are not met. (1) The issue's explicit frontmatter criterion requires the emitted SKILL.md files to be parsed with the Hermes skill loader against a scratch profile directory to prove the loader accepts them; no such test exists anywhere in the diff, yet the PR's scope checklist marks that item [x]. (2) --hermes-profile is wired only into install and update, so an install made under a named profile can never be removed: cortex uninstall resolves the default ~/.hermes root, reports not_installed and exits 0 while the files stay on disk, contradicting the README contract this PR edits. Two smaller items: the hermes probe executable/version shape was not confirmed against the real host, and the runtimecompat note the issue asked for is missing. Blocking (2)
Suggestion (1)
Question (1)
Verdict: not ready |
Summary
Add Hermes Agent (Nous Research) as a fourth runtime target for cortex skill installs, closing #303. The TARS fleet runs Hermes and needs the four QA lens skills installed with catalog provenance and hash binding instead of hand-copied
SKILL.mdfiles.hermesRuntimeID wired through runtimematrix, skilldest (hermes-profileroot kind), skillroot, installplan/installstate, artifact manifests and bundles, skillartifact, ownership, projection, install/uninstall transaction groups, runtimecompat (certified0.4.2) and runtimeprobe.--hermes-profile <name>oninstallandupdate; the default profile maps to~/.hermes/skills/, a named profile to~/.hermes/profiles/<name>/skills/.cortex.qa.pi-actor.v1has no named-subagent equivalent there).cortex doctorreports Hermes installs per runtime; its line omitsqa_backendfields until a Hermes QA backend is registered.SKILL.mdfrontmatter to the Hermes-documented schema, parsed from the emitted bytes.Review budget exception
The diff is ~660 lines, above the 400-line review budget. Documented exception per repo rules: the enum addition is one atomic unit —
RuntimeHermesripples through every consumer at once, so the core wiring (0615045, ~404 lines) cannot be split without shipping broken intermediate states. The second commit (a20f01c, ~258 lines: CLI flag, frontmatter test, docs) is independently reviewable.Test plan
go test ./...green across all 35 packages, including per-runtime parity updates for the new runtime.~/.hermes/profiles/fleet), invalid-profile refusal without filesystem writes,--hermes-profileflag parsing, update against a named profile (fresh root refuses), and frontmatter schema validation.Fixes #303