feat(sdd): accept Claude plan documents via plan:provided marker#132
Conversation
Add a 'Specification (from Claude plan)' issue template (spec.md) that applies a plan:provided marker. The marker puts sdd-spec and sdd-triage into translation mode: sdd-spec translates the plan into a structured spec, sdd-triage Phase A translates the plan's architecture section into architecture.md, with from-scratch fallback when the plan lacks one. - templates: new spec.md template; plan:provided label in labels.yml. - lifecycle-states.yml: declare plan:provided under markers. - sdd-spec.md: step 3b translation detect, step 5a plan translation, step 3a proposal text adjust, step 7a plan-lift; remove-labels gains plan:provided (fast-path stub-spec exit clears it). - sdd-triage.md: Phase A architecture-translation; remove-labels gains plan:provided (Phase A clears it when the arch PR opens). - sdd-gates.md: no-leakage gate relaxed only with a (translated from plan: step N) citation; empty-PR Blocker unchanged. - sdd-interaction.md: plan:provided orthogonal-marker entry. - quick-setup.sh: install spec.md template. - docs/sdd/index.md: note the plan template in "What a human does". - regenerated sdd-spec.lock.yml and sdd-triage.lock.yml. Closes #102 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The opus variant list read (sdd-execute-opus, sdd-execute-sonnet, sdd-execute-opus) — the first entry duplicated opus and omitted haiku. The sonnet variant had the same defect (sdd-execute-sonnet first). Fix both to the canonical (sdd-execute-haiku, sdd-execute-sonnet, sdd-execute-opus); haiku was already correct. Regenerated the two affected execute locks. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Caution Review failedFailed to post review comments 📝 WalkthroughSummary by CodeRabbit
WalkthroughAdds a ChangesPlan-provided translation mode for spec and architecture
🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
# Conflicts: # .github/workflows/sdd-execute-opus.lock.yml # .github/workflows/sdd-execute-sonnet.lock.yml # .github/workflows/sdd-spec.lock.yml # .github/workflows/sdd-triage.lock.yml
Summary
Adds a
plan:providedmarker and a "Specification (from Claude plan)" issue template (spec.md). The marker putssdd-specandsdd-triageinto translation mode: instead of authoring a spec and architecture from a slim issue body, they translate a Claude plan document pasted into the tracking issue.Implements issue #102 as written, honoring its three confirmed decisions:
plan:provided(notspec:provided).sdd-triage(translate the plan's architecture section intoarchitecture.md; fall back to author-from-scratch when absent or thin).(translated from plan: step N)citation; absent the citation it stays a Warning.Design
Solutions S1–S5 from the issue:
sdd-spectranslation mode (steps 3b/5a);sdd-triagePhase A architecture-translation mode (step 2). One orthogonal marker, two readers on different code paths — the same shape asmodel:*. Phase transitions leave the marker untouched, so propagationsdd:spec → sdd:triageis automatic.needs-human. Documented inshared/sdd-gates.mdandsdd-spec.mdstep 5a.sdd:dispatchedmodel). Set by the template; read bysdd-specandsdd-triagePhase A; cleared bysdd-triagePhase A when the architecture PR opens (full path) or bysdd-specwhen the stub spec PR opens (fast path).sdd-specdoes NOT clear it on full-path completion, sosdd-triagecan still see it. Both agents addplan:providedtoremove-labels.allowed. Declared undermarkers:inlifecycle-states.yml./fastpathto dispatch the plan directly, or/specto write a translated full spec first"). On/fastpath, step 7a runs in plan-lift mode: stub R-IDs and proof artifacts lifted from the plan, the[sdd-spec:fastpath-plan]comment is the plan reformatted; the marker is cleared on stub-spec exit.needs-human. Downstream R-ID validation is presence-based, so no downstream agent changes.Files
Note: editing
shared/sdd-interaction.mdandshared/sdd-gates.mdproduced no lock changes in this PR. Locks importshared/*via the pinned-ref@mainform (ADR 0002/0004), so a shared-fragment edit propagates into the inlined locks only after merge, on the next compile. The two shared edits are committed alongside the source edits; this matches the established pattern (e.g. commit772facf). The CI drift gate passes because CI'sgh aw compileresolves the same@mainimport cache.Verification
Drive-by
Separate commit
fix(sdd-execute-opus): correct variant list typo. The opus variant list read(sdd-execute-opus, sdd-execute-sonnet, sdd-execute-opus)— the first entry duplicated opus and omitted haiku. The sonnet variant had the same defect (sdd-execute-sonnetfirst). Both fixed to the canonical(sdd-execute-haiku, sdd-execute-sonnet, sdd-execute-opus); haiku was already correct. Regeneratedsdd-execute-opus.lock.ymlandsdd-execute-sonnet.lock.yml. Isolated from the feature commits.References
needs-human), ADR 0002 (imports), ADR 0004 (distribution), ADR 0012 (fast-path)🤖 Generated with Claude Code