Skip to content

Releases: mrap/hex

v0.19.8 — Docker OOM fix for memory indexing

24 May 19:23

Choose a tag to compare

Fixed

  • OBS-019 Docker OOM (system/harness/src/memory/{embed,index}.rs, tests/Dockerfile, tests/Dockerfile.env): Memory indexing OOMed in the 4 GB Docker E2E container. Two-part fix:
    1. Chunked embed_documents at EMBED_BATCH=8 to bound per-call working set.
    2. Capped ORT_NUM_THREADS=1 / OMP_NUM_THREADS=1 at container startup (ENV in Dockerfile) so ONNX Runtime sees the limits at dylib load — std::env::set_var from inside the binary is too late.

Added a Linux rss_mb() probe for future memory diagnosis.

Notes

  • Sentinel SA-057: PASS
  • Skipped Docker E2E (--skip-e2e) — the change itself is the E2E fix; verified locally first.

SHA: e62f2bb1

hex-foundation v0.19.7

24 May 18:49

Choose a tag to compare

hex-foundation v0.19.7

Security sign-off: SA-056 PASS (Sentinel, 2026-05-24)

Changes (12 commits, bdde0f4)

BOI v2 path cutover

  • sweep: v1 .boi paths → v2 in active hex-foundation scripts (3e84222)
  • merge(boi/SE9F2): v1 path sweep for v2 cutover (8a9f9d7)

Audit-closure: personal-path hardcode removal

  • audit-closure: hex-integration — replace personal-path fallback with $HOME/hex (42d0a69)
  • audit-closure: env-parameterize 2 personal hardcodes in harness (94e7426)
  • audit-closure: gitignore .serena/ + fix hex-integration personal fallback (2b3b313)
  • audit-closure: remove dead system/scripts/health/ + system/events/ (36dfca1)

E2E / build fix

  • fix(e2e): unbreak Docker E2E suites + sync version.txt in bump-version (bb1f745)

Docs

  • docs(templates/CLAUDE.md): update BOI section for v2 contract (53c93df)
  • docs(skill): rewrite boi-delegation SKILL.md for v2 contract (ef81a4c)
  • docs(charters): update quality-antagonist + boi-optimizer for v2 surface (822fb7c)

Release

Carry-forward LOWs (non-blocking)

LOW-SA051-1, SA-048-LOW-1/2/3, SA-050-LOW-1, LOW-V16-2, LOW-V17-2 — all non-blocking per SA-056.

v0.19.3 — Purge wave: 34K lines deleted, hardcoded paths fixed

24 May 05:14

Choose a tag to compare

hex-foundation v0.19.3

227 files changed, 517 insertions, 33,938 deletions

Deletions (purge wave)

  • Python events tree removed — Rust daemon is canonical; 16,589 lines of Python dead code deleted
  • Dead Rust modules removed — capture.rs, health/, route.rs (orphaned post stage-A), 1,586 lines
  • Pulse-dashboard v1 removed — 5 wholesale-dead script subdirs, 3.5MB binary, pycache junk
  • Personal content removed — 5 personal skill dirs, personal commands (bet-status, hex-scout), e2e-guard scripts
  • Dead call sites stripped — 11 dead-module call sites + 4 mod declarations (wave-2a)
  • Install step removed — stop copying system/events/ (Rust daemon is canonical)

Fixes

  • Replace hardcoded workspace paths with $HEX_DIR across scripts
  • Restore HEX_DIR fallback to avoid unbound variable in release pipeline

Security

  • SA-052 PASS: capability lifecycle, boi-web improvements, memory sanitize
  • SA-053 PASS: Python events purge, dead Rust modules
  • SA-054 PASS: pulse-dashboard, personal skills/commands, dead script dirs

Carry-forward LOW: boi_web 0.0.0.0 binding (non-blocking)

v0.19.2 — Python→Rust ports, paths helper, memory runtime fix

24 May 03:50

Choose a tag to compare

What's new

  • paths.rs: centralized hex_dir() resolver ($HEX_DIR or $HOME/hex) — foundation for D4 hardcode sweep
  • session_reflect.rs: session-delta eval native via rusqlite — Python shellout to templates/eval/session-delta.py eliminated; Python file deleted
  • boi_web.rs: boi-web/server.py ported to native Rust SSE server
  • memory/open_db(): Plan 2 migration wired at DB open — fixes runtime gap where Plan 2 tables only created in tests
  • distill max_tokens bumped for longer session transcripts
  • .legacy.sh shellouts restored: watchdog-heartbeat-check.sh, weekly-synthesis-digest.sh, SpecTool, Router — backward compat for active callers
  • PERSONAL-EXTRACT caller pruned: dead Rust caller for x-oauth2-refresh.sh removed
  • facts_recall fix: multi-word queries now correctly return facts

Security

SA-051 PASS. No new Cargo deps beyond v0.19.1. session-delta.py deleted (net reduction). LOW carry-forward: LOW-V16-1/2/3, LOW-V17-1/2, SA-050-LOW-1 (all non-blocking test/dev scope).

17 commits, 32 files, 1048 insertions / 517 deletions

V2 Memory Plan 2: facts layer + distill pipeline (v0.19.1)

24 May 03:33

Choose a tag to compare

What's new

Memory facts layer: structured fact extraction and storage with full history. Six new tables (facts, fact_history, sessions, topics, transcript_files, vec0) + FTS5 index. Facts survive across sessions and are injected at wake time.

