[Security audit] Replace production asserts with explicit campaign errors #57

Closed
opened 2026-07-13 20:10:57 +02:00 by zemion · 1 comment
Owner

Bandit/Ruff flag production assert usage in campaign backend code. Assertions can be optimized away with Python -O, so runtime validation should use explicit exceptions.

Source report: /mnt/DATA/git/govoplan/audit-reports/govoplan-full-20260713-1949/bandit.json

Observed locations:

  • src/govoplan_campaign/backend/persistence/versions.py
  • src/govoplan_campaign/backend/sending/execution.py
  • src/govoplan_campaign/backend/sending/jobs.py

Acceptance criteria:

  • Replace production asserts with explicit if checks and domain-appropriate exceptions.
  • Keep test-only asserts untouched or handled by the test scanner profile.
  • Add/adjust tests for the replaced validation paths.
<!-- codex-security-audit-fingerprint:security-audit-20260713-campaign-production-asserts --> Bandit/Ruff flag production `assert` usage in campaign backend code. Assertions can be optimized away with Python `-O`, so runtime validation should use explicit exceptions. Source report: `/mnt/DATA/git/govoplan/audit-reports/govoplan-full-20260713-1949/bandit.json` Observed locations: - `src/govoplan_campaign/backend/persistence/versions.py` - `src/govoplan_campaign/backend/sending/execution.py` - `src/govoplan_campaign/backend/sending/jobs.py` Acceptance criteria: - Replace production asserts with explicit `if` checks and domain-appropriate exceptions. - Keep test-only asserts untouched or handled by the test scanner profile. - Add/adjust tests for the replaced validation paths.
Author
Owner

Codex State: done

Summary

  • Replaced production asserts in campaign version persistence, execution snapshots, and send job reload paths with explicit domain errors.

Changed Files

  • src/govoplan_campaign/backend/persistence/versions.py
  • src/govoplan_campaign/backend/sending/execution.py
  • src/govoplan_campaign/backend/sending/jobs.py

Verification

  • rg -n '\bassert\b' src/govoplan_campaign/backend/persistence/versions.py src/govoplan_campaign/backend/sending/execution.py src/govoplan_campaign/backend/sending/jobs.py
  • /mnt/DATA/git/govoplan/.venv/bin/python -m py_compile src/govoplan_campaign/backend/persistence/versions.py src/govoplan_campaign/backend/sending/execution.py src/govoplan_campaign/backend/sending/jobs.py
  • git diff --check -- src/govoplan_campaign/backend/persistence/versions.py src/govoplan_campaign/backend/sending/execution.py src/govoplan_campaign/backend/sending/jobs.py
  • PYTHONPATH=/mnt/DATA/git/govoplan-campaign/src:/mnt/DATA/git/govoplan-core/src:/mnt/DATA/git/govoplan-mail/src:/mnt/DATA/git/govoplan-files/src /mnt/DATA/git/govoplan/.venv/bin/python -m unittest discover -s /mnt/DATA/git/govoplan-campaign/tests
## Codex State: done ### Summary - Replaced production asserts in campaign version persistence, execution snapshots, and send job reload paths with explicit domain errors. ### Changed Files - `src/govoplan_campaign/backend/persistence/versions.py` - `src/govoplan_campaign/backend/sending/execution.py` - `src/govoplan_campaign/backend/sending/jobs.py` ### Verification - `rg -n '\bassert\b' src/govoplan_campaign/backend/persistence/versions.py src/govoplan_campaign/backend/sending/execution.py src/govoplan_campaign/backend/sending/jobs.py` - `/mnt/DATA/git/govoplan/.venv/bin/python -m py_compile src/govoplan_campaign/backend/persistence/versions.py src/govoplan_campaign/backend/sending/execution.py src/govoplan_campaign/backend/sending/jobs.py` - `git diff --check -- src/govoplan_campaign/backend/persistence/versions.py src/govoplan_campaign/backend/sending/execution.py src/govoplan_campaign/backend/sending/jobs.py` - `PYTHONPATH=/mnt/DATA/git/govoplan-campaign/src:/mnt/DATA/git/govoplan-core/src:/mnt/DATA/git/govoplan-mail/src:/mnt/DATA/git/govoplan-files/src /mnt/DATA/git/govoplan/.venv/bin/python -m unittest discover -s /mnt/DATA/git/govoplan-campaign/tests`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: add-ideas/govoplan-campaign#57
No description provided.