Code has calendars hidden inside it.
Promo ends on a date. Trial logic expires on a date. A launch workaround should be removed after a date. A cron job runs at 2 AM, but nobody wrote which 2 AM.
Then everyone forgets.
Mawid is a local time-bomb scanner for developers. It scans code and config for expired cutoffs, stale temporary hacks, upcoming launch windows, old hardcoded dates, and cron schedules with no timezone.
No API. No cloud upload. No database. No LLM.
Just a local check for the kind of bugs that wait quietly until the calendar changes.
- Expired dates near words like
expires,remove after,temporary until,trial,promo, orsunset. - Upcoming date bombs inside a configurable window.
- Old hardcoded dates that may be stale control logic.
- TODO/FIXME/HACK/temporary markers with no removal date.
- Cron schedules with no explicit timezone.
- JavaScript date-only parsing such as
new Date("2026-06-01").
For now:
python3 -m pip install -e .Later, if the package earns it:
pip install mawidmawid .
mawid src/
mawid examples/broken --today 2026-05-20
mawid examples/broken --window-days 90Run without installing:
PYTHONPATH=src python3 -m mawid examples/broken --today 2026-05-20mawid uiOpen:
http://127.0.0.1:8775/
MAWID BLOCK: 5 issue(s)
Target: examples/broken
Risk score: 42
Summary: critical=0 high=1 medium=2 low=2
HIGH expired_time_bomb app.js:1
// TODO temporary Stripe promo until 2026-04-01
Why: The date 2026-04-01 is already past and appears tied to temporary or deadline logic.
Fix: Remove the expired branch, extend the date deliberately, or turn it into config with an owner.
mawid . --format text
mawid . --format json --output mawid-report.json
mawid . --format csv --output mawid-report.csv
mawid . --format sarif --output mawid.sarifmawid . --fail-on high
mawid . --fail-on mediumExit codes:
0: pass1: review findings found2: blocked by--fail-on
Mawid does not understand business intent.
It does not know whether a date is correct.
It does not rewrite your code. It finds suspicious date and timezone patterns so a human can decide before production does.
python3 -m unittest discover -s tests
python3 -m compileall src tests
python3 -m pip wheel . -w /tmp/mawid-wheel- GitHub Action mode.
- Owner syntax like
owner:@team remove-after:YYYY-MM-DD. - Framework-specific cron config parsing.
- Calendar export for upcoming code deadlines.
- Ignore rules for historical fixtures.
PRs are welcome if they make calendar bugs easier to catch before the calendar catches us.
Maintained by mara. Created by the CTO.
