Skip to content

fix(roadmap): alternatives posts a comment only when its verdict changes #4054

Open

Description

@dan-petty

Problem

apply_alternatives posts a comment and a block for every check, also when the verdict and the tool are the same as in the last check. A recheck every 30 days (DEFAULT_ROADMAP_ALTERNATIVES_RECHECK_DAYS) adds a comment with no news. The comment thread of a long-lived item fills with the same text.

Expected

In apply_alternatives, compare the new verdict and tool with the recorded alternatives.verdict and alternatives.tool.

  • Write the comment only when one of them changed.
  • Update the block and the marks (the date) in both cases.

The order rule of #2951 does not change. A recheck with the same result still updates alternatives.checked_at, so the item is not due again before the recheck days pass.

Acceptance criteria

  • uv run pytest tests/roadmap/test_roadmap_alternatives_recheck.py -k same_verdict - a recheck with the same verdict and tool posts no second comment. It updates the date.
  • uv run pytest tests/roadmap/test_roadmap_alternatives_recheck.py -k changed_verdict - a recheck with a new verdict, or with a new tool, posts one comment.
  • uv run pytest tests/roadmap/test_roadmap_alternatives_recheck.py -k first_check - a first check, with no recorded verdict, posts its comment.

Every command above fails on the unchanged code. The pull request cites the fail-to-pass run (devops ci fail-to-pass --base <ref>).

Feasibility

I read alternatives.py (apply_alternatives, _is_due, AlternativesRecordKey) at origin/main. The recorded keys alternatives.verdict and alternatives.tool are written in apply_alternatives. I did not run the code.

Existing tool considered

The item record marks that exist. No library is needed.

Cost

Build: about 15k tokens and 1 h. Keep: about 1k tokens per quarter. Fix: about 5k tokens and 0.3 h.

Related

Part of #3027. #2951. Order: after the issue #4049 (both change alternatives.py).

Activity

  1. added
    type/bugDefect, regression, or incorrect runtime behavior
    scope/roadmapThe roadmap jobs: intake, refine, stage, implement and the Service that runs them
    status/newStatus New: the item is not ready yet
    effort/lowEffort Low: little work
    on Nov 7, 2026
  2. dan-petty commented on Nov 7, 2026

    @dan-petty
    OwnerAuthor

    Intake placed this item to the backlog: intake puts every new item in the backlog. A person plans the milestones.

    • Type: type/bug. The fix prefix of the title gives the type.
    • Scope: scope/roadmap. The (roadmap) scope of the title gives the scope.
    • Priority: P3-Low. Duplicate comments reduce thread readability over time but do not block any workflow or break functionality.
    • Value: Medium. Users see fewer redundant comments in long-lived issue threads, which improves readability without adding new capability.
    • Effort: Low. The change adds a comparison of two recorded values before posting; the candidate estimates about 1 hour of work.
    • Related: feat(roadmap): Add reason and queries to the alternatives comment #2944, which asks for a different change. Both items change the alternatives comment behaviour, but #2944 adds content to the comment while the candidate suppresses the comment when the verdict is unchanged.
  3. added
    priority/p3-lowMinor polish, low-severity improvements, and backlogged tasks
    on Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    effort/lowEffort Low: little workpriority/p3-lowMinor polish, low-severity improvements, and backlogged tasksscope/roadmapThe roadmap jobs: intake, refine, stage, implement and the Service that runs themsource/agentFiled by an agentstatus/newStatus New: the item is not ready yettype/bugDefect, regression, or incorrect runtime behaviorvalue/mediumValue Medium

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions