Files
psf-memo/specs
Chris Troutner d11365c057 Spec Search feature (P6.4)
Add psf-memo-client/specs/search.feature specifying the /search read
endpoint (posts by text, profiles by name/bio) and the client Search page.
Update the backlog: mark Search in pipeline, note Send money (P5.1) skipped.

By specifier.
2026-08-29 07:10:38 -07:00
..
2026-08-29 07:10:38 -07:00

psf-memo Specifications

This directory holds cross-component and per-component behavior specifications.

Layout

specs/
├── README.md             # this file
├── feature-backlog.md    # monorepo-wide prioritized backlog
└── (per-component specs live next to their component)

Per-component feature files:

  • psf-memo-client/specs/*.feature — React SPA behavior (write + read paths)
  • psf-memo-indexer/specs/*.feature — indexer behavior (future)
  • psf-memo-db/specs/*.feature — DB REST API behavior (future)

Why split specs by component?

A single user-facing feature (e.g. "Like a Memo") usually needs coordinated changes in all three layers:

  1. psf-memo-db exposes a new route or store for like counts / liked state.
  2. psf-memo-indexer parses and stores 0x6d04 like transactions.
  3. psf-memo-client renders the heart icon, modal, and broadcast.

Keeping feature files next to the component they exercise lets that component's acceptance pipeline own the spec. The monorepo backlog (feature-backlog.md) tracks which components are touched by each user-facing feature.

Gherkin conventions

  • Each feature file uses Feature:, one optional Background:, and Scenario or Scenario Outline: with Examples:.
  • Name each scenario Feature Name - N.
  • Put a # comment listing all scenario names immediately before the Feature: line.
  • Use <parameter> placeholders for values that vary and improve mutation.
  • Prune identical example-table columns that do not improve Gherkin acceptance mutation.
  • Run bb gherkin-ir-dry-checker on each IR to normalize and prune before handing off.