Record why rule archive is not a durable Sync action yet.

The stored archive runner could be registered as the archive/unarchive
adapter, but a full-app run showed one Sync-created card archived by a rule
taking 36 seconds: each nested delivery stage re-runs every outer guard -
journal scope, intent, lease, rule and archive checks - hundreds of times.
Boards with archive rules stay on direct Sync until that guard composition
is made cheaper.

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu committed 2026-09-30 11:35:09 +03:00
1 parent d78fe3a8b9
commit 1e40e7e060
1 file changed
+6
+6
View File
@@ -16,6 +16,12 @@
// has one; any other action keeps the board on the direct path.
const { syncValueChanges } = require('../../models/lib/listSyncTimeEstimates');
// Rule actions with a durable adapter in runStoredSyncRules. Archive and
// unarchive have a stored runner (runStoredSyncRuleArchive) but are NOT listed:
// measured on 2026-09-30, one Sync-created card archived by a rule took 36 s,
// because each nested delivery stage re-runs every outer guard (journal scope,
// intent, lease, rule and archive checks) hundreds of times. Direct Sync does
// it at once, so listing them now would slow boards down, not make them safer.
const DURABLE_RULE_ACTIONS = new Set(['sendEmail']);
// Sync-owned card fields a saved step carries: the ones the direct path's
// conditional update compares, plus placement. SimpleSchema owns