Skip to content

v2.4.1

Choose a tag to compare

@randomittin randomittin released this 04 Sep 04:13
· 325 commits to main since this release

Added

  • ci: run curated release-gate suites on GitHub Actions
  • install: an update RETIRES the legacy external caveman plugin
  • hooks: wire heimdall-caveman rules into SessionStart — ultra was a pointer to nothing
  • hooks: wire heimdall-caveman ultra level into UserPromptSubmit
  • claim-check: add PREMATURE_REPORT batched-agent-reporting detector
  • plan-verify: close the plan -> execution -> verification loop
  • hooks: add heimdall-claim-check, a Stop-hook false-status detector
  • caveman-eval: add upstream_skill arm for direct MIT-vs-MIT comparison
  • delivery-audit: add heimdall-delivery-audit, wire into bin/heimdall
  • metrics: add heimdall-metric-compliance read-back audit
  • heimdall: wire 'hmd caveman-audit' — read back what was actually written
  • agent-watchdog: enforce preserve+resume on top of agent-resume reporting
  • fallback: react to HTTP 429 with a bounded-TTL exhaustion marker
  • fallback: surface heimdall-session-usage's crossed window in [INFO]
  • fallback: adjudication safety fence for in-process Agent spawns
  • fallback: route claude-code spawns through the gate per-process
  • fallback: remove 'on' state, keep off/auto/switch
  • hooks: wire secret-read-guard over Read|Grep|Glob|Bash (C-4/H-1)
  • hooks: wire the paste-secret filter and the claude-mem routing scrub
  • security: add secret-read-guard PreToolUse hook (C-4/H-1)
  • secret-filter: block-and-coach filter for pasted credentials
  • agent-pool: add memory-aware second cap to cmd_acquire
  • agent-pool: add memory-aware spawn budget CLI
  • fallback: pin the model on a routed child — the last thing blocking unattended auto
  • fallback: make the route actually reach OmniRoute — base-url/token-file seam + precedence over headroom
  • fallback: add arm self-provisioning subcommand + repo-path disclosure
  • commands: add /hmd:fallback — the gate had no operator-facing entry point
  • fallback: make the 95% pre-exhaustion trigger actually gate auto routing
  • hmd-exec: implement the api backend — completion-only, honestly scoped
  • hmd-exec: single dispatcher for headless tasks — wave 1, seam only
  • fallback: four routing states, no-auth providers, and a real schema fix
  • statusline: persist allowlisted rate_limits so session-usage reports the real figure
  • fallback: route claude -p fix attempts to OmniRoute on genuine exhaustion
  • hooks: nudge the orchestrator to emit a typed metric record, via Stop
  • session-usage: honest pre-exhaustion session-budget advisory
  • fallback: verify Tier-1 by credential ABSENCE, not by a config flag
  • gate-run: emit an honest machine-observed outcome record from gate verdicts
  • fallback: add heimdall-portable-brief, a scrubbed model-agnostic handoff
  • fallback: add heimdall-fallback, the quota-exhaustion policy gate
  • pressure: add heimdall-529-scan, a read-only transcript overload detector
  • agent-resume: forward a fresh overload death to the pressure controller
  • agent-pool: cap should-scale's scale-up under observed API pressure
  • pressure: land the AIMD spawn-pressure controller on main
  • agent-resume: classify termination cause and bound auto-retry
  • statusline: teammate rows carry an honest last-activity age, not a bare tier label
  • quota-advisor: wire advise verb, metrics.jsonl tier source, fix pass/fail summary
  • statusline: show cached per-agent model tier in swarm block
  • tier: add heimdall-tier agents per-agent tier/override report
  • test: fail the sweep loudly if a suite mutates the tracked tree
  • readme: add dark-mode-safe logo header, declare real asset provenance
  • dream-bundle: carry the hmd logo as hmd-dream.app's icon
  • assets: derive transparent/square/icns logo assets from hmd-logo-eye-h
  • self-improve: status self-documents that overrides are not mechanically applied
  • queue: add the hmd queue arm, with drain routed to its separate bin
  • self-improve: refuse routing overrides that contradict stated model policy
  • reachability: land the anti-vacuity assertion against LIVE re-inflation
  • dream-schedule: pin the hmd-dream bundle as the plist's interpreter
  • dream-runner: record invoking interpreter identity via --interpreter
  • dream: add heimdall-dream-bundle — a private signed hmd-dream identity
  • hooks: wire PostToolUse:Bash -> heimdall-journal so commits journal themselves
  • hooks: wire SubagentStop -> heimdall-metric so task outcomes record mechanically
  • deadcode: classify callers as LIVE / REACHABLE / PROSE-ONLY
  • precheck-agent: auto-invoke heimdall-brief instead of suggesting it
  • emit: add producer-side output compaction library
  • ctx-meter: add outshare verb — measure output-token share vs input

Fixed

  • hooks,caveman: SessionEnd timeout never applied; divergence warned on a dead plugin
  • analysis: correct two rounding slips in input-context-cost doc
  • sweep-receipt: exempt untracked TEAM MODE substrate files from tree_clean
  • git-guard: scope liveness check to the lock file, not the whole machine
  • 429-detect: scan sibling task transcripts — SubagentStop never fires on 429
  • hooks: gate SessionStart edit-ledger clear on source=="startup"
  • test: close mtime race in edit-tracker rebuild-path test arming
  • caveman: close ultra-parity gap — ban headers/per-item examples in _rules_ultra
  • test: derive caveman-eval refresh call-count/cost from a fixture, not n=10
  • caveman: forbid unrequested extra content in all three rule levels
  • statusline: use nanosecond clock for agents-count-cache freshness
  • test: align checkpoint-depth and conflict-log fixtures with sweep-receipt gate
  • caveman: retire plugin-authority wording from heimdall-caveman-block
  • caveman: restore diff/path/persist code overwritten by a mid-test wip checkpoint
  • delivery-audit: stop manufacturing a false reachability edge to heimdall-task
  • caveman: survive the plugin's silent level reset on session restart
  • watchdog: preserve on the BROAD signal, not the interrupted list
  • agents: wire the stall watchdog to a live entry point via 'hmd agents rescue'
  • agent-watchdog: stop-hook worktree resolution used a disproven signal
  • test: repair 3 bug classes in agent-inproc-cap suite
  • secret-read-guard: make silent non-zero exit structurally impossible
  • agent-pool: honor HEIMDALL_HOME so hermetic callers never collide with the real ambient pool
  • test: exclude shared-memory.db WAL side-files from demo-wall-honesty C3
  • test: stop 3 suites from rebuilding onto the tracked bin/edit-tracker
  • precheck-agent: key adjudication fence on inherited ANTHROPIC_BASE_URL, not a fresh verdict
  • test: generalize agent-name-gate section boundary past Task 1.1
  • test: migrate issue-loop-claude-fix-fallback fixtures off removed 'on' state
  • test: replace removed 'on' fallback state in api-backend fixture
  • gitleaks: allowlist the two wip SHAs carrying fixture secret literals
  • fallback: correct migration-reason wording for state=on -> off
  • test: defang gitleaks-triggering literals in paste-secret-filter fixtures
  • test: defang gitleaks-triggering PEM fixtures in secret-read-guard
  • reachability: teach engine bin/heimdall-modules' installs_via edges
  • route: declare the fallback model's real context window on routed launches
  • status-json: write the per-repo mirror, completing the race fix
  • test: red-proofs were silently inert — $name unbound in its own local
  • statusline: thread the render's cwd into read_status for per-repo lookup
  • statusline: key the ledger mirror per-repo, not machine-global
  • presence: reap orphaned .roster-cache.json.*.tmp files
  • test: repair 4 false-fail/false-pass assertions in omniroute-module suite
  • fallback: stop the liveness probe honouring ambient proxy vars
  • fallback: probe the gateway over HTTP, not bare TCP
  • reachability: acknowledge two bins the docstring fix un-hid
  • test: widen wait_pid_file deadline to survive doctor spawn latency under load
  • test: relocate keeper/sandbox-guard fixture HOMEs outside repo tree
  • fallback: rank arm's self-pick on verified registry fields, not a false tools-denial
  • fallback: rank arm's self-pick by tool-use capability, not alphabetically
  • test: cp-wired #7 waited on the wrong half of a two-part tick
  • test: make the dry-run escape guard precise, not blind
  • fallback: empty the built-in ToS deny list, keep the operator override
  • team: forward heimdall-team's own tty decision to invite's secret-print gate
  • reachability: clear the SHIPPED-BUT-UNREACHABLE gate; consult session-usage
  • gc: reap stale stop-hook reminder markers, never a live session's
  • metric-hook: never record a killed subagent as a success
  • verify-edits: report NON-VERIFIED instead of a silent false green
  • agent-resume: stop recording 429 rate-limits as backend overload pressure
  • issue-loop: route _run_claude_fix through the overload retry wrapper
  • heimdall: hmd init --help no longer truncates to a bare "Usage:" header
  • heimdall: stop metrics) arm claiming a reinstall fixes a binary that was never built
  • docs: sync npm README and use absolute URLs for the picture header
  • quota-advisor: split same-line local self-reference
  • test: supply hmd-dream bundle icon in dream-tcc-resilience fixture
  • init: stop claiming every coding agent reads AGENTS.md
  • wrap: stop claiming generation is routed for tools that ignore ANTHROPIC_BASE_URL
  • test: trap SIGTERM/SIGINT in the two suites that leak fixtures into $REPO
  • dream-bundle: stop telling users a folder grant lapsed when it did not
  • test: stop guessing heimdall-route's fixture ports from PID
  • test: make heimdall-watch py_compile capture hermetic
  • test: stub the dead-code advisory in wired-holder-advisory.test.sh
  • test: stub the dead-code advisory in reboot-advisor.test.sh
  • reachability: drop 4 stale exemption rows now reached for real
  • maintain: seeker files maintainer label so the autopilot engine ingests it
  • test: bound sandbox-guard doctor teardown before pgrep-style checks
  • presence: stop hermetic installs from leaking self-heal doctor daemons
  • presence: stop hermetic installs leaking a 30-minute orphan daemon
  • test: make cli-help-no-expansion emit a parseable summary line
  • agent-name-gate: restore the named-agent notice and pin what it must not do
  • test: re-target dream-install-root's argv assertions to the shifted plist shape
  • uninstall: merge consecutive dropped settings.json members before splicing cuts
  • verify-edits: cross-check present-but-empty ledger against git
  • self-improve: exclude null-outcome records from pass-rate scoring
  • metric: stop fabricating outcome/task_type in SubagentStop hook
  • dream-permission: ask for the folder TCC service, not Full Disk Access
  • dream: clamp --min-delta up to the floor, mirroring --min-samples
  • checkpoint-share: stop pinning --help to a hardcoded line range
  • self-improve: fail open on malformed routing-overrides.json
  • test: stop reachability falsifier fixture from hiding its own edges in comments
  • reachability: cap dispatcher hops at REACHABLE, never LIVE
  • reachability: strip comments before tokenizing invocation edges
  • install: stop advertising a dead-on-arrival next-step command on fresh installs
  • deadcode: treat commands/*.md as a declared entry point, not prose
  • conflict-log: make the conflict-reflection quality gate falsifiable
  • report-issue: give the GitHub issue filer an invocable path for the first time
  • deadcode: strongest-class wins across ALL paths, not just the first BFS finds
  • sla: give the 24h observation SLA an invocable path for the first time
  • wrap,badge: resolve cursor's real binary; stop the badge pointing at a 404
  • release,help: repin README to the release commit; drop the fabricated caveman %
  • wrap: route headroom through the --always shim even off a TTY
  • wrap: route the --always shim through the headroom chain
  • install: stop preinstalling claude-mem by default

Changed

  • caveman: consolidate ultra rules -- trim duplication, not add rules
  • caveman: collapse output-compression levels to ultra-only

Documentation

  • analysis: the #1 lever was already built, firing, and ignored
  • analysis: input-context-cost — 94.8% token share != cost share, cache-create surfaces at 37%
  • omni: live verification on this machine — routed generation, safety, 429 chain
  • caveman-eval: measure consolidated ultra rules -- median gap widens to +12.1%, ratio prediction inconclusive
  • caveman-eval: output_tokens includes thinking and cannot be separated
  • caveman: ultra-parity research -- token-spend breakdown + proposed _rules_ultra text
  • heimdall: §2d — asks must be objective, with a closed answer set
  • heimdall: §2d — clarity means the TASK, never permission
  • caveman-eval: ladder hypothesis tested and REJECTED — not merged
  • caveman-eval: add findings doc (force-add, docs/analysis/ is gitignored)
  • caveman-eval: real 6-arm measurement — hmd trails upstream's MIT skill
  • heimdall: add §2d Clarification Protocol to orchestrator agent
  • analysis: caveman upstream — mechanical compression falsifies my general claim
  • analysis: watchdog missed its first real case — turn-limit stops are invisible to it
  • analysis: agent stall enforcement — what landed and what it does not cover
  • analysis: secret-read-guard crashed and silently blocked a legitimate command
  • analysis: why the fallback did not fire — the signal is a stale statusline snapshot
  • analysis: 9router vs OmniRoute comparison — verdict NO, do not switch
  • plan: record Wave 1 landing and the stale-env residual gap
  • plan: fix cited test suites, note unrun reviewer pass
  • plan: agent fallback coverage + multiple-agents mode
  • fallback: drop 'on' state from command docs, help text, comment
  • secret-filter: STEP 0 verdict — prompt rewrite is impossible, block is real
  • analysis: statusline roster inflation — traced, not a cross-team leak
  • patches: record the local OmniRoute wsPath patch and its pin divergence
  • fallback: document measured context exposure when fallback routes
  • fallback: document base-url/token-file/model seams + fallback_model
  • fallback: record the verified keyless route and an OmniRoute connection-health defect
  • analysis: correct the OmniRoute start doc — nohup was not durable, launchd is
  • fallback: document the arm subcommand
  • analysis: document durable OmniRoute gateway start on 127.0.0.1:20128
  • analysis: harness-independence design — verdict, dependency inventory, staged path
  • analysis: measure the live Headroom proxy in-path — do NOT chain OmniRoute
  • analysis: OmniRoute Tier-1 credential isolation — MITIGATION HOLDS
  • analysis: resolve both open hook-delivery questions by experiment
  • pressure: confirm 429/rate_limit is excluded from PRESSURE_KINDS, pin it
  • agent-resume: record that SubagentStop cannot reach the orchestrator
  • analysis: design provider-tier routing experiment on the existing self-improve harness
  • analysis: OmniRoute exhaustion-fallback transport assessment (GO-WITH-CAVEATS)
  • agent-resume: correct the network->pressure rationale, pin it with a test
  • agents: add worked spawn templates for 4 orphaned agents
  • analysis: add missing Latency columns, disclose table split, log live ledger-bug catch
  • analysis: audit hooks.json + skills for registered-vs-fires gaps
  • readme: make the logo header survive the npm copy, not just GitHub
  • readme: clarify jq is install-time optional, post-install required
  • readme: fix team.json path/conditionality, keep measured claim honest
  • readme: stop claiming hmd wrap routes every tool's traffic
  • analysis: feature-execution audit of all 45 bin/heimdall dispatcher arms
  • analysis: ai-agents landscape survey — one real gap, six already-have or already-declined
  • analysis: decline self-hosting Firecrawl — and correct my own framing
  • analysis: decline OmniRoute; re-measure the token stack, caching wins 350x
  • s6: manifest reflects completed 2026-06-20/21 runs, drops stale sign-off gate
  • spec: confirm the Gatekeeper block by GUI, and it is worse than assessed
  • dream: state plainly in the report that overrides are not applied automatically
  • maintain: stop claiming the prose pipeline uses issue_queue
  • issue-queue: document the undocumented route subcommand
  • reachability: triage the 10 bins the comment-edge fix exposed
  • prompt: stop telling the orchestrator no hook emits metrics — one now does
  • analysis: record mid-audit correction — heimdall-brief is now LIVE
  • analysis: renumber bottom line to 14, add section nav
  • analysis: quantify 'green tests vs runs in production'; oracles + modules
  • analysis: add arm-usage control, --help coverage, clean-surface census
  • analysis: four-state capability census for v2.4.0 launch
  • spec: Rust rewrite evaluation — no, fix architecture instead
  • spec: snapshot-isolated continuous gate grading
  • analysis: RTK incorporation assessment — decline as auto-on
  • stacks: add the missing SKILL.md so stacks is discoverable
  • protocol: stop mandating the claude-mem reasoning-bank query

Tests

  • caveman: pin the scope-discipline sentence added in cbbe849
  • caveman-eval: commit AFTER snapshot (n=30, scope-discipline fix applied)
  • caveman-eval: grow prompt corpus from 10 to 30 for stable measurement
  • claim-check: make sections [1]/[17] hermetic against ambient sweep processes
  • plan-verify: fix A9/A10 expectation to match render_text's actual output
  • caveman: add hermetic fresh-install proof with no external plugin
  • delivery-audit: add hermetic suite; fix untracked-dir git-status bug it caught
  • metrics: cover measure_session's unreadable-transcript branch
  • metrics: cover --all mode's own unreadable-metrics branch
  • fallback: cover localhost and bracketed ::1 loopback shapes in adjudication fence
  • fallback: acceptance suite for the adjudication fence + fix disclosure/deny coupling bug
  • fallback: cover judgment fail-open when gate-endpoint lib is unreadable
  • fallback: add Wave 1 Task 1.2 acceptance suite for hmd-route-claude
  • fallback: migrate on-state test cases to off/auto/switch; fix stale on-state usage strings
  • demo-wall-honesty: exclude new per-repo ledger mirror path
  • omniroute: add acceptance suite for OmniRoute opt-in module
  • reachability: pin python-docstring stripping with a fixture-tree falsifier
  • fallback: prove anthropic_model_pinned + model subcommand (72-84)
  • route: prove fallback precedence + model pin (groups 10-21)
  • fallback: cover base-url + token-file verdict/leak contracts (13 properties)
  • invite: pin the non-TTY secret refusal and the explicit override
  • dream: prove auto-start skips a policy-blocked candidate, starts the next
  • dream-permission: prove disarm requires a confirmed interpreter identity match

Maintenance

Other

  • [COMMUNICATION] journal: [COMMUNICATION] feat(install): an update RETIRES the legacy external caveman plugin
  • [COMMUNICATION] feat(install): an update RETIRES the legacy external caveman plugin
  • [COMMUNICATION] fix(hooks,caveman): SessionEnd timeout never applied; divergence warned on a dead plugin
  • [COMMUNICATION] docs(analysis): the #1 lever was already built, firing, and ignored
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] docs(omni): live verification on this machine — routed generation, safety, 429 chain
  • [COMMUNICATION] docs(omni): live verification on this machine — routed generation, safety, 429 chain
  • [COMMUNICATION] fix(receipt): tree_clean ignores untracked team-mode substrate only
  • [COMMUNICATION] fix(git-guard): scope liveness to the lock file, not the whole machine
  • [COMMUNICATION] journal: [COMMUNICATION] fix(429-detect): scan sibling task transcripts — SubagentStop never fires on 429
  • [COMMUNICATION] fix(429-detect): scan sibling task transcripts — SubagentStop never fires on 429
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] docs(caveman-eval): output_tokens includes thinking and cannot be separated
  • [COMMUNICATION] docs(caveman-eval): output_tokens includes thinking and cannot be separated
  • [COMMUNICATION] feat(caveman): ultra beats upstream on median tokens (header ban)
  • [COMMUNICATION] fix(test): close mtime race in edit-tracker rebuild-path arming
  • [COMMUNICATION] journal: [COMMUNICATION] fix(test): caveman-eval corpus-agnostic via fixture, not pinned n
  • [COMMUNICATION] fix(test): caveman-eval corpus-agnostic via fixture, not pinned n
  • [COMMUNICATION] refactor(caveman): collapse to ultra-only, legacy levels map forward
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] merge: caveman ultra-parity research — headers are the measured cause Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • squashed 5 checkpoint commit(s) (heimdall-wip)
  • [COMMUNICATION] merge: caveman scope-discipline rule (improved, objective NOT met) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(statusline): nanosecond clock closes agents-cache TTL race (9/20 -> 0/20)
  • [COMMUNICATION] journal: [COMMUNICATION] fix(statusline): nanosecond clock closes agents-cache TTL race (9/20 -> 0/20)
  • forced checkpoint (heimdall-wip)
  • [COMMUNICATION] fix(statusline): nanosecond clock closes agents-cache TTL race (9/20 -> 0/20)
  • [COMMUNICATION] journal: [COMMUNICATION] merge: claim-check test hermetic against ambient sweep processes Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: claim-check test hermetic against ambient sweep processes Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: heimdall-plan-verify — close plan/execution/verification loop Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: PREMATURE_REPORT detector — batched agent reporting Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] docs(heimdall): §2d — asks must be objective, with a closed answer set
  • [COMMUNICATION] journal: [COMMUNICATION] docs(heimdall): §2d — clarity means the TASK, never permission
  • [COMMUNICATION] docs(heimdall): §2d — clarity means the TASK, never permission
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] merge: heimdall-claim-check — Stop-hook false-status detector Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: align two fixtures with the sweep-receipt gate Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(caveman-eval): ladder hypothesis tested and REJECTED — not merged
  • [COMMUNICATION] journal: [COMMUNICATION] docs(caveman-eval): ladder hypothesis tested and REJECTED — not merged
  • [COMMUNICATION] docs(caveman-eval): ladder hypothesis tested and REJECTED — not merged
  • [COMMUNICATION] merge: caveman eval findings doc + measurement snapshot Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] merge: caveman eval — measured head-to-head vs upstream MIT skill Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: caveman eval — measured head-to-head vs upstream MIT skill Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: §2d Clarification Protocol — one batched round, then options, then execute Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: caveman eval harness (3-arm, control, committed snapshot) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • preserve interrupted agent work (af761d0dd08ba2cfe) [heimdall-agent-watchdog] Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • squashed 2 checkpoint commit(s) (heimdall-wip)
  • [COMMUNICATION] docs(analysis): caveman upstream — mechanical compression falsifies my general claim
  • preserve interrupted agent work (a005f63ea3c9fd2c3) [heimdall-agent-watchdog] Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] merge: caveman measure/act loop + level diff preview Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: caveman measure/act loop + level diff preview Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] fix(delivery-audit): stop manufacturing a false reachability edge to heimdall-task
  • squashed 6 checkpoint commit(s) (heimdall-wip)
  • preserve interrupted agent work (a4a70482da497abb0) [heimdall-agent-watchdog] Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] fix(delivery-audit): stop manufacturing a false reachability edge to heimdall-task
  • [COMMUNICATION] merge: caveman in-house (MIT, vendored with attribution) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] merge: delivery-truth audit — make "queued"/"landed"/"running" checkable
  • squashed 2 checkpoint commit(s) (heimdall-wip)
  • [COMMUNICATION] merge: delivery-truth audit — make "queued"/"landed"/"running" checkable
  • [COMMUNICATION] merge: metric self-reporting read-back (hmd metric-audit) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(watchdog): preserve on the BROAD signal, not the interrupted list
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(watchdog): preserve on the BROAD signal, not the interrupted list
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(watchdog): preserve on the BROAD signal, not the interrupted list
  • [COMMUNICATION] journal: [COMMUNICATION] fix(watchdog): preserve on the BROAD signal, not the interrupted list
  • [COMMUNICATION] fix(watchdog): preserve on the BROAD signal, not the interrupted list
  • [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] feat(heimdall): wire 'hmd caveman-audit' — read back what was actually written
  • [FINDING] reap-idle protects only agent-memory among gitignored paths
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] docs(analysis): watchdog missed its first real case — turn-limit stops are invisible to it
  • preserved by orchestrator (watchdog did not detect this agent) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] fix(agents): wire the stall watchdog to a live entry point via 'hmd agents rescue'
  • [COMMUNICATION] docs(analysis): agent stall enforcement — what landed and what it does not cover
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • squashed 2 checkpoint commit(s) (heimdall-wip)
  • [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): secret-read-guard crashed and silently blocked a legitimate command
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): secret-read-guard crashed and silently blocked a legitimate command
  • [COMMUNICATION] docs(analysis): secret-read-guard crashed and silently blocked a legitimate command
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • preserved by orchestrator at agent turn limit Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): why the fallback did not fire — the signal is a stale statusline snapshot
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] docs(analysis): why the fallback did not fire — the signal is a stale statusline snapshot
  • [COMMUNICATION] merge: stop 3 suites rebuilding onto the tracked bin/edit-tracker
  • [COMMUNICATION] merge: watch the seven_day window as an additive crossed condition (Wave 2) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): 9router vs OmniRoute comparison — verdict NO, do not switch
  • squashed 2 checkpoint commit(s) (heimdall-wip)
  • [COMMUNICATION] docs(analysis): 9router vs OmniRoute comparison — verdict NO, do not switch
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(plan): record Wave 1 landing and the stale-env residual gap
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(plan): record Wave 1 landing and the stale-env residual gap
  • [COMMUNICATION] journal: [COMMUNICATION] docs(plan): record Wave 1 landing and the stale-env residual gap
  • [COMMUNICATION] docs(plan): record Wave 1 landing and the stale-env residual gap
  • [COMMUNICATION] journal: [COMMUNICATION] merge: route headless claude spawns through the fallback gate per-process (Wave 1 Task 1.2) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: route headless claude spawns through the fallback gate per-process (Wave 1 Task 1.2) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • preserved by orchestrator — agent stalled Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] docs(plan): fix cited test suites, note unrun reviewer pass
  • [COMMUNICATION] docs(plan): fix cited test suites, note unrun reviewer pass
  • [COMMUNICATION] docs(plan): agent fallback coverage + multiple-agents mode
  • 23 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] chore: ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: api-backend fixture off the removed 'on' state Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] merge: remove the 'on' fallback state — auto, off, switch remain Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: remove the 'on' fallback state — auto, off, switch remain Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(gitleaks): allowlist the two wip SHAs carrying fixture secret literals
  • [COMMUNICATION] journal: [COMMUNICATION] fix(gitleaks): allowlist the two wip SHAs carrying fixture secret literals
  • [COMMUNICATION] fix(gitleaks): allowlist the two wip SHAs carrying fixture secret literals
  • [COMMUNICATION] merge: fixture secrets assembled at runtime (no static literals) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] merge: omniroute disk footprint analysis + honest consent disclosure Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] merge: omniroute disk footprint analysis + honest consent disclosure Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] merge: omniroute disk footprint analysis + honest consent disclosure Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • forced checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] chore(gitignore): cover credential filenames as a second layer
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] chore(gitignore): cover credential filenames as a second layer
  • omniroute: drop unproven reclaim_build_space() feature
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] chore(gitignore): cover credential filenames as a second layer
  • [COMMUNICATION] journal: [COMMUNICATION] chore(gitignore): cover credential filenames as a second layer
  • preserved by orchestrator — agent killed by rate limit Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] chore(gitignore): cover credential filenames as a second layer
  • [COMMUNICATION] feat(hooks): wire secret-read-guard over Read|Grep|Glob|Bash (C-4/H-1)
  • [COMMUNICATION] journal: [COMMUNICATION] feat(hooks): wire the paste-secret filter and the claude-mem routing scrub
  • secret-read-guard: preserved by orchestrator at agent turn limit
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] feat(hooks): wire the paste-secret filter and the claude-mem routing scrub
  • [COMMUNICATION] merge: scrub inherited routing vars from claude-mem worker (C-1) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: paste-secret block-and-coach filter (rewrite proven impossible) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • routing-scrub: preserved by orchestrator — agent stalled with uncommitted work
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(route): declare the fallback model's real context window on routed launches
  • secret-filter: detector + tests — preserved by orchestrator at agent turn limit
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] fix(route): declare the fallback model's real context window on routed launches
  • [COMMUNICATION] journal: [COMMUNICATION] fix(route): declare the fallback model's real context window on routed launches
  • [COMMUNICATION] fix(route): declare the fallback model's real context window on routed launches
  • [COMMUNICATION] fix(status-json): write the per-repo mirror, completing the race fix
  • [COMMUNICATION] journal: [COMMUNICATION] merge: presence tmp reaper (age + live-pid gated) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • statusline: per-repo mirror test — preserved by orchestrator at agent turn limit
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] merge: presence tmp reaper (age + live-pid gated) Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): statusline roster inflation — traced, not a cross-team leak
  • presence: tmp reaper — preserved by orchestrator at agent turn limit
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): statusline roster inflation — traced, not a cross-team leak
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): statusline roster inflation — traced, not a cross-team leak
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): statusline roster inflation — traced, not a cross-team leak
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): statusline roster inflation — traced, not a cross-team leak
  • [COMMUNICATION] docs(analysis): statusline roster inflation — traced, not a cross-team leak
  • [COMMUNICATION] merge: omniroute test findings — all 5 were test defects, not code defects Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: worktree-agent-a764b72c9f733a3d6 Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] fix(fallback): stop the liveness probe honouring ambient proxy vars
  • 6 edit-op checkpoint (heimdall-wip)
  • modules: omniroute manifest — opt-in, consent-required, pinned d82b682
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(patches): record the local OmniRoute wsPath patch and its pin divergence
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] docs(patches): record the local OmniRoute wsPath patch and its pin divergence
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] docs(patches): record the local OmniRoute wsPath patch and its pin divergence
  • [COMMUNICATION] style(agent-pool): split semicolon statements and the multi-import line
  • agent-pool: split semicolon statements and the multi-import line
  • [COMMUNICATION] fix(fallback): probe the gateway over HTTP, not bare TCP
  • [COMMUNICATION] merge: stop Python docstrings creating false invocation edges
  • reachability: strip Python docstrings before tokenizing
  • [COMMUNICATION] journal: [COMMUNICATION] merge: fix keeper/sandbox-guard E2 load-sensitive race Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] merge: fix keeper/sandbox-guard E2 load-sensitive race Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
  • [COMMUNICATION] journal: [COMMUNICATION] docs(fallback): document measured context exposure when fallback routes
  • [COMMUNICATION] docs(fallback): document measured context exposure when fallback routes
  • [COMMUNICATION] merge: relocate keeper/sandbox-guard test fixtures outside the scanned tree
  • [COMMUNICATION] Merge branch 'worktree-agent-a12b2fa9501132132'
  • [COMMUNICATION] Merge branch 'worktree-agent-a3cb80fc4eb3ffed8'
  • [COMMUNICATION] Merge branch 'worktree-agent-a3724c6c15d34e132'
  • [COMMUNICATION] journal: [COMMUNICATION] feat(fallback): pin the model on a routed child — the last thing blocking unattended auto
  • [COMMUNICATION] feat(fallback): pin the model on a routed child — the last thing blocking unattended auto
  • [COMMUNICATION] wip: 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 24 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] feat(fallback): make the route actually reach OmniRoute — base-url/token-file seam + precedence over headroom
  • [COMMUNICATION] docs(fallback): record the verified keyless route and an OmniRoute connection-health defect
  • [COMMUNICATION] journal: [COMMUNICATION] fix(fallback): rank arm's self-pick on verified registry fields, not a false tools-denial
  • [COMMUNICATION] fix(fallback): rank arm's self-pick on verified registry fields, not a false tools-denial
  • [COMMUNICATION] docs(analysis): correct the OmniRoute start doc — nohup was not durable, launchd is
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): land durable OmniRoute gateway start doc
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): land durable OmniRoute gateway start doc
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] docs(analysis): land durable OmniRoute gateway start doc
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] feat(commands): add /hmd:fallback — the gate had no operator-facing entry point
  • [COMMUNICATION] journal: [COMMUNICATION] fix(test): cp-wired #7 waited on the wrong half of a two-part tick
  • [COMMUNICATION] fix(test): cp-wired #7 waited on the wrong half of a two-part tick
  • [COMMUNICATION] fix(test): make the dry-run escape guard precise, not blind
  • [COMMUNICATION] fix(fallback): empty the built-in ToS deny list, keep the operator override
  • [COMMUNICATION] journal: [COMMUNICATION] feat(fallback): make the 95% pre-exhaustion trigger actually gate auto routing
  • [COMMUNICATION] feat(fallback): make the 95% pre-exhaustion trigger actually gate auto routing
  • [COMMUNICATION] fix(team): forward heimdall-team's own tty decision to invite's secret-print gate
  • [COMMUNICATION] journal: [COMMUNICATION] fix(reachability): clear the SHIPPED-BUT-UNREACHABLE gate; consult session-usage
  • [COMMUNICATION] fix(reachability): clear the SHIPPED-BUT-UNREACHABLE gate; consult session-usage
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] feat(hmd-exec): implement the api backend — completion-only, honestly scoped
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] feat(hmd-exec): implement the api backend — completion-only, honestly scoped
  • [COMMUNICATION] journal: [COMMUNICATION] feat(hmd-exec): implement the api backend — completion-only, honestly scoped
  • [COMMUNICATION] feat(hmd-exec): implement the api backend — completion-only, honestly scoped
  • [COMMUNICATION] journal: [COMMUNICATION] feat(hmd-exec): single dispatcher for headless tasks — wave 1, seam only
  • [COMMUNICATION] feat(hmd-exec): single dispatcher for headless tasks — wave 1, seam only
  • [COMMUNICATION] security: rotate OmniRoute default management password (CHANGEME)
  • rotate OmniRoute default management password (CHANGEME)
  • [COMMUNICATION] feat(fallback): four routing states, no-auth providers, and a real schema fix
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): harness-independence design — verdict, dependency inventory, staged path
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): harness-independence design — verdict, dependency inventory, staged path
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): harness-independence design — verdict, dependency inventory, staged path
  • [COMMUNICATION] docs(analysis): harness-independence design — verdict, dependency inventory, staged path
  • [COMMUNICATION] feat(statusline): persist allowlisted rate_limits so session-usage reports the real figure
  • [COMMUNICATION] journal: [COMMUNICATION] feat(fallback): route claude -p fix attempts to OmniRoute on genuine exhaustion
  • [COMMUNICATION] feat(fallback): route claude -p fix attempts to OmniRoute on genuine exhaustion
  • [COMMUNICATION] journal: [COMMUNICATION] fix(gc): reap stale stop-hook reminder markers, never a live session's
  • [COMMUNICATION] fix(gc): reap stale stop-hook reminder markers, never a live session's
  • [COMMUNICATION] feat(hooks): nudge the orchestrator to emit a typed metric record, via Stop
  • [COMMUNICATION] journal: [COMMUNICATION] feat(session-usage): honest pre-exhaustion session-budget advisory
  • [COMMUNICATION] feat(session-usage): honest pre-exhaustion session-budget advisory
  • [COMMUNICATION] journal: [COMMUNICATION] feat(fallback): verify Tier-1 by credential ABSENCE, not by a config flag
  • [COMMUNICATION] feat(fallback): verify Tier-1 by credential ABSENCE, not by a config flag
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): measure the live Headroom proxy in-path — do NOT chain OmniRoute
  • [COMMUNICATION] docs(analysis): measure the live Headroom proxy in-path — do NOT chain OmniRoute
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): OmniRoute Tier-1 credential isolation — MITIGATION HOLDS
  • [COMMUNICATION] docs(analysis): OmniRoute Tier-1 credential isolation — MITIGATION HOLDS
  • [COMMUNICATION] fix(metric-hook): never record a killed subagent as a success
  • [COMMUNICATION] fix(verify-edits): report NON-VERIFIED instead of a silent false green
  • [COMMUNICATION] feat(gate-run): emit an honest machine-observed outcome record from gate verdicts
  • [COMMUNICATION] fix(agent-resume): stop recording 429 rate-limits as backend overload pressure
  • [COMMUNICATION] journal: [COMMUNICATION] feat(fallback): add heimdall-portable-brief, a scrubbed model-agnostic handoff
  • [COMMUNICATION] feat(fallback): add heimdall-portable-brief, a scrubbed model-agnostic handoff
  • [COMMUNICATION] docs(analysis): resolve both open hook-delivery questions by experiment
  • [COMMUNICATION] journal: [COMMUNICATION] docs(pressure): confirm 429/rate_limit is excluded from PRESSURE_KINDS, pin it
  • [COMMUNICATION] docs(pressure): confirm 429/rate_limit is excluded from PRESSURE_KINDS, pin it
  • [COMMUNICATION] journal: [COMMUNICATION] feat(fallback): add heimdall-fallback, the quota-exhaustion policy gate
  • [COMMUNICATION] feat(fallback): add heimdall-fallback, the quota-exhaustion policy gate
  • [COMMUNICATION] journal: [COMMUNICATION] docs(agent-resume): record that SubagentStop cannot reach the orchestrator
  • [COMMUNICATION] docs(agent-resume): record that SubagentStop cannot reach the orchestrator
  • [COMMUNICATION] journal: [COMMUNICATION] feat(pressure): add heimdall-529-scan, a read-only transcript overload detector
  • [COMMUNICATION] feat(pressure): add heimdall-529-scan, a read-only transcript overload detector
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): design provider-tier routing experiment on the existing self-improve harness
  • [COMMUNICATION] journal: [COMMUNICATION] docs(analysis): design provider-tier routing experiment on the existing self-improve harness
  • [COMMUNICATION] docs(analysis): design provider-tier routing experiment on the existing self-improve harness
  • [COMMUNICATION] docs(analysis): OmniRoute exhaustion-fallback transport assessment (GO-WITH-CAVEATS)
  • [COMMUNICATION] docs(agent-resume): correct the network->pressure rationale, pin it with a test
  • [COMMUNICATION] journal: [COMMUNICATION] fix(issue-loop): route _run_claude_fix through the overload retry wrapper
  • [COMMUNICATION] fix(issue-loop): route _run_claude_fix through the overload retry wrapper
  • [COMMUNICATION] feat(agent-resume): forward a fresh overload death to the pressure controller
  • [COMMUNICATION] journal: [COMMUNICATION] feat(agent-pool): cap should-scale's scale-up under observed API pressure
  • [COMMUNICATION] feat(agent-pool): cap should-scale's scale-up under observed API pressure
  • [COMMUNICATION] journal: [COMMUNICATION] feat(pressure): land the AIMD spawn-pressure controller on main
  • [COMMUNICATION] feat(pressure): land the AIMD spawn-pressure controller on main
  • [COMMUNICATION] Merge branch 'worktree-agent-a02d0c24c1017dc40' — classify why an agent died, and bound the retry
  • [COMMUNICATION] Merge branch 'worktree-agent-a2f12e8e3c6c48a42' — make cold agents reachable, and correct the audit where it was wrong
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a3be63ab0bbd3c80b' — teammate last-activity age on the statusline
  • [COMMUNICATION] Merge branch 'worktree-agent-a3be63ab0bbd3c80b' — teammate last-activity age on the statusline
  • auto-checkpoint (5 files)
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-aa040cafd8cd1311f' — four false user-facing claims, corrected against source
  • [COMMUNICATION] Merge branch 'worktree-agent-aa040cafd8cd1311f' — four false user-facing claims, corrected against source
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] Merge branch 'worktree-agent-ab27c6cac154b2162' — two broken arms, plus a gate so the next one cannot rot silently
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a9b57f14abc6b31c6' — execute every dispatcher arm, record the verdicts
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a9b57f14abc6b31c6' — execute every dispatcher arm, record the verdicts
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a9b57f14abc6b31c6' — execute every dispatcher arm, record the verdicts
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a9b57f14abc6b31c6' — execute every dispatcher arm, record the verdicts
  • [COMMUNICATION] Merge branch 'worktree-agent-a9b57f14abc6b31c6' — execute every dispatcher arm, record the verdicts
  • [COMMUNICATION] docs(analysis): ai-agents landscape survey — one real gap, six already-have or already-declined
  • [COMMUNICATION] Merge branch 'worktree-agent-a4c61d1eea089e5cf' — trap INT/TERM in the two suites that litter the checkout
  • squashed 2 checkpoint commit(s) (heimdall-wip)
  • quota-advisor: preserve advisor + suite from a quota-killed agent
  • [COMMUNICATION] docs(analysis): decline OmniRoute; re-measure the token stack, caching wins 350x
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a23bddbacd5f3538c' — fail the sweep loudly if a suite mutates the tracked tree
  • [COMMUNICATION] Merge branch 'worktree-agent-a23bddbacd5f3538c' — fail the sweep loudly if a suite mutates the tracked tree
  • [COMMUNICATION] fix(dream-bundle): stop telling users a folder grant lapsed when it did not
  • [COMMUNICATION] feat(readme): add dark-mode-safe logo header, declare real asset provenance
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] feat(dream-bundle): carry the hmd logo as hmd-dream.app's icon
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] feat(assets): derive transparent/square/icns logo assets from hmd-logo-eye-h
  • 15 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] fix(test): stop guessing heimdall-route's fixture ports from PID
  • [COMMUNICATION] fix(test): make heimdall-watch py_compile capture hermetic
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-ad068927e7c00f7f2' — drop 4 exemption rows now reached for real
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-ad068927e7c00f7f2' — drop 4 exemption rows now reached for real
  • [COMMUNICATION] Merge branch 'worktree-agent-ad068927e7c00f7f2' — drop 4 exemption rows now reached for real
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a9e8c2f7ade79ea76' — reconnect the /hmd:maintain seek-then-fix loop
  • [COMMUNICATION] Merge branch 'worktree-agent-a9e8c2f7ade79ea76' — reconnect the /hmd:maintain seek-then-fix loop
  • [COMMUNICATION] docs(spec): confirm the Gatekeeper block by GUI, and it is worse than assessed
  • [COMMUNICATION] Merge branch 'worktree-agent-a4464bac9d9783d9f' — the last three sweep reds
  • reconcile sandbox guard with the one landed on main
  • [COMMUNICATION] journal: [COMMUNICATION] fix(presence): stop hermetic installs leaking a 30-minute orphan daemon
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] fix(presence): stop hermetic installs leaking a 30-minute orphan daemon
  • [COMMUNICATION] Merge branch 'worktree-agent-ad1b79b9522f138d6' — agent-name-gate 25/6 -> 31/0
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • forced checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] Merge branch 'worktree-agent-a4e0b21453b118273' — a present-but-empty edit ledger no longer reads as a clean pass
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-abf7a8ab084924e63' — stop counting unknown outcomes as failures
  • [COMMUNICATION] Merge branch 'worktree-agent-abf7a8ab084924e63' — stop counting unknown outcomes as failures
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a36883138f50bf126' — make routing overrides visible and refusable, not silently applied
  • [COMMUNICATION] Merge branch 'worktree-agent-a36883138f50bf126' — make routing overrides visible and refusable, not silently applied
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a6d122082b6af9217' — /hmd:maintain: correct the docs that claimed a pipeline nobody built, and give queue a way in
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a6d122082b6af9217' — /hmd:maintain: correct the docs that claimed a pipeline nobody built, and give queue a way in
  • [COMMUNICATION] Merge branch 'worktree-agent-a6d122082b6af9217' — /hmd:maintain: correct the docs that claimed a pipeline nobody built, and give queue a way in
  • [COMMUNICATION] Merge branch 'worktree-agent-aad45e25682244495' — fix(checkpoint-share): unpin --help from a hardcoded line range
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a7d3fb0bcb1f49157' — give the nightly dream a private TCC identity named hmd-dream
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a7d3fb0bcb1f49157' — give the nightly dream a private TCC identity named hmd-dream
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a7d3fb0bcb1f49157' — give the nightly dream a private TCC identity named hmd-dream
  • [COMMUNICATION] Merge branch 'worktree-agent-a7d3fb0bcb1f49157' — give the nightly dream a private TCC identity named hmd-dream
  • [COMMUNICATION] Merge branch 'worktree-agent-a33adf2581ee17fb4' — stop the classifier reading its own docs as proof code runs
  • squashed 2 checkpoint commit(s) (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a8208bc33a1665c08' — fix(install): the advertised first command was dead on arrival
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] journal: [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a8208bc33a1665c08' — fix(install): the advertised first command was dead on arrival
  • [COMMUNICATION] journal: [COMMUNICATION] Merge branch 'worktree-agent-a8208bc33a1665c08' — fix(install): the advertised first command was dead on arrival
  • [COMMUNICATION] Merge branch 'worktree-agent-a8208bc33a1665c08' — fix(install): the advertised first command was dead on arrival
  • [COMMUNICATION] journal: [COMMUNICATION] docs(prompt): stop telling the orchestrator no hook emits metrics — one now does
  • 6 edit-op checkpoint (heimdall-wip)
  • [COMMUNICATION] docs(prompt): stop telling the orchestrator no hook emits metrics — one now does
  • [COMMUNICATION] feat(hooks): wire PostToolUse:Bash -> heimdall-journal so commits journal themselves
  • forced checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)
  • 6 edit-op checkpoint (heimdall-wip)

Full changelog: v2.4.0...v2.4.1

Install/upgrade:

curl -fsSL https://raw.githubusercontent.com/randomittin/heimdall/v2.4.1/install.sh | bash

install.sh.minisig is the detached minisign signature of this release's install.sh; bin/heimdall-autoupdate verifies it against release/heimdall-signing.pub before applying.