Skip to content

Commit c8bbf35

Browse files
alicodingclaude
andcommitted
feat: delivery-discipline rule (DoR/DoD formalized) + main runs never self-cancel
Owner-mandated framework, researched to the converged standard and found to need NAMING, not building: Scrum 2020's DoD (a formal artifact commitment) + Kanban University's ready-for-delivery pull criteria are the industry vocabulary for gates this repo already runs — consolidated into ONE always-loaded rule (.claude/rules/delivery-discipline.md) instead of four documents. Estimation deliberately excluded (negotiates team capacity a solo+agent loop doesn't have); peer review already settled by ADR-0034. Build-health becomes a ritual, not a wonder: gh pr checks --watch after opening a goal PR; gh run list -b main -L 1 at goal pickup. Tech debt: same queue, same DoR/DoD, never a shadow register. Plus the real config bug the research found: cancel-in-progress applied to main's post-merge runs too, so two quick merges cancelled the earlier one's verification (observed live: merges #1/#10) — now conditional per GitHub's own documented pattern; PR runs still supersede, main runs always complete. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft
1 parent 9471972 commit c8bbf35

2 files changed

Lines changed: 57 additions & 1 deletion

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Delivery discipline — Definition of Ready / Definition of Done
2+
3+
No `paths` frontmatter — applies to every goal, every language. Terms
4+
are Scrum's (the 2020 Scrum Guide formalized DoD as an artifact
5+
commitment) and Kanban's (Kanban University's own "ready for delivery"
6+
pull criteria) — adopted as the converged NAMES for gates this repo
7+
already runs, consolidated here from CLAUDE.md/testing.md/ADR-0034 so
8+
an agent checks ONE list, not four documents (researched 2026-08-12;
9+
owner-mandated: "DoR should be industry standard").
10+
11+
## Definition of Ready — before a BACKLOG.md item enters a session
12+
- Precedent checked, not assumed (CLAUDE.md Research→Plan→Implement).
13+
- A capability map exists for any schema/adopt-vs-build call with more
14+
than one real future use (CLAUDE.md Plan step, SPEC §3.3's worked
15+
example).
16+
- A goal file exists: Goal/Plan/**Acceptance stated as a checkable
17+
predicate**, not a vibe.
18+
- No SPEC.md `OPEN` dependency is silently resolved by starting —
19+
surface the choice, or name it an explicit blocker and don't start.
20+
- No estimate/story-point step — deliberately excluded: estimation
21+
negotiates shared *team* capacity, which a solo-owner +
22+
agent-execution loop doesn't have.
23+
24+
## Definition of Done — before the checkbox flips and the file moves to archive/
25+
- Local lefthook suite green, never bypassed.
26+
- CI's `ci-gate` required check green on the **merged** PR (ADR-0034).
27+
- Every new capability carries a seeded example + a proof at the right
28+
layer (testing.md's layering) — the seed is part of DoD, never a
29+
follow-up.
30+
- Any bug fixed via live/manual repro is now a committed test
31+
(testing.md).
32+
- SPEC.md updated in the same change, for anything that shifts what it
33+
describes (mechanical-only changes exempted).
34+
- The goal file's own Acceptance criteria checked against what
35+
SHIPPED, not what was planned.
36+
- Nothing secret-shaped staged; a real commit message.
37+
38+
## Build-health visibility
39+
The ruleset (ADR-0034) already makes main unmergeable-red; confirm,
40+
don't re-enforce:
41+
- `gh pr checks <n> --watch` right after opening a goal's PR.
42+
- `gh run list -b main -L 1` once, when picking up the next goal.
43+
No richer signal is worth building — a webhook receiver is a second
44+
deployable, already forbidden (SPEC §1.1).
45+
46+
## Tech debt
47+
A BACKLOG.md entry with the same DoR/DoD as any goal — never a second
48+
register, never a bare TODO as the record (a comment may point at a
49+
goal/ADR id, never stand alone).

.github/workflows/ci.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ permissions:
1515

1616
concurrency:
1717
group: ci-${{ github.workflow }}-${{ github.ref }}
18-
cancel-in-progress: true
18+
# Conditional, per GitHub's own docs pattern: a superseded PR run
19+
# SHOULD die (per-PR synthetic ref), but main's post-merge runs must
20+
# each complete — with `true` here, two merges landing close together
21+
# cancelled the earlier merge commit's own verification run, leaving
22+
# that main SHA's CI status permanently incomplete (observed live
23+
# 2026-08-12: merges #1/#10 showed cancelled; the mirror image of
24+
# ADR-0034's bisect-blind-spot concern).
25+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
1926

2027
jobs:
2128
# goal 0024 / ADR-0034's un-deferred path-filtering: skip the heavy

0 commit comments

Comments
 (0)