Skip to content

Add catch-all impact and merge-risk labels with required justification #187

@Takhoffman

Description

@Takhoffman

Summary

Add explicit catch-all labels for ClawSweeper-owned impact and merge-risk taxonomy gaps:

  • impact:other
  • merge-risk: 🚨 other

These labels should be real, searchable GitHub labels, but they should not carry the explanation themselves. The explanation must live in labelJustifications, just like the existing ClawSweeper-managed labels.

Problem

ClawSweeper currently supports a strict set of owned impact labels and merge-risk labels.

Impact labels are issue-only and currently limited to:

  • impact:data-loss
  • impact:security
  • impact:crash-loop
  • impact:message-loss
  • impact:session-state
  • impact:auth-provider

Merge-risk labels are PR-only and currently limited to:

  • merge-risk: 🚨 compatibility
  • merge-risk: 🚨 message-delivery
  • merge-risk: 🚨 session-state
  • merge-risk: 🚨 auth-provider
  • merge-risk: 🚨 security-boundary
  • merge-risk: 🚨 availability
  • merge-risk: 🚨 automation

The current fallback for “no label applies” is [], which is correct for true absence of an owned signal. However, there is no searchable way to represent a real maintainer-visible impact or merge risk that does not fit the current taxonomy.

That makes two distinct cases look the same:

  1. no meaningful owned impact or merge risk exists
  2. meaningful impact or merge risk exists, but the taxonomy lacks a specific bucket

Those should not collapse into the same [] output.

Desired behavior

Add two catch-all labels:

impact:other

Use for issues only.

Meaning:

This issue has a meaningful maintainer-visible impact, but it does not fit the current owned impact taxonomy.

Rules:

  • Use only for issues.
  • Count toward the existing impactLabels max of 3.
  • Prefer a specific impact label when one fits.
  • Use [] when there is no meaningful owned impact signal.
  • Require a matching labelJustifications entry explaining the actual impact.

merge-risk: 🚨 other

Use for pull requests only.

Meaning:

Merging this PR has a meaningful risk that green CI does not settle, but it does not fit the current owned merge-risk taxonomy.

Rules:

  • Use only for PRs.
  • Count toward the existing mergeRiskLabels max of 3.
  • Prefer a specific merge-risk label when one fits.
  • Use [] when there is no meaningful merge-risk signal.
  • Require a matching labelJustifications entry explaining the actual risk.
  • When selected, risks should describe the risk in maintainer-facing prose.
  • When selected, mergeRiskOptions should still provide 1-3 concrete maintainer options.

Non-goals

  • Do not add impact:n/a.
  • Do not add merge-risk: n/a.
  • Do not use other as a replacement for [].
  • Do not allow other to bypass labelJustifications.
  • Do not allow other to be preferred over a more specific existing label.

Implementation notes

Likely touchpoints:

  • schema/clawsweeper-decision.schema.json

    • Add impact:other to impactLabels.items.enum.
    • Add merge-risk: 🚨 other to mergeRiskLabels.items.enum.
    • Add both labels to labelJustifications.items.properties.label.enum.
    • Update descriptions to define the catch-all behavior and clarify that other counts toward max 3.
  • prompts/review-item.md

    • Add prompt guidance for both catch-all labels.
    • Make clear that specific labels win over other.
    • Make clear that [] still means no meaningful owned label applies.
    • Make clear that labelJustifications must explain the actual impact/risk when other is selected.
    • Make clear that merge-risk: 🚨 other still requires risks and mergeRiskOptions.
  • Any label sync, generated label list, tests, fixtures, or docs if present.

Acceptance criteria

  • ClawSweeper schema accepts impact:other.
  • ClawSweeper schema accepts merge-risk: 🚨 other.
  • labelJustifications accepts both new labels.
  • Prompt guidance distinguishes:
    • [] = no meaningful owned label signal
    • other = meaningful signal exists, but no specific taxonomy bucket fits
  • Prompt guidance says specific labels should be preferred over other.
  • Prompt guidance says both other labels count toward the existing max of 3.
  • Prompt guidance requires labelJustifications to explain the concrete impact or merge risk.
  • Existing issue-only and PR-only boundaries remain:
    • impact labels are issue-only
    • merge-risk labels are PR-only

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions