Skip to content

feat: issues-only SDD backend for loadout spec and the wizard - #26

Draft
machado144 wants to merge 2 commits into
mainfrom
feat/sdd-issues-backend
Draft

machado144 wants to merge 2 commits into
mainfrom
feat/sdd-issues-backend

Conversation

@machado144

Copy link
Copy Markdown
Contributor

Refs #25 — spec 011 is pending review; this is a draft until it is approved.

What

Adds a third SDD backend, issues, where each spec and its plan live in one GitHub issue and nothing is written to the repo. The flow matches the hand-edited spec-af/plan-af/handoff-af/resume-af/sdd-workflow-af/sdd store files, so re-running the wizard with sdd.backend: issues regenerates them instead of reverting to docs/specs.

loadout spec --backend issues (or LOADOUT_SDD_BACKEND=issues)

$ loadout spec init "drift-safe sync" --backend issues
Opened spec issue #20: spec(010): drift-safe sync (acme/demo)

$ loadout spec list --backend issues
SPEC                 STEPS  BACKEND
011-issues-backend   1/3    issue #25

$ loadout spec check '#25' 3 --backend issues   # ticks "- [ ] **3. …**" between the plan markers
  • init: numbers after both existing spec(NNN): issues and local spec files. It creates the spec label if missing and uses the template body with the plan placeholder (--style full|light).
  • list/status: read issues by label. Steps are the checkboxes between <!-- plan:start -->/<!-- plan:end -->, addressed by their **N. number or an sdd: marker. Code fences and text outside the markers are ignored.
  • check/uncheck: re-fetch the body and change only that checkbox character.
  • sync: refused with a "not applicable" message, since the issue is the only copy.

Wizard

sdd.backend gains issues. With it, /spec, /plan, /handoff, /resume, the workflow skill, the sdd instruction and context-handoff describe the issues-only flow. With your custom names, the generated files differ from your current store copies only in three added hints:

  • /spec-af: a loadout spec init … --backend issues shortcut;
  • /plan-af and the skill: loadout spec status/check … --backend issues as the fetch-flip-write helper;
  • context-handoff: its location and lifecycle lines now say "spec issue comment / untracked local file". Your store copy still says .agents/context/handoff.md, "safe to commit".

local and github output is unchanged; tests compare it byte-for-byte for handoff/resume.

Tests

  • internal/sdd/issues_test.go: plan-section parsing (number vs marker IDs, fences, outside-marker lines, CRLF), single-byte toggle, valid-ID errors, duplicate numbers, #N resolve, slugify, and backend: issues in sdd.yaml.
  • internal/wizard/content_issues_test.go: key phrases per artifact, no .plan.md/sdd.yaml in issues mode, light style, and the other backends unaffected.
  • integration/spec_issues_test.go (real binary + stub gh tracker): init numbering, label and body, nothing written to the repo, duplicate refused; list/check/uncheck/status with an edit made in the GitHub UI between commands preserved, every issue edit immediately preceded by issue view; sync refused; env var selection; and wizard --answers installs the issues-only artifacts.
  • go test -race ./..., -tags integration, golangci-lint (0 issues).

🤖 Generated with Claude Code

* loadout spec --backend issues (or LOADOUT_SDD_BACKEND): init opens spec(NNN): name, list/status read the plan section, check/uncheck re-fetch and flip one box, #N refs, sync refused
* plan steps addressed by **N. number or sdd marker, byte-preserving toggle shared with the file backends
* wizard sdd.backend: issues generates issues-only spec/plan/handoff/resume commands, workflow skill and instruction

Refs #25

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

✅ PR title follows the required format

Current title: feat: issues-only SDD backend for loadout spec and the wizard

…emplates

Keeps the generated prose reviewable as markdown and clears the dupehound gate; output is unchanged.

Refs #25

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant