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/.