0.55.0 · core 2026-07-23
Host-agnostic core, compiled Fusion plugin, artifact validation, and rollback hardening. The 7 commits since v0.54.3 correspond to the plan-of-record tasks SW-001 through SW-007.
Added
- Host-agnostic architecture (
SW-002) —extensions/stelow/adapters/{base,pi,fusion,generic}.tswith a thin bootstrap. Pi-specific code now lives underadapters/pi/(hooks, commands, UI,plannotatortool, runtime skill sync). Fusion and generic CLIs receive generated host artifacts and never see Pi primitives. - Fusion host adapter (
SW-002) — JSON plugin format, canonicalstages.yaml#toolsmapping (Piask_user_question→ Fusionfn_ask_question; supervisor subagent →fn_spawn_agent), shared file tools, portable.stelow/approvals/receipts. - Compiled Fusion plugin (
SW-006) —plugins/fusion-plugin-stelow/ships as a dependency-free, standalone bundle: 25 plugin-local skill trees, validated settings + v2 workflow IR,manifest.json(fusionVersion >= 0.1.0), and adist/index.jsentry that has no runtime SDK or private Fusion imports.scripts/prepare-fusion-plugin.tsvalidates skill frontmatter and emits the artifacts through Stelow's canonical Fusion builders; wired intonpm run buildandnpm run prepack. - Fusion lifecycle contracts (
SW-006) — Artifact installation, skill installation, and workflow registration install settings/workflow under.fusion/, register exactly one managed workflow, restore prior bytes on rename failure, and fail closed on collisions. - Fusion workflow validation (
SW-004) —validateFusionWorkflowIR()andvalidateFusionSettings()enforce the Stelow-v2 IR contract before disk writes; an atomic write guard (writeArtifactAtomically) wraps Fusion artifact generation inrename-based safety. - Fusion visual review receipts (
SW-004) —FusionAdapterproduces host-stamped approval receipts (host metadata + idempotent keys) instead of inheriting the generic fallback. Workflow.hostregistration (SW-002) — Optional immutableWorkflow.hostfield added to the TypeScript and JSON schemas, with cross-host invariant tests guarding the boundary.- Canonical CLI-tool vocabulary (
SW-002/SW-003) — All 25 skills audited; Pi-specific tool calls migrated to canonicalask_user_questionandvisual_reviewnames.
Changed
- Staged adapter routing (
SW-002) —stages.yamlnow drives the canonical tool map; the dispatcher emits host-appropriate primitives at runtime. - CLI-tools fixture resilience (
SW-005) — Cli-tools sync moved into a singlevitestglobalSetup(tests/global-setup.ts) that runs once before any test file. Per-filebeforeAllhooks no longer race in parallel workers.sync-content-equality.test.tssamples deterministically (first / middle / last) and fails loudly when a synced copy is missing or stale, instead of silent early-skip.
Fixed
cli-toolsfull-suite drift (SW-005) — Clean-checkoutvitest runruns no longer fail in CI because of slice-based sample coverage insync-content-equality.test.ts. Tightenedskill-implementation.test.tsgoals.mdassertions to assert on both canonical and sampled sub-skill copies. Added isolated temp-fixture regressions covering missing target dir, missing file, differing content, populated state, excluded-file cleanup, and idempotent re-run.- Fusion plugin rollback on artifact-write failure (
SW-007) — Removes transaction-created Fusion directories (workflows/,skills/,settings.json) after a failed installation so no.fusion/leftovers remain. Adds a stale managed-workflow update path that no longer rewrites a workflow row the registry never created. - Marker-remove collision handling (
SW-007) —cleanupMarkernow refuses to delete a marker owned by a different in-flight install, preventing cross-install clobber. - Fusion plugin audit register + regressions (
SW-007) —docs/audits/sw-006-fusion-plugin-audit.mdrecords the post-merge audit findings and verification evidence. New regressions cover registration failure, marker removal collisions, and rename-rollback behavior.
Removed
- Muxy and Herdr integration trees (
SW-002) — Both trees and their mirror-only tests are gone. Host integrations now route exclusively through the adapter/plugin boundary (adapters/pi/for Pi, generated Fusion artifacts +plugins/fusion-plugin-stelow/for Fusion). Per.changeset/sw-002-removal.md, this removal is classified asminor.
Full Changelog: https://github.com/calionauta/stelow/compare/v0.54.3...v0.55.0