- Status: accepted
- Implementation status: delivered
- Date: 2026-08-11
- Last verification: 2026-08-11, catalog, Markdown, Nimbus, and generated-pack propagation verified locally; Docker unavailable locally
- Owner: Nicolas Pieper
- Supersedes: none
- Superseded by: none
Context
Project Foundation required French for technical prose. The foundation owner now requires English for all technical content and communication. The owner also requires precise and consistent technical terminology.
A language rule in DEFAULTS.md is reversible. This location cannot make
English mandatory for every project. A universal rule must be in
PRINCIPLES.md and must propagate to every generated pack.
External contracts can require an identifier, proper name, quotation, or term in its original form. Preserving that form must not create a general language exception.
Decision problem
How can the foundation require clear technical English in every project while it preserves required external forms and avoids an unsupported conformance claim?
Considered options
Keep French as the required language
Advantage: Existing documentation requires no migration.
Limitation: This option conflicts with the current owner requirement.
Make English a reversible default
Advantage: A project can select another language without a foundation update.
Limitations: The rule is not universal. Generated projects can silently return to another language. This option also duplicates the normative rule.
Add a universal controlled-English principle
Advantages: One invariant controls all technical content. The same rule applies to the foundation, generated projects, templates, comments, logs, and communication. Limited external forms remain exact.
Limitations: Existing French content requires migration. Editorial review is necessary because an automated language check cannot prove clarity or term consistency.
Decision
Add P20 to PRINCIPLES.md. Require English for all deliverables,
communication, documentation, code comments, logs, and other technical content.
Apply the principles of ASD-STE100 Simplified Technical English. Use precise and unambiguous terms. Use short declarative sentences. Use the active voice when appropriate. Use one term for each concept. Avoid unnecessary synonyms, vague language, marketing language, and unnecessary jargon. Use ISO/IEC/IEEE 24765 terminology when it applies.
Preserve proper names, external identifiers, quotations, and terms that an external contract requires. These preservation cases do not permit a project to select another language. Record each externally required term, its source, scope, and reason.
Do not declare formal conformance with ASD-STE100. This decision applies its principles. It does not perform a formal conformance assessment.
Keep the normative rule only in PRINCIPLES.md. Root and generated
AGENTS.md files provide operational references to P20. DEFAULTS.md
identifies P20 as a non-reversible invariant. FOUNDATION.md cannot disable
the language requirement.
Migrate maintained documentation, templates, validation messages, interface
text, and the Nimbus locale from French to English. Propagate P20 and its key
clauses to every generated pack.
Consequences
Positive
- Each project uses one required language for technical content.
- Contributors receive the same terminology and sentence rules.
- Generated projects retain the rule in their vendored foundation and local adapter.
- External identifiers and contract terms remain exact.
- The repository does not make an unsupported conformance claim.
Negative
- The initial migration creates a large documentation diff.
- Editorial review remains necessary.
- Some external forms can contain non-English terms and require an explicit reason.
Verification
- Review changed technical content for English, clear sentences, consistent terms, and unexplained jargon.
- Run
python3 scripts/documentation_catalog.py --check. - Run
python3 scripts/check_markdown.py. - Run the Nimbus test, type check, clean build, Pagefind index, and lint.
- Verify that Pagefind indexes only English pages.
- Run
scripts/test_bootstrap.shand verify the P20 heading, ASD-STE100 clause, ISO/IEC/IEEE 24765 clause, and local exception limit in generated packs. - Run
./scripts/verify.shin an environment that provides Docker. - Do not report formal ASD-STE100 conformance from these checks.
Review
Review this decision if an external contract requires another documentation language, if ISO/IEC/IEEE 24765 terminology conflicts with a binding domain contract, or if a formal ASD-STE100 assessment becomes necessary. A review can refine the preservation mechanism. It cannot create a silent local language override.