Repository navigation
v2.0.0: four phases (Intent, Plan, Build, Evidence) and one script - #33
Merged
Merged
Conversation
…cript Rebuild the kit around four phases with one script, sdlc.sh. - Intent records the request, what was understood and its risks. - Plan runs parallel read-only scouts into refs/ and compacts them into one PLAN.md: AS-IS to TO-BE, side effects, risk flags and the QA scenarios. - Build makes the smallest complete change and commits it; a separate adversarial reviewer passes it, and three FAILs stop the loop. - Evidence runs every scenario as its persona through the real interface. sdlc.sh score validates and routes it: a plan-caused or repeated failure goes to Plan, every must scenario passing and >= 95% overall delivers, scenarios that could not run go to the human, otherwise Build. Each return is capped at three; a stop holds until approve plan --human. A review PASS needs a new round and binds to the reviewed commit; scenarios are never dropped from evidence; close re-checks the gates and needs "Authorized: yes" for pr or deploy. init uses .git/info/exclude and changes no tracked file. Prompts and templates drop from about 23,700 words to 3,902; scripts from about 7,000 lines to 448. Selftest: 87 checks plus a four-phase lifecycle on a CLI fixture. A real agent ran one feature through all four phases on a fixture with hidden rules and shipped it at 14/14. BREAKING CHANGE: AGENTS.md, init.sh, gates/ and tools/ are replaced by SKILL.md, phases/, roles/ and sdlc.sh. v0 features show as legacy; finish them with v0.27.0. lazymode and .sdlc/memory still read.
- One shared awk uncomment() removes only the <!-- --> span and keeps the text around it; three copies of the old line-skipping code are gone. - An unknown human_gates word warns and fails closed to "intent plan"; case and duplicates are normalized, and a leading "# comment" is no longer read as a value. - approve plan --agent keeps the review FAIL count; only the human or a counted return to plan resets it. - A review records the HEAD of the project root's repository and of every repository under the root (heads:); score refuses a Commit in a repository the review did not see, so a sibling or linked-worktree path can no longer dodge the binding. - CI sets MSYS=winsymlinks:nativestrict again, and under CI the symlink checks fail instead of skipping. - A Results log path containing ".." (either separator) is refused. - The human withdraws a scenario only QA added by deleting its evidence row and approving the plan; such an approval is no longer short-circuited as "already approved". - The store walk-up stops when dirname returns its own input (Git Bash //). - Commit and Delivered hashes may be 64 characters (SHA-256 repositories). Selftest: 95 checks, including the new "ultra" regression group; 7 of its 8 checks fail against the previous sdlc.sh.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v2.0.0 rebuilds sdlc-kit around four phases — Intent → Plan → Build → Evidence — driven by one script,
sdlc.sh.refs/. OnePLAN.mdholds AS-IS → TO-BE, side effects, risk flags and the QA scenarios.sdlc.sh scorecomputes the route. It goes to Plan on a plan-caused or repeated failure. It delivers when every must scenario passes and at least 95% of all scenarios pass. It goes to the human when the scenarios that could not run are what blocks delivery. Otherwise it goes back to Build. Each kind of return is capped at three.Why: on small tasks the old kit took 842–916 s against 85 s without it, at the same accuracy (PR #26). Local stores held 19 open features and 0 closed ones.
Details:
log/changelog-v2.0.0.md.Verification
bash tests/selftest.sh: 95 checks PASS on macOS/bin/bash3.2, with BSD awk, withLC_ALL=C, and withCI=1, which turns symlink skips into failures. The checks cover:statustakes 0.2 s (v0 took over 30 s). It reports every feature aslegacy, and the original store is unchanged.scoreexited silently with code 128 when the project root was not a git repo. A new check covers it and fails on the old script./code-review ultra) found 10 issues. It ran on the v2 content only: 24 files, 3,896 lines. The 54 pure deletions of v0 files were left out to fit the 8,000-line limit.ultraregression group has 8 checks. 7 of them fail on the previous script. The 8th, for the Git Bash//root, cannot be reproduced on macOS.Breaking change
AGENTS.md,init.sh,gates/,tools/and the v0 templates are removed.legacy. Finish them withv0.27.0, or close them withsdlc.sh close <slug> dropped "<reason>".lazymodeand.sdlc/memoryare still read.Merging to
mainupdates every clone that followsmain.