Repository navigation
Releases: cbundy/dev-system
Releases · cbundy/dev-system
Release list
v0.101.2
Fixed
- Slots with a huge untracked file free cleanly - Freeing or preparing a slot no longer fails forever when the slot holds a very large untracked file such as a multi-GB core dump. Untracked files over 50 MB and core dumps are left out of the saved leftovers, named in the slot outcome and removed, and the owner is told once when freeing a slot gets stuck (
/factory retry Nclears it). (#1377)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop).
v0.101.1
Fixed
- Loop token counts are complete right after a restart - The loop's own orchestrator token counts are no longer empty for the first minute after a loop restart, so token totals over a window that spans a release or restart are complete. A resumed session counts only what came after the loop started, so nothing is counted twice. (#1370)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop).
v0.101.0
Changed
- Repos and Coder workspaces move to the fabriek name -
npx callum-dev updatenow enablesfabriek@calluminstead ofcallum-flow@callum, drops a leftovercallum-flow@callumentry so only one name is ever enabled, and allows thefabriek-*commands next to the oldcallum-flow-*ones. Coder workspaces setFABRIEK_TRUSTED_AUTHORSas well as the oldCALLUM_FLOW_TRUSTED_AUTHORS, the loop template installsfabriek@callum, and the docs use the fabriek names. The devcontainer still forwardsCALLUM_FLOW_TRUSTED_AUTHORSfrom the host, so nothing changes in how you set it. (#1366)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces (it switchescallum-flow@callumtofabriek@callum), then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop). - CLI and templates:
npm update @callum/dev-system && npx callum-dev update.
v0.100.0
New
- The factory commands have fabriek names - Every factory command in the base image is now
fabriek-<x>(for examplefabriek-issue-read,fabriek-event,fabriek-merge), and every setting can be given asFABRIEK_<X>. The oldcallum-flow-<x>commands stay as aliases with the same output and exit codes, and the oldCALLUM_FLOW_<X>settings still work;FABRIEK_<X>wins when both are set. The old names are kept for 10 minor releases. (#1362) - The shared plugin is now fabriek - The callum-flow plugin is renamed fabriek, and its skills name the
fabriek-*commands. The marketplace keeps acallum-flowentry with the same content for 10 minor releases, so repos that enablecallum-flow@callumkeep working. The image now installsfabriek@callumby default, replaces an oldcallum-flowinstall with it, and falls back tocallum-flow@callumwhen a repo pins a release older than the rename.dev-doctorwarns when both names are installed or enabled. (#1363) - The loop calls the fabriek commands - The factory loop, its companions and the HUD now run the
fabriek-*commands, falling back to the oldcallum-flow-*names on an image older than 2.79.0. (#1364)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A repo can switchcallum-flow@callumtofabriek@callumin its.claude/settings.json; enable only one of the two. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop). - Base image: rebuild or re-pull the dev container to get image 2.79.0, which brings the
fabriek-*commands, theFABRIEK_<X>settings and the plugin twin handling.
Technical changes
Maintenance
v0.99.1
Fixed
- A stopped owner session holds the loop instead of breaking it - When the owner stops the main session, the loop no longer counts each refused agent start as a failure that uses up attempts and trips the breaker. It holds agent starts and wakes, shows
held: session stopped since HH:MMin the title and in/factory status, and resumes on the next message. (#1349) - A failed update restart ends the update and tells the owner - When the restart for
/factory updatefails, the update is no longer left due forever. The loop clears it, records the failure and keeps an owner notice with the error until the owner fixes it and runs/factory updateagain, or clears it withupdate off. (#1352) - Splitting an issue works in repos without an
in developmentlabel - The loop no longer tries to remove that retired label when it releases a split issue's parent, a step that failed every time and tripped the breaker. Issues already stalled on it need a/factory retryafter upgrading. (#1354)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop).
v0.99.0
New
- What-if cost of the loop's own work - The loop's minute summary and each ended task or tell wake now record what the loop's own judgement work would have cost at Anthropic's public API prices. This is an estimate, not a bill; work on an unknown model is left unpriced.
docs/metrics.mdhas queries per repo and day and per wake. (#1341) - Subscription usage readings name the login and carry the what-if total - A usage reading taken under a subscription login now says so and carries the loop's running what-if dollar total for the month, with the date it restarts. When the total is missing, the reading says why. (#1348)
dev-restart-self --check- A check-only mode answers whether this workspace could restart itself, naming where the Coder token comes from, without sending any request.dev-doctorruns it in a Coder workspace and warns, with a fix, when no Coder token is present. (#1347)
Changed
/factory updaterefuses when the workspace cannot restart itself - The command now checks the workspace's Coder credentials first and refuses at once, changing nothing, when a restart could never run. The refusal is logged. On an image without the check it accepts as before and says the credentials went unchecked. (#1350)
Fixed
dev-restart-self --dry-runno longer pretends to succeed without a token - It now fails with the same "no Coder session token" message a real run gives. (#1347)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop). - Base image: rebuild or re-pull the dev container to get image 2.78.0, which brings
dev-restart-self --check, thedev-doctortoken warning and the new usage reading fields.
Technical changes
Maintenance
- Release v0.99.0 (image 2.78.0) (#1351)
- Refuse /factory update when the workspace cannot restart itself (#1350)
- Name the login and carry the what-if total on subscription usage reads (#1348)
- Add dev-restart-self --check, fail a token-less dry run, warn in dev-doctor (#1347)
- Price the loop's own main-session work on each minute summary and each ended wake (#1341)
v0.98.0
New
- Per-device GitHub API health - Each device's heartbeat now reports its remaining REST and GraphQL rate limit, their reset times, and how many GitHub API errors the factory loop on that device hit in the last hour. Values are empty where a device cannot report them, such as no GitHub login or no loop running. (#1337)
- Orchestrator token spend in the minute summary - The loop's once-a-minute summary now records the tokens its own orchestrator session spent that minute, so the orchestrator's cost shows up next to the agents' cost. (#1333)
- Usage throttle tier in the minute summary - The minute summary now records which usage tier the loop acted on (normal, slow, stop-new or stop-all) and whether an owner override held it at normal. (#1338)
- What-if API cost per agent step - Each ended agent step and intake stamp now records what it would have cost at Anthropic's public API prices, priced per model including nested agents. This is an estimate, not a bill; steps on an unknown model are left unpriced and logged.
docs/metrics.mdhas queries for cost per merged issue and per model. (#1339)
Fixed
callum-dev updatekeeps filled-in text on template rewords - When a template only rewords a placeholder the repo already filled in, or removes a repo-owned section the repo already filled in, update now keeps the repo's text and prints akeptline instead of reporting a conflict. Other conflicts are reported as before. (#1330)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop). - CLI and templates:
npm update @callum/dev-system && npx callum-dev update. - Base image: rebuild or re-pull the dev container to get image 2.77.0. The factory database gains three expand-only migrations, which the loop applies at its next start.
Technical changes
Maintenance
- Release v0.98.0 (image 2.77.0) (#1340)
- Record the what-if API cost of each ended agent step and intake stamp (#1339)
- Add the usage throttle tier to the loop's minute summary (#1338)
- Report each device's GitHub rate limit and API errors in its heartbeat (#1337)
- Add orchestrator session tokens to the loop's minute summary (#1333)
- callum-dev update keeps the repo's filled text on template rewords (#1330)
v0.97.1
Changed
callum-dev updatecleans up the last no-mistakes config - Every update now deletes a leftover.no-mistakes.yamland removes the sevenBash(no-mistakes ...)allow entries from.claude/settings.json, whatever the stamp or baseline says. Other allow entries are untouched. A leftover.no-mistakes/folder is only reported, never deleted. The consumer templates (gitignore, devcontainer, README) no longer mention no-mistakes. (#1329)- The merge train runs for dev-system itself - This repo's factory loop now merges through the merge train (
mergeTrainin.claude/factory-loop.json), falling back to the plain merge queue when the tested tree or state does not match. Nothing changes for consumer repos. (#1328)
Upgrade
- CLI and templates:
npm update @callum/dev-system && npx callum-dev update. Expectremovedlines for.no-mistakes.yamland the no-mistakes allow entries; commit the result. Delete a reported.no-mistakes/folder by hand if you no longer need it. - Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop).
v0.97.0
Breaking
- no-mistakes is removed from the base image - The image no longer installs, configures or starts no-mistakes: the binary, the
NM_HOME/NO_MISTAKES_*variables, the/persist/no-mistakesfolder, the model config and the recovery scripts are gone, anddev-initskips its no-mistakes steps.dev-versionand the HUD versions line no longer list it. Anything that still callsno-mistakesmust stop. The deprecatedcallum-toolsfeature dropsinstallNoMistakesandcodexModeland moves to 2.0.0. (#1325) - The no-mistakes copy jobs are gone -
nm-exportandnm-push-loopno longer exist or run,dev-doctorand the heartbeat stop checking them, and the heartbeat's push status has nonmkey. The existing no-mistakes tables in the shared database are kept, untouched. (#1324) - Reports no longer read no-mistakes data -
callum-flow-evaluatedrops itspipelinesection and pipeline spend rows;--nm-stateand--nm-exportare still accepted but ignored, with a note insources. Lead time starts at the loop's review step. The heartbeat busy check and the loop's stale-claim check use only factory events and PRs. (#1322)
Changed
- Dev container template drops the no-mistakes volume - The base-image devcontainer template, and this repo's own dev container, no longer mount a no-mistakes storage volume. (#1325, #1326)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop). - CLI and templates:
npm update @callum/dev-system && npx callum-dev update(removes the no-mistakes volume line from.devcontainer/devcontainer.json). - Base image: rebuild or re-pull the dev container to get image 2.76.0. Update the plugin at the same time, or an older plugin may say once that the container looks out of date. The old no-mistakes Docker volume is no longer used and can be deleted.
- Scripts or dashboards that read
pipelinefromcallum-flow-evaluate, the heartbeat'snmkey or theno-mistakesbinary must move off them.
Technical changes
Maintenance
- Release v0.97.0 (image 2.76.0) (#1327)
- Drop the no-mistakes volume and comment from this repo's dev container (#1326)
- Remove no-mistakes from the base image, its start-up, tools and tests (#1325)
- Remove the no-mistakes copy jobs (nm-export, nm-push-loop) and what runs, checks and tests them (#1324)
- Stop reading no-mistakes data in evaluate, heartbeat and reconcile (#1322)
v0.96.0
Breaking
- Old watchers and v1 helper tools are gone from the image -
orchestrator-watch.sh,pipeline-watch.sh,callum-flow-regate,callum-flow-fix-linkageandcallum-flow-design-routeare removed, and synced settings no longer allow them.callum-flow-merge-guardkeeps only its--patchmode:--runand--update-behindnow exit 2 with a usage line. Nothing the factory loop runs used them. (#1314)
New
- Merge train (off by default) - With the new
mergeTrainsetting on, the merge queue tests the next approved PR on afactory-train/*branch while the head is still in CI, and merges it right after the head with no update and CI run of its own, as long as the tested tree still matches. Any mismatch drops the train and the PR takes the usual path. With the setting off, the queue behaves as before. (#1321)
Upgrade
- Plugin: run
npx callum-dev update, commit the.claude/settings.jsonit produces, then restart the container or rundev-init --plugins. A loop workspace on theorchestrator-looptemplate picks up the plugin only after that template is pushed at this release (coder/push.sh orchestrator-loop). - CLI and templates:
npm update @callum/dev-system && npx callum-dev update(drops the removed tools from the synced allowlist). - Base image: rebuild or re-pull the dev container to get image 2.75.0. Scripts that call the removed tools or
callum-flow-merge-guard --run/--update-behindmust move to--patch. - Merge train: to turn it on, first turn off "Require branches to be up to date before merging" in main's branch protection while keeping the
cicheck required, then set"mergeTrain": truein.claude/factory-loop.json(or/factory config set mergeTrain true)./factory configshowsmergeTrain on.