Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 04:32
637f947

Added

  • Add oh harness install muse-code, standard .agents/skills discovery, and META_API_KEY secret storage for Muse Code in the persistent sandbox home. (#952)
  • Boot the sandbox with systemd as PID 1 via cap_add: SYS_ADMIN, apparmor=unconfined, tmpfs: /run,/run/lock,/sys/fs and cgroup: private — no host cgroup bind. (#956)
  • Run the existing entrypoint.sh as openharness-bootstrap.service, a Type=oneshot unit whose environment is derived from PID 1 by a systemd environment generator. (#956)
  • Supervise .oh/scripts/cron-runtime.ts directly with openharness-cron.service as sandbox, with a rate-limited Restart=on-failure and an ExecReload that sends SIGHUP. (#956)
  • Add the systemd-sandbox-init and cron-systemd-service probes, and prove PID 1, unit state, PID agreement, reload, and kill recovery in sandbox-boot-smoke.sh. (#956)

Changed

  • Rename the tracked secrets template .env.example to .example.env, so the **/.env* ignore rule no longer needs an exception. Copy .example.env to .env. (#979)
  • BREAKING: The sandbox image boots CMD ["/sbin/init"] with STOPSIGNAL SIGRTMIN+3; both Docker flavors drop init: true, the entrypoint: override, and command: sleep infinity. (#956)
  • sandbox-healthcheck.sh reads systemd unit state for scheduler liveness instead of requiring the cron-watchdog and cron-system tmux sessions. (#956)
  • Mask the Debian cron.service and ssh.service/ssh.socket so installing systemd cannot start a second scheduler or bypass the access.ssh gate. (#956)
  • cron-runtime.ts now holds its event loop open for signals, so a registry with zero armed crons stays reloadable and never leaves a stale crons/.pid. (#956)
  • Narrow tailscale-tool-boundary from "no cap_add" to an allowlist of exactly SYS_ADMIN, keeping every networking capability and /dev/net/tun forbidden. (#956)

Removed

  • Remove @narumitw/pi-plan-mode from the default Pi packages and its bundled /plan mode. (#972)
  • BREAKING: Remove the cron-watchdog tmux supervisor, its generated /tmp/cron-watchdog.sh, and CRON_WATCHDOG_INTERVAL; systemd Restart= replaces the polling loop. (#956)
  • BREAKING: Remove the scheduler-level cron-system tmux session and the legacy system-cron reaping; per-fire tmux: true sessions are unchanged. (#956)
  • Remove .oh/scripts/maintenance/restart-openharness-tmux.sh and its date-expired heartbeat step, which recreated the retired scheduler sessions. (#956)
  • Remove the cron-watchdog eval probe, whose subject no longer exists. (#956)

Fixed

  • Align the sandbox user with the Docker socket GID by joining the group that already owns it, instead of silently failing when groupmod cannot renumber docker. (#975)
  • Stop operator-config-guard requiring two deny rules that Claude Code never consults, which left the eval gate red for every pull request. (#977)
  • Drop five unenforceable Write(...)/NotebookEdit(...) deny rules that warned on every session start without adding protection. (#974)
  • Keep Hermes runtime state in the workspace, reject ambiguous homes, and reconcile shared skills without replacing user paths. (#969)
  • Shorten spec and wiki skill descriptions to remove Pi skill-conflict warnings. (#967)