Skip to content

docs: sequence Spec Kit with the existing Ballast rules - #381

Merged
markcallen merged 1 commit into
mainfrom
docs/spec-kit-development-process
Sep 29, 2026
Merged

markcallen merged 1 commit into
mainfrom
docs/spec-kit-development-process

Conversation

@markcallen

Copy link
Copy Markdown
Contributor

Phases 1, 3 and 5 — completing plans/plan-spec-kit-development-process.md.

The gap

Ballast ships a spec-kit agent, three Spec Kit skills, and rules for tasks, plan lifecycle, testing, docs and review. Each was documented on its own. The sequence between them was not — and without it the same decision gets recorded in spec.md, tasks.md, tasks/todo.md, a plan, an issue and a PR comment, then drifts in five of them.

docs/development-process.md

Placement is option (a) as agreed — a new doc, not folded into docs/agents/spec-kit.md. The per-guide docs already existed; what was missing was connective tissue, and that doesn't belong inside any one agent's guide.

It opens with which artifact owns which kind of truth, because that table is the part that actually prevents the duplication. Then the eight steps, the completion gates, and — deliberately — when to skip steps:

Change Sequence
Single-file fix Steps 6–8. No plan, no spec.
Bug fix with behaviour change Steps 4, 6, 7, 8
Non-trivial feature All eight
Architectural change All eight, ending in an ADR

Running the full process on a one-line fix produces ceremony, not quality. The two rules that never relax are named explicitly: a behaviour change gets a test that failed first, and docs change with behaviour.

It links to the existing guides rather than restating them, per the plan's own constraint.

The two smaller decisions

Both recorded in the plan's resolved questions:

  • speckit-taskstoissues — optional handoff, not default. It earns its place only when generated tasks need to be visible off-branch; otherwise it duplicates tasks.md.
  • ADR graduation — only where the plan lifecycle rule already triggers. Not every feature makes an architectural decision, and an ADR per feature produces records nobody consults.

Phase 3

A one-line pointer at the top of nine guides — spec-kit, the three speckit-* skills, github-pr-copilot-cycle, tasks, plan-lifecycle, testing, docs — each naming the step it belongs to, so the sequence is reachable from any entry point rather than only from the index.

Honesty check

The doc states this repository has not bootstrapped Spec Kit itself. .specify/ is genuinely absent and #303 is genuinely open — both verified, not assumed. It would have been easy to write the process as though it were already in use.

Phase 5 verification

  • 385/385 TypeScript tests, eslint and prettier clean
  • docs-links.test.ts (added in Phase 4, fix: create the review policy AGENTS.md already promised #380) validates every link the new doc and the nine cross-links introduce — the check is now guarding the work that came after it
  • tasks/todo.md has zero unchecked items; nothing outlived the branch, so nothing needed promoting

Next

The plan is complete and marked ready to graduate. Say the word and I'll take it to ADR-004 — I've left that as a separate step rather than assuming it.

🤖 Generated with Claude Code

Phases 1, 3 and 5 of plan-spec-kit-development-process, completing it.

Ballast ships a spec-kit agent, three Spec Kit skills, and rules for
tasks, plan lifecycle, testing, docs and review. Each was documented
alone; the sequence between them was not. Without it the same decision
gets recorded in spec.md, tasks.md, tasks/todo.md, a plan, an issue and
a PR comment, then drifts in five of them.

docs/development-process.md is that sequence. It opens with which
artifact owns which kind of truth, because that table is the part which
prevents the duplication; then the eight steps, the completion gates,
and — deliberately — when to skip steps. Running the full process on a
one-line fix produces ceremony, not quality, so the doc says which
changes need which steps, and which two rules never relax.

Placement is option (a), a new doc rather than folding it into
docs/agents/spec-kit.md. The per-guide docs already existed; what was
missing was connective tissue, and that does not belong inside any one
agent's guide.

Two smaller decisions recorded in the plan: speckit-taskstoissues is an
optional handoff rather than default, since it otherwise duplicates
tasks.md; and ADR graduation is required only where the plan lifecycle
rule already triggers, because an ADR per feature produces records no
one consults.

Phase 3 puts a one-line pointer at the top of nine guides naming the
step each belongs to, so the sequence is reachable from any entry point.

The doc states that this repository has not bootstrapped Spec Kit
itself; .specify/ is genuinely absent and #303 is genuinely open, both
checked rather than assumed.

Phase 5: 385/385 tests, eslint and prettier clean, and docs-links.test.ts
from Phase 4 validates every link the new doc and the cross-links add.

tasks/todo.md now has no unchecked items. Nothing outlived the branch,
so nothing needed promoting.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Sep 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@markcallen
markcallen merged commit a108900 into main Sep 29, 2026
47 checks passed
@markcallen
markcallen deleted the docs/spec-kit-development-process branch September 29, 2026 23:24
markcallen added a commit that referenced this pull request Sep 29, 2026
All five phases landed via #380 and #381, so the plan graduates.

ADR-004 records the decision rather than the document: each artifact
owns exactly one kind of truth, and docs/development-process.md
sequences the moves between them. The problem it solves is concrete --
one decision could plausibly live in spec.md, tasks.md, tasks/todo.md, a
plan, an issue and a PR comment, so it gets written in several, updated
in one, and the rest decay into confident contradictions.

It records the two invariants that hold it together (intent is written
before implementation, not reconstructed after it; work that will not
finish on this branch leaves the branch), and that the process is scaled
to the change, since a process with no skip rule gets skipped entirely.

Negative consequences are recorded, including the honest one: the
process is documented but not yet exercised here. This repository has
not bootstrapped Spec Kit, so steps 1-3 are untested. That is #303.

plans/ is now empty; its README says so explicitly rather than rendering
an empty table.

Co-authored-by: Claude Opus 5 (1M context) <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