2026-07-08 13:19:06 +02:00
|
|
|
|
---
|
|
|
|
|
|
id: "b8e4f1a2-3c6d-4e9f-a1b2-7d8e9f0a1b2c"
|
|
|
|
|
|
name: "Daily TODO.md Stale Review"
|
|
|
|
|
|
type: activity-definition
|
2026-07-20 23:52:54 +02:00
|
|
|
|
version: "1.1"
|
|
|
|
|
|
enabled: false
|
2026-07-08 13:19:06 +02:00
|
|
|
|
owner: custodian
|
|
|
|
|
|
governance: custodian
|
2026-07-20 23:52:54 +02:00
|
|
|
|
status: paused
|
2026-07-08 13:19:06 +02:00
|
|
|
|
created: "2026-07-08"
|
2026-07-20 23:52:54 +02:00
|
|
|
|
updated: "2026-07-20"
|
2026-07-08 13:19:06 +02:00
|
|
|
|
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
|
|
|
|
|
|
|
2026-07-20 23:52:54 +02:00
|
|
|
|
> **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).
|
|
|
|
|
|
|
2026-07-08 13:19:06 +02:00
|
|
|
|
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"]
|
|
|
|
|
|
```
|