254 lines
9.4 KiB
YAML
254 lines
9.4 KiB
YAML
apiVersion: reporting-governance/v1alpha1
|
|
kind: PolicyPack
|
|
metadata:
|
|
id: no-silence
|
|
title: No Silence
|
|
version: 1.0.0
|
|
summary: >-
|
|
Prevent missed checkpoints, invisible child-result handoffs, and silent task
|
|
execution unless a valid externalized checkpoint path exists.
|
|
owner: reporting-governance-plugin
|
|
severity_default: high
|
|
applies_to:
|
|
runtimes: [openclaw]
|
|
task_modes: [interactive, silent]
|
|
workflow_shapes: [single-agent, parent-child]
|
|
channels: [telegram]
|
|
tags: [reporting, anti-blackhole, checkpoints, forwarding]
|
|
spec:
|
|
evaluation_mode: any_rule_match
|
|
rules:
|
|
- id: no-silence.missed-checkpoint
|
|
title: Missed checkpoint requires immediate visible recovery
|
|
intent: >-
|
|
Prevent overdue reporting obligations from becoming invisible work.
|
|
triggers:
|
|
event_types: [task_checkpoint_due, silence_timeout]
|
|
derived_signals: [checkpoint_overdue]
|
|
claim_types: [progress]
|
|
conditions:
|
|
all:
|
|
- fact: checkpoint.is_overdue
|
|
equals: true
|
|
- fact: checkpoint.operator_visible_update_sent
|
|
equals: false
|
|
evidence_requirements:
|
|
progress:
|
|
min_new_items_since_last_checkpoint: 1
|
|
allowed_quality_floor: weak
|
|
must_reference_event_types: [silence_timeout]
|
|
decision_output:
|
|
decision: force_checkpoint
|
|
severity: high
|
|
reason: >-
|
|
required checkpoint became overdue without an operator-visible update
|
|
suggested_status: in_progress
|
|
required_actions:
|
|
- action: notify_operator
|
|
target: operator_channel
|
|
mandatory: true
|
|
details:
|
|
kind: forced_checkpoint
|
|
- action: emit_event
|
|
target: event_stream
|
|
mandatory: true
|
|
details:
|
|
event_type: forced_operator_update
|
|
- action: append_audit_note
|
|
target: task_record
|
|
mandatory: true
|
|
details:
|
|
note: checkpoint silence breach recovered through forced operator update
|
|
operator_notice:
|
|
required: true
|
|
channel: telegram
|
|
urgency: high
|
|
message: >-
|
|
Required update: this task exceeded its reporting window and an
|
|
immediate checkpoint is now required.
|
|
must_reference: [silence_timeout]
|
|
deadline: immediate
|
|
operator_message_templates:
|
|
checkpoint_forced: >-
|
|
Required update: this task exceeded the allowed reporting window.
|
|
Current state is being reconciled now, and a substantive follow-up
|
|
must be sent immediately.
|
|
|
|
- id: no-silence.subagent-result-not-forwarded
|
|
title: Child result must not disappear between completion and operator follow-up
|
|
intent: >-
|
|
Catch the exact failure mode where a child result exists but no
|
|
operator-visible forwarding step occurred in time.
|
|
triggers:
|
|
event_types: [subagent_completed, subagent_result_not_forwarded, watchdog_fired]
|
|
derived_signals: [result_available_without_visible_followup]
|
|
claim_types: [progress, completion]
|
|
conditions:
|
|
all:
|
|
- fact: forwarding.result_available
|
|
equals: true
|
|
- fact: forwarding.operator_visible_followup_present
|
|
equals: false
|
|
evidence_requirements:
|
|
progress:
|
|
min_new_items_since_last_checkpoint: 1
|
|
allowed_quality_floor: weak
|
|
must_reference_event_types:
|
|
[subagent_completed, subagent_result_not_forwarded]
|
|
must_reference_evidence_classes: [runtime_artifact, operator_message]
|
|
decision_output:
|
|
decision: force_checkpoint
|
|
severity: critical
|
|
reason: >-
|
|
child result was available but no operator-visible forwarding record
|
|
was produced before the watchdog deadline
|
|
suggested_status: pending_verification
|
|
required_actions:
|
|
- action: notify_operator
|
|
target: operator_channel
|
|
mandatory: true
|
|
details:
|
|
kind: missing_forwarded_result
|
|
- action: emit_event
|
|
target: event_stream
|
|
mandatory: true
|
|
details:
|
|
event_type: subagent_result_not_forwarded
|
|
- action: record_placeholder
|
|
target: outgoing_report
|
|
mandatory: true
|
|
details:
|
|
label: result_received_forwarding_pending
|
|
- action: append_audit_note
|
|
target: task_record
|
|
mandatory: true
|
|
details:
|
|
note: child result existed before visible follow-up; forced checkpoint issued
|
|
operator_notice:
|
|
required: true
|
|
channel: telegram
|
|
urgency: critical
|
|
message: >-
|
|
Child result was received but not forwarded visibly in time.
|
|
Immediate checkpoint issued and operator-visible follow-up is now
|
|
mandatory.
|
|
must_reference: [subagent_completed, subagent_result_not_forwarded]
|
|
deadline: immediate
|
|
operator_message_templates:
|
|
checkpoint_forced: >-
|
|
Checkpoint: a child task result has been received, but the required
|
|
operator-visible forwarding step was missed. Governance is surfacing
|
|
this immediately and preserving the result for follow-up.
|
|
placeholder_rewrite: >-
|
|
Placeholder only: child result exists, but the verified forwarding
|
|
summary is still pending.
|
|
|
|
- id: no-silence.silent-task-without-externalized-path
|
|
title: Silent task requires a valid externalized checkpoint path
|
|
intent: >-
|
|
Block silent execution when there is no approved way to externalize
|
|
checkpoints or completion notices.
|
|
triggers:
|
|
event_types: [task_started]
|
|
derived_signals: [silent_task_launch]
|
|
conditions:
|
|
all:
|
|
- fact: task.silent_mode_requested
|
|
equals: true
|
|
- fact: checkpoint.externalized_path_valid
|
|
equals: false
|
|
evidence_requirements:
|
|
progress:
|
|
min_new_items_since_last_checkpoint: 0
|
|
must_reference_event_types: [task_started]
|
|
decision_output:
|
|
decision: block
|
|
severity: high
|
|
reason: >-
|
|
silent task execution was requested without a valid externalized
|
|
checkpoint path
|
|
suggested_status: blocked
|
|
required_actions:
|
|
- action: block_transition
|
|
target: status_transition
|
|
mandatory: true
|
|
details:
|
|
blocked_action: task_start
|
|
- action: notify_operator
|
|
target: operator_channel
|
|
mandatory: true
|
|
details:
|
|
kind: silent_task_blocked
|
|
- action: append_audit_note
|
|
target: task_record
|
|
mandatory: true
|
|
details:
|
|
note: silent task blocked because no compliant external checkpoint path exists
|
|
operator_notice:
|
|
required: true
|
|
channel: telegram
|
|
urgency: high
|
|
message: >-
|
|
Silent task launch was blocked because no valid externalized
|
|
checkpoint path was available.
|
|
must_reference: [task_started]
|
|
deadline: immediate
|
|
operator_message_templates:
|
|
blocked: >-
|
|
Blocked: this task cannot run silently because there is no valid
|
|
externalized checkpoint path for operator-visible reporting.
|
|
|
|
- id: no-silence.promised-followup-not-delivered
|
|
title: Promised follow-up must either arrive or be surfaced as a failure
|
|
intent: >-
|
|
Prevent agents from promising a near-term follow-up and then going dark.
|
|
triggers:
|
|
event_types: [task_checkpoint_sent, silence_timeout, forced_operator_update]
|
|
derived_signals: [followup_deadline_breached]
|
|
claim_types: [progress]
|
|
conditions:
|
|
all:
|
|
- fact: claim.promised_followup_due
|
|
equals: true
|
|
- fact: claim.promised_followup_delivered
|
|
equals: false
|
|
evidence_requirements:
|
|
progress:
|
|
min_new_items_since_last_checkpoint: 0
|
|
must_reference_event_types: [forced_operator_update]
|
|
decision_output:
|
|
decision: force_checkpoint
|
|
severity: high
|
|
reason: >-
|
|
an explicit follow-up promise was not delivered by its own reporting condition
|
|
suggested_status: in_progress
|
|
required_actions:
|
|
- action: notify_operator
|
|
target: operator_channel
|
|
mandatory: true
|
|
details:
|
|
kind: missed_promised_followup
|
|
- action: emit_event
|
|
target: event_stream
|
|
mandatory: true
|
|
details:
|
|
event_type: forced_operator_update
|
|
- action: append_audit_note
|
|
target: task_record
|
|
mandatory: true
|
|
details:
|
|
note: promised follow-up breached and was surfaced as a governance failure
|
|
operator_notice:
|
|
required: true
|
|
channel: telegram
|
|
urgency: high
|
|
message: >-
|
|
A promised follow-up was not delivered on time. Governance is
|
|
issuing an immediate recovery checkpoint.
|
|
must_reference: [forced_operator_update]
|
|
deadline: immediate
|
|
operator_message_templates:
|
|
checkpoint_forced: >-
|
|
Required update: a previously promised follow-up did not arrive on
|
|
time. This recovery checkpoint is being sent to avoid silent drift.
|