Demiurge 0.7.0
Demiurge is alpha / developer-preview software. APIs, runtime layout, and authored contracts may still change.
Summary
This minor release adds durable host-owned work tracking, projects tool start/finish lifecycle events into user-facing channels, and widens host file reads through explicit approval while keeping writes and terminal execution workspace-scoped. It also strengthens evolver guidance, core revision portability, generated-artifact cleanup, and TUI bundle consistency.
The default public release remains notes/tag-only: wheel and sdist artifacts are not built or attached unless an artifact release is explicitly requested.
User-Visible Changes
- Added durable work lifecycle tracking for host-owned delivery sends, scheduler fires, and background completion notifications. Work items are stored in SQLite with claim, lease, terminal, acknowledgment, and retry semantics so recoverable host work can be resumed or marked consistently.
- Added tool start/finish lifecycle projection across the TUI gateway, text channels, and Telegram. Tool cards can now show started work and then update when the tool finishes, including terminal command and cwd display metadata for user-facing cards.
- Widened
read_fileandsearch_filesso host-visible paths outside the workspace can be resolved after explicit approval. File writes, patches, and terminal cwd remain scoped to the workspace. - Expanded evolver guidance for slot edits, pipeline placement, slot SDK usage,
capability boundaries, and
base_input/base_outputguardrails. - Updated security and capability documentation to describe the current wide-read / narrow-write boundary.
Fixes
- Cleaned untracked generated artifacts from evolve candidate worktrees before changed-path calculation, proposal commits, and gates.
- Made core reference updates and home path expansion tests more portable on Windows.
- Rebuilt and synced the packaged Ink TUI bundle so the Python package asset
matches the current
ui-tuibuild output. - Relaxed async and Telegram approval waits to reduce timing-sensitive test failures.
Breaking Changes
- No intentional breaking changes in this release.
Known Limitations
- Code slots run in the host-shared Python environment by default.
- Candidate Agent Core evolution cannot add dependencies automatically.
- Old JSON / JSONL runtime state is not migrated into the SQLite runtime store.
- In-progress subprocess work found after a restart must be treated as lost or interrupted; the host must not replay dangerous effects after a crash.
- Telegram is still long-polling only.
- Package repositories can be local, built-in, or explicitly trusted Git/path sources; install-time trust still belongs to the host.
- Provider profile tests and real provider calls require explicit provider credentials and may make live network calls.
- GitHub Releases do not attach wheel or sdist artifacts by default yet; use the source checkout or managed checkout install path for this alpha release.
Verification
uv run python -m compileall demiurge testsuv run pytest -vv --durations=20 -o faulthandler_timeout=60uv run demiurge --helpuv run demiurge init --helpuv run python scripts/smoke_managed_install.py(cd ui-tui && npm ci && npm run typecheck && npm test && npm run build)node --check ui-tui/dist/entry.jsnode -e "const fs = require('fs'); const built = fs.readFileSync('ui-tui/dist/entry.js'); const packaged = fs.readFileSync('demiurge/ui/tui_dist/entry.js'); if (!built.equals(packaged)) process.exit(1);"(cd website && npm ci && npm run build)git diff --check -- ':!demiurge/ui/tui_dist/entry.js'uv run python -c 'import tomllib, demiurge; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"]); print(demiurge.__version__)'rg -n "0\\.7\\.0|docs/releases/0\\.7\\.0" pyproject.toml demiurge/__init__.py uv.lock README.md README.zh-CN.md docs website