Maintain backend compatibility
Use this procedure when changing a server API, model profile, or public support claim. Keep the application catalog, generated site data, and guides aligned in the same change.
Ownership and update path
Section titled “Ownership and update path”| Source | Owns |
|---|---|
internal/compatibility |
Server profile IDs, operations, availability, routes, and capabilities |
internal/modelprofile |
Dedicated model behavior and its intersection with backend capabilities |
| Settings DTO | The catalog delivered to the renderer |
site/src/data/compatibility.generated.json |
The generated catalog consumed by the website |
site/src/data/backends.ts and models.ts |
Editorial summaries, not a second set of support flags |
- Implement and validate the bounded request/response behavior in Go. Reject wrong-operation and unavailable profiles at the backend boundary.
- Update the profile catalog and its capability rules. Keep advanced features unavailable until their model and server requirements are represented.
- Run
go generate ./internal/compatibilityfrom the repository root. Commitsite/src/data/compatibility.generated.jsonwith the implementation. - Update editorial copy in
site/src/data/backends.tsand the relevant backend guide undersite/src/content/docs/docs/backends/. Every catalog profile must have a directory entry and a guide or a specific planned-contract anchor. - Run the affected Go fixtures and the site build. The Go catalog test rejects a stale export; site rendering rejects missing or extra directory entries.
- Record validation evidence and limitations in the issue or pull request. Do not promote a source review or fixture result into a claim of native Windows or macOS interoperability.
go test ./internal/compatibilityLocal site-only builds consume the committed export and need no Go runtime. The Pages workflow also runs the Go catalog check, including for site-only changes, before publishing the site.
Backend and model documentation
Section titled “Backend and model documentation”| Topic | Primary home | Example |
|---|---|---|
| Server APIs and installation | docs/backends/; the public /backends/ directory compares operations |
NeMo-Speech.cpp |
| Dedicated model controls and restrictions | docs/models/; the public /models/ directory explains profiles |
Nemotron, Qwen3-ASR, S1-mini |
| Qualification history and results | The issue or pull request | Inspected version, fixtures, and observed behavior |
internal/modelprofile remains the authority for dedicated profiles and their
backend intersections. Update the editorial summaries in site/src/data/models.ts
and the corresponding model guides when these contracts change. Do not present
Generic examples, such as Whisper or Kokoro, as additional dedicated profiles.
Link model guides to backend installation and backend guides to model controls.
Keep test reports and qualification history in issues or pull requests, not in
this guide or on product cards.
When moving a guide, update internal links and the explicit Starlight sidebar, and preserve its old URL with a base-path-aware Astro redirect. Check the Models and Backends navigation on desktop and mobile, cross-links, and redirects after building the static site. No inference is needed for this review.
Evidence to record in the issue or pull request
Section titled “Evidence to record in the issue or pull request”For a live setup, record the operation, Freehand revision, server release or commit when known, model/voice identifier, response format or streaming dialect, and observed outcome. Explicitly mark unknown versions. Do not publish private URLs, credentials, transcripts, machine names, or personal file paths.
| Evidence | Record explicitly |
|---|---|
| Client fixtures | Request fields, errors, truncation, and completion semantics |
| Upstream source or documentation | Inspected tag or version |
| Live setup | Behavior observed for that exact setup |
| Native interactive acceptance | Windows and macOS results separately |
Adding a planned profile
Section titled “Adding a planned profile”- Add a stable ID with only the relevant operations, availability off, and no implemented capabilities.
- Explain the concrete missing contract work in a public directory entry and a specific guide anchor.
- Regenerate the catalog and check that Settings and the site agree on the planned state. Track scheduling and delivery in GitHub issues/PRs.
Public-page review
Section titled “Public-page review”- Desktop and mobile navigation show the active page and visible keyboard focus.
- Compatibility matrices scroll on small screens.
- Links work with the production base path, including guide anchors and redirects.
- Canonical metadata is correct.
- The directory’s main-branch notice remains visible; it does not promise support in an older release.
Provider identity assets
Section titled “Provider identity assets”Use the shared SVG collection and provenance manifest in branding/providers/.
Follow its README for source, license, and asset requirements. Provider identity
is independent of capability support; do not maintain another set of support
flags in presentation code. Check the affected app and site surfaces after an
asset change, including neutral fallbacks and the public icon credits.