Skip to content

feat(source-control): post the CI evidence comment from the merge gate #11393

Description

@kyle-sexton

Parent

Refs #8651. Evidence-verification plan: Brief and acceptance criteria at #11364 (comment); Design and Plan comments are on #11364.

Depends on

Outcome

The merge gate posts the evidence marker comment on every merge path after a PASS verdict and a capture artifact exist, before the merge is enqueued.

Demo: run the babysit merge test suite; the artifact and no-artifact cases pass.

Plan (phase S5c)

Satisfies: AC1, AC8
Size Small-Medium. Depends on: S5a (#11391), S7 (#8651). Plugin: source-control (plugins/source-control/scripts/source-control-babysit-merge).

  • Identify every merge path first (merge-pr, enable-auto-merge) and post on each before merge; upsert the marker comment linking pr-capture-<pr>-<head> with its expiry.
  • Sanity Check: the babysit merge test suite passes with a case "PASS verdict + capture artifact → one marker comment, enqueue after"; a case "no capture artifact → no comment, merge unaffected".

Design excerpt

  • source-control: /source-control:pull-request evidence posts one marker comment (local
    gh --attach; CI from source-control-babysit-merge after PASS, before enqueue); create.md's
    Visual evidence updated; playwright demo-video's reference/posting.md moves here, demo-video
    calls it.
components:
  schemas:
    PostEvidence:            # C6, /source-control:pull-request evidence
      type: object
      required: [pr, head_sha]
      properties:
        pr: {type: integer}
        head_sha: {type: string}
        summary: {type: string}                             # text summary; no files uploaded (AC10)
        artifact_url: {type: [string, "null"]}              # CI: pr-capture-<pr>-<head> link
        retention_days: {type: [integer, "null"]}
        marker: {const: "<!-- evidence-verification -->"}

Decision D4: CI posting lives in source-control-babysit-merge because pr-verify jobs hold read tokens only.

Acceptance criteria

Brief criteria this slice satisfies:

  • AC1: A PR whose diff changes something visible in the interface gets screenshots or video captured and judged against its acceptance criteria before merge.
  • AC8: A passing PR carries one comment linking redacted evidence; account and usage lines never appear in uploaded captures.

Done when:

  • Sanity Check passes: the babysit merge test suite passes with a case "PASS verdict + capture artifact → one marker comment, enqueue after"; a case "no capture artifact → no comment, merge unaffected".
  • Both merge-pr and enable-auto-merge paths are enumerated in the PR body and covered by a test
  • The plugin's version and CHANGELOG are bumped per the repository's release convention
  • ci-status is green on the PR head

Held for owner decision

Dependencies only; no scope is carved out of this slice. It depends on S5a (#11391) and on S7 = #8651; it cannot be picked up until the capture job exists.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UJUn7KoThXoYQoxfvdCVi7

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Oct 30, 2026
  2. github-actions commented on Oct 30, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Small
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: #11391, #8651

    Understood: make source-control-babysit-merge post the evidence marker comment on both merge paths (merge-pr and enable-auto-merge). It posts after a PASS verdict and a capture artifact exist, and before enqueue. With no artifact it posts nothing and the merge is unaffected. Done-when is exact: two test cases, both paths covered, version and CHANGELOG bump, ci-status green.

    The scope is clear. The work can't start until #11391 (the evidence posting step) and #8651 (the capture job) land.

    No duplicates found among the open issues. #11391 and #8651 are related dependencies, not duplicates.

    Automated triage, applied by the lanes App.

  3. melodic-automation-lanes commented on Oct 30, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane yet: blocker #11391 is not closed by a listed human or a merge; blocker #8651 is not closed by a listed human or a merge.

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: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions