Maximum age in days for retained versions.
Maximum number of versions to retain per file.
Cron expression for squash schedule.
Calculate the retention boundary index. Returns the index of the oldest commit to KEEP. All commits before this index will be squashed into a baseline.
Strategy: find the tighter constraint between age and count.
Get all commits in chronological order (oldest first).
Run the squash operation. Exposed publicly for testing.
Coordinates with VcsManager by calling pause/resume callbacks to drain and suspend the commit pipeline during the squash.
Start the cron-based squash scheduler. Checks every 60 seconds if the cron expression matches.
Stop the cron scheduler.
Manages scheduled squash retention for a single VCS root.
Runs on a cron schedule (checked every 60s). When triggered, squashes commits older than the retention boundary (the tighter of maxAgeDays and maxVersions) into a single "historical baseline" orphan commit, then cherry-picks retained commits on top. Force-pushes to remote if configured (D13).