the-custodian/activity-definitions/daily-todo-md-stale-review.md

80 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

---
id: "b8e4f1a2-3c6d-4e9f-a1b2-7d8e9f0a1b2c"
name: "Daily TODO.md Stale Review"
type: activity-definition
version: "1.1"
enabled: false
owner: custodian
governance: custodian
status: paused
created: "2026-07-08"
updated: "2026-07-20"
trigger:
type: cron
cron_expression: "30 8 * * *"
timezone: Europe/Berlin
misfire_policy: skip
context_sources:
- type: state-hub
query: todo_md_staleness
required: true
params:
stale_days: 6
bind_to: context.todo_staleness
report_sinks:
- type: state-hub-progress
event_type: todo_md_stale_review
author: activity-core
---
# Daily TODO.md Stale Review
> **Paused 2026-07-20.** The matched rule below always produces a
> `TaskSpec` (`rules/actions.py::_task_spec_for_rule`), which
> `RunActivityWorkflow` unconditionally routes through `emit_tasks` →
> the deployment-wide `IssueSink` (`ISSUE_SINK_TYPE`, default `rest` →
> issue-core → Forgejo). There is no per-activity sink override in the
> current schema, and this activity is the fleet's *only* consumer of
> `task_template` — it was the sole source of 5 stale-review Forgejo
> issues (`the-custodian` #1#5, opened 2026-07-08, all reviewed and
> closed 2026-07-20). Per current policy, Forgejo issue tracking is not
> the fleet coordination mechanism (binky-control housekeeping session,
> 2026-07-20) — so this activity is disabled (`enabled: false`) rather
> than left to recreate the same sidetrack daily.
>
> **Re-enable path:** redirect the rule's output onto the work-record
> backbone (`work-record-types_v0.1.md`, `kind: intake` — "a stale TODO.md
> is exactly a finding/directive") instead of `IssueSink`. This needs
> either a new report-sink type in activity-core (file-based intake-item
> authoring in the target repo, mirroring `state-hub-progress`) or routing
> through the stage-3 promotion tooling seeded in `CUST-WP-0060`'s closure
> review (item 6, added 2026-07-20). Do not re-enable with `enabled: true`
> alone; that only restores the Forgejo-issue behavior.
>
> This file change is the ADR-001 source of truth; the live activity-core
> DB row picks it up on the next `make sync-activity-definitions` run
> (Railiance-deployed, not run from this edit).
Runs daily at 08:30 Europe/Berlin (after WSJF triage at 07:20). Scans
registered workstation repos for `TODO.md` files that have not changed in
6+ days and emits a review task per stale repo.
Policy: TODO.md is a pragmatic interruption buffer only. Stale files should
be reviewed — archive done items, delete noise, or promote durable work into
a workplan via ADR-001.
```rule
id: flag-stale-todo-md
for_each: context.todo_staleness.repos
bind_as: repo
condition: 'context.repo.age_days >= 6'
action:
task_template: 'Review stale TODO.md — {context.repo.repo_slug}'
description: >-
TODO.md unchanged for {context.repo.age_days} days (mtime {context.repo.mtime}).
Review open items: archive done work, delete noise, or promote valuable
topics to a workplan file and run statehub fix-consistency.
target_repo: context.repo.repo_slug
priority: low
labels: ["todo-md", "stale-review", "automated"]
```