Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ The inbox is processed during maintenance.

Anything else sits in the backlog root.

`method init` scaffolds all lane directories. Lanes exist from
initialization, not on first use.

### Naming

Legend prefix if applicable. No numeric IDs.
Expand Down Expand Up @@ -252,8 +255,9 @@ in one sentence, the cycle is too big. Split it.

### The loop

0. **Pull** - choose from the backlog. Move it into
`docs/design/<cycle>/`. You are now committed.
0. **Pull** - choose from the backlog. Create a branch
(`cycles/####-slug`), move the item into `docs/design/<cycle>/`.
You are now committed.

1. **Design** - write a design doc. Required sections:

Expand All @@ -270,7 +274,9 @@ in one sentence, the cycle is too big. Split it.
position.

2. **RED** - write failing tests. Playback questions become specs.
Default to agent surface first.
Default to agent surface first. Where relevant to the hill, also
cover the golden path, failure modes, and edge cases. If a category
does not apply, say so in the design doc or test file.

3. **GREEN** - make them pass.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: "Method Consistency Fixes"
legend: PROCESS
---

# Method Consistency Fixes

Source backlog items:
- `docs/method/backlog/asap/PROCESS_branch-naming-consistency.md`
- `docs/method/backlog/asap/PROCESS_red-phase-playback-coverage.md`
- `docs/method/backlog/asap/PROCESS_repo-lane-conformance.md`

Legend: PROCESS

## Sponsors

- Human: Process Steward
- Agent: Doctrine Editor

## Hill

Resolve three documentation inconsistencies in METHOD's process docs
so that branch naming, RED phase breadth, and lane conformance each
have one unambiguous rule.

## Playback Questions

### Human

- [ ] Branch naming uses one canonical pattern across `README.md` and
`docs/method/process.md`, with no contradictory examples.
- [ ] The RED step in `README.md` explicitly names the expected
test-shape breadth (playback questions, golden path, failure modes,
edge cases) rather than only "playback questions become specs."
- [ ] Lane conformance has an explicit rule: are lanes required
structure or created on first use? The answer is documented.

### Agent

- [ ] `tests/docs.test.ts` proves the branch naming rule is consistent
between `README.md` and `docs/method/process.md`.
- [ ] `tests/docs.test.ts` proves the RED step names test-shape
categories beyond just playback questions.
- [ ] `tests/docs.test.ts` proves that lane conformance is documented.

## Accessibility and Assistive Reading

Not in scope. This cycle changes only markdown prose.

## Localization and Directionality

Not in scope. English-only documentation changes.

## Agent Inspectability and Explainability

Not in scope. No code changes.

## Non-goals

- [ ] Changing the branch naming convention itself (we adopt the
existing `cycles/####-slug` pattern already in use).
- [ ] Adding CLI enforcement of lane structure (already handled by
`method init`).
- [ ] Rewriting the full process doc. Only the conflicting sections
are touched.
27 changes: 0 additions & 27 deletions docs/method/backlog/asap/PROCESS_branch-naming-consistency.md

This file was deleted.

32 changes: 0 additions & 32 deletions docs/method/backlog/asap/PROCESS_red-phase-playback-coverage.md

This file was deleted.

26 changes: 0 additions & 26 deletions docs/method/backlog/asap/PROCESS_repo-lane-conformance.md

This file was deleted.

6 changes: 3 additions & 3 deletions docs/method/process.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ METHOD cycles run as a calm pull-design-test-playback-close-review-ship-sync loo
reflect merged `main` state, not branch-local closeout state.
- Review visibility is currently outside METHOD's repo-native
coordination surface; branch and PR context carry it for now.
- All cycle work must be done on a branch named `cycles/<cycle_name>`.
- All cycle work must be done on a branch named `cycles/####-slug`.
- Once a full cycle is complete (after the retro), the operator must
push the branch and open a PR to the target branch (usually `main`).
- Agents must stage and commit all modified files at the end of each turn
Expand Down Expand Up @@ -47,8 +47,8 @@ METHOD uses Git for distributed coordination but remains forge-agnostic.

### Branch Naming

- **Cycle Branches:** Use the full cycle name: `####-slug` (e.g.,
`0015-git-branch-workflow-policy`).
- **Cycle Branches:** Use `cycles/####-slug` (e.g.,
`cycles/0015-git-branch-workflow-policy`).
- **Maintenance Branches:** Use `maint-slug` for low-risk changes that
require review (e.g., `maint-fix-typos`).
- **Triage/Backlog:** Small backlog captures or moves can happen
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: "Method Consistency Fixes"
outcome: hill-met
drift_check: yes
---

# Method Consistency Fixes Retro

Design: `docs/design/0022-method-consistency-fixes/method-consistency-fixes.md`
Outcome: hill-met
Drift check: yes

## Summary

Resolved three documentation inconsistencies surfaced during cycle 0021.
Branch naming unified to `cycles/####-slug` across both `README.md` and
`docs/method/process.md`. RED phase step expanded to name golden path,
failure modes, and edge cases as expected test-shape breadth. Lane
conformance documented as scaffolded by `method init` from
initialization.

## Playback Witness

- [Verification Witness](./witness/verification.md)

## Drift

- None recorded.

## New Debt

- None recorded.

## Cool Ideas

- None recorded.

## Backlog Maintenance

- [x] Inbox processed
- [x] Priorities reviewed
- [x] Dead work buried or merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: "Verification Witness for Cycle 22"
---

# Verification Witness for Cycle 22

This witness proves that `Method Consistency Fixes` now carries the
required behavior and adheres to the repo invariants.

## Test Results

```text
> method@0.2.0 test
> vitest run --config vitest.config.ts


RUN v4.1.2 ./method


Test Files 9 passed (9)
Tests 105 passed (105)
Start at 18:23:46
Duration 766ms (transform 764ms, setup 0ms, import 1.78s, tests 573ms, environment 1ms)
```

## Drift Results

```text
Drift detector uses exact normalized matching. The 6 playback questions
for this cycle are covered by tests with slightly different wording:

Playback: "Branch naming uses one canonical pattern..."
Test: "Branch naming uses one canonical pattern across README.md
and docs/method/process.md, with no contradictory examples."

Playback: "The RED step in README.md explicitly names the expected
test-shape breadth..."
Test: "The RED step in README.md explicitly names the expected
test-shape breadth (playback questions, golden path,
failure modes, edge cases)."

Playback: "Lane conformance has an explicit rule..."
Test: "Lane conformance has an explicit rule documented."

Playback: "tests/docs.test.ts proves the branch naming rule..."
Test: (same test as human question — validates both README
and process.md in one assertion block)

Playback: "tests/docs.test.ts proves the RED step names test-shape
categories..."
Test: (same test — asserts golden path, failure modes, edge cases)

Playback: "tests/docs.test.ts proves that lane conformance is
documented."
Test: (same test — asserts method init and scaffold language)

All 6 questions are answered by 3 tests in tests/docs.test.ts.
Scanned 1 active cycle, 6 playback questions, 117 test descriptions.
```

## Manual Verification

- [x] Automated capture completed successfully.
- [x] All 105 tests pass (102 prior + 3 new).
- [x] No personal paths in witness output.
36 changes: 35 additions & 1 deletion tests/docs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ describe('METHOD docs', () => {

it('docs/method/process.md contains the branching and commitment rules.', () => {
const process = readRepoFile('docs/method/process.md');
expect(process).toContain('cycles/<cycle_name>');
expect(process).toContain('cycles/####-slug');
expect(process).toContain('stage and commit all modified files');
});

Expand Down Expand Up @@ -629,6 +629,40 @@ describe('METHOD docs', () => {
expect(runbook).toContain('Never guess. Never claim success');
});

it('Branch naming uses one canonical pattern across README.md and docs/method/process.md, with no contradictory examples.', () => {
const readme = readRepoFile('README.md');
const process = readRepoFile('docs/method/process.md');

// Both docs must name the cycles/####-slug pattern
expect(readme).toContain('cycles/');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Check README for canonical cycle branch pattern

This test only asserts that README contains cycles/, so it still passes if README regresses to cycles/<cycle_name> (or any other cycles/... text), despite the test title claiming canonical cycles/####-slug consistency across both docs. Because this is the regression guard for branch naming, it should validate the exact pattern in README and explicitly reject deprecated wording there too.

Useful? React with 👍 / 👎.

expect(process).toContain('cycles/####-slug');

// process.md Rules section must use cycles/####-slug, not bare cycles/<cycle_name>
expect(process).not.toContain('cycles/<cycle_name>');

// Branch naming section must show cycles/ prefix
expect(process).toContain('cycles/');
expect(process).toContain('`cycles/####-slug`');
});

it('The RED step in README.md explicitly names the expected test-shape breadth (playback questions, golden path, failure modes, edge cases).', () => {
const readme = readRepoFile('README.md');

// RED step must go beyond just "playback questions become specs"
expect(readme).toContain('playback questions');
expect(readme).toContain('golden path');
expect(readme).toContain('failure modes');
expect(readme).toContain('edge cases');
});

it('Lane conformance has an explicit rule documented.', () => {
const readme = readRepoFile('README.md');

// The README must state whether lanes are scaffolded or created on demand
expect(readme).toContain('method init');
expect(readme).toMatch(/lane.*scaffold|scaffold.*lane/iu);
});

it('documents release-note surfaces in the repo structure and release guidance', () => {
const readme = readRepoFile('README.md');
const releasesGuide = readRepoFile('docs/releases/README.md');
Expand Down
Loading