Dogfood the converge feature through Spec Kit's own workflow: - spec.md, plan.md, tasks.md, research, data-model, contracts, quickstart - requirements checklist for the feature - ratified constitution v1.0.0 (.specify/memory) - Specify project scaffolding (.specify/, .github agent + prompt files) Defines a built-in /speckit.converge command that assesses spec/plan/tasks against the codebase and appends remaining work as new tasks (no git, no change tracking, append-only). Implementation not yet started. Excludes unrelated working-tree changes to agents.py, extensions.py, test_extensions.py, catalog.community.json, and README.md.
3.1 KiB
Quickstart: Validating /speckit.converge
This guide validates the feature end-to-end. It assumes a checkout of the spec-kit repo
with the local CLI installed (uv sync --extra test && uv pip install -e .).
Prerequisites
-
Python 3.11+,
uv, and a supported AI coding agent. -
A test project scaffolded from your local branch:
uv run specify init /tmp/converge-test --integration copilot cd /tmp/converge-test -
A feature taken through
specify → plan → tasks → implementso thatspec.md,plan.md, andtasks.mdexist and some code has been written.
Scenario 1 — Remaining work becomes tasks (FR-003, FR-005, FR-006; SC-001)
-
In the test feature, intentionally leave one functional requirement unimplemented in the code.
-
Run the command in your agent:
/speckit.converge -
Expected: An in-session findings summary lists the unmet requirement, and a new
## Phase N — Convergencesection is appended totasks.mdcontaining a task that traces to that requirement with a(missing)label. No other file changes.
Scenario 2 — Appended tasks are completed by implement (SC-005)
-
After Scenario 1, run:
/speckit.implement -
Expected: The Convergence tasks are executed like any other task and checked off.
-
Run
/speckit.convergeagain. -
Expected: Fewer or zero new findings; if the gap is closed, a clean result.
Scenario 3 — Clean converged result (FR-011; SC-002)
- Start from a feature whose code satisfies its spec, plan, and tasks.
- Run
/speckit.converge. - Expected: A clean "converged" summary with counts of requirements, acceptance
criteria, and plan decisions checked;
tasks.mdis unchanged (no empty phase added).
Scenario 4 — Read-only boundaries (FR-008–FR-010; SC-004)
- Record the contents/hashes of
spec.md,plan.md, and the pre-existing portion oftasks.md. - Run
/speckit.converge. - Expected:
spec.mdandplan.mdare byte-for-byte unchanged;tasks.mddiffers only by the appended Convergence phase; no application source files were modified.
Scenario 5 — Missing prerequisites (FR-013)
- In a feature directory with no
tasks.md, run/speckit.converge. - Expected: The command stops with a clear message instructing you to run the tasks command first; nothing is written.
Scenario 6 — Cross-integration availability (FR-016, FR-017)
- Re-init a test project for a different integration (e.g.
--integration gemini). - Expected: The converge command is installed under that agent's command directory and invocable with the agent's separator; it also appears in the post-init guidance after the implement step.
Automated checks (run from the spec-kit repo)
uv run python -m pytest tests/test_agent_config_consistency.py tests/integrations -q
Expected: All pass, including the COMMAND_STEMS/command-list assertions that now
include converge.
Reporting
Capture agent, OS/shell, and pass/fail per scenario for the PR, per the manual-testing
guidance in CONTRIBUTING.md.