Skip to content

Commit 2a36944

Browse files
authored
Merge pull request #342 from nanotaboada/docs/adr-0013-0014
docs(adr): add AI workflow and SDD decision records
2 parents 03eff54 + 48e5a79 commit 2a36944

5 files changed

Lines changed: 142 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ Release names follow the **historic football clubs** naming convention (A–Z):
4343
### Added
4444

4545
- Architecture Decision Records (ADRs) documenting 12 architectural decisions in `docs/adr/` (#299)
46+
- ADR-0013: Adopt AI-Assisted Development Workflow (#342)
47+
- ADR-0014: Adopt Spec-Driven Development (SDD) (#342)
4648

4749
### Changed
4850

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ When a decision changes, update this file and create or amend the relevant ADR.
161161

162162
## Additional Resources
163163

164-
- **Architecture Decision Records**: [`docs/adr/`](docs/adr/README.md)12 ADRs documenting the "why" behind major architectural and technology choices in this project.
164+
- **Architecture Decision Records**: [`docs/adr/`](docs/adr/README.md)14 ADRs documenting the "why" behind major architectural and technology choices in this project.
165165
- New architecturally significant decisions (framework changes, persistence strategy, API contract changes, test strategy shifts) should include a new ADR in `docs/adr/` following the template in [`docs/adr/template.md`](docs/adr/template.md).
166166

167167
## Claude Code
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# ADR-0013: Adopt AI-Assisted Development Workflow
2+
3+
Date: 2026-06-10
4+
5+
## Status
6+
7+
Accepted
8+
9+
## Context
10+
11+
Software development has historically relied on three successive layers
12+
of knowledge:
13+
14+
1. **Official documentation** — authoritative but static; describes the
15+
intended API but not how real projects apply it
16+
2. **Community collaboration** — Stack Overflow, GitHub Discussions, blog
17+
posts; describes how practitioners actually solve problems, but requires
18+
the developer to synthesize and apply that knowledge themselves
19+
3. **AI synthesis** — models trained on both layers above, capable of
20+
applying idiomatic, stack-specific knowledge directly to a given
21+
codebase
22+
23+
Agentic AI tools represent a qualitative shift: instead of consulting
24+
knowledge and applying it manually, the developer delegates implementation
25+
to an agent that has absorbed the collective idioms of a stack — "the
26+
Microsoft way", "the Spring Boot way" — and can apply them consistently.
27+
28+
For a cross-language REST API comparison project, this matters
29+
particularly: each implementation should reflect how an experienced
30+
practitioner in that stack would structure the same problem, not a
31+
generic approach that happens to compile.
32+
33+
Prior to Claude Code, AI assistance was used ad-hoc — pasting code into
34+
web interfaces (ChatGPT, DeepSeek) or via IDE-integrated assistants
35+
(GitHub Copilot). Both approaches lack persistent codebase context and
36+
the ability to act autonomously across a project.
37+
38+
## Decision
39+
40+
We adopt Claude Code as the primary development workflow tool for this
41+
project.
42+
43+
A `CLAUDE.md` file at the repository root serves as the workflow
44+
specification: it documents architecture, coding conventions, invariants,
45+
and explicit boundaries for autonomous operation — what the agent may do
46+
freely, what requires human approval, and what must never be changed.
47+
48+
CodeRabbit provides an additional automated code review layer
49+
independent of the primary workflow.
50+
51+
## Consequences
52+
53+
### Positive
54+
55+
- Stack-specific idioms are enforced by the agent's collective knowledge
56+
rather than individual developer discipline
57+
- `CLAUDE.md` is living architectural documentation: it must stay
58+
accurate for the workflow to function, creating a natural incentive to
59+
keep it current
60+
- Explicit autonomy boundaries make human oversight intentional rather
61+
than incidental
62+
63+
### Negative
64+
65+
- Token economics: long-running work may exceed context limits, requiring
66+
active session management and continuation prompts to resume work
67+
across sessions
68+
- The global `~/.claude/CLAUDE.md` and per-repo `CLAUDE.md` must stay
69+
aligned; drift between them produces inconsistent agent behavior
70+
71+
### Neutral
72+
73+
- Development workflow moves to the terminal/CLI rather than an IDE;
74+
this has no impact on the codebase itself
75+
- `CLAUDE.md` is specific to Claude Code; a different tool would require
76+
a different workflow specification format
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# ADR-0014: Adopt Spec-Driven Development (SDD)
2+
3+
Date: 2026-06-10
4+
5+
## Status
6+
7+
Accepted
8+
9+
## Context
10+
11+
In an agentic development workflow, it is easy to begin implementation
12+
before requirements are fully understood. An AI assistant will produce
13+
working code from a vague prompt — but working and correct are not the
14+
same thing. Without a forcing function that requires requirements to be
15+
stated explicitly before implementation begins, scope creep, rework, and
16+
misaligned implementations are likely outcomes.
17+
18+
GitHub Issues provide a natural spec artifact: persistent, linkable,
19+
and — critically — they survive session boundaries. In a workflow where
20+
context is lost between sessions, an Issue that captures the agreed
21+
approach and acceptance criteria before implementation begins serves as
22+
the durable contract between intent and implementation.
23+
24+
## Decision
25+
26+
All new features and non-trivial changes follow a three-step workflow:
27+
28+
1. **Discuss** — describe the requirement in Claude Code Plan mode;
29+
explore alternatives and consequences before committing to an approach
30+
2. **Specify** — create a GitHub Issue as the spec artifact, capturing
31+
the agreed approach, acceptance criteria, and any constraints
32+
3. **Implement** — work against the Issue; commits reference it via
33+
the `(#issue)` suffix in the Conventional Commits format
34+
35+
Trivial changes (documentation updates, formatting fixes, dependency
36+
bumps) may skip the Issue step at the developer's discretion.
37+
38+
## Consequences
39+
40+
### Positive
41+
42+
- Requirements are stated explicitly before implementation; the agent
43+
works against a written spec rather than an interpreted prompt
44+
- Issues survive session boundaries — a new session can resume from
45+
the Issue rather than reconstructing intent from scratch
46+
- The implementation trail (Issue → branch → PR → commit) is traceable
47+
without relying on session memory
48+
49+
### Negative
50+
51+
- Adds upfront overhead for changes that feel small; the Issue step can
52+
seem bureaucratic for straightforward work
53+
- The line between "spec-worthy" and "trivial" is judgment-dependent
54+
and not enforced by tooling
55+
56+
### Neutral
57+
58+
- GitHub Issues double as the project backlog; SDD and backlog
59+
management share the same artifact
60+
- Plan mode discussion is ephemeral — not persisted outside the session;
61+
the Issue is the only durable record of the pre-implementation reasoning

docs/adr/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ An ADR documents a single decision: the context that drove it, the alternatives
2020
| [ADR-0010](0010-full-replace-put-no-patch.md) | Full-Replace PUT, No PATCH | Accepted |
2121
| [ADR-0011](0011-mixed-test-strategy.md) | Mixed Test Strategy | Accepted |
2222
| [ADR-0012](0012-adopt-flyway-migrations.md) | Adopt Flyway for Database Migrations | Accepted |
23+
| [ADR-0013](0013-ai-assisted-development-workflow.md) | Adopt AI-Assisted Development Workflow | Accepted |
24+
| [ADR-0014](0014-spec-driven-development.md) | Adopt Spec-Driven Development (SDD) | Accepted |
2325

2426
## Resources
2527

0 commit comments

Comments
 (0)