v1.1.2 release notes
Curated, user-facing summary of what changed since v1.1.1, grouped by theme
(81 merged PRs). CHANGELOG.md stays the generated, per-commit record
(scripts/gen-changelog.sh, never hand-edited); this file is the readable
version.
Release date: 2026-10-11.
Critical fixes
- The hook-integrity recorder can no longer brick a session. An integrity
failure on a
Stophook now skips that hook and lets the session stop; a killed or failed recorder fails open with a notice instead of denying every hook; in a hook chain a member that fails integrity is skipped alone and its intact neighbours keep running; a chain member’sStopblock keeps its own reason. record-hook-integrityruns under macOS bash 3.2 (#2333, reported and fixed by Goomal, an external contributor; closes #2332).- Main CI runs on a 7-hour cron plus
workflow_dispatchinstead of every merge;merge-on-greenrefuses on a red main unless the PR is the declared fix.
Guardrails and hooks
- Destructive-command and write fences. Auto-approve never allows a root
walk and passes
--files0-from,cd-relative walks and CR-glued writer operands correctly; the chokepoint denies anyIFSassignment beside a chokepoint word and no longer depends on the ambient locale; its relief now voids onreadpipe, executing short options and ripgrep program-running options. - The
/pr-checkliteral guard countsgit bisect runandrebase --execas program-running and denies a guarded writer behind a git editor or alias hook. - The live-settings fence decodes
env -Sescapes before judging; the bank-lift write guard trims a classified over-deny. - Every Bash chain member runs in time linear in its input, with latency RED controls.
himmel-busstore guard denies direct bus-root access and registration verbs from a session’s own tool calls.
Chief and workers
grant-round.sh: the chief grants one more review round on a signed judge record, instead of a hand-pasted counter file.write-verdict.sh --bind-reviewedbinds a NO-GO to the reviewed head across a test-only or comment-only commit.- Review gate. A claude-only delta round cannot strand a PR;
one post-cap delta round runs when every prior finding is recorded fixed; the ledger confirms each finding append; gate 4d
paths survive
quotePath. - Merge gate.
merge-on-greenre-runs the plugin-version bump check from the trusted base-tip checker and requires its success line;merge-forward-checkcovers a merge-base with the next completed cron or dispatch main run and refuses non-success conclusions. console-judge-ro, a read-only judge agent with a 1 h cache TTL; judge scratch directories are released when a verdict is written and are no longer fully rsynced into tmpfs.- The arming gate runs
brief-linton every brief;close-wrapped-workerresolves a claudex worker’s config dir. - Launchers register and bind a session on the himmel-bus, and
arm-resumerebinds a resumed session. - The tick flags stalled cloud sessions, cloud-route sends already-fixed tickets to a local verify, and the cloud environment is declared from the repo with a self-check. Tick and board surface suite-flake ledger rows.
- Autocompact A/B arm and report.
Lanes
- Lane canary (
scripts/lanes/lane-canary.sh): launches one no-op worker per lane and reports PASS, FAIL or SKIP with time-to-first-bullet. - DeepSeek lane workers start without the external-imports prompt;
the OpenRouter lane hands the child a thinking
EXTRA_BODYso the auto classifier works, and the Haiku pin moved to haiku-5.5. - The claudex client-side classifier no longer over-generalises the
rm -rfdeny rule; the claudex jail hook matching and lane scope are tighter. - A stale codex usage cache refreshes once, bounded, and the doctor warns.
himmel-bus
bus wait verb, a worker-bus profile and catalog entry for a live round trip;
a bus root that enforces 0700 only on himmel/bus, with a
failed launcher register surfaced; the console profile carries
himmel-bus so a chief registers on launch. The first live POC
recorded five failures; see Known issues.
CI and test tooling
- Flake handling. A failed suite is retried once; a pass on retry is a FLAKE recorded in a per-repo ledger with a repeat-flake “file a ticket” line.
- Impacted-suite selector always runs tree-scanning suites, covers lowercase and split uninstall callers, template root files and suites that name a changed script without its extension, and fails closed on a failed temp write.
main-sweep-redpersists the newest processed run id, closes a report on a green dispatch run and ignores cancelled-shard aggregate failures.- The plugin version-bump check compares against the current base tip and passes a PR that never touched the plugin.
- Live end-to-end suites: chief-kit fixture fleet, review gate
and
merge-on-greenagainst a throwaway repo, a mock-Anthropic turn proving a registered hook fires and denies.
Telegram
/chief queues to a busy armed chief and matches a unique name fragment;
/chief, the fleet verbs and /lockdown accept any case and
the /verb@botname form; the break-glass allow-rule
refuses symlinks, keeps mode, ignores backups and unless the registry text
equals the approved text.
Plugins, tickets and docs
i-have-adhdis vendored, pinned, in the base profile and always on in the installer and updater;emilkowalski-skillsre-pinned.jira createenforces a plain Impact / What / Why block.- Config UI AG-UI stream: the journal fd is opened then verified, and the mapper confirms each ledger verdict.
- Docs and
llms.txtdescribe the himmel UI surfaces and close the gaps for user-facing surfaces; the release checklist keeps them current. - The doctor names a non-qmd listener on the qmd daemon port.
Dependencies
One PR bumped every in-policy dependency (VM-proven): bun 1.4.3,
the CI claude CLI pin 2.1.296, in-range lockfile refreshes, marketplace SHA
pins and the vault template (0.4.71). claude-hud and the impeccable,
superpowers and ponytail fork pins were left for a follow-up.
Station tools: deferred
The three station tools named in the dependency PR did not move on the operator’s station during this release, by ruling:
- graphify stays at the installed version; the repo pin is 0.9.80, and the
update step refuses to swap the install under live
graphify-mcpsessions. It rolls once those sessions are gone (himmel-update.sh --only graphify). - ast-grep is an opt-in tool and is not installed on the station, so there was nothing to bump.
- cli-proxy-api stays at v7.3.15, the repo pin. v8.0.23 is a major bump
that needs
cli-proxy-lane.shVERSIONand checksum overrides and a VM-first upgrade stage.
Known issues
- claudex auto mode does not block destructive actions: the
gateway classifier allowed a force push to main. Run no unattended claudex
workers; explicit deny rules and a
dontAskfallback are in flight. - Guard gaps (label
guards): git global options hidepush --force,reset --hardandclean -f; no destructive-verb floor forgh; the Codex hook chain has no deny list; secret-read, exfil and env-dump verbs; tag and ref deletion; remote exec beyondcurl | sh; process and host kill verbs;shred,truncate,dd of=/devandchmod -R; infra, DB and docker destroy verbs; hook-disabling shapes; state and vault repos have no client-side force-push floor;git restore .,checkout -fandreset --keep. - himmel-bus has had one live round trip POC with failures recorded; treat the bus as opt-in until its station acceptance closes.
- The lane canary reports a launcher usage refusal (exit 11, for example OpenRouter credit below its floor) as FAIL rather than SKIP.
- Windows remains unsupported.