Distill pipeline: four-stage LLM pipeline — extract → judge → dedup → watermark. Triggered automatically on hex.session.parsed. Also available on-demand via hex memory distill.

24-predicate vocabulary: typed predicates (preferences, decisions, blockers, goals) drive LLM extraction fidelity.

hex memory consolidate: 6-op consolidation (contradiction detection, staleness pruning, dedup, topic reorg, summary refresh) with per-op isolation.

Nightly consolidate policy: auto-runs hex memory consolidate via hex-events. Memory consumption floor alert fires on silent distill failures.

Pre-commit hooks + CI guard: local pre-commit validation and legacy-rename-guard CI workflow.

Security

SA-050 PASS — reviewed by Sentinel. 1 LOW carry-forward (SA-050-LOW-1: memory-distill path interpolation, non-blocking, consistent with V15-2 precedent).

v0.18.0 — Capability System

23 May 12:03

Choose a tag to compare

Capability System

Agents can now register typed functions and call them through a sandboxed executor with a security guard that hard-denies unsafe operations at the code level.

New modules

  • capability_exec.rs — sandboxed executor with timeout enforcement and capability-level isolation
  • capability_guard.rs — security guard: allowlist-gated, blocks network egress, secrets access, and destructive operations before execution
  • registry.rs — write-once capability registry with pilot-agent allowlist (pilot_agents.json)
  • registry_health.rs — registry health monitoring and diagnostics

Highlights

  • Allowlist-gated registration (pilot_agents.json) — only approved agents can register capabilities
  • Write-once immutability — registered capabilities cannot be overwritten or mutated
  • Layered body scanning — security guard inspects capability bodies for dangerous patterns before registration
  • Sandbox timeout + cap enforcement — every execution is bounded
  • Isolated policy directory — capability policies live in their own scope
  • Re-entrancy guard — prevents capability execution loops
  • Atomic persistence — registry writes are atomic

New trail types

  • capability_add — recorded when an agent registers a capability
  • capability_call — recorded when a capability is invoked

Security review

SA-048 PASS. 251 tests passing. 3 new LOWs (non-blocking): case-sensitive body scan, variable-aliased command bypass, YAML template format!() without field sanitization. All pilot-gated, non-blocking. Carry-forward LOWs: LOW-V16-1, LOW-V16-2, LOW-V16-3, LOW-V17-1, LOW-V17-2.

Commits

  • eae64cd capability system (2510 insertions, 16 files)
  • a0aa072 docs: v0.18.0 CHANGELOG + README
  • 523ee09 bump: v0.18.0
  • 796fe4c chore: Cargo.lock v0.18.0 version string

v0.17.5 — V2 memory doc update

22 May 20:20

Choose a tag to compare

What's Changed

Documentation patch — updates V1 memory script references to V2 hex memory subcommands across all system docs.

No code changes. No new dependencies. Docs only.

Commits

  • 5bdfa90 docs: update V1 memory references to V2 hex memory subcommands
  • 6ce6a60 docs: add CHANGELOG entry for v0.17.5 memory V2 doc update
  • 027cdbf bump: v0.17.5
  • 05b20a5 chore: update Cargo.lock for v0.17.5 build

Security

SA-046 PASS (docs), SA-047 PASS (version bump + Cargo.lock) — Sentinel sign-off complete.

Carry-forward (non-blocking): LOW-V16-1, LOW-V16-2, LOW-V16-3, LOW-V17-1, LOW-V17-2

hex memory — hybrid vector + FTS5 recall with auto-injection

21 May 23:12

Choose a tag to compare

Full memory subsystem: hybrid vector + FTS5 recall with automatic prompt injection.

What's new

  • UserPromptSubmit recall hook: workspace memory injected into every prompt automatically
  • Hybrid search: RRF fusion of BM25 (FTS5) + vector arms via sqlite-vec
  • Nomic embedding module: local embeddings (fastembed, no API calls)
  • Schema v3: embed-on-index, private column, orphan-safe deletes
  • hex memory recall: FTS5 contextual retrieval + telemetry
  • Nightly smoke-eval + consumption-rate guard
  • FTS5 OR fallback — natural-language prompts now return results
  • Test suite modernized for native hex binary (T2870, TCE30, T02C9)
  • Pipeline fix: HEX_RELEASE_PIPELINE=1 on tag push (T5E29)

v0.17.3 — Act evidence verification

21 May 03:34

Choose a tag to compare

Act evidence verification

Added

  • act_evidence.rs: the harness verifies detail.evidence on every act trail entry claiming a mechanical operation (git push, BOI dispatch, file write, tag creation). Unverifiable claims are recorded as UNVERIFIED and do not count as completed work.
  • Evidence types: git_tag, git_push, boi_dispatch, file_written — each matched against observable system state.
  • Test suite covering all evidence types, missing-evidence detection, and UNVERIFIED recording.

Changed

  • Agent prompt hardened (prompt.rs): mechanical act entries now require a verifiable evidence object. Claims without evidence are recorded as UNVERIFIED — prevents claim-without-action loops.
  • types.rs: TrailEntry gains evidence and verified fields.
  • wake.rs: post-trail processing runs act_evidence::verify_trail and flags UNVERIFIED entries to the audit log.

v0.17.2

21 May 02:35

Choose a tag to compare

Full Changelog: v0.17.1...v0.17.2