Skip to content

feat: human-readable acceptance criteria across CLI, dashboard, and prompts#84

Merged
tzone85 merged 1 commit into
mainfrom
feat/human-readable-acceptance-criteria
Jun 24, 2026
Merged

feat: human-readable acceptance criteria across CLI, dashboard, and prompts#84
tzone85 merged 1 commit into
mainfrom
feat/human-readable-acceptance-criteria

Conversation

@tzone85

@tzone85 tzone85 commented Jun 24, 2026

Copy link
Copy Markdown
Owner

Summary

Acceptance criteria authored as a single run-on technical blob (go test green. WorldState.copy() ...) were unreadable to a human clicking through a story. This adds a pure formatter and wires it into every surface where a person reads criteria.

Changes

  • internal/criteria/format.go — pure (no-I/O) Format(raw) []string + FormatMarkdown(raw) string. Sentence-splitting that guards abbreviations (e.g.) and identifier periods (WorldState.copy()), and strips -/*//ordinal markers. 14 table-driven test cases pin the segmentation rules.
  • nxd review <story> — now prints a Description: block and a bulleted Acceptance Criteria: block (previously showed neither).
  • Web dashboard — snapshot exposes acceptance_criteria_items (story_id → []string); clicking a story title expands a detail row with the description + criteria checklist (storyDetailRow/toggleStoryDetail).
  • Generation — Tech-Lead prompt (prompts.go) and planner tool schema (planner_tools.go) require 3-6 discrete, intent-first criteria, one per line, so newly planned stories are readable at the source.

Testing

TDD throughout (tests written first → fail → implement → pass).

  • go test ./... -race -count=1 — all 30 packages pass
  • go vet ./... — clean
  • golangci-lint run — 0 issues
  • go build -o /tmp/nxd ./cmd/nxd/ — clean

…rompts

Add a pure formatter that splits run-on acceptance-criteria blobs into
discrete, human-readable items so a person clicking through a story can
read the intent rather than parsing a wall of text.

- internal/criteria/format.go: Format/FormatMarkdown — sentence-splitting
  that guards abbreviations (e.g.) and identifier periods (WorldState.copy())
  and strips -, *, bullet, and ordinal markers. Fully unit-tested.
- nxd review <story>: prints a Description block + bulleted Acceptance
  Criteria block (previously showed neither).
- web snapshot: exposes acceptance_criteria_items (story_id -> []string);
  dashboard expands a detail row with description + criteria checklist when
  a story title is clicked (storyDetailRow/toggleStoryDetail).
- Tech-Lead prompt + planner tool schema: require 3-6 intent-first criteria,
  one per line, so newly planned stories are readable at the source.

TDD: tests written first for the formatter, review command, and snapshot.
Full suite green (go test ./... -race), go vet clean, golangci-lint 0 issues.
@tzone85 tzone85 merged commit 19eb0ff into main Jun 24, 2026
10 checks passed
@tzone85 tzone85 deleted the feat/human-readable-acceptance-criteria branch June 24, 2026 08:49
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