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)
Blocked by
Environment
- Plugin version (
.claude-plugin/plugin.json): 0.12.0
- Client: Claude Code
- Operating system: macOS (darwin)
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 ofdistill_durable_entries, missingcurate.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/fixprompts (engineskills/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)
implement/fixprompts 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).tests/test_orchestrate_skill.py(and/or the engine-prompt tests /lib/orchestrate/engine-helpers.mjscoverage) updated red-first to assert the new prompt / lens wording.CHANGELOG.mdupdated;scripts/audit.pyandpytestgreen.Blocked by
Environment
.claude-plugin/plugin.json): 0.12.0