Skip to content

[Init] backlog managers + 4 advanced templates + Podman variant #22

@pyadav

Description

@pyadav

Parent

#1

What to build

Extend sanddune init (slice #21) with:

  1. Backlog managers — pluggable sources of tasks. v1 ships GitHub Issues and Beads. Each declares a Dockerfile snippet (installed via template argument substitution) and command placeholders for prompt templates. Backlog managers are an init-time concern only — no runtime API.
  2. Advanced templatessimple-loop, sequential-reviewer, parallel-planner, parallel-planner-with-review. These exercise the live library API (run(), createSandbox(), createWorktree()) and reference the chosen backlog manager's commands.
  3. Podman variant — when the user picks Podman during init, write a Containerfile instead of Dockerfile and use sanddune podman build-image (slice [Init] backlog managers + 4 advanced templates + Podman variant #22 — BuildImage).

Acceptance criteria

  • Init prompts add: backlog manager (github | beads), template (blank | simple-loop | sequential-reviewer | parallel-planner | parallel-planner-with-review)
  • Each backlog manager declares a Dockerfile snippet that gets installed via template argument substitution (e.g. {{BACKLOG_MANAGER_TOOLS}} in the Dockerfile is replaced with gh install steps for github, beads install steps for beads)
  • Each backlog manager declares prompt-template command placeholders (e.g. LIST_TASKS_CMD, VIEW_TASK_CMD) that templates can reference
  • Backlog managers are init-time only — no runtime API surface; they only affect scaffolded files
  • All four advanced templates scaffold:
    • simple-loop — picks GitHub issues one by one and closes them
    • sequential-reviewer — implements issues one by one, with code-review step after each
    • parallel-planner — plans parallelizable issues, executes on separate branches, then merges
    • parallel-planner-with-review — same, with per-branch review before merge
  • Podman variant: writes Containerfile instead of Dockerfile; scaffolded main.{mts,ts} uses podman() from @missingstudio/sanddune/sandboxes/podman; build step uses sanddune podman build-image
  • Unit tests: each (backlog manager × template) combination scaffolds the expected file tree; Podman variant produces Containerfile
  • Integration test: init with simple-loop + github against a temp repo with a fixture issue, run scaffolded main.{mts,ts} against a fake agent, verify the loop progresses
  • bun test and bun run typecheck pass

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageMaintainer needs to evaluate this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions