# BatchForge maintenance contract

BatchForge is a working public tool and a Forgeworks-family project. Extend the
existing converter; do not rebuild it from a generic template.

Before changing it, read:

1. `README.md`
2. `docs/INTERFACE_CONTRACT.md`
3. `CHANGELOG.md`
4. `tests/`

## Non-negotiable rules

- Preserve entirely local image conversion. Do not add uploads, analytics, accounts,
  advertising, tracking, or network-dependent conversion.
- Preserve the approved BatchForge logo, black logo tile, and green identity as brand assets and favicon; keep the shared on-page header wordmark-only.
- Preserve honest format and memory limitations.
- Keep Light, Dark Gray, and Pure Black as first-class themes. Dark Gray is the first-visit default; the `forgeworks-theme` cookie is shared across `myforgeworks.net`, with local storage as the legacy and preview fallback.
- Keep `app/forgeworks-interface.css` byte-for-byte aligned with the Forgeworks family
  contract. Repeated elements use its classes and may not be approximated locally.
- Keep the footer to one `Guide` link. Maintain `/guide` as the indexed doorway to use,
  privacy, limits, source, testing, and licensing information.
- Project styles may define the six `--family-accent-*` identity variables and
  converter-specific layout only.
- Shared changes require a contract-version change and coordinated updates to every
  family consumer. Local workflow changes must not silently alter shared chrome.
- Preserve semantic landmarks, keyboard operation, labelled controls, visible focus,
  reduced-motion handling, contrast, and responsive behavior.
- Update `CHANGELOG.md`, run `npm test`, refresh the downloadable source archive, and
  deploy the exact tested revision after an approved public change.
