v2.4.1
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 agentsper-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
- release: v2.4.1
- caveman: refresh eval snapshot post ultra-parity fix (adc7f41)
- ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
- ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
- ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
- ledger checkpoint Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
- gitignore: cover credential filenames as a second layer
- name the wip checkpoints for the three sweep-red test fixes Co-Authored-By: runhmd 318965969+runhmd@users.noreply.github.com
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 | bashinstall.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.