activity-core/workplans/ACTIVITY-WP-0044-repo-manager-bounded-freshness-definition.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.7 KiB

id type title domain repo status owner topic_slug created updated flavor related
ACTIVITY-WP-0044 workplan Repo Manager bounded freshness ActivityDefinition (RMGR-WP-0020-T03) infotech activity-core active claude-activity-core activity-core 2026-10-04 2026-10-04 implementation
RMGR-WP-0020
STATE-WP-0094

Origin: Repo Manager RMGR-WP-0020-T03 hands Activity Core a draft definition for the bounded Forge-sourced freshness runner. Repo Manager owns the engine (rmgr freshness run, RMGR-WP-0020-T02) and receipts (T01); Activity Core owns the schedule. Source level only: no schedule enabled, no deployment, no credential handling, no run dispatched.

Draft definition and bounded operation (disabled)

id: ACTIVITY-WP-0044-T01
status: done
priority: medium
  • activity-definitions/repo-manager-bounded-freshness.md: enabled: false, cron 40 */2 * * * UTC, misfire_policy: skip, limit: 6, max_seconds: 240, apply: true; rule condition False (no task spawning).
  • ACT-ADR-007 registry entry repo_manager_freshness (source repo-manager / freshness_run): single Temporal attempt, timeout 300 s, admission requires explicit boolean apply, limit 1..12, max_seconds 1..270, and refuses any definition-supplied command/binary.
  • context_resolvers/repo_manager.py: code-fixed argv rmgr freshness run --limit N --max-seconds S [--dry-run] (executable from worker env ACTIVITY_CORE_RMGR_BIN, default rmgr); only a counted projection (receipt count per outcome, exit code) is persisted.
  • Tests: tests/test_repo_manager_freshness_definition.py (parse, admission, argv, projection, dispatch, DB sync stays disabled, schedule sync paused).

Interface confirmation against the Repo Manager CLI

id: ACTIVITY-WP-0044-T02
status: wait
priority: medium
needs_human: false
blocking_reason: "rmgr freshness run is being built in RMGR-WP-0020-T02; JSON output (receipts[].outcome) assumed from the T01 receipt contract"
depends_on: [RMGR-WP-0020-T01, RMGR-WP-0020-T02]

When RMGR-WP-0020-T01/T02 land, confirm the CLI flags and that stdout is one JSON object with receipts[] carrying repo-manager.freshness-receipt.v1 outcomes; adjust normalize_operation_result if the shape differs. Decide the worker image/packaging of rmgr (no deployment in this workplan).

Founder-reviewed activation

id: ACTIVITY-WP-0044-T03
status: wait
priority: medium
needs_human: true
blocking_reason: "Activation follows RMGR-WP-0020-T04 and is a founder action"
depends_on: [RMGR-WP-0020-T04]

Flip enabled: true only after the RMGR-WP-0020-T04 manual dry-run/apply fires. Rollback: enabled: false (or status: paused).