Skip to content

orchestrate: catch incomplete shared-seam refactors earlier — implementer ripple report + verifier consistency lens #36

Description

@TBarregren

Filed for triage. Surfaced by the same AFK /orchestrate run on Kntnt/Mimer (#69) as the coding-standard companion #35, and related to #34. Here a change that made durable-fact promotion global updated two of three callers of a shared function; the inconsistency was caught only by the mandatory integration review. That safety net worked — but the catch can be moved earlier and cheaper.

Summary

When an implementer changes a shared function's contract or effective behaviour, an incomplete update (some callers left on the old contract) produces a locally-consistent diff that a per-issue verifier — bound to the diff — structurally cannot see. Today this class is caught only by the final integration review. Two low-cost orchestrate changes would surface most of it at the per-issue stage.

The incident

Building #69, an implementer changed durable-fact promotion to scope="global" and updated two of the three callers of distill_durable_entries, missing curate.py's cap-overflow path — stranding cap-evicted facts at project scope. The per-issue verify cleared (the diff was internally consistent); the mandatory integration review caught the cross-caller inconsistency and it was remediated. Correct end state, but a full extra integration-review + remediation cycle for something a targeted per-issue check could have flagged.

Proposed changes (both small; either helps, together stronger)

1 — Implementer "ripple" reporting. In the implement / fix prompts (engine skills/orchestrate/orchestrate.workflow.js) and in SKILL.md's three-bucket contract, instruct the implementer: if your change alters a shared symbol's contract or effective behaviour — especially beyond the files your task obviously owns — enumerate the affected call sites and state, in Assumptions & blockers, which you updated and which you did not. This turns a silent incomplete refactor into a reported one the orchestrator and the verifier can act on. It complements the coding-standard rule in #35, which the sub-agents also read via skill-by-reference.

2 — Verifier consistency / ripple lens. Give the per-issue verifier an explicit lens: when the diff changes a shared function's contract or effective behaviour, check the unchanged callers of that symbol for consistency, not only the diff itself. This is the one place a per-issue review can reach beyond the diff cheaply, and it is exactly where this class hides. Scope it to fire only when the diff touches a shared / multi-caller symbol, so it adds nothing on ordinary diffs.

Notes / non-goals

Acceptance criteria (for triage — final scope depends on the chosen direction)

  • The implement / fix prompts and SKILL.md's three-bucket description instruct the implementer to enumerate and report shared-symbol call-site ripple (updated vs not) under Assumptions & blockers (Proposal 1).
  • The per-issue verifier brief gains a consistency / ripple lens — on a diff that changes a shared symbol's contract or behaviour, verify the unchanged callers — firing only when a shared / multi-caller symbol is touched (Proposal 2).
  • tests/test_orchestrate_skill.py (and/or the engine-prompt tests / lib/orchestrate/engine-helpers.mjs coverage) updated red-first to assert the new prompt / lens wording.
  • CHANGELOG.md updated; scripts/audit.py and pytest green.

Blocked by

Environment

  • Plugin version (.claude-plugin/plugin.json): 0.12.0
  • Client: Claude Code
  • Operating system: macOS (darwin)

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

    enhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions