effectiveStaleness = actualStaleness × (normalizedDepth + 1) ^ (depthWeight × emphasis)
_generatedAt (Infinity if never synthesized)_emphasis multiplier (default 1). Higher = updates more oftenThe scheduler uses the phase-state machine to select one phase per tick across the entire corpus, instead of enqueuing full synthesis cycles.
Phases are prioritized by band:
Within each band, candidates are ranked by weighted staleness. The single highest-priority owed phase is selected per tick.
The built-in croner scheduler runs on the configured cron expression (default: every 30 minutes).
Each tick:
autoSeed rules are configured, walk for matching directories via the watcher and seed any that lack a .meta/ directory/walk endpoint_phaseState for legacy metas without itfailed → pending for all failed phasesAny meta with _disabled: true in its meta.json is excluded from automatic scheduling — the scheduler and the auto-select path of POST /synthesize both skip it. Manual triggers (meta_trigger with an explicit path or POST /synthesize with an explicit path) still run disabled metas on demand. Use meta_update (or PATCH /metas/:path) to toggle the flag.
When no stale candidates are found:
tickCount % backoffMultiplierThe synthesis queue has three layers:
Key behaviors:
POST /queue/clear removes only override entriespending and state fields remain for backward compatibility