Skip to content

Releases: asimons81/hermes-dreaming

v0.4.0

06 Jun 19:38

Choose a tag to compare

Hermes Dreaming v0.4.0 — Release Notes

Headline: The trust loop and the friction-killer.

v0.4.0 makes Dreaming safe to use in anger (revert, dry-run, selective apply) and removes the harvest-to-create two-step (one command, real sessions, redacted).

What's new

Trust loop

  • dreaming revert <artifact> restores live files from the recorded backups and rolls an applied artifact back to a reverted state. Requires the artifact to be in applied status; anything else fails loud.
    • Drift detection: if the live file changed after apply, a drift_detected audit event is recorded, but the restore still runs from backup.
    • On a missing backup file, revert aborts, leaves live state untouched, and records a revert_failed audit event.
    • Writes a REVERT.md next to the artifact summarizing what was restored, what was rolled back, what drifted, and what failed.
    • Non-interactive callers (cron, pipe) must pass --yes. The CLI exits with code 2 when a confirmation prompt is needed, so scripts can distinguish "needs confirmation" from a real failure.
  • dreaming apply --dry-run previews the apply path without writing live state or creating backups. The result includes a structured dry_run_report (would-apply / would-skip / would-backup lists, and per-filter exclusions).
  • dreaming apply --priority {low,normal,high} and --target-kind {memory,user,skill,fact} filter which approved proposals land. Filters compose. Filtered-out proposals stay approved so a later apply with a different filter can still land them.

Friction-killer

  • dreaming create --from-sessions N auto-harvests N recent local Hermes sessions from the SessionDB, feeds the resulting redacted bundle as a source, and stages the artifact in one step. Always prints harvest:, sessions:, and redactions: to stdout before staging.
  • dreaming create --from-since 7d (also 12h, 2w) is a time-window alternative. The count is derived from the window and capped at 50 sessions.
  • --recent N is preserved as a back-compat alias for --from-sessions N.
  • --no-llm is a shorthand for --provider offline-marker on create and review. Useful for cron jobs that should never reach an external LLM by accident.

Discovery and inbox

  • dreaming providers list prints a table with NAME, KIND, STATUS (always | optional | missing), and NOTES for the three built-in providers. No external services are pinged.
  • dreaming inbox --apply-ready filters to artifacts where every non-rejected proposal is approved (or already applied) and the artifact is in staged, approved, or applied status. Composes with --state and --priority.
  • The inbox digest (dreaming digest --inbox) now surfaces a "Ready to apply" section and an Apply-ready count field at the top.

Hardening

  • reject --reason is enforced at the command layer (commands/review.py:reject_artifact()), not just the CLI parser. Any caller (CLI, library, plugin) is constrained by the same rule. ReviewError is raised on missing, empty, or whitespace-only reasons.

Data model

Two additive fields on DreamArtifact:

  • reverted_at: str | None — ISO timestamp of the last revert, if any
  • revert_audit_events: list[dict] — the revert audit trail (drift events, restore summary, partial-failure summary)

A third field, dry_run_report, is attached in-memory only during a single apply dry-run call and excluded from manifest.json so the on-disk contract stays stable across the dry-run feature.

Migration / compatibility

  • The recent flag is unchanged in behavior; --from-sessions is the new preferred name. Both work.
  • The reject enforcement is stricter than v0.3.0. Library callers that previously passed reason=None to reject_artifact will now raise ReviewError.
  • apply gained three optional flags (--dry-run, --priority, --target-kind). Existing invocations are unchanged.

Verification

  • pytest -q passes (112 tests across 25 files, +31 from v0.3.0).
  • python -m build --wheel succeeds.
  • git diff --check clean.
  • Smoke-tested on temp fixtures for: revert (roundtrip, drift, missing backup, partial failure), apply --dry-run (preview without writes), apply --priority and --target-kind (filters), inbox --apply-ready, providers list, --from-sessions with redaction stats, and --no-llm translation.

Known limitations

  • Revert does not re-run validation. It is a restore from backup, not a re-apply. If a reverted proposal is reapplied, validation runs normally as part of the apply path.
  • Drift detection compares the live file's pre-restore content to the recorded backup snapshot, but does not currently track per-write post-apply shas. Adding a per-write post-apply sha is a v0.5.0 candidate.
  • The --from-since window-to-count heuristic is conservative (4 sessions per day, capped at 50). If you want a more aggressive count, use --from-sessions N directly.

Bottom line

This release delivers the two things that turn Dreaming from "demo-able" to "operator's default nightly loop":

  1. You can undo an apply. Revert is the trust headline.
  2. You can stage from real sessions in one command. --from-sessions is the friction-killer.

Direction A (operator trust) and Direction B (friction-killer) from the brainstorm — both shipped, both tested, both documented.

Hermes Dreaming v0.3.0

03 Jun 00:43

Choose a tag to compare

Hermes Dreaming v0.3.0 Release Notes

Status: approved and shipped as v0.3.0 on 2026-06-02.

What changed since v0.2.0

  • Added dreaming inbox so staged artifacts can be reviewed as a queue, with both text and JSON output.
  • Added dreaming harvest --recent and wired create/review to the local session-reader fallback path.
  • Surfaced proposal risk, priority, reason, source_quote, and policy_flags in summarize, digest, report-card, and inbox views.
  • Added digest --inbox plus the inbox-digest cron mode for stdout-only operator reporting.
  • Tightened writeback path policy so memory, user, fact, and skill proposals can only target their approved destination shapes.
  • Added source preflight secret checks so provider calls are blocked before source content can leave the local process.
  • Preserved existing uppercase MEMORY.md/USER.md files during apply instead of creating duplicate lowercase files.
  • Bumped the plugin version to 0.3.0.

Release verdict

This is the first Hermes Dreaming line that treats the inbox as a real operator surface instead of a one-off artifact view.
It is the shipped Dream Inbox release.

v0.2.0

28 May 04:54

Choose a tag to compare

Hermes Dreaming v0.2.0 Release Notes

Status: approved for release and shipped as v0.2.0 on 2026-05-28.

What changed since v0.1.1

  • Review UX got a real decision loop: dreaming summarize <artifact>, dreaming approve <artifact> <proposal-id|all>, dreaming reject <artifact> <proposal-id> --reason ..., and dreaming review --open now make the artifact easier to inspect and act on.
  • Approvals and rejections persist in artifact metadata and audit history. They do not touch live roots until apply runs.
  • Provider output is now stricter and safer. Proposal blobs must validate before they become real proposals, and provenance has to point back to the source bundle instead of some made-up path.
  • The digest flow is now local and deterministic. It can rank artifacts and proposals, show what changed since the last dream, and render a weekly rollup without sending anything to Telegram by default.
  • Onboarding is finally honest and usable. The repo now includes install/update docs, an offline quickstart, persona examples, and a safety page that spells out what Dreaming can and cannot mutate.
  • The first phase-7 slice landed as a real dogfoodable feature: dreaming report-card now renders a redacted shareable report card from an artifact and can emit a JSON companion.
  • Live-memory policy work added idempotence and capacity guardrails, plus test coverage that keeps the real ~/.hermes state out of the way during verification.

Verification run

Commands run during integration:

  • python -m pytest -q
  • python -m build
  • git diff --check
  • docs grep for stale PyPI claims and false release text

Results:

  • full test suite passed
  • build passed
  • diff check passed
  • docs stayed honest about the PyPI namespace collision and did not claim a PyPI release

Packaging and distribution notes

  • PyPI is still skipped. The hermes-dreaming namespace is already taken by someone else, so do not publish under that name.
  • If distribution is revisited, it probably needs a new package name, likely hermes-agent-dreaming.
  • GitHub release/tag creation is handled in this shipping step for v0.2.0.

Release verdict

This is the next obvious release after v0.1.1.
It is materially better for both Tony and external users, and it is now the shipped v0.2.0 line.

Hermes Dreaming v0.1.1

28 May 02:48

Choose a tag to compare

Hermes Dreaming v0.1.1 Release Notes

Status: approved for release by Tony and shipped as v0.1.1.

What changed since v0.1.0

  • Real review diffs: dreaming diff now shows unified diffs against --live-root or the artifact workspace root instead of only dumping the staged report.
  • Safer apply: artifact apply now preflights selected proposals, snapshots touched files up front, rolls back on write or verification failure, and persists audit fields.
  • Better audit trail: artifacts now record apply start and finish timestamps, applied proposal ids, backup paths, validation errors, and apply errors.
  • Offline quickstart: examples/quickstart/ plus docs/quickstart.md gives users a no-API-key review -> diff -> validate -> apply -> status demo.
  • Cleaner tests and demos: pytest isolates Dreaming state, and HERMES_DREAMING_STATE_ROOT lets quickstart/demo runs avoid the real ~/.hermes/dreaming run ledger.
  • Safe updates: dreaming update supports fast-forward plugin updates with dirty-tree protection and optional pytest verification.
  • Plugin packaging: the repo installs as the hermes-dreaming Hermes plugin and bundles the Dreaming skill.

Packaging and versioning

  • Package version: 0.1.1
  • src/hermes_dreaming/__init__.py exports __version__ = "0.1.1"
  • pyproject.toml pins version = "0.1.1"
  • CHANGELOG.md has a dedicated 0.1.1 section

Verification run

Commands executed during release prep:

  • git diff --check
  • python -m pytest -q
  • python -m build
  • fresh GitHub install smoke from main

Results:

  • git diff --check passed cleanly
  • pytest passed: 60 tests
  • source distribution and wheel build passed
  • GitHub install smoke passed

Release verdict

v0.1.1 is the first usable release candidate for external users who want a staged, reviewable Dreaming loop instead of silent memory mutation.

Post-publish verification

  • Annotated tag object: 33fa08002731ec8d8e1ef84b959aced47a566011
  • Peeled tag commit: 9a9c73f4c5a3a99cda95601f13b512ebb125030e
  • Exact-tag install smoke passed from git+https://github.com/asimons81/hermes-dreaming.git@v0.1.1
  • Console entrypoint dreaming resolved version 0.1.1
  • Temp-root review -> diff -> validate -> apply -> status flow passed

v0.1.0

26 May 01:17

Choose a tag to compare

Hermes Dreaming v0.1.0

First public release of the staged self-improvement engine.

What's New

  • Artifact-first MVP for Hermes-style memory, user, skill, and fact updates
  • Explicit create, diff, validate, apply, discard, and status commands
  • Directory-based dream artifacts with manifest.json, REPORT.md, sources.jsonl, and proposals.jsonl
  • Validation, backups, and discard/archive semantics
  • Offline marker parsing with an optional OpenAI-compatible provider
  • Test coverage for the core model, validation, CLI flow, and apply/discard behavior