Skip to content

[finding] plugins/uberdev/skills/merge-pipeline/SKILL.md — 4 findings #799

Open

Description

@TheFJK

@TheFJK — /uberdev:premerge flagged a blocker finding on PR #793.

Origin: b91a1efddcf3a7d76231e72c66146acb27f308a2
Agent: premerge.review.code_review
File: plugins/uberdev/skills/merge-pipeline/SKILL.md:519
Severity: blocker (Phase premerge)
Disposition: DEFERRED (premerge-repair-budget-exhausted)
Tier: BLOCKER
Blocks: #793

Findings (4)

1. plugins/uberdev/skills/merge-pipeline/SKILL.md:519 — blocker / BLOCKER / DEFERRED (premerge-repair-budget-exhausted) — Label membership is tested by space-padded glob over a space-joined string, so a label name containing spaces can contri

Lenses: premerge.review.code_review

PR_LABEL_LIST joins label names with a single space and pads the result, then membership is a glob over that string. GitHub label names may contain spaces, so a repo label literally named 'needs premerge-approved review' contributes the premerge instrument to the resolved set. The same defect exists in the duplicated copy inside the b.5 fence. Testing membership on the array with jq -e index() rather than on a space-joined string removes the class.

2. plugins/uberdev/skills/merge-pipeline/SKILL.md:547 — blocker / BLOCKER / DEFERRED (premerge-repair-budget-exhausted) — Sub-condition (b)'s normative sentence still quotes the review-pr-only regex, so a controller applying it literally refu

Lenses: premerge.review.code_review

(b) reads 'contains a trailer matching ^Reviewed-by: uberdev/review-pr@([a-f0-9]{40})$ ... else gate_fail with trust_trail_trailer_missing'. A premerge trailer matches neither the instrument segment nor the dollar anchor, and the reconciliation saying a premerge trailer satisfies (b) on the same terms arrives three sentences later. This file is executed by a model reading prose, so a controller applying (b) as written refuses every premerge trail before (b.5) ever runs. Quoting TRUST_TRAILER_REGEX in (b) instead of the review-pr instantiation closes it.

3. plugins/uberdev/skills/merge-pipeline/SKILL.md:682 — suggestion / SUGGESTION / DEFERRED (premerge-repair-budget-exhausted) — The label-to-instrument snippet now exists in two copies held together only by prose, and only one of them is executed b

Lenses: premerge.review.code_review

The snippet is duplicated verbatim in sub-condition (a) and inside merge-base-identity-fence-v1, with the prose 'Keep this snippet byte-identical to (a)'s' as the only link. They are byte-identical today, but only the fence copy is extracted and executed by tests/trust-trail-base-identity.test.sh; (a)'s copy is never executed and no test compares the two. This is the one-contract-N-uncompared-copies class the repo already tracks under #370 and #371 - an edit to (a) that widens or narrows the label set drifts silently while every grep stays green. Note this copy was introduced by the attempt-1 repair itself.

4. plugins/uberdev/skills/merge-pipeline/SKILL.md:683 — suggestion / SUGGESTION / DEFERRED (premerge-repair-budget-exhausted) — The label-to-instrument snippet is still two verbatim copies held together only by prose, and nothing executes or compar

Lenses: premerge.review.code_review

The snippet appears at both (a) and inside merge-base-identity-fence-v1, linked only by the sentence telling the editor to keep them byte-identical. Nothing executes or compares the two. Adding a member to TRUST_LABEL_ENUM in one copy only yields either a vacuous admission at (a) or a blanket refusal of that instrument at (b.5) - the same silent-failure class the comment block directly above it documents. They are byte-identical today, so this is a drift risk rather than a live defect.

To resolve: address the findings above in code and close this issue. Closing resolves exactly the findings listed in this body and the findings added by a later comment on it — one index records both, and closing resolves that recorded set and nothing else. A finding in this file that this issue never recorded is filed as a NEW issue rather than suppressed, so closing never mutes the file. Before closing, apply finding:true-positive if it was a real defect or finding:false-positive if it was not — that label is the eval ground truth (RFC 0018).

Activity

  1. self-assigned this
    on Aug 24, 2026
  2. added
    premerge-findingAuto-filed by /uberdev:premerge from deferred findings (RFC 0002)
    on Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

premerge-findingAuto-filed by /uberdev:premerge from deferred findings (RFC 0002)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions