Upgrade BSW.DevSpark
Upgrades refresh framework-owned files while preserving repository-owned work and truth.
Ownership Boundary
| Root | Upgrade behavior |
|---|---|
.devspark/ |
Refresh from the versioned distribution manifest, and remove any file the manifest does not list |
.devspark.work/ |
Preserve active plans, overrides, configuration, and operational work products |
.knowledge/ |
Preserve all current authoritative knowledge, including published guidance under .knowledge/guides/ |
.archive/ |
Preserve; never read, listed, or modified by upgrade |
Use the agent-specific quickstart as the canonical manifest-driven install and upgrade procedure. Run /devspark-upgrade --dry-run to inspect a local upgrade before applying it. The four roots are described in How It Works.
The manifest is the complete list of framework files. After an Update or Repair, .devspark/defaults/, .devspark/templates/ and .devspark/scripts/ hold exactly the files the manifest lists, so an upgraded install matches a fresh one. Files that a release dropped or renamed are removed. Customizations are never affected, because they live in .devspark.work/.
Upgrading to 9.4.1
Run your agent's quickstart in Update Mode. Step 9.5 then removes framework files the manifest no longer lists, such as the create-new-feature and validate-knowledge-coverage scripts left behind by earlier upgrades, and reports each file it removes. Nothing outside .devspark/ changes. If a team script or CI step still calls a removed file, rebuild it on the current stock script or keep a copy as an override in .devspark.work/scripts/.
Upgrading to 9.4
DevSpark 9.4 needs no conversion script, and existing work is never migrated into the new format. Run your agent's quickstart in Update Mode, or install it fresh. Afterwards:
- New work starts with
/devspark-specifyon aNNN-work-*branch, with no route question and no planning file. In a later session/devspark-nextresumes it. - Active v9.3 work continues as it was. A full-spec bundle keeps its plan, tasks and Planning Review route, a quick spec continues to implementation, and an open quickfix record continues to
/devspark-implement./devspark-nextresolves each one from its recorded files, and nothing is rewritten. - Retired creation paths. DevSpark no longer creates a new full-spec or quick-spec bundle.
create-new-feature.shand.ps1are no longer shipped, andnew-branchaccepts only--type workand--type fix; any other type exits1withtype must be one of: fix, workand creates nothing. No 9.4 command calls them, and the quickstart's Update Mode removes the copies in.devspark/scripts/because the manifest no longer lists them. A team override or CI step that calls them, or passesspecorquicktonew-branch, must be rebuilt on the current stock/devspark-specify./devspark-upgradelists such an override as orphaned. create-prexit codes.create-pr.ps1create and update mode now exit1on a refusal or failure and0only onstatus: ok, ascreate-pr.shalready did. The JSON output is unchanged, so a PowerShell caller that treated exit0as "the script ran" should read the JSON on a non-zero exit too.- Required obligations need evidence. When
work.mddeclares## Required Obligations, delivery is refused until each entry is checked with itsAuthority:and a traceable reference to the satisfying evidence or decision, such as a repository path, commit, review or approval id, or link. See Assurance as needed. - Drift.
/devspark-upgrade --dry-runreports a stale version stamp, missing or orphaned skills, and overrides that shadow a changed stock command. Re-run the quickstart in Repair Mode to restore missing framework files. - Rollback. The upgrade changes only framework-owned files, so revert the commit that applied it to return to 9.3. Your work, Knowledge and overrides are untouched either way.
Upgrading to 9.3
DevSpark 9.3 needs no conversion script and no rewrite of existing specifications, tasks or Knowledge. Run your agent's quickstart in Update Mode. Existing artifacts stay readable:
- Per-requirement Knowledge stubs (
knowledge/fr-NNN.md) andcode_ref/knowledge_reftask suffixes from earlier versions are ignored, not rejected, and are not required for archiving. Delete them whenever convenient. last_verifiedstays valid on Knowledge documents and is now optional. A date alone never blocks a change.index.jsonandcoverage.jsonare optional build output. If your CI or scripts compare them, switch topython scripts/build_knowledge_index.py --repo-root . --check, which now only confirms the Knowledge builds.- Scripts that read
/devspark-releasecontext (KNOWLEDGE_INDEX_PRESENT,KNOWLEDGE_INDEX_CURRENT) should readKNOWLEDGE_BUILDS, and scripts that read theINDEX_FRESHfield ofexplain-contextoutput should drop it. The/devspark-create-prreadiness result is nowready,not-applicable,unknownorblocked, andcheck-planning-referencesno longer emitslinkage_findings. validate-knowledge-coverage.shand.ps1are no longer shipped. No 9.3 command calls them, and the quickstart's Update Mode removes the copies in.devspark/scripts/because the manifest no longer lists them. Remove any CI step that invokes them.
Upgrading from 8.x
DevSpark 9.0 is a breaking release: every skill is invoked with a /devspark-<command> slash command (for example /devspark-plan), and GitHub Copilot installs each one as a native Agent Skill under .github/skills/. The 8.x entry points (.github/agents/devspark.<command>.agent.md and .github/prompts/devspark.<command>.prompt.md for Copilot, or devspark.<command>.<ext> in another agent's commands directory) would list every skill twice, so the upgrade retires them. There is no dotted alias, fallback, or compatibility mode.
Run your agent's quickstart. When it detects an 8.x install it:
- installs the 9.0 skill entry points (native Agent Skills for Copilot, platform-specific command or prompt shims for other agents) first, and never blocks that install on a retirement problem;
- lists exactly what it will retire and asks once for confirmation, and changes nothing without a yes;
- deletes unmodified managed entry points, and prunes only the managed
chat.promptFilesRecommendationskeys in.vscode/settings.json; - moves any entry point you edited, byte-for-byte, to
.devspark.work/migration/8.x-entry-points/instead of deleting it, and reports it; - reports any conflict, such as an existing
devspark-<command>skill folder that is not DevSpark's, for you to rename or remove. It never overwrites it.
Your customizations are not touched. .devspark.work/commands/ (team) and .devspark.work/{git-user}/commands/ (developer) keep resolving before the distributed default, and .knowledge/, .archive/ and your active plans are left alone. To keep an edit from a quarantined entry point, recreate it as a customization in .devspark.work/commands/devspark.<command>.md (team) or .devspark.work/{git-user}/commands/devspark.<command>.md (developer).
Running the upgrade again lists nothing and changes nothing. The upgrade leaves no marker or flag behind.
After Upgrade
Check that:
.devspark/BSW.DevSpark.versionreports the installed version;- all stock skills have
/devspark-<command>slash-command entry points (for GitHub Copilot,.github/skills/devspark-<command>/SKILL.md); - no unmodified 8.x entry point remains, and anything you edited is in
.devspark.work/migration/8.x-entry-points/; - team and personal overrides still resolve before stock files;
- overrides contain no legacy root references;
- both PowerShell and Bash script adapters are present;
.devspark/defaults/,.devspark/templates/and.devspark/scripts/contain no file the manifest does not list;.devspark/templates/skills/is complete;.devspark.work/devspark.user.jsonis ignored by Git;- the constitution resolves from
.knowledge/governance/constitution.md.
Never copy repository-owned files into .devspark/ to make an upgrade pass. Fix path resolution or
migrate ownership explicitly.