# UPSTREAM_REQS — {Gear Name}

<!--
=============================================================================
UPSTREAM REQUIREMENTS
=============================================================================
PURPOSE: Capture requirements that existing gears place on a gear that
does not exist yet, so nothing is lost when the gear is eventually designed.

SCOPE:
  ✓ Which existing gears need this future gear and why
  ✓ Functional and non-functional requirements from each requesting gear
  ✓ Priority of each requirement

NOT IN THIS DOCUMENT:
  ✗ How the future gear will be implemented → DESIGN.md
  ✗ Full product vision and business goals → PRD.md
  ✗ Architecture decisions → ADR/
  ✗ Interface details (API contracts, data formats) → DESIGN.md

LIFECYCLE:
  This is a seed artifact. When the gear's PRD is created, it MUST
  trace back to this document to prove all upstream requirements are addressed.

REQUIREMENT LANGUAGE:
  - Use "MUST" or "SHALL" for mandatory requirements (implicit default)
  - Do not use "SHOULD" or "MAY" — use priority p2/p3 instead
  - Be specific and clear; no fluff, bloat, duplication, or emoji
=============================================================================
-->

## Table of Contents

<!-- generated by `cfs toc` -->

## 1. Overview

### 1.1 Purpose

{1-2 paragraphs: What future gear is needed and what gap does it fill?}

### 1.2 Requesting Gears

| Gear | Why it needs this gear |
|--------|-------------------------|
| {gear name} | {brief justification} |

## 2. Requirements

### 2.1 {Requesting Gear Name}

#### {Requirement Name}

- [ ] `p1` - **ID**: `cpt-{system}-upreq-{slug}`

The future gear **MUST** {do something specific requested by this gear}.

- **Rationale**: {Why the requesting gear needs this.}
- **Source**: `gears/{requesting_gear}`

## 3. Priorities

| Priority | Requirements |
|----------|-------------|
| p1 (critical) | {list of requirement IDs} |
| p2 (important) | {list of requirement IDs} |
| p3 (nice-to-have) | {list of requirement IDs} |

## 4. Traceability

- **PRD** (when created): [PRD.md](./PRD.md)
- **Design** (when created): [DESIGN.md](./DESIGN.md)
