activity-core/activity-definitions/repo-manager-bounded-freshness.md
tegwick ba4ef00128
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 1m56s
ACTIVITY-WP-0044: disabled repo-manager-bounded-freshness draft (RMGR-WP-0020-T03)
Register bounded operation repo_manager_freshness (single attempt, 300 s,
code-fixed 'rmgr freshness run --limit N --max-seconds S [--dry-run]') and add
the disabled cron definition (40 */2 * * * UTC, limit 6, max_seconds 240).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 692292@bnt-lap001
Assistant-Session: 89c7d8e8-e1b3-47eb-9411-a0ab227fca2f
2026-10-04 13:11:54 +02:00

2 KiB

id name type version enabled owner governance status trigger context_sources
repo-manager-bounded-freshness Repo Manager Bounded Freshness activity-definition 0.1 false repo-manager custodian proposed
type cron_expression timezone misfire_policy
cron 40 */2 * * * UTC skip
type query operation required params bind_to
repo-manager freshness_run repo_manager_freshness true
limit max_seconds apply
6 240 true
context.freshness

Repo Manager Bounded Freshness

Draft from RMGR-WP-0020-T03, tracked in ACTIVITY-WP-0044. Not activated. enabled: false prevents any Temporal schedule; the founder flips it only after the RMGR-WP-0020-T04 activation steps and T05 proof.

Each fire runs one bounded operation repo_manager_freshness (ACT-ADR-007 registry), which invokes the Repo Manager CLI with a code-fixed argv:

rmgr freshness run --limit 6 --max-seconds 240

(--dry-run is appended when apply: false.) Repo Manager owns repository selection, Forge HEAD resolution, reconciliation from immutable Forge commits and the durable repo-manager.freshness-receipt.v1 receipts. Activity Core persists only a counted projection (receipt count per outcome, exit code).

  • Every 2 h at :40 UTC; 141 repositories / 6 per fire x 12 fires/day is about a two-day rotation. Target SLA once enabled: every admissible repository has a receipt younger than 48 h.
  • Single Temporal attempt, timeout 300 s (240 s CLI budget + grace); misfires are skipped, never replayed.
  • No workstation checkout reads (ADR-002), no legacy --all --remote sweep, no for_each task spawning; the rule below never emits tasks.

Rollback: set enabled: false (or status: paused).

id: repo-manager-bounded-freshness-no-tasks
condition: "False"
action:
  task_template: Repo Manager freshness (operation-only; never rule-emitted)
  description: The bounded operation does the work; this rule never emits tasks.
  priority: low
  labels: ["automated", "freshness"]