Rule Promotion and the sa-update Backend
'sa-update' updates are created on the zone, nightly, by a cron job. Here are some details as to how this works.
At 0830 UTC, the build/mkupdates/run_nightly script is run from svn trunk. This runs the script build/mkupdates/listpromotable, which queries the rule-QA web app for the previous day's rule accuracy figures, and determines which rules from the rules source dirs (rulesrc/core and rulesrc/sandbox/*) are to be promoted to the active ruleset.
Promotion Criteria
You can see the previous day's accuracy figures
[http://buildbot.spamassassin.org/ruleqa/?daterev=last-night at this URL]. Promotable rules show up in dark text on the RuleQaApp, non-promoted-by-default rules show up in light grey text.
The promotion criteria are detailed on some other wiki page, RulesProjPromotion perhaps? (TODO).
Anyway, using those figures, and some other criteria:
- "tflags nopublish" rules are never published
- rules with a
T_
prefix to their names are never published - "tflags publish", "net", "userconf" or "learn" rules are always published
- rules that fail lint – if that can be attributed to the rule! – are not published
- rules that require a plugin that build/mkupdates/listpromotable thinks is not part of the default plugin set, are not published
A proposed update checkin is created with a new list of 'active' rules, in the file 'rules/active.list'