feat(plugin): harden skills from three field reports (v0.9.0)#87
Merged
Conversation
Apply concrete fixes from three real-use field reports (v1.35→v1.55 relay, ~8-pass issue-hunt, v0.22→v0.27 gale) of the v0.8.x skills. The throughline: de-dup discipline left safety-critical gate rules reachable only in the operating-contract memory — unreachable at execution time when that file isn't loaded — and left the merge-wait unowned. release-execution: - Restate the universal gate rules as a self-contained, reachable checklist in the skill (the contract keeps the rationale; the skill carries the operational asserts) instead of deferring entirely to the memory. - Add merge-wait teeth: a PR that merged in seconds didn't wait for checks — that's a red flag, not a convenience. pulseengine-feature-loop: - Step 8 now owns the merge-wait instead of delegating and assuming. - Recurring N/A on steps 5/6 (witness/sigil) is a backlog item, not an exemption — escalate after three features running (this is how a real MC/DC gap and a missing attestation chain stayed hidden). - Make the self-verify cadence concrete: before every tag, every ~2 features. issue-hunt: - Self-echo filter: drop items whose only post-watermark activity is the loop's own comments (filter by author + comment id), so it stops chasing its own tail. - Structured pending_gates state (pr, watcher, action_on_green) so a PR opened-but-unlanded gets owned and merged on a later pass; resolve gates at the top of each pass. - Re-pull from watermark −60s and dedup (exact-boundary clock skew misses). - Verify .claude/ state file is actually git-ignored before writing — it got committed once. operating-contract: - Ground-claims: trust a test exit code, not a grepped "all green" tail; run one cargo at a time. - Campaign invariants as a numbered hard checklist with cadence + the second-order gate-hardening traps (paths-ignore × required checks, strict:true merge train). - New block: degraded infrastructure is not failure — queued ≠ failed, never clear queued main CI as stale, diagnose before re-dispatching. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…urce Review of the field-report pass surfaced that the reachability fix (restating gate rules inline in release-execution and the feature-loop land step) silently contradicts the de-dup principle #86 established — and an unstated principle is the thing that drifts next: a future drift-sweep would "correctly" re-consolidate the inline copies back into the contract, reintroducing the exact bug the field report caught. - operating-contract: add "Single-source by default — restate inline only where absence is unsafe", making the exception explicit policy. The test is unsafe-action vs worse-output; execution-critical safety rules are intentionally redundant and labeled, everything else stays single-source; a drift-sweep must not consolidate the labeled copies. - Label both inline copies (release-execution, feature-loop step 8) as the deliberate reachability-redundancy exception, pointing back to it. - Generalize the exit-code-over-summary lesson: it's any grepped verifier (pytest, kani, verus, CI log), with cargo as the example, not the rule. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Digests three real-use field reports of the
pulseengine-claudev0.8.x skills and applies every concrete improvement they surfaced. Bumps the plugin + marketplace to v0.9.0.The throughline
The de-dup discipline ("single source of truth — reference, don't restate") had a flaw the field exposed: anything reachable only in the operating-contract memory is unreachable at execution time when that file isn't loaded — and the merge-wait was nobody's job.
Changes
release-execution — restate the universal gate rules as a self-contained, reachable checklist in the skill (the contract keeps the rationale; the skill carries the operational asserts); add merge-wait teeth (a PR that merged in seconds didn't wait for checks).
pulseengine-feature-loop — step 8 owns the merge-wait instead of delegating-and-assuming; recurring N/A on the witness/sigil steps is a backlog item, not an exemption (escalate after 3 features — this is how a real MC/DC gap and a missing attestation chain stayed hidden); self-verify cadence made concrete (before every tag, every ~2 features).
issue-hunt — self-echo filter (the loop's own triage comments no longer re-trigger it; filter by author + comment id); structured
pending_gatesstate so a PR opened-but-unlanded gets owned and merged on a later pass; re-pull from watermark −60s + dedup (exact-boundary clock-skew misses); verify the.claude/state file is actually git-ignored before writing (it got committed once).operating-contract — trust a test exit code, not a grepped "all green" tail (run one
cargoat a time); campaign invariants as a numbered hard checklist + cadence + the second-order gate-hardening traps; new "degraded infrastructure is not failure" block (queued ≠ failed; never clear queued main CI as stale; diagnose before re-dispatching).🤖 Generated with Claude Code