Skip to main content
Wildo.ai Coming soon

Principles

Keep business terms consistent, too

Repetition also happens in small decisions. A task status may appear in a form, a filter, an API response and a business rule. If each place defines its own list, they can disagree while each looks correct in isolation.

Wildo’s convention gives a fixed set of values one named definition. Schemas and code use that definition. The words people see have their own authored home in the translation system, so a technical value can have an appropriate label in each language.

The distinction keeps meaning and wording clear. A new status changes the model; a better label changes how that status is explained. Sharing the definition makes the affected code easier to find, but the application still needs to decide what the new status permits and how people move into or out of it.

Two concepts can use similar words without meaning the same thing. An approval state and a background job state should remain separate when their rules differ.

Example: One value, different responsibilities

The model

A named status definition gives validation, filters and application rules the same set of values.

The interface

An authored translation gives each value the words a person reads. The system should make a missing label visible so it can be completed.

The business rule

The application decides which changes are allowed. Adding a status to the definition does not invent an approval workflow for it.

For engineers

Use a named TypeScript enum for a closed business vocabulary. Derive its Zod schema and dependent types from that source instead of declaring a second list of strings. Document each member where its business meaning can be found from a usage.

The same discipline applies to labels at a different layer. registerCommonEnum registers a vocabulary for shared labeling. The field-enum translation helper can resolve a field-specific label and then the common system_enums.<Name>.<value> entry. Author the words there rather than formatting an identifier into a plausible-looking sentence.

Follow a change beyond the declaration

Adding an enum member makes the value available to its consumers; it does not prove that every business branch, migration or translation is ready for it. Review transitions, exhaustive switches, filters, persisted values and labels in the application that uses the vocabulary.

An external protocol’s values belong at its translation boundary. Keep distinct business concepts separate even if their wire values happen to coincide. A named source helps locate a decision; it cannot decide whether two concepts actually have the same meaning.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.