stick-shift: handoff-grade .sdlc — commit/cycle stamps + increment lifecycle - #19
Merged
Merged
Conversation
…ent lifecycle
Findings from a 3-experiment cold-agent handoff study on a stick-shift session:
A. Record↔git disconnect: entries had no pointer to the code they describe.
- transition/decide/init now stamp the short commit SHA + increment cycle on
each history/decision entry; init captures branch. status/journal surface them.
- The SHA is a foreign key: git log <entry-sha>..<next-sha> recovers a phase's work.
B. No 'next increment' lifecycle: DONE was a terminal sink and init is resume-only
(it silently dropped a new --feature on an existing session), so increment 2 was
only reachable via an off-graph DONE->SPEC nudge that left feature/request stale
and records undelimited.
- New 'increment' command: archives the finished increment, retargets
feature/request, bumps the cycle, resets to INIT so /spec is on-graph.
- /spec command doc + README updated with the increment-aware resume path.
17 tests pass (6 new, TDD), ruff clean. v0.4.0 -> v0.5.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Why
A three-experiment study on a real stick-shift session asked: can a fresh agent, handed only the persisted
.sdlc/record (+ specs + code), pick the work up cold and continue correctly? Each experiment varied one affordance and surfaced a distinct gap:.sdlc/onlyspecs//specto resumeDONE→SPECnudge that leftfeature/requeststale and the records undelimitedThis PR fixes the two real gaps (1 and 3). A third observation — stick-shift's commit-per-phase getting swept by other automation — was an artifact of rehearsing inside an active vault repo, not a plugin gap, so it's intentionally not addressed.
A. Record ↔ git foreign key
transition,decide, andinitnow stamp the short commit SHA and the incrementcycleonto each history/decision entry;initcapturesbranch.statusandjournalsurface them.The SHA is a join key from the reasoning record into git:
git log <entry-sha>..<next-sha>recovers a phase's work. (Captured at write time; since a phase is committed after its transition, consecutive entries bracket the phase — documented ingit_head's docstring.)B.
increment— the missing lifecycle verbDONEwas a terminal sink andinitis resume-only (it silently dropped a new--featureon an existing session), so increment 2 was only reachable by improvising an off-graph transition. New command:archives the finished increment into
increments[], retargetsfeature/request(sostatusnever lies), bumpscycleso records stay grouped, and resets toINIT— so the next/spectransitions on-graph, no nudge. The/speccommand doc and README now point at this path instead of the off-graph hack.Tests
DONE → increment → INIT → SPECclean with no nudge, prior increment archived.v0.4.0 → v0.5.0(plugin.json + marketplace.json).🤖 Generated with Claude Code