# REF-TASK-012 — Align product form files and internal names with their contents

**Status:** Implemented  
**Kind:** Mechanical naming refactor  
**Depends on:** None

## Problem and evidence

`frontend/src/pages/CreateProductForm.tsx` exports both `CreateProductForm` and `EditProductForm`
and also owns shared validation mapping (`requiredProductIssues`, `mapProductIssues`). The filename
no longer describes its responsibilities. Product tests are already split into general, edit, and
delete files, making the production naming mismatch more visible. Elsewhere, constants generally use
uppercase only for exported invariants and lower camel case for local presentation choices; that
convention should be stated, not broadly renamed without evidence.

## Proposed change

Move create/edit forms and shared product-form validation into feature-local, accurately named
modules; either keep a single `ProductForm` with explicit mode when behavior is truly shared, or
retain separate components backed by shared field/validation primitives. Decide by current markup
and mutation differences, not line-count reduction. Update imports mechanically and keep public
component names unless evidence favors a private internal rename.

## Constraints and sequence

Move shared pure validation first, validate; then move/edit file boundaries, validate. Preserve all
field IDs, accessible descriptions, focus behavior, server issue allowlisting, displayed units,
mutation semantics, and translation keys. No product/API/domain terminology changes.

## Validation

Run product form/page component tests after each move, the full frontend suite, frontend
typecheck/build/coverage, product E2E specs, and `pnpm quality`.

## Guidance / ADR

REF-TASK-018 should record filename/export and feature-local naming conventions. No ADR.
