Skip to content

feat: decision_point_notification — audit trail for auto-dispositions (seeder/classify/evidence) #544

Description

@PolyphonyRequiem

Summary

Three unilateral dispositions in PR #535 (#536 Phase 2) are hardcoded but silent: seeder_error_gate auto-continues, classify_error_gate auto-skips, and workflow_error_gate's evidence path is split. Beethoven flagged these for review — the decision is likely correct but operators have no way to audit it after the fact without reading events.jsonl.

Solution: interpose a type: notification step at each auto-disposition point that emits a structured auto_disposition event. The route stays hardcoded. The decision becomes observable in notifications.jsonl and visible in platespinner.

YAML sketch (seeder example)

notifications:
  types:
    auto_disposition:
      version: 1
      payload:
        decision_site: { type: string }
        disposition:   { type: string }   # "auto_continue" | "auto_skip" | "auto_abort"
        reason:        { type: string }
        work_item_id:  { type: string }

agents:
  - name: seeder
    type: script
    routes:
      - to: child_router
        when: "{{ seeder.output.error_count == 0 }}"
      - to: seeder_partial_continue_notifier
        when: "{{ seeder.output.error_count > 0 and seeder.output.children_seeded > 0 }}"
      - to: abort_run
        on_error: true                  # catastrophic failure

  - name: seeder_partial_continue_notifier
    type: notification
    notification: auto_disposition
    payload:
      decision_site: "seeder"
      disposition:   "auto_continue"
      reason:        "Seeder completed with {{ seeder.output.error_count }} error(s); {{ seeder.output.children_seeded }} children seeded."
      work_item_id:  "{{ workflow.input.work_item_id }}"
    routes:
      - to: child_router

Sites

  • plan-level.yaml: seeder partial-continue
  • restack-remedy.yaml: classify auto-skip
  • actionable.yaml: workflow_error_gate split (evidence path — confirm no change needed, but add notification for evidence_reviewer → workflow_abandoned catch-all)

Value

Prerequisites

conductor Phase 1 (#229) + notifications (#213). No verb changes. Additive only.

Full patterns doc: .squad/decisions/inbox/wagner-on-error-notifications-patterns-2026-05-28T23-00-46Z.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    squad:short-termShort-term win (≤1 week)squad:wagnerOwner: Wagner (Workflow Author)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions