Skip to content

instruction-placement/delta: persist baseline in artifact-protocol baselines/ slot instead of ephemeral state-key #3811

Description

@kyle-sexton

Parent

Refs #3803

Agent Brief

Type: Feature
Summary: The instruction-placement delta skill persists its diff spine in the artifact-protocol baselines slot, and records declined findings on the marketplace finding-suppression surface, replacing its ephemeral state-key mechanism.

Amended 2026-09-06. The original brief asked for a single move: put the baseline in the artifact-protocol baselines slot "the same way the overengineering delta skill uses", and expect a declined finding to survive into another worktree from there. Verification of the first attempt (#3833) established that the sibling plugin does not work that way, and that the destination cannot satisfy the durability requirement. Overengineering keeps its baseline branch-keyed in the memory tier for the diff spine, and records declined findings against the marketplace contract in docs/conventions/finding-suppression/README.md, saying so directly in plugins/overengineering/reference/consumer-config.md: "The entry format is the marketplace's finding-suppression contract, not this plugin's." The baselines slot lives in the memory tier, and docs/conventions/topic-docs/README.md states that a memory document is visible "only in the checkout that wrote it", marks a sibling worktree invisible, and forbids carrying this file class across with .worktreeinclude ("never baselines or raw scratch"). Routing declines into the baselines slot would therefore fail the durability criterion under every default configuration, and would mint a third mechanism for suppression, which is the breach this issue exists to remove. The criteria below split the two concerns accordingly.

Current behavior:
The instruction-placement delta skill stores its previous-run baseline under an ephemeral state key. The sibling overengineering delta skill splits the same state across two homes: a branch-keyed baseline in the artifact-protocol baselines slot for the diff spine, and declined findings on the tracked finding-suppression surface. Two ways of persisting the same kind of state, which is the silent second way the reuse-or-replace discipline forbids. A practical consequence: declined findings do not survive a move to a different worktree, so a re-run resurrects findings the operator already dismissed.

Desired behavior:
The delta skill becomes an artifact-protocol participant for its diff spine, and a finding-suppression consumer for operator judgment. The diff spine is written to and read from the baselines slot the protocol defines, branch-keyed, the same slot and the same way the overengineering delta skill uses it. Declined findings are recorded on the tracked .claude/<surface-name>.md surface the finding-suppression contract defines, so git carries them between checkouts. A finding declined on one branch and committed is still declined when the skill runs from another worktree whose branch carries that commit. The ephemeral state key is removed, not left in place as a fallback.

Key interfaces:

  • The delta skill's diff-spine read and write — moves from the state-key mechanism to the artifact-protocol baselines slot, branch-keyed.
  • The delta skill's declined-finding read — moves from the state-key mechanism to the finding-suppression surface.
  • The realign skill's decline write — currently writes declined only into the branch-scoped findings artifact; must also record the decline on the finding-suppression surface, since realign is where an operator's decline originates.
  • The plugin's own surface name under the finding-suppression contract — new, following the naming the contract prescribes.
  • The skill's own artifact-protocol reference document — new, describing which slots the skill uses and what it stores in them, in the shape the other protocol participants use.

Acceptance criteria:

  • The delta skill reads and writes its diff spine in the artifact-protocol baselines slot, branch-keyed, and no ephemeral state-key path remains anywhere in the plugin.
  • Declined findings are recorded on a tracked .claude/<surface-name>.md surface conforming to docs/conventions/finding-suppression/README.md, with the plugin's surface name registered the way the contract requires.
  • The realign skill writes an operator's decline to that suppression surface, not only to the branch-scoped findings artifact.
  • Declining a finding on one branch and committing the surface file, then running the skill from a different worktree of the same repository whose branch carries that commit, does not resurface the declined finding.
  • The skill ships its own artifact-protocol reference document following the shape used by the existing protocol participants.
  • The findings-artifact document's schema version is incremented if the change edits its location formula, per that document's own rule, and no statement in it is left describing the retired mechanism.
  • /skill-quality:check passes for every instruction-placement skill the change touches.
  • markdownlint passes on the changed files.
  • The instruction-placement plugin version is bumped per repo convention.
  • The plugin README and any reference doc listing the plugin's skills or protocol participants reflect the change.

Out of scope:

  • Changing what the delta skill detects, its noise budget, or its report shape.
  • Changing the overengineering delta skill.
  • Changing the artifact protocol itself, or the finding-suppression contract itself.

Blocked by

None

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: needs-triageDefault until a priority tier is assigned.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions