RISK-WP-0004-T01: schedule the checks on activity-core
Two activity definitions, in the shape activity-core's own definitions use. hourly-register-inbox-watch fires only when an unread message waits for risk-nexus — the inbox is the trigger rather than the clock, because an unread message is by construction a claim that something may have moved, and 2026-08-19 proved the register will otherwise grade without looking. daily-register-check-sweep is the unconditional floor at 07:15. Both emit an instruction to a session that can exercise judgement, and both say in their own text that they must never grow the ability to record an outcome: stamping clean without doing the five questions produces a 1q rung that is a lie about stability. RISK-WP-0004 is finished. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
36b707f0c3
commit
5b9a0e98fe
4 changed files with 187 additions and 12 deletions
75
activity-definitions/hourly-register-inbox-watch.md
Normal file
75
activity-definitions/hourly-register-inbox-watch.md
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
---
|
||||
id: hourly-register-inbox-watch
|
||||
name: Hourly Register Inbox Watch
|
||||
type: activity-definition
|
||||
version: "1.0"
|
||||
enabled: true
|
||||
owner: risk-nexus
|
||||
governance: custodian
|
||||
status: active
|
||||
created: "2026-08-20"
|
||||
updated: "2026-08-20"
|
||||
trigger:
|
||||
type: cron
|
||||
cron_expression: "5 * * * *"
|
||||
timezone: Europe/Berlin
|
||||
misfire_policy: skip
|
||||
dedupe_key_strategy: skip
|
||||
context_sources:
|
||||
- type: state-hub
|
||||
query: hub_inbox
|
||||
required: true
|
||||
params:
|
||||
to_agent: risk-nexus
|
||||
unread_only: true
|
||||
bind_to: context.inbox
|
||||
report_sinks:
|
||||
- type: state-hub-progress
|
||||
event_type: risk_register_inbox
|
||||
author: activity-core
|
||||
---
|
||||
|
||||
# Hourly Register Inbox Watch
|
||||
|
||||
Runs hourly at :05 Berlin time. Fires only when something is actually waiting.
|
||||
|
||||
## Why hourly, and why the inbox specifically
|
||||
|
||||
`docs/method/review.md` sets an adaptive cadence whose shortest rung is one
|
||||
hour, so hourly is the finest granularity the register can act on. Anything
|
||||
faster would report work that cannot yet be due.
|
||||
|
||||
The inbox is the trigger rather than the clock because of what happened on
|
||||
2026-08-19: this register graded `RISK-F-0001` `critical` and prepared an
|
||||
escalation while two messages sat unread — one narrowing the exposure, one
|
||||
reporting the fix. Both changed the grade. Reading the inbox is now question
|
||||
zero of every check (`docs/method/check-procedure.md`), and this activity is
|
||||
the mechanism that stops it depending on somebody remembering.
|
||||
|
||||
An unread message addressed to `risk-nexus` is, by construction, a claim that
|
||||
something in the register may have moved.
|
||||
|
||||
## What it does not do
|
||||
|
||||
It does not grade, close, publish or escalate anything. Severity, disclosure
|
||||
and escalation are judgements this repo makes with a human or an agent session
|
||||
doing the reading — never a cron. This activity's entire job is to make sure
|
||||
somebody looks.
|
||||
|
||||
```rule
|
||||
id: inbox-has-spoken
|
||||
for_each: context.inbox
|
||||
bind_as: message
|
||||
condition: 'context.message.read_at == None'
|
||||
action:
|
||||
task_template: 'risk-nexus: read {context.message.from_agent} before checking'
|
||||
description: >-
|
||||
Unread message to risk-nexus from {context.message.from_agent}:
|
||||
"{context.message.subject}". Read it before any check or grading — this is
|
||||
question zero in docs/method/check-procedure.md. Then run `make due` in
|
||||
risk-nexus and work the list, recording each outcome with
|
||||
`make checked ARGS="<finding-id> clean|moved"`.
|
||||
target_repo: risk-nexus
|
||||
priority: high
|
||||
labels: ["risk-register", "inbox", "question-zero"]
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue