Skip to Content
ChangelogChangelog

Changelog

FTL follows Semantic Versioning for the whole standard release. Versioned JSON under /api/vX.Y.Z/ is immutable once released; /api/latest/ reflects the newest published release.

v1.0.0 — first stable release

Released: 2026-10-05.

This release freezes the current writing rules, terminology model, general-language vocabulary, German/English policy, and examples as the first stable FTL baseline. It includes the breaking API changes below and the additions recorded in the repository changelog.

  • Writing rules now include explicit logical relationships, risk and consequence statements, capacity dimensions, and logistics/electric-charging distinctions.
  • Terminology includes explicit adoption status, namespace-qualified semantic identity, semantic relationships, and German translation relations.
  • Machine-readable resources are available under /api/v1.0.0/ and /api/latest/.

This is a major release because the terminology API has incompatible changes. Consumers of /api/latest/terms.json must migrate to the canonical, external, informative, and deprecated status values; namespace-qualified identities; and German translation relations.

v0.1.0 — initial draft baseline

This was the original draft baseline and was not publicly released as an immutable version.

This is the first baseline. It is intentionally small so that every rule and every term can be reviewed completely.

Content

  • Introduction and principles (9 principles).
  • 31 writing rules, split into authoring rules (FTL-A01 … FTL-A24) and transformation rules (FTL-T01 … FTL-T07).
  • Normative language definitions (RFC 2119 / RFC 8174).
  • General-language vocabulary (24 entries) for ordinary technical English, with schema and machine-readable output at /api/latest/general-language.json.
  • German/English policy.
  • Terminology entries across electrical/battery, charging, logistics, operations, and software contexts, including explicit distinctions between logistics batches, cargo loading, and electric charging.
  • 6 before/after examples.
  • Machine-readable JSON at /api/latest/ and /api/v0.1.0/.

Breaking change: terminology status model

The terminology status field was migrated from the overloaded values normative and informative to a Fenexity-local adoption model:

canonical Fenexity has explicitly adopted this as its preferred terminology external the term belongs primarily to an external standard; Fenexity preserves it in that context but does not claim ownership informative reference-only vocabulary, not currently controlled as Fenexity canonical deprecated previously used terminology that should not be introduced in new content

Migration criteria (mechanical, auditable):

  • normative with only a Fenexity source and no external authority → canonical.
  • normative with any external standard source → external (the source is authoritative, not the Fenexity status).
  • informative → unchanged.
  • No terms were marked deprecated in this migration.

Counts before and after (794 terms):

before: normative 788, informative 6 after: canonical 14, external 774, informative 6, deprecated 0

This is a breaking API change: consumers of /api/latest/terms.json must expect the four new status values and can no longer rely on normative or informative alone. The schemas/terminology.schema.json status enum was updated accordingly. The migration was mechanical; it does not claim that the 14 canonical terms were individually semantically reviewed beyond applying the stated source-based criterion.

Breaking change: terminology namespace model

Every term now carries a namespace field. (namespace, id) is the stable semantic identity, and semantic_id is generated as namespace:id and included in the JSON API. Identical human labels are permitted in different namespaces (for example ocpp:information-model and opcua:information-model, or ocpi:session and opcua:session).

Namespaces in use: fenexity, ocpp, opcua, ocpi, vdv, iec60870, openadr, en16931, oscp, iso15118, din-spec-70121, iec61851, iec62682, iec60050, iec62620, iso50001, iso9241, siri, netex.

To make collisions explicit, five OPC UA term ids were renamed to their plain form (information-model-opcua → information-model, opc-ua-variable → variable, opc-ua-session → session, opc-ua-alarm → alarm, opc-ua-subscription → subscription). Cross-namespace references in distinguish_from and converges_with now use namespace:id where the bare id would be ambiguous. Existing human URLs that used the old OPC UA anchor ids no longer resolve.

Eleven terms have namespace_review: true because their source metadata spans multiple standards and the primary namespace required a decision: stop-point, cpo, charge-capacity, v2x, der, configuration, evse, charging-session, value-added-service, alarm, warning.

This is a breaking API change: /api/latest/terms.json now includes namespace and semantic_id, and the schema requires namespace.

Breaking change: German translation relations

Every German term (term.de) now carries a translation.de.relation that records how strongly the German expression corresponds to the underlying concept:

exact same concept, no material semantic qualification preferred_translation preferred Fenexity German expression, practices may vary context_dependent only in specified contexts, or can collide with other concepts no_exact_equivalent no concise German expression maps cleanly; preserve English or explain

Migration: terms whose German string is not shared with another concept were assigned preferred_translation; the 48 terms whose German string collides with another concept were assigned context_dependent with a note. connector/plug (both “Stecker”), alarm (IEC 62682 vs OPC UA, both “Alarm”), and the other colliding pairs are never marked exact. no_exact_equivalent is allowed without a German term.

This is a breaking API change: /api/latest/terms.json now includes translation with the German relation and note, and the schema requires relation whenever term.de is present.

Versioning policy

PATCH wording clarification that does not intentionally change meaning MINOR new rules, new terms, new aliases, new examples MAJOR an incompatible change to an established rule or canonical meaning
Last updated on