Skip to content

feat(cli): Hermes lifecycle on a real host; runtime splits oversized files - #155

Closed
titanwings wants to merge 3 commits into
pr/05-unverified-floorfrom
pr/06-hermes-and-split-v1
Closed

titanwings wants to merge 3 commits into
pr/05-unverified-floorfrom
pr/06-hermes-and-split-v1

Conversation

@titanwings

@titanwings titanwings commented Sep 11, 2026 •

Copy link
Copy Markdown
Owner

What

feat(cli): Hermes lifecycle on a real host; runtime splits oversized files

Commits

  • feat(cli): complete the Hermes lifecycle on a real host
  • feat(runtime): split an oversized local file into materials
  • fix: recover from a source-install version line and an interrupted Hermes setup

Stack

Stacked on pr/05-unverified-floor; the whole series ends at distilly-work (0bd924e).

Verification

Every feature carries an author report and an independent audit in the delivery evidence folder (host-verification/), including screenshots and the audit verdict that drove the fixes. Gates on the top of the stack: format, lint, docs, release check, and 1163 tests.

Real hosts

Codex, Claude Code 2.1.268, OpenClaw 2026.9.2, Hermes v0.19.0, and DSH 0.1.5-rc.1 were each exercised end to end (install, host-visible confirmation, exactly five MCP tools, person Skill install/remove, uninstall). Capacity fixtures are recorded for Codex 0.146.0, OpenClaw 2026.3.24, and Hermes v0.9.0; newer host versions run on the labelled conservative floor.

Evidence

Author reports and screenshots (delivery evidence folder host-verification/):

  • f12-hermes-lifecycle-REPORT.md, hermes-lifecycle.png, hermes-lifecycle-evidence.txt, hermes-host-drift.png
  • f3-large-file-split-REPORT.md

Independent audit reports:

  • round7-hermes-and-round8-fixes-REPORT.md, round9-VERIFY.md, round10-VERIFY.md

A real Hermes Agent v0.19.0 was installed in an isolated virtualenv and driven
end to end. The integration failed at four points, each now fixed with evidence
from that host:

- setup wrote the install manifest only after the host projection succeeded, but
  a discovery-first host connects to Distilly's launcher during its own install
  step and that launcher resolves its binding from the manifest. Setup now writes
  the entry first and restores the previous manifest if the projection fails.
- Hermes' mcp add abandoned the connection before the launcher finished opening
  its store, so the entry landed disabled; the command now passes an explicit
  connect timeout and setup enables our own entry when discovery still fails.
- the five-tool check required the bare phrase 'Tools discovered: 5' while
  v0.19.0 prints a status glyph before it.
- the config entry carries a host-owned 'connect_timeout' key that the strict
  entry parser rejected.

Verified on that host: setup installs, doctor reports the unverified-version
floor warning, hermes mcp test distilly connects in 722 ms and discovers exactly
the five tools, and uninstall removes the skill, wrapper, and config entry while
preserving person data.
A file larger than the 1 MiB material limit was refused outright, so a real chat
export could not enter Distilly at all. The trusted local loader now parses up to
one call's worth of text and splits the result into parts that each fit the
limit, cutting on line boundaries and only by characters when a single line is
itself too large. Each part becomes its own material with its own bytes, its own
raw identity, a deterministic '[part i of n]' label, and a warning that names the
split.

The engine's loader check gains a lower bound instead of an exact count, because
one requested path can now yield several records, while the wire limit for one
result stays the upper bound. The harvest command sends a file larger than one
material in its own batch so its parts cannot push a call past that limit, and
the parsed ingest item carries the parser warnings it previously dropped.
…rmes setup

A ninth verification round passed every claim and then found two states with no
way out:

- a source install appends provenance to the Hermes version line
  ('Hermes Agent v0.19.0 (2026.7.20) · upstream 01906e99'), which the version
  pattern rejected outright, so setup failed on the real machine. The suffix is
  now dropped rather than matched, so rebuilding the same release is also not
  read as a host upgrade.
- killing setup leaves the host having written the distilly entry with our
  wrapper but without the tool toggles. Setup refused that entry as foreign and
  uninstall refused it as modified, so only manual host surgery recovered.
  An entry whose command is our own wrapper is now recognized as ours and setup
  re-applies the expected toggles instead of dead-ending.
@titanwings

Copy link
Copy Markdown
Owner Author

Superseded: this stacked series is consolidated into the dot-skill-test line (same tree, kept on distilly-work). Closing without merging to avoid conflicts with the v2 rewrite.

@titanwings titanwings closed this Sep 12, 2026
@titanwings
titanwings deleted the pr/06-hermes-and-split-v1 branch September 12, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant