Skip to content

chore(attribution): migrate provenance consumers after the rename (#4590 merged) #4668

Description

@kyle-sexton

Problem

PR #4590 ("feat(attribution)!: rename the provenance plugin to attribution") implements the rename and closes #4589 when it merges. The consumers that live outside this repository are not covered. #4589's triage marks them "out of scope here (owner)", and #4590's Related section lists them as USER-RESERVED. Once #4590 merges, #4589 closes and nothing tracks them. The PR itself also has not been merge-gated: its Verification section still reads PENDING.

Evidence

The rename itself is settled: the operator decided on 2026-09-11 to rename provenance@melodic-software to attribution@melodic-software. The reasons: the plugin's one rule is that restated prose must be attributed, and "provenance" also means an origin note to delete in code-tidying and docs-hygiene.

Verified this pass (2026-09-27):

  • feat(attribution)!: rename the provenance plugin to attribution #4590 is open and not a draft, mergeable, with head c6e962623 and a CI run in progress on that head. The head d1ba6d1a5 named in the handoff is stale: a later commit landed.
  • feat(attribution)!: rename the provenance plugin to attribution #4590 moves plugins/provenance/ to plugins/attribution/ at 0.6.0. It keeps plugins/provenance/ 0.6.0 as a one-release deprecation shim, with stub skills set to disable-model-invocation: true. Other changes:
    • Rule ids become attribution/audit/rule-*, the config file becomes .claude/attribution.json, and the findings file becomes <ts>-attribution.md.
    • A leftover provenance*.json prints a warning and is never read.
    • renames in marketplace.json is unchanged.
  • Commit 1bc1c2584 on the branch records the one-release shim in docs/migration-playbook.md. That resolves the conflict the PR body flags (the playbook previously said a rename is a clean break with no tombstone).
  • Commit e84d5d72b on the branch enables attribution in this repository's .claude/settings.json "until the fleet list names it". That is a temporary line to revert later.
  • Out-of-repo consumers (read-only checks):
    • melodic-software/standards components/cloud-environment/fleet-plugins.json:68 has "provenance@melodic-software": true.
    • melodic-software/dotfiles .chezmoidata/claude.json:600 has "provenance@melodic-software": false, so there is a decision to make about whether attribution should be enabled there.
  • Plugin data directory: no file under plugins/attribution/ or plugins/provenance/ on the PR head references CLAUDE_PLUGIN_DATA or plugins/data (git grep at d1ba6d1a5). The plugin keeps its config in .claude/attribution.json layers, not the data directory. So there is probably nothing to move. Verify on each machine that ~/.claude/plugins/data/provenance-melodic-software/ is absent or empty before deleting it.

Not verified: the result of the CI run on c6e962623; whether the review lanes ran on it.

Proposed approach

  1. Gate feat(attribution)!: rename the provenance plugin to attribution #4590: run /source-control:pull-request ready (merge the base, security review, fresh-context verify). Fill in the Verification section; it currently says PENDING. Merge once ci-status is green.
  2. Decide the user-reserved items:
    • Whether to add a renames entry provenance -> attribution. Upstream calls the map append-only, and the repo's frozen-map doctrine argues against it. The shim covers the one-release window without it.
    • Whether dotfiles should enable attribution (today provenance is false there).
  3. Migrate consumers, each in its own repository under that repository's identity:
    • standards fleet-plugins.json: replace the provenance row with "attribution@melodic-software": true.
    • dotfiles .chezmoidata/claude.json: rename the row and apply the decision from step 2.
    • Each machine's ~/.claude/settings.json enabledPlugins: enable attribution, disable provenance after the update lands.
    • Any ~/.claude/provenance.json or repo .claude/provenance*.json: rename to attribution*.json (/attribution:setup reports leftovers).
    • Data directory: remove ~/.claude/plugins/data/provenance-melodic-software/ only if the per-machine check finds it absent or empty.
  4. In this repository, after the fleet list names attribution: revert e84d5d72b's settings line.
  5. Next release: remove the provenance shim, meaning its directory, its marketplace entry, the cheat-sheet exclusion, and the owner row in scripts/skill-leaf-name-registry.txt.

Acceptance criteria

  • feat(attribution)!: rename the provenance plugin to attribution #4590 is merged with a filled-in Verification section and a green ci-status.
  • The renames decision and the dotfiles enablement decision are recorded in this issue.
  • The standards fleet-plugins.json names attribution@melodic-software, not provenance@melodic-software.
  • The dotfiles claude.json names attribution@melodic-software per the recorded decision.
  • Every fleet machine's enabledPlugins has attribution in the intended state, and no machine still enables only provenance.
  • This repository's temporary .claude/settings.json line from e84d5d72b is gone once the fleet list carries attribution.
  • A later release removes the provenance shim (tracked here or in a follow-up).

Constraints and gotchas

  • Writes to standards and dotfiles belong to those repositories and their own PRs. Do not edit them from this repository's session.
  • Removing the shim before machines update would reintroduce Plugin "provenance" not found in marketplace for anyone still enabling it.
  • Keep docs/specs/provenance-* and past CHANGELOG sections as history. "Provenance" in the sense of origin stays.

Context

Source: local handoff item 20260911-232631-rename-provenance-plugin-to-attribution.md, which this issue retires. Related: #4589 (closed by #4590 on merge), #4590, #3232 (a precedent hard rename, bug-report to bugs).

Activity

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

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.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.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions