Releases: Producible/CereWorker
Release list
v26.520.5
Workflow-exercise release that confirms the flattened npm-registry propagation poll and bounded timeout behavior added in a201b45.
What this exercises
-
Flattened propagation poll. The
publish-npmjob's "Wait for npm registry propagation" step now runs a single global retry loop across all 10 published workspace packages instead of nested per-package loops. Worst-case time is bounded at ~2.5 min, comfortably under the 15-min job timeout. In this release all 10 packages were visible on the first attempt — the poll completed in ~4 seconds. -
All in-publish validations still pass.
publish-npmruns the install-smoke against the freshly published@producible/cereworker@26.520.5.publish-dockervalidates the freshly pushedproducible/cereworker-cerebellum:26.520.5CPU image.
Functional changes
None — runtime behavior unchanged from v26.520.4. This release is a workflow-validation tag.
Install
npm i -g @producible/cereworker@26.520.5Stats
12 files changed (mostly version bumps). 629/629 tests still passing. CI run: ~7 minutes total, all four jobs green on first try.
v26.520.4
Patch release fixing two audit findings on the install/smoke wiring.
Fixes
-
Tag-time smoke no longer races publish. The install-smoke workflow used to trigger on the same
v*tag push as the publish workflow, then immediately pull the versioned Docker image and install the version-pinned npm package. Both jobs ran in parallel with the workflow that pushes the artifacts, so a successful publish could be flagged as a smoke regression purely on timing. Tag-time validation now lives insidepublish.yml:publish-dockervalidates the freshly pushed CPU image right afterdocker push.publish-npmvalidates the freshly published package viascripts/e2e/install-smoke.sh(with a 2-minute polling window for npm registry propagation, added in the follow-up commitbbe0f1a).install-smoke.ymlnow only runs on daily cron + manual dispatch, validating:latestas a regression catch over time.
-
Optional
:latestpull no longer poisons the success report.postinstall.mjspreviously had the required versioned pull and the optional:latestpull in the sametry { ... }, so a failure on:latestreported "could not pull the versioned image" even when the versioned image succeeded. The optional pull is now in its owntry/catchand silently swallows errors —:latestis convenience-only, not a runtime requirement.
Other
- Cerebellum Dockerfile gains a comment documenting why tag-time validation lives inside
publish.yml. This doubles as the smallcerebellum/change that flips thecheck-docker-changesgate so the versioned Docker image actually ships.
Install
npm i -g @producible/cereworker@26.520.4Stats
15 files changed, 40 insertions, 33 deletions. 629/629 tests still passing.
v26.520.3
Patch release that fixes three audit findings about how the install/smoke/uninstall scripts handle the version-pinned Cerebellum image. No runtime behavior change — the CLI's image resolution was already correct (producible/cereworker-cerebellum:<cli-version>); only the surrounding scripts catch up.
Fixes
-
postinstall.mjsnow pullsproducible/cereworker-cerebellum:<cli-version>(matching what the runtime asks for), plus:latestas a secondary pull so other tooling stays consistent. Previously it only pulled:latest, which meant offline / version-drift scenarios fell back to a second pull on first run. -
install-smoke.ymldocker-image-smoke job now derives the image tag fromgithub.ref_nameon tag pushes (producible/cereworker-cerebellum:26.520.3) instead of pulling:latestunconditionally. Tag-triggered smokes now validate the exact tag image. If a futurepublish-dockerjob is skipped or fails, this smoke will fail loudly instead of green-lighting a stale:latest. -
uninstall.shanduninstall.ps1now enumerate all tags ofproducible/cereworker-cerebellumviadocker images --format '{{.Repository}}:{{.Tag}}'and remove each. Previously they onlyrmi'd:latest, leaving the ~5 GB versioned image on disk.
Other
- Cerebellum Dockerfile picks up a documenting comment explaining the version-pinned convention. It also flips the publish workflow's
check-docker-changesgate so this release ships a matching versioned Cerebellum image — without it,publish-dockerwould have been skipped (the same regression class as v26.520.1).
Install
npm i -g @producible/cereworker@26.520.3Stats
16 files changed, 65 insertions, 30 deletions. 629/629 tests passing.
v26.520.2
Package rename release. The npm packages have moved from @cereworker/* to the @producible/cereworker-* scope to align with the GitHub org and project attribution.
Install (new name)
npm i -g @producible/cereworkerWhat changed
-
npm packages renamed (10 packages):
@cereworker/cli→@producible/cereworker@cereworker/config→@producible/cereworker-config@cereworker/core→@producible/cereworker-core@cereworker/cerebrum→@producible/cereworker-cerebrum@cereworker/cerebellum-client→@producible/cereworker-cerebellum-client@cereworker/channels→@producible/cereworker-channels@cereworker/browser→@producible/cereworker-browser@cereworker/gateway→@producible/cereworker-gateway@cereworker/hippocampus→@producible/cereworker-hippocampus@cereworker/skills→@producible/cereworker-skills
-
Docker image renamed:
cereworker/cerebellum→producible/cereworker-cerebellum. Both CPU and GPU variants now published to the new repo at26.520.2andlatest. -
Dockerfiles now stamp
org.opencontainers.image.ref.name=producible/cereworker-cerebellumso the new identity is part of the image metadata (visible viadocker inspect). -
npm provenance attestations are now generated on every publish (workflow has
id-token: write+--provenance).
What stays the same
- The
cereworkerCLI binary name. Users keep typingcereworkerat the shell after install. - The
~/.cereworker/config directory. Existing configs continue to work. - The GitHub repository name (
Producible/CereWorker).
Migration
Existing installs on @cereworker/cli@26.519.1 keep working. The old packages will be marked with npm deprecate so anyone installing them sees a redirect notice pointing here.
npm uninstall -g @cereworker/cli
npm i -g @producible/cereworkerDocker users on 26.519.1 and earlier keep pulling from cereworker/cerebellum. Starting at 26.520.2, the CLI pulls from producible/cereworker-cerebellum.
Stats
71 files changed in the rename commit, ~136 imports rewritten, 629/629 tests passing.
v26.519.1
Releases the provider-model sync work and follow-on fixes from 2026-05-19.
Highlights
-
Refreshed Cerebrum provider registry against each upstream's official docs:
- Anthropic: Claude Opus 4.7 is the new default; lineup is Opus 4.7 / Sonnet 4.6 / Haiku 4.5 / Opus 4.6 / Sonnet 4.5.
- OpenAI: GPT-5.5 default; adds GPT-5.5 Pro, GPT-5.4 Mini.
- OpenAI Codex (ChatGPT subscription): now mirrors OpenAI's official Codex lineup — GPT-5.5 / 5.4 / 5.4 Mini / 5.3 Codex / 5.3 Codex Spark.
- Google: keeps Gemini 2.5 Pro default; adds Gemini 3.1 Flash-Lite (stable) and 3.1 Pro (preview).
- xAI: full refresh after grok-4 retired 2026-05-15 — Grok 4.3 default plus the 4.20 family.
- DeepSeek: V4 Pro default, V4 Flash added; legacy aliases preserved.
- Mistral: Medium 3.5 default; adds Devstral 2 and Magistral Medium 1.2.
- Moonshot: Kimi K2.6 default.
- Together: Kimi K2.6 default, with DeepSeek V4 Pro, GLM 5.1, Qwen 3.6 Plus.
- MiniMax / MiniMax Portal: M2.5 added alongside M2.7 lineup.
- OpenRouter: adds Owl Alpha and Aurora Alpha house models.
-
Schema fallback
cerebrum.defaultModelbumped fromclaude-sonnet-4-6toclaude-opus-4-7so first-run installs land on the latest Claude. -
Mistral API ID correction: switched to the short canonical codes per Mistral's changelog (
mistral-medium-3-5,devstral-2512,magistral-medium-2509). -
Auto-migration in
loadConfig(): transparently rewrites the legacy Mistral IDs that were briefly seeded into local configs during development, so source builds made between 6aa5feb and f2d305a auto-recover without hand-editing YAML. -
Repo guidelines:
CLAUDE.mdnow defers toAGENTS.mdas the canonical source for the commit-body attribution format.
Stats
629/629 tests passing (1 added regression test for the Mistral migration).
Install
npm install -g cereworker@26.519.1
# or
pnpm add -g cereworker@26.519.1Existing users
If you onboarded against main between commits 6aa5feb and f2d305a, your ~/.cereworker/config.yaml may have a stale Mistral ID. This release transparently migrates it on next launch — no action needed.
v26.403.1
v26.403.1
SQLite Replaced with Text Archives
- All persistence (conversations, pairing, plans, fine-tune data) now uses plain JSON/JSONL files
- Node.js requirement lowered from 22.5.1+ to 22+ (no more experimental
node:sqlite) - Legacy SQLite databases are auto-migrated on first run, backed up as
.bak
Protocol-Aware Turn Journaling
- Persistent JSONL journal per turn at
~/.cereworker/conversations/{id}/turns/{turnId}.jsonl - Records tool starts/ends, checkpoints, boundaries, completion signals, and recoveries
TurnOutcomeclassification: completed, ended_on_tool_calls, completion_signal_missing, stalled, etc.TurnBoundarySummarytracks state-changing moments with browser state snapshots- Repetition signal detection sent to Cerebellum for smarter stop decisions
Turn Journal Retention
- Configurable via
conversations.turnJournals.maxDays(default 30) andmaxFilesPerConversation(default 100) - Two-phase pruning: age-based first, then count-based
- Runs after every turn completion (success and error paths)
Advisory Locks for Text Stores
- Directory-based advisory locking (
withTextStoreLock) prevents concurrent file corruption - Stale lock detection via PID/hostname/age checks
- Atomic writes with rename-based crash safety
Cerebellum Recovery Guidance (Docker rebuild needed)
AssessTurnRecoveryRPC enriched with boundaries, turn outcome, repetition signals- Run
sudo bash scripts/publish-cerebellum.shto push the updated Docker image
v26.330.3
v26.330.3
Cerebellum Recovery Guidance
- New
AssessTurnRecoverygRPC RPC — the Cerebellum receives full recovery context (progress ledger, checkpoints, browser state, partial content) and returnswait,retry, orstopwith a tailoredmodelMessagefor the Cerebrum - Repetition detection: if the last 6 tool actions repeat the same 1-2 patterns, the Cerebellum returns
stopto prevent infinite retry loops waitaction for first-time stalls under 90s inwaiting_modelphase — avoids false nudges when the model is thinkingstopaction for repetitive completion retries — aborts early instead of exhausting the retry budget- Fallback to local TypeScript logic if the Cerebellum is offline or the gRPC call fails
Recovery Architecture
- Both stall and completion retries now go through
assessTurnRecovery() - The Cerebellum's
modelMessagereplaces the hardcoded resume context operatorMessageshown to the user,diagnosisandnextSteploggedstreamDeferredUntilpauses the watchdog when the Cerebellum sayswait
Docker Image
The Cerebellum Docker image needs a rebuild to include the new AssessTurnRecovery handler. Run bash scripts/publish-cerebellum.sh to push the updated image.
v26.330.2
v26.330.2
Browser Progress Ledger
- Structured progress tracking across retry attempts — each tool result records action, summary, URL, tab, and state-changing flag
- Progress entries survive retries via
TurnContinuityState, giving the retry context a detailed record of what was already accomplished - Read-only tools (
browserGetText,readFile, etc.) are automatically classified as non-state-changing - Ledger capped at 20 entries with smart eviction (read-only entries evicted first)
Task Checkpoints
- New
task_checkpointinternal tool — Cerebrum marks milestones ("profile continuity checked", "engagement pass done") with evidence - Checkpoints are upserted by step name and included in retry resume context
- Checkpoints are preserved across retries — the model sees a structured list of what's already been verified
Browser State Tracking
BrowserStateSnapshottracks current URL, active tab, and tab list- Updated from
result.metadata.resumeon each browser tool execution - Included in retry context: "Current URL: https://x.com/home", "Active tab: 134851321"
Structured Browser Tool Results
- All browser tools now return
ToolExecutionValuewithmetadata.resumecontaining action summaries - Enables the progress ledger to record rich context without parsing output strings
Unified Resume Context
- Single
buildRetryContextMessage()handles both stall and completion retries - Resume context includes: browser state, checkpoints, progress ledger entries ([done]/[seen]/[error]), partial text
v26.330.1
v26.330.1
Retry Message Cleanup
- Failed attempt tool/system messages are excluded from retry prompts using ID-based filtering (not positional cutoff)
- Failed attempt messages are deleted from the conversation store on ALL exit paths: success, exhaustion, error, and Cerebellum disconnect
- Successful retry's own tool results are preserved in the conversation store
- Stable message ordering via
ORDER BY timestamp, rowid
Resume Context (No Repeat)
- Retried turns see only: user message + transient resume summary + nudge
- Failed attempt's raw tool call history is excluded — model cannot "follow the template" and repeat steps
- Resume prompt explicitly states: "tool call history has been removed, do NOT repeat these steps"
Task Completion Guard
task_complete/task_blockedinternal tools for structured turn endings- Completion guard retries independently from stall retries (separate budgets)
- Completion retry context includes tool summaries and partial text
Stream Finish Metadata
- Provider captures finishReason, stepFinishReasons, chunkCount, toolCallCount, stepCount
- Completion guard uses this to detect turns ending on tool-calls without final answer
v26.329.28
v26.329.28
Completion Retry Context
- Completion retries now include transient resume context (recent tool results, partial text, finish reason)
- Matches the stall retry context pattern — injected into retry attempt, NOT persisted to conversation
Non-Debug TUI
- Default view shows only message content (user=blue, cerebrum=green) without role labels or tool outputs
--debugflag restores the full verbose view with role labels, tool details, and streaming header- Cleaner experience for normal users
Event-Driven Stall Detection
- Removed 250ms polling interval for stall state
- TUI now updates stall indicator purely from events (cerebrum:stall, watchdog, tool:end, etc.)
Presentation Utilities
formatLocalTimestamp()— timezone-aware formatting via Intl.DateTimeFormatfilterTranscriptMessages()— filters to user+cerebrum for non-debug display