AIWG 2026.9.7 — Only what the run owns

AIWG 2026.9.7 — Only what the run owns

Release date: 2026-09-12

Channel: stable

AIWG 2026.9.7 fixes a class of bugs where a deploy or refresh removed artifacts it had no basis for judging, and restores AIWG's rules to the top of the precedence order the bootstrap generates. If you run `aiwg use` or `aiwg refresh` against a workspace with more than one bundle or more than one provider, this release is worth taking.

Deploys account for what they touch

`aiwg use all` takes a kernel-only path: it deploys skills and nothing else. That path was still calling the flat-artifact prune with an empty desired set, so every AIWG-managed agent, command, and rule in the provider tree matched as stale.

The observed result: `aiwg use sdlc` followed by `aiwg use all` took `.claude/agents` from 139 to 0 and `.claude/rules` from 47 to 2 — and reported success. A run that deploys only skills has no basis for calling any flat artifact stale, and no longer tries.

The reporting that hid it is fixed too. Deployment counts came from reading the provider directory, not from what the run wrote, so a deploy that wrote nothing still printed whatever happened to be sitting there. A no-op deploy and a successful one looked identical. Counts now describe the artifacts the run actually accounts for.

Ask your assistant:

Deploy the SDLC framework, then deploy everything, and show me what each run

actually wrote.

Refresh stays inside the tree it was asked to touch

A provider-scoped refresh walked every provider's agents directory and deleted AIWG-managed agents from older packages — including trees it was never asked to touch. Because commands and rules in those trees were never considered, `aiwg refresh --provider claude` could leave `.codex/` with zero agents while its commands, rules, and `AGENTS.md` bridge stayed intact and advertised.

The cross-provider prune is opt-in behind `--prune-other-providers`, but when an operator passed it, the prune deleted git-tracked and gitignored files alike. In one reported workspace `.claude/` was ignored and `.codex/` was not, so the prune landed as 161 staged deletions in a working tree holding unrelated in-flight work — losable by anyone who commits without reading `git status` first.

Deleting a regenerable ignored artifact and deleting a committed file are different questions, and they now get different answers. `--force` keeps its own meaning: may I overwrite artifacts AIWG does not manage, scoped to files the run was going to write anyway. It does not authorise destroying tracked files in a tree the run was not asked to touch.

Skill-command wrappers now retire with their source skill, instead of surviving every deploy while advertising a command that resolves to nothing.

Your rules outrank the harness

The precedence block AIWG generates into every `WORKSPACE.md` ranked provider, system, and harness instructions above AIWG's own rules. That is backwards, and it had a concrete consequence: a session-level directive to add commit attribution trailers beat `no-attribution` — a rule marked CRITICAL whose exceptions section reads "None" — and an agent could cite the generated precedence as justification.

Deployed AIWG rules now bind over provider, harness, and session directives on any subject a rule covers, including directives that claim to supersede earlier guidance. Platform capability and safety constraints remain absolute; the distinction is capability versus preference. "This tool is unavailable" is a constraint. "Format commits this way" is a directive, and a project rule on commit content wins.

Run `aiwg regenerate` to pick up the corrected block. AIWG also detects a bootstrap whose precedence has drifted back and routes that finding to regenerate through the steward, so the fix does not silently come undone.

The optional sqlite backend is optional again

`better-sqlite3` is an optional peer dependency, so a default `npm install` does not provide it. Suites that needed the backend were failing rather than skipping — 61 tests across 25 files, and only one of those failures named the cause. The rest surfaced as unrelated-looking symptoms, which made a normal contributor install look like a broken checkout.

Those suites now skip with a named remedy and warn once. A clean `npm install && npm test` is green. `npm run features:sqlite` installs the same pinned build CI uses, and the suites then run in full — the guards fire only on absence, so nothing is lost when the backend is present.

The README asks, rather than invokes

The README now leads with what you would say to your assistant instead of the command you would type. Tooling interactions throughout are prompt-driven, and the Mermaid diagrams render again. If you point new contributors at the README, the path they see first is the one AIWG is actually designed around.

Test hardening

This cycle carries a large pass over AIWG's own suite: source-bound audit oracles, fixture isolation for heavy lanes, statistical boundaries for NFR cases, mutation budgets, and runner-ownership registration. A filesystem watcher flake that had recurred four times is addressed at its contract rather than its timeout — `WatchService.start()` now resolves only once chokidar reports the watch armed, not merely that its initial scan finished, because a file created in that window was reported by neither and no caller-side wait could recover it.

Upgrading

npm install -g aiwg
aiwg refresh
aiwg regenerate

`aiwg regenerate` is what applies the corrected precedence block to your `WORKSPACE.md`. If you maintain multiple provider trees, run `aiwg doctor` afterwards to confirm each one still reports the surface you expect.