---
feature_id:              # e.g., Feature-001
parent_technical_file:   # relative path to Feature-Technical.md (index)
stack:                   # web | service | integration | app
plan_by:
plan_date:
artifact-status: draft   # draft | approved — approval state of this generated file
---
# Feature-{NNN}-Technical: {Title} — Stack: {Stack}

> Stack detail file for `{stack}`. Global context (Context Diagram, Data Flow, API Spec, ERD, Architecture Decisions): see [`{parent_technical_file}`]({parent_technical_file}).
> Source of truth for SE during `/tas-dev` for this stack only.

---

## Logic Flow
1. {entry point}
2. {validation / auth}
3. {business logic}
4. {persistence / external call}
5. {response / event emit}

Optional sequence diagram:
:::mermaid
sequenceDiagram
  Caller->>Controller: request
  Controller->>Service: invoke
  Service->>Repository: read/write
  Repository->>DB: query
  DB-->>Service: rows
  Service-->>Caller: response
:::

## File Changes

### Modify
| File | Change | Reason |
|------|--------|--------|
| {path} | {what} | {why} |

### Create
| File | Purpose |
|------|---------|
| {path} | {what it does} |

### Delete
| File | Reason |
|------|--------|
| {path} | {why removed} |

## Config
| Item | Type | Value / Source | Environment |
|------|------|----------------|-------------|
| {VAR_NAME} | env var | {description} | dev / staging / prod |

## Locator Map
> *(UI stacks only — `web`/`app`. Omit entirely for `service`/`integration`.)*
> `data-testid` (web) / `testID` (app) per `.tas/rules/common/locator-naming.md`. SSoT for `/tas-dev` (inject into source) + `/tas-functest*` (consume).
> Best-effort at plan time — `/tas-dev` back-fills any element missing here. Origin: `plan` = seeded by `/tas-plan` | `dev` = back-filled by `/tas-dev`.

| Element (business) | testid | Component / File | Actions | AC Ref | Origin |
|---|---|---|---|---|---|
| {Email field} | ipt_auth_email | {LoginForm.tsx} | type | AC-1 | plan |
| {Submit button} | btn_auth_submit | {LoginForm.tsx} | click | AC-1 | plan |

## Unit Test Cases
> Test ID: `{PROJECT}_F{FEATURE}_AC{N}_UT_NNN_{H|E|N}`
> Unit tests do NOT use locators — query by role/label/text (Testing Library). Locator Map is for functional/E2E only.

| ID | AC Ref | Type | Description | Input | Expected Output |
|----|--------|------|-------------|-------|-----------------|
| {PROJ}_F{NNN}_AC1_UT_001_H | AC-1 | Happy | {description} | {input} | {expected} |
| {PROJ}_F{NNN}_AC1_UT_001_E | AC-1 | Edge | {description} | {boundary} | {expected} |
| {PROJ}_F{NNN}_AC1_UT_001_N | AC-1 | Negative | {description} | {invalid} | {error} |

## Tasks
- [ ] 1: {file + change}
- [ ] 2: {file + change}
- [ ] 3: Unit tests for AC-1, AC-2

---

## Changelog
| Date | Changes | Author |
|------|---------|--------|
