midi-harbor/specs/001-service-and-clients/checklists/requirements.md
2026-09-28 13:59:10 -05:00

90 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Specification Quality Checklist: Midi Harbor — MIDI Connectivity Manager
**Purpose**: Validate specification completeness and quality before proceeding to planning
**Created**: 2026-09-20
**Feature**: [spec.md](../spec.md)
## Content Quality
- [x] No implementation details (languages, frameworks, APIs)
- [x] Focused on user value and business needs
- [x] Written for non-technical stakeholders
- [x] All mandatory sections completed
## Requirement Completeness
- [x] No [NEEDS CLARIFICATION] markers remain
- [x] Requirements are testable and unambiguous
- [x] Success criteria are measurable
- [x] Success criteria are technology-agnostic (no implementation details)
- [x] All acceptance scenarios are defined
- [x] Edge cases are identified
- [x] Scope is clearly bounded
- [x] Dependencies and assumptions identified
## Feature Readiness
- [x] All functional requirements have clear acceptance criteria
- [x] User scenarios cover primary flows
- [x] Feature meets measurable outcomes defined in Success Criteria
- [x] No implementation details leak into specification
## Notes
Validation performed 2026-09-20. 6 user stories (P1–P5), 61 functional requirements, 19 success
criteria, 0 unresolved clarification markers.
**Resolved before drafting** — four decisions that would otherwise have been
`[NEEDS CLARIFICATION]` markers were settled with the product owner up front, and are recorded in
the spec as requirements rather than open questions:
1. Midi Harbor owns its own virtual endpoints and network sessions rather than reconfiguring the
platform's built-in facilities, which research showed are not reliably programmable.
2. A background service owns all state; interfaces are clients of it.
3. Bluetooth LE MIDI covers both connecting out to devices and advertising this computer.
4. Network sessions must recover MIDI state lost to dropped packets, not merely reconnect.
**Amendment 1 (2026-09-20)**: single executable, service as a subcommand, optional graphical
interface, self-installing per-user service. Captured as User Story 2, FR-039/FR-039a–h, FR-042,
SC-014a–c, and four new edge cases.
**Amendment 2 (2026-09-20)**: physical MIDI hardware added as a first-class endpoint kind, enabling
the repeater use case — a physical device carried over a network session or Bluetooth link.
Captured as a rewritten User Story 4, FR-015a–g, FR-030a–b, SC-010a–c, the Physical MIDI Device
entity, four new edge cases, and research R-013. Re-validated against all 16 checklist items after
the amendment; all still pass.
**Judgement calls on the "no implementation details" criterion**:
- Protocol and discovery names (RTP-MIDI, mDNS, Bluetooth LE MIDI GATT) appear in requirements.
These are accepted: they are interoperability obligations against named external implementations,
not internal technology choices. FR-011 is meaningless without naming what must be interoperated
with.
- `launchd` and `systemd` are named only in the Assumptions section and the amendment note. The
requirements themselves (FR-039f, FR-039g) say "the platform's native user service manager".
- No programming language, GUI toolkit, crate, or library name appears anywhere in the
requirements, success criteria, or user stories.
**Scope boundaries explicitly recorded as out of scope**: Windows support, MIDI 2.0, message
transformation (filtering, channel remap, transpose, velocity curves), operation across the public
internet including NAT traversal, transport encryption and authentication, and multi-user or
remote administration.
**Items requiring attention during planning, not spec revision**:
- SC-008 and SC-009 set latency budgets that constrain the data-path design; the plan must show how
they are measured.
- FR-012 and FR-027 (recovery of lost MIDI state) are the hardest requirements in the document and
drive the largest share of implementation risk.
- FR-039b (graphical interface excludable at build time) constrains how the interface is coupled to
the rest of the system and must be reflected in the module boundaries chosen in the plan.
- FR-015e (stable physical device identity across replug) has a known platform limitation on Linux
for hardware that reports no USB serial number; research R-013 records the composite-key strategy
and the confidence level that surfaces the ambiguity to the user rather than mis-binding a route.
- FR-033 loop detection spans machines in the repeater case and cannot be satisfied by inspecting
local configuration alone; the per-message origin marker must be designed in, not retrofitted.
**Downstream artifacts** (all complete as of 2026-09-20): [plan.md](../plan.md),
[research.md](../research.md), [data-model.md](../data-model.md), [quickstart.md](../quickstart.md),
[contracts/ipc-protocol.md](../contracts/ipc-protocol.md),
[contracts/cli-interface.md](../contracts/cli-interface.md).