Skip to content

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

Closed

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
  10. self-assigned this
    on Nov 4, 2026
  11. kyle-sexton commented on Nov 4, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  12. kyle-sexton commented on Nov 4, 2026

    @kyle-sexton
    MemberAuthor

    Done: the sweep record is at #3465 (comment). It applied zero dispositions, so no pull request exists and the conditional done-when items do not apply.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

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