Repository navigation
loom 1.3.1
Added
- Host verification jobs —
loom check,loom stage completeandloom stage contracts freezerun inside a session relay a request to the daemon, which runs the criteria in a host job and applies the result itself; the command's first line isHost job: <state>(requestedandpendingexit 0 and mean run it again,completedexits 0,failed,rejectedandrefusedexit 1,stoppedexits 4). Undercommand_confinement: confinedeach plan-authored command runs inside bubblewrap (--unshare-all) on Linux orsandbox-execon macOS, where only the working tree and a private scratch directory are writable and verification commands get no network;provisionentries always run in such a boundary, with network. - Criterion subsets —
loom check <stage-id> --criterion <n>(0-based, repeatable) re-runs only the named acceptance criteria plus the lint and format criteria, and a subset pass never stands in for a full check at completion. - Several criteria per dispute —
loom stage dispute-criteria --criterion-indexrepeats or takes several values, so one filing names every failing entry, andloom stage blockis refused while the latestloom stage completeshows a failing criterion.loom statusand the web dashboard list a blocked stage's failing criteria with filledloom stage amendcommands and its dispute history. - Run evidence —
loom usage --run-evidence <declaration.json> --project <dir> --since <rfc3339> --until <rfc3339>measures one run's tokens, retries, fixes, critical path and open review findings as RunEvidence forloom usage --compare, whose artifacts may declare"token_rule": "net-total"and"latency_tolerance_ms".loom usage --projectalso reads the transcripts of removed stage worktrees and reports each provider asmeasuredorpartialwith reasons. - Stage transition log — every stage status change is appended to
.loom/work/stage-events.jsonl, and the web dashboard's activity panel shows the last 50 with their real timestamps, including changes made while no page was open. - Dashboard help and token views — the web dashboard replaces its legend with an illustrated help guide that annotates real components with numbered pins, the Token flow panel gains by-model token bars, and the quota footer is laid out as a grid of meters.
- Plan lints for stage shape and test runs — in a
version: 2planloom plan verifyrejects a plan without exactly oneknowledge-distillstage, a distill stage another stage depends on, a stage that is not an ancestor of the distill stage, and astandardstage that is not an ancestor of anintegration-verifystage (version-1 plans get warnings); it flags whole-suite runs of any recognised test runner and filtered runs a full run already covers, and warns about a missing knowledge-bootstrap stage only when the knowledge tree is missing or holds only the scaffold. A stagemodelother thanhaiku,sonnet,opusorfablefails when the plan is parsed. - Main-agent guards —
subagent-verify-guard.shalso blocks the main agent of a livestandardstage from an unfiltered test suite of any runner (build, clippy, fmt and lint stay allowed), and the PostToolUse hook warns a stage main session once when it edits past the delegation size limit. Stage signals carry a Dependency Findings section in place of the wiring checklist.
Changed
- The gate is one
loom check— theloom-verifiersubagent is gone: astandardstage's orchestrator runsloom check <stage-id>once on the formatted tree beside the final review round, and a fix round re-runs only the failed criteria with--criterion. - Session capsule hardening — every spawned session's capsule read-denies credential files whatever the plan lists (
~/.config/gh/hosts.yml,~/.netrc,~/.npmrc,~/.git-credentials,~/.docker/config.json,~/.kube/config,~/.pypirc, cargo credentials) and~/.codex/auth.jsonunless the stage licenses the codex lane, denies theLSP,RemoteTrigger,CronCreateandPushNotificationtools andWorkflowoutsideultracode: truestages, and write-denies the git administrative directories of other stage worktrees. - Force completion records the branch tip —
loom stage human-review --force-complete,loom stage complete --no-verifyandloom stage complete --force-unsaferecord the committed tip ofloom/<stage-id>as the completion commit (the first two refuse a zero-commit branch); without--assume-merged, dependents start only once that commit lands.
Removed
- Custom asset roots —
LOOM_CLAUDECODE_INSTALL_DIR,LOOM_CODEX_INSTALL_DIRandloom install-assets --claude-dir|--codex-dirare gone and~/.config/loom/install-roots.tomlis ignored; loom installs and reads its assets only at~/.claudeand~/.codex. Hook entries in a repository's.claude/settings.jsonthat point at an old custom root are not removed byloom initorloom repair.
Install
curl -fsSL https://raw.githubusercontent.com/cosmix/loom/main/install.sh | bashInstalls the signed binary for your platform to ~/.local/bin/loom and runs loom install-assets, which writes loom's agents, skills, commands and hooks into ~/.claude/ and ~/.codex/ — the binary alone is not a working install. Requires jq and minisign.
Pinned downloads, WSL2 notes, signature verification with minisign and SHA256SUMS.txt checksums: Installation. Signed binaries and .minisig files are attached below.
Full Changelog: v1.3.0...v1.3.1