Proposal: a lightweight deviation channel to close the implement↔design feedback loop #4775
orangemike
started this conversation in
Ideas
Replies: 1 comment 2 replies
|
Thanks for the detailed write-up. Before we assess the reported gap, could you share the output of Could you also walk us through one concrete instance: the relevant statement in |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Category: Enhancement / Process
Summary
In the standard Spec Kit flow (
specify → clarify → plan → tasks → implement → converge), the implement↔converge loop closes on implementation coverage, but there is no formal channel for the implementer to report back when a design assumption fromspec.mdorplan.mddoes not hold against the actual codebase. Today the implementer faces two imperfect options: silently amend the blueprint to match what was actually built, or push through with a workaround and note it intasks.md. This proposal sketches a small extension mechanism for that channel.Observed gap
When an implementer discovers during implementation that a stated requirement or design choice conflicts with reality (for example, an external dependency behaves differently than the plan assumed, or a specified error handling strategy is not achievable with the chosen stack), the forward flow has no defined place for that feedback. The
analyzestage exists, but it runs after implementation and reports findings; it does not route a decision back to the blueprint authors.The result is that the forward design stages are treated as if they are correct on first pass, and the implementer either absorbs the mismatch quietly or rationalizes it in the task log. Over a long-running feature this is how "the code drifted from the spec" happens without anyone explicitly deciding to drift.
Proposed mechanism
A per-feature
deviations.mdlog with three commands:[PENDING]proposal when it finds a mismatch. The proposal cites the conflicting blueprint section, the evidence (file paths / line numbers / probe output), and a suggested direction. The implementer does not decide.before_implementandafter_convergehooks. If any proposal is still[PENDING], the gate halts.A two-tier split
Not every mismatch should wait for a human. We suggest each proposal carry a tier:
The tier assignment is made by the implementer at proposal time against a small spillover test (would a caller notice? does a contract change?). When in doubt, assign
spec.Why this is an extension, not core
The Spec Kit extension model already supports
before_implement/after_convergehooks and per-project command registration. This mechanism is small enough to ship as an extension without touching the core prompts. It also leaves the design intent untouched: Spec Kit's core flow remains as it is; the extension adds a feedback channel only when a project opts in.Open questions
tier: specbe a hard blocking gate, or advisory?deviations.mdfor[PENDING]) instead of relying on the LLM to run the gate honestly?We have prototyped this as a local extension and are opening this discussion to hear whether this is a pattern other teams have run into, and whether it fits the project's direction before investing in a clean upstream contribution.
All reactions