Skip to content

chore(pr-pipeline): remove the lane-record annotation and its fallback after 2026-10-25 #7775

Closed

Description

@kyle-sexton

Refs: #7772, #7774

What

Remove the lane-record annotation that report-check-run still posts, and the annotation fallback in .github/scripts/pr-unblock/limit-stop.mjs. Since #7774, the record lives on the first line of the posted check run's output.summary, and the dispatchers read it from there. The annotation exists only so that limit stops posted before #7774 still restart.

When

On or after 2026-10-25. A limit stop's reset is clamped to at most 7 days after its run ended (limit-stop.mjs), and #7774 merged on 2026-10-17. After that date, no check run posted before the change can still be waiting to restart.

Done when

  • report-check-run posts no annotations for the lane record. Delete laneRecordAnnotation and its tests.
  • limitResetsAt and anyHandles read only the summary record, and listAnnotations is gone from dispatch.mjs and feedback-dispatch.mjs.
  • The app_id and check_name filters on the dispatchers' check-run list stay. The security review of feat(pr-pipeline): carry the lane record in the posted check run's output #7774 noted that dropping the fallback also closes the path where an ::error:: annotation inside the job is read as a lane record.
  • docs/conventions/pr-pipeline/pr-run-activity.md no longer mentions the annotation.

🤖 Generated with Claude Code

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 17, 2026
  2. github-actions commented on Oct 17, 2026

    @github-actions
    Contributor

    Understood: this is a scheduled follow-up to #7774 — remove the lane-record annotation fallback from report-check-run and limit-stop.mjs (and the annotation-reading paths in dispatch.mjs/feedback-dispatch.mjs), once no pre-#7774 limit stop can still be waiting to restart (on or after 2026-10-25, per the 7-day reset clamp). The done-list (delete laneRecordAnnotation and its tests, drop listAnnotations, keep the app_id/check_name filters, update pr-run-activity.md) is specific enough to act on directly once that date passes. No duplicates found; #7772 and #7765 are the already-closed predecessors this refers to. Nothing further needed from the reporter — this looks ready to pick up after the date gate.

    Automated triage. A maintainer reviews it.

  3. added
    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 17, 2026
  4. kyle-sexton commented on Oct 17, 2026

    @kyle-sexton
    MemberAuthor

    The wait is unnecessary. The live proof in pr-pipeline-sandbox (2026-10-17, run 39056191404, check run 117464603970) showed that GitHub sets every check-run annotation title to <path>#L<line> when it is posted without one. limit-stop.mjs keeps only annotations with no title, so the fallback has never matched an annotation report-check-run posted, and no limit stop waits on it. Removing the fallback and the annotation now changes no behavior.

    The same proof confirmed the summary path end to end:

    • The real report-lane-outcome and report-check-run posted lane=pr-unblock activity=resolve-conflicts class=rate-limit resets=… turns=1 max-turns=30.
    • The real dispatchConflicting skipped the PR before completed_at + 1h (also at 1h−1s) and dispatched exactly once at 1h+1s.
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

    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions