apiVersion: reporting-governance/v1alpha1 kind: PolicyPack metadata: id: no-fake-progress title: No Fake Progress version: 1.0.0 summary: >- Prevent status language, reminders, or unsupported next-step claims from being treated as real progress without new evidence. owner: reporting-governance-plugin severity_default: medium applies_to: runtimes: [openclaw] task_modes: [interactive, silent] workflow_shapes: [single-agent, parent-child] channels: [telegram] tags: [reporting, evidence, anti-fake-progress] spec: evaluation_mode: any_rule_match rules: - id: no-fake-progress.no-new-evidence title: Progress-bearing checkpoint requires new evidence intent: >- Prevent narrative-only progress reports from satisfying checkpoint obligations when nothing new has been attached since the last report. triggers: event_types: [task_checkpoint_sent, task_status_changed] derived_signals: [checkpoint_progress_claim] claim_types: [progress] conditions: all: - fact: claim.is_progress_bearing equals: true - fact: evidence.new_items_since_last_checkpoint equals: 0 evidence_requirements: progress: min_new_items_since_last_checkpoint: 1 allowed_quality_floor: weak must_reference_evidence_classes: [tool_output, file_change, decision_record, runtime_artifact] decision_output: decision: annotate_placeholder severity: medium reason: >- checkpoint contains no new evidence and cannot count as substantive progress suggested_status: in_progress required_actions: - action: rewrite_message target: outgoing_report mandatory: true details: mode: replace_with_placeholder - action: append_audit_note target: task_record mandatory: true details: note: original progress wording preserved for audit; no new evidence was attached operator_notice: required: true channel: telegram urgency: medium message: >- Progress update was rewritten as a placeholder because no new evidence was attached since the previous checkpoint. must_reference: [] deadline: null operator_message_templates: placeholder_rewrite: >- Progress update: work is still in progress, but no new auditable artifact was attached since the previous checkpoint. The next update must include new evidence such as tool output, a file change, or a decision record. - id: no-fake-progress.repeated-status-only title: Repeated status-only updates must not be framed as advancement intent: >- Distinguish liveness or continuity from actual task advancement. triggers: event_types: [task_checkpoint_sent, forced_operator_update] derived_signals: [repeated_status_only_update] claim_types: [progress] conditions: all: - fact: message.status_only equals: true - fact: message.substantive_delta_from_previous equals: false evidence_requirements: progress: min_new_items_since_last_checkpoint: 1 allowed_quality_floor: weak decision_output: decision: rewrite severity: medium reason: >- repeated status-only update was presented as progress without a new substantive delta suggested_status: in_progress required_actions: - action: rewrite_message target: outgoing_report mandatory: true details: mode: reframe_as_continuity_update - action: append_audit_note target: task_record mandatory: true details: note: repeated status-only update reframed to avoid fake progress operator_notice: required: false channel: telegram urgency: low message: null must_reference: [] deadline: null operator_message_templates: placeholder_rewrite: >- Continuity update only: task status remains unchanged since the last checkpoint. No new progress artifact has been attached yet. - id: no-fake-progress.reminder-presented-as-progress title: Reminder-only activity must not count as progress intent: >- Prevent nudges, reminders, or waiting-state management from being presented as actual task advancement unless new evidence accompanies them. triggers: event_types: [task_checkpoint_sent, operator_review_requested] derived_signals: [reminder_only_activity] claim_types: [progress] conditions: all: - fact: activity.kind equals: reminder_only - fact: evidence.new_items_since_last_checkpoint equals: 0 evidence_requirements: progress: min_new_items_since_last_checkpoint: 1 allowed_quality_floor: weak decision_output: decision: rewrite severity: medium reason: >- reminder-only activity was presented as task progress without supporting evidence suggested_status: in_progress required_actions: - action: rewrite_message target: outgoing_report mandatory: true details: mode: reframe_as_non_progress_update - action: append_audit_note target: task_record mandatory: true details: note: reminder-only activity cannot satisfy progress reporting on its own operator_notice: required: false channel: telegram urgency: low message: null must_reference: [] deadline: null operator_message_templates: placeholder_rewrite: >- Non-progress update: reminder or follow-up activity occurred, but no new task evidence was attached. This does not count as substantive progress. - id: no-fake-progress.next-step-claim-without-evidence title: Concrete next-step claims need supporting evidence or explicit uncertainty intent: >- Prevent unsupported claims about what was prepared, queued, or made ready for the next segment of work. triggers: event_types: [task_checkpoint_sent, task_status_changed] derived_signals: [next_step_asserted] claim_types: [progress] conditions: all: - fact: claim.next_step_asserted equals: true - fact: claim.next_step_has_supporting_evidence equals: false evidence_requirements: progress: min_new_items_since_last_checkpoint: 1 allowed_quality_floor: weak must_reference_evidence_classes: [decision_record, tool_output, file_change, runtime_artifact] decision_output: decision: annotate_placeholder severity: medium reason: >- next-step claim was stated without evidence showing the prerequisite work or decision basis suggested_status: in_progress required_actions: - action: rewrite_message target: outgoing_report mandatory: true details: mode: qualify_next_step_claim - action: append_audit_note target: task_record mandatory: true details: note: unsupported next-step assertion qualified by governance operator_notice: required: false channel: telegram urgency: low message: null must_reference: [] deadline: null operator_message_templates: placeholder_rewrite: >- Next step is proposed, not yet evidenced. Before it can be reported as prepared or ready, the task needs a supporting artifact or decision record.