Release 6.1.0
Released 2026-10-03. A run now ends with the sprint report you sign, and that report states what it measured rather than what it could see. This page summarises the release notes, which name the units behind each passage; every change is in the CHANGELOG.
What changed for you
Section titled “What changed for you”- A run ends with its signed report. The handoff page is gone.
sprint.py closefiles the sprint report and puts its rendered page in front of you before it asks for the signature, andsprint.py signseals it. The report’s known-issues section lists every open finding raised in the run and every carried unit; the nextsprint.py plannames the last signed report and its open items, andsprint.py plan --worklist RPTxxxxplans them. The HO files you already have stay readable, andhandoff.py showstill prints the remaining work without writing anything. - The report states what it measured. A unit built through a lane,
sprint.py lane briefthenlane return, is now measured: in RPT0014, 29 of 34 units read NOT MEASURED because lane-built units never opened a span.lane return --tokens N --minutes Mrecords the builder agent’s own totals against its unit, so a delegated agent’s spend counts: RPT0014’s token actual was the main thread’s meter alone and read 0.2x of its forecast, where RPT0016’s adds 53 agent totals. The minutes ratio compares like with like, and a ratio the page cannot derive is withheld, naming the units that left it short. - A plain install is the latest verified release.
install.shwith no--versioninstalls the latest published release and checks it against its.sha256, instead of the unverifiedmainbranch. Copilot CLI installs globally, to the~/.agents/skillsfolder it reads. Install and upgrade no longer damage a project’s own files. migratetells you more of what it leaves you. It names each line of your markdown docs that still names a retired command, with what replaced it. Its report agrees with the gate, names the engagement-floor and conformance cutoffs, seeds the.gitignorethatinitwrites, and names a file it cannot read rather than stopping with a traceback.- Fewer hand moves at the close.
sprint.py signmoves the approved units to Done or Fixed without invalidating the page it has just sealed. The reviewer whose REJECT carried a unit at the review cap can discharge it with an APPROVE, the carried bug is filed ready for the next plan, and a lesson class finishes its lifecycle at the close with no hand edit.
Upgrading from 6.0
Section titled “Upgrading from 6.0”Reinstall, then carry each project across. From 6.0 to 6.1 has the pinned install command and each retired name beside its replacement.
/sdlc-studio migrate # a dry run: lists what it would change, writes nothing/sdlc-studio migrate --apply # removes review.policy, restamps the project versionmigrate --apply removes review.policy from sdlc-studio/.config.yaml, the one config key 6.1 retires, keeping every other byte. Both runs name each line of your markdown docs that uses a retired handoff command. Neither reads your CI files or scripts, so search those yourself.
What a 6.0 user meets by being refused or surprised:
handoff.py generateandartifact.py new --type handoffare gone, and so isgate.py --require-handoff: the signed report fromsprint.py signis the run’s hand-over.- The
review.policykey is retired: every project carries a unit whose REJECT stands at the review cap, filing its findings as a bug. - A plain install no longer tracks
main; pass--version mainto keep the moving branch. --target copilotwrites~/.agents/skills, where it wrote the current directory’s.github/skills;--localstill writes the repository’s.- The release gate’s
revert-checklane is gone;verify_ac.py revert-check --unit <id>stays, for one unit. validate.py checkexits 1 where there is nosdlc-studio/workspace, and says so.
Known issues
Section titled “Known issues”- BG0940 (Medium). A ruling logged between the close and the sign changes the filed page, and the sign seals it without re-deriving.
- BG0943 (Low).
config.py showcannot see any review key declared after theseverity_levelslist.