Skip to content

attribution: run the disposition-applying provenance sweep once a class is fix-eligible #9755

Open

Description

@kyle-sexton

Refs #3465. Slice 2 of 3. Blocked by #5654 (owner rulings and the rubric-v5 re-score) and by slice 1 (the report-only sweep).

Problem

Stage 2 of the provenance sub-topic is a disposition-applying sweep: one tracked file at a time, apply the verdict, verify (semantic diff plus pointer liveness), close. fix and sweep apply dispositions only to fix-eligible findings, and a class is fix-eligible only at min_n_per_class 10 and precision at or above 0.95. On 2026-10-04 near-verbatim stood at 0.92 with n 13, and verbatim at n 3 with the target kept at 10 (#5654, 2026-10-13).

Fix

  1. Precondition: run plugins/attribution/skills/audit/scripts/score-golden.sh on current main. If it reports no fix-eligible class, post a comment on provenance sweep sub-topic: repo-wide sweep, upstream-drift convention engagement, and the cleaned-state gate #3465 headed ## Disposition sweep: no fix-eligible class with the per-class precision and n, open no PR, and stop. That outcome completes this slice.
  2. Otherwise run /attribution:audit sweep over tracked markdown. Follow the execution contract in provenance sweep sub-topic: repo-wide sweep, upstream-drift convention engagement, and the cleaned-state gate #3465: one file at a time; a file closes only when every finding in it carries a disposition or an explicit neutral outcome; carve-outs stay categorical (redraw a carve-out in rubric.md rather than keep a suppression list). A file with a generated-output marker is never edited: report the finding and name the generator's input as the fix site (owner decision B1, 2026-09-29).
  3. Open one PR with the applied dispositions, and post a comment on provenance sweep sub-topic: repo-wide sweep, upstream-drift convention engagement, and the cleaned-state gate #3465 headed ## Disposition sweep, <date> with the closure count, files closed, per-instance suppressions accumulated (must be 0 or stated with the count), and the measured precision and n per class. The ledger is checkout-local, so this comment is the record slice 3 reads.

Done when

  • gh issue view 3465 --comments --json comments --jq '[.comments[].body|select(startswith("## Disposition sweep"))]|length' prints at least 1
  • If dispositions were applied: bash plugins/attribution/skills/audit/scripts/score-golden.sh exits 0 on the PR branch, and git diff --name-only origin/main...HEAD lists no file whose first lines carry a generated-output marker
  • bash scripts/check-changelog-parity.sh exits 0 on the PR branch (when a PR exists)

Activity

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

    @github-actions
    Contributor

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

    Size: Small
    Complexity: Low
    Uncertainty: Known
    Flags: none
    Blocked by: #9753

    Understood: slice 2 of #3465. Run score-golden.sh on current main. If no class is fix-eligible, post the "no fix-eligible class" comment on #3465 and stop. Otherwise run the disposition-applying sweep, skip generated-output files, open one PR, and post the sweep record.

    The issue body already names the blockers: #5654 (owner rulings and the rubric-v5 re-score) and slice 1. I took slice 1 to be #9753 and listed it above. I could not check whether #5654 is still open, so it is not on the Blocked by line. The scope, done-when items and stop condition are exact, so I have no open questions.

    Possible duplicates: none found.

    Automated triage, applied by the lanes App.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  4. added
    status: needs-decisionAwaiting a human or maintainer judgment call.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 24, 2026
  5. kyle-sexton commented on Oct 25, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.

    To hold this issue again, add needs-human (or status: needs-decision) and say why in a comment.

  6. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

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

  7. kyle-sexton commented on Nov 1, 2026

    @kyle-sexton
    MemberAuthor

    Cordoned until an attribution class is declared fix-eligible. Issue Triage session.

    This slice applies dispositions, and fix and sweep act only on fix-eligible findings. The owner ruled on 2026-10-30 that no class is fix-eligible yet. The owner-decisions record (docs/owner-decisions.md in melodic-software/architecture, row "Q1 and Q2 (Backlog HITL numbering), 2026-10-30") puts the question "Should the attribution audit be allowed to fix near-verbatim copies on its own?" with the owner's reply, verbatim: "go w/ recommended". The recorded decision: "(a) not yet; re-measure on a larger sample before any class is declared fix-eligible, since 9 of the 12 true positives are real repository text and 4 of those share one source."

    Step 1 of this body would not stop on that ruling. It stops only "if it reports no fix-eligible class", and score-golden.sh now reports near-verbatim at n 13, precision 1.00, gate binding (#5654 comment, 2026-10-31). Read literally, an agent would run the sweep against the ruling.

    The listed blockers do not gate it either: slice 1 (#9753) closed as completed on 2026-10-29, and closing #5654 leaves the ruling in place. The real blocker is the larger-sample re-measure. No issue tracks it on its own; it belongs on #5654, whose remaining panel re-runs and whole-set re-score enlarge the sample.

    What reopens this: the owner declares a class fix-eligible after a re-measure on a larger sample, recorded as an owner-decisions row or a comment on this issue. Then:

    • replace step 1's precondition with: "a class is fix-eligible only when an owner ruling declares it; the binding gate from score-golden.sh alone does not make it fix-eligible";
    • take it off After zero and send it back through intake with a **Decision recorded.** comment.

    #9759 depends on this slice and is cordoned on the same condition.

  8. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 1, 2026
  9. added this to the After zero milestone on Nov 1, 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

    priority: mediumReal value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions