Skip to content

Releases: mrap/hex

v0.16.0 — Full rustification + S1 skills sync

17 May 04:18

Choose a tag to compare

What's new

Full rustification (43 Rust subcommands)

  • hex events — native Rust event daemon replacing Python hex_eventd.py. Hot-reload, multi-cadence scheduler, shell/emit/notify/update-file handlers.
  • hex hook — Claude Code hook runners in Rust: session-start, post-tool-use, backup-session.
  • hex doctor — DoctorCheck trait framework with 55+ checks. Replaces doctor.sh.
  • hex upgrade — upgrade pipeline ported from upgrade.sh to Rust.
  • hex agent evolution/reset-periods/optimizer-wake — harness-native agent lifecycle.
  • Full Python scripting layer ported: 130 Python files reduced to ~22.
  • All .legacy shim references removed — real-port phase complete.

S1 skills sync (9 new skills + bet-status)

  • system/skills/hex-event/, hex-save/, hex-switch/, imessage/, mirofish/, remodeling/, x-twitter/, conjecture-criticism/, vibe-to-prod/
  • system/commands/bet-status.md/bet-status slash command

Fixed

  • PATH deduplication in compose_path (pre-existing duplicates now filtered)
  • Release pipeline gate fixes: sanitize-check, PII scan, legacy file exclusions
  • Doctor equivalence mismatches: agent-fleet, python, env-sh, me-md, scripts-exec, agent-liveness

v0.15.0 — Harness messaging + binary resolution fix

12 May 21:13

Choose a tag to compare

What's fixed

Agent messaging deadlock (system/harness/src/messaging.rs): cli_send() now writes to .hex/messages/{agent}.jsonl (the JSONL inbox the harness wake cycle reads). Previously it only wrote to messages.json, which is not read during wakes — CLI-sent messages were silently dropped. This caused persistent agent-to-agent communication deadlocks (Releaser→Sentinel sign-off blocked; S1499).

Daemon binary resolution (system/harness/src/claude.rs): claude::invoke() now resolves the claude binary via $CLAUDE_BIN env var, then $HOME/.local/bin/claude, then PATH. LaunchAgent/daemon wakes inherit a restricted PATH that excludes ~/.local/bin, causing "failed to spawn claude: No such file or directory" on automated wakes.

Gates

  • Sentinel: PASS (SA-034)
  • Docker E2E: PASS (env resolution + regression)
  • Sanitize: PASS
  • Codex parity: 7/7 PASS
  • Autonomy regression: PASS

hex-foundation v0.14.0 — Slack deprecation + upgrade.sh cleanup

12 May 15:40

Choose a tag to compare

What's Changed

Slack/cc-connect deprecation complete. This release removes ~240 lines of dead Slack integration code and archives two retired scripts.

Changed

  • system/scripts/upgrade.sh: Drop legacy hex-events standalone install path — hex-events is now hex events subcommand. Removes HEX_EVENTS_REPO/DIR/SRC vars, verify_hex_events(), v1 rsync block. (~124 LOC removed)
  • system/scripts/hex-vitals.py: Remove --slack flag and Slack posting (~155 LOC removed)
  • system/scripts/hex-doctor: Remove dead check-slack-alert-roundtrip module
  • system/scripts/pulse-dashboard/server.py: Remove /api/messages Slack-fetch endpoint and loadMessages() frontend poller
  • system/scripts/pulse/server.py, telemetry-ratio.py: Remove dead Slack surface entries
  • system/skills/secret-intake/SKILL.md: Remove cc-connect references

Archived

  • system/scripts/integrations/slack-bot.shintegrations/_archive/
  • system/scripts/integrations/secrets-pipeline.shintegrations/_archive/

Deleted

  • system/scripts/hex-doctor: removed (dead Slack module only)

Net: -395 lines. Zero new dependencies. No new network paths or credentials.

Security: SA-032 PASS (Sentinel, 2026-05-12)


Full changelog: CHANGELOG.md

hex-foundation v0.13.3 — health scripts + test architecture fix

06 May 22:22

Choose a tag to compare

What's in this release

Added

  • check-hex-events-policy-load.sh: New health script that surfaces POLICY LOAD/VALIDATION ERROR entries from the hex-events daemon log. Previously these sat silently dead — legacy-schema policies, deprecated-field configs, invalid YAML all went undetected until manually reading the log.
  • check-vector-search.sh: New health script that verifies sqlite-vec is loadable and memory.db has vectors. Closes the silent degradation where semantic memory search falls back to FTS-only keyword search without any signal.

Fixed

  • test-doctor-events-coverage.sh: Updated to test the new external-script architecture introduced in v0.13.2 (inline check_66 was replaced by the external health scripts above; the test was still testing the old inline behavior, causing regression suite failure).
  • release pipeline (bump-version gate): Documented and worked around the gate conflict where bump-version creates a local tag that Gate 2 then rejects. Fix: delete local tag before running release.sh; release.sh re-creates the tag at push time.

Deferred to v0.14.0

  • messaging.rs MessagingHandler.receive() + wake.rs crash-recovery inbox: deferred due to type mismatch between messaging::Message and types::Message. Requires porting messaging.rs to use crate::types::Message (already done in mrap-hex source).

Commits (new since v0.13.2 / db56d3e)

  • 9e73ed6 docs: add v0.13.1 release notes
  • 41b92c8 sync: session-start checkpoint resume + integration-check emit fix + memory leak fix
  • 315fc56 bump: v0.13.2
  • db56d3e fix(sanitize): remove hardcoded absolute paths from check-career-pipeline.sh
  • eea07fd chore: commit Cargo.lock v0.13.2 bump and staged release notes
  • 02d6ef3 fix(release): sync missing health scripts + update events-coverage test
  • 79ff066 feat(harness): messaging.receive (REVERTED in next commit)
  • 20b44d3 revert: defer harness messaging.receive to v0.14.0
  • 7f3c8e3 docs: add v0.13.3 changelog entry
  • bba6957 bump: v0.13.3
  • 718ba66 chore: update Cargo.lock for v0.13.3

hex-foundation v0.13.2 — Session Checkpoint Resume + Memory Leak Fix

12 May 15:40

Choose a tag to compare

What's Changed

Patch release: session-start improvements, integration-check emit fix, and memory vector table leak fix.

Fixed

  • session-start.sh: channel→topic checkpoint resume; generalized blockers scan; topic-regex sanitization
  • hex-integration-check.sh: export _error_raw bug fix (was causing 11,948+ events/day); emit-throttle added
  • memory_index.py: cascade-delete vec_chunks orphans on re-index (was accumulating 82K orphan rows)
  • memory_search.py: _rrf_merge documented as FTS-only (KNOWN GAP); TODO surfaced

Changed

  • hex-doctor: two new health modules — Memory Vector Search + hex-events Policy Load Errors

Full changelog: CHANGELOG.md

hex v0.13.1 — doctor reliability + skip_llm WakeConfig

06 May 06:18

Choose a tag to compare

What's new in v0.13.1

Fixed

  • hex-doctor check_66 restored: fe094cb streaming rewrite accidentally deleted the hex events status parse-failure absorption check. Restored — doctor now surfaces broken policy paths and errors again.
  • Doctor streaming: Doctor command switches from buffered cmd.output() to cmd.spawn() with Stdio::inherit() — output streams live instead of appearing all at once.
  • Doctor path fixes: run-startup-checks.sh, run-memory-checks.sh, run-landings-workspace-checks.sh corrected stale $HEX_DIR/.claude path to $HEX_DIR/.hex (was causing 5 spurious ERRORs on fresh installs).
  • hex-doctor streaming rewrite: tee+PIPESTATUS pattern captures mid-pipeline failures. Combined EXIT traps into one to prevent second trap overwriting the first.
  • BOI doctor check: rewritten for LaunchAgent-aware detection (was pgrep-based, missed managed processes).

Added

  • WakeConfig.skip_llm: Harness field (#[serde(default)]) — health-probe agents can exercise wake plumbing without paying for an LLM call.
  • system/scripts/health/check-message-roundtrip.sh: End-to-end validation of skip_llm health-probe wake — sends a message, wakes health-probe, verifies mark_delivered, state save, and audit emit.
  • system/scripts/health/check-career-pipeline.sh: Career email pipeline health check — validates draft existence, policy load, and optional dry-run send. Sanitize-clean (env-var paths, example addresses).
  • system/scripts/doctor-checks/boi.sh: BOI daemon doctor check with LaunchAgent-aware detection.
  • system/scripts/hex-watcher: Minimal tmux BOI status pane (one-shot or --watch loop).

Security

Cleared by Sentinel SA-028. No new LOWs introduced. LOW-V14-1 (unquoted ${HEX_DIR} in YAML command fields) is a carry-forward non-blocking finding — fix targeted for v0.13.2.

hex v0.13.0 — Fleet self-driving mechanisms + agent performance review

06 May 01:10

Choose a tag to compare

What's in this release

Fleet self-driving mechanisms

  • Fleet pulse watchdog (system/scripts/health/check-fleet-pulse.sh): emits hex.agent.needs-attention for dormant agents. Composite liveness score, WARN/ERROR tiers, budget-lockout suppression.
  • Stalled initiative monitor (system/scripts/health/check-stalled-initiatives.sh): detects initiatives with no progress signal in 48h. Sends drive-or-close directives. 24h anti-spam guard.
  • Mike-pending board monitor (system/scripts/health/check-mike-pending.sh): tier-labeled (quiet/digest/direct-ping) coalesced alerts. DM fallback if Slack user ID not configured.
  • Budget period auto-reset (system/scripts/health/budget-period-reset.py): rolls cost period forward on expiry. 5x runaway safety gate emits CRITICAL instead of resetting out-of-control agent.

Agent performance review

  • Per-agent scorecard (system/scripts/health/agent-performance-review.py): quality/velocity/autonomy from critic reviews, BOI DB, audit trail. Geometric mean (0.0–1.0). Cold-start handling.
  • Fleet aggregate (system/scripts/health/fleet-scorecard-aggregate.py): top/bottom 5 performers, biggest movers. Single coalesced digest (no per-agent pings).

Policy templates (5 new)

  • adapter/policy-templates/fleet-pulse.yaml — wires timer.tick.1h → check-fleet-pulse.sh
  • adapter/policy-templates/stalled-initiative-monitor.yaml — wires timer.tick.6h → check-stalled-initiatives.sh
  • adapter/policy-templates/mike-pending-escalator.yaml — wires timer.tick.2h → check-mike-pending.sh
  • adapter/policy-templates/budget-period-reset.yaml — wires timer.tick.daily → budget-period-reset.py
  • adapter/policy-templates/agent-performance-review-weekly.yaml — wires timer.tick.daily (Sunday gate) → fleet-scorecard-aggregate.py

Misc

  • system/events/hex_eventd.py: re-apply duration field to action_result (sc2b5 fix)

Security

SA-026 Sentinel PASS. All new scripts use HEX_DIR env var (no hardcoded user paths).

Notes

  • Harness backlog auto-promotion feature deferred to v0.13.1 (incomplete implementation at commit time)
  • Set HEX_DIR env var to your hex installation directory if not at $HOME/hex

Full changelog: CHANGELOG.md

v0.12.0

05 May 07:20

Choose a tag to compare

What's new in v0.12.0

Upgrade reliability, shell completions, failure-revive protocol, and doctor improvements.

Shell completions

hex completions bash|zsh|fish generates completion scripts for the hex binary. Install helper added at system/scripts/install-hex-completions.sh.

Upgrade reliability (5-bug patch)

  • upgrade.sh now detects version.txt changes as part of the change-detection phase, preventing the early-exit "nothing to do" from skipping version updates
  • Upgrade test uses --local flag instead of unrecognized HEX_REPO_URL env var
  • Version.txt synced from foundation source for v2 layout during upgrade

Doctor enhanced

hex-events daemon status absorbed into doctor checks.

Failure-revive protocol

Three-strike detection, spec-owner-resolver, and build-failure-brief added. All hardcoded paths replaced with HEX_DIR env var.

Policy validator

dagu added to VALID_ACTION_TYPES.

AGENTS.md

Quick Start, Gotchas, and How to Modify sections. Genericized related-repos links (removed personal paths).

Cleanup

cc-connect/slack-bot scripts removed. sanitize-check.sh excludes .hex/ from runtime-binary scan to eliminate false positives from upgrade cache.

v0.11.3 — commands mirror + install fixes

30 Apr 23:12

Choose a tag to compare

What's new in v0.11.3

Bug fixes

  • install.sh: Remove local keyword used outside a function (line 514) — was causing install failure in bash strict mode when hex binary check ran
  • upgrade.sh: Add HEX_RUNTIME guard for commands mirror — commands/ now mirrors to .claude/commands (Claude Code) or .codex/commands (Codex) based on runtime, fixing sanitize-check violation

Feature (from v0.11.2→v0.11.3 staging)

  • commands/ mirror to .hex/commands/ (4ca7086) — install.sh and upgrade.sh now mirror system/commands/*.md to both .claude/commands/ and .hex/commands/ so doctor/tooling can discover slash commands independent of runtime
  • README.md updated to reflect commands/ dual-destination

All gates

  • Docker E2E: PASS
  • Sanitize check: CLEAN
  • Codex parity: 7/7 PASS
  • Autonomy regression: PASS

v0.11.2 — stable release

30 Apr 21:39

Choose a tag to compare

Stable release incorporating all work from 2026-04-30 session:

  • hex-events inline daemon fix (P0)
  • Harness path fixes (system/ → .hex/, mrap-hex → hex)
  • HEX_DIR unification (AGENT_DIR deprecated)
  • Codex parity (AGENTS.md + provider + tests)
  • Autonomy regression suite (mechanism leak rate = 0%)
  • v0.11.0 sync sweep (93 atomic units)
  • Upgrade prune feature
  • Fleet evolution: synthesizer + brand agents + self-improvement loop
  • Goal-alignment dashboard
  • fix: install.sh symlink clobber in hex-events install
  • fix: memory/SKILL.md added for codex parity completeness