- Programmer is responsible for messy transaction handling; frameworks and requirements are not to blame.
- Do not manually commit or use transactions outside the DB abstraction layer; it should own all commits.
- Avoid passing DB model objects outside the DB layer to prevent silent writes.
- Use AST analysis or linters (like flake8) to ban manual commits, session access, and transaction usage outside DB layer.