ACTIVITY-WP-0044: disabled repo-manager-bounded-freshness draft (RMGR-WP-0020-T03)
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

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
This commit is contained in:
tegwick 2026-10-04 13:11:54 +02:00
parent c6df768ef0
commit ba4ef00128
9 changed files with 449 additions and 2 deletions

View file

@ -0,0 +1,72 @@
---
id: ACTIVITY-WP-0044
type: workplan
title: "Repo Manager bounded freshness ActivityDefinition (RMGR-WP-0020-T03)"
domain: infotech
repo: activity-core
status: active
owner: claude-activity-core
topic_slug: activity-core
created: "2026-10-04"
updated: "2026-10-04"
flavor: implementation
related: [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)
```task
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
```task
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
```task
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`).