Skip to content

Source status: no status is stated in the source document, so none is assigned here. Do not treat this page as a finalized specification. The normative rules are in the Technical Specification.

Mistakes Worth Catching

  • Type errors: Using the wrong kind of data, passing incorrect arguments, or returning unexpected values.
  • Invalid state: Allowing an object or system to enter a state that should be impossible, such as a bank balance becoming negative.
  • Broken requirements: A function completes but doesn't actually satisfy what it promised to do.
  • Logic errors: Incorrect calculations, conditions, comparisons, or decision paths.
  • Unhandled failures: Database errors, network failures, missing files, invalid input, and other unsuccessful operations being ignored.
  • Unintended side effects: Functions modifying data, accessing files, or communicating over a network without explicitly declaring that behavior.
  • Resource errors: Memory misuse, resource leaks, invalid ownership, and operations performed on resources that have already been released.
  • Security mistakes: Unauthorized access, missing permission checks, unsafe data handling, and violations of declared security rules.
  • Integration errors: Functions or modules making incompatible assumptions about each other's inputs, outputs, and behavior.
  • Regression errors: Changes that cause previously verified requirements to stop holding.

Source and authority

This page migrates MISTAKES.md in full. It is an explanatory / implementation document, not the normative specification. Where it simplifies a rule, the Technical Specification governs. The original file is preserved in source-original/LANG/.