Skip to main content
← Back to list
01Issue
BugOpenSwamp CLIPublic
AssigneesNone

Relationships

#2280 issue-lifecycle: swamp-club lifecycle post failures are logged but the method still reports success

Opened by skunk-ape · 9/18/2026

Found while triaging #2270 with the issue-lifecycle skill.

What happened

swamp model @swamp/issue-lifecycle method run adversarial_review issue-2270 printed:

Adversarial review for plan v1: 0 critical, 2 high, 3 medium, 2 low
swamp-club lifecycle post failed: 400 {"error":"payload keys must not start with $"}

and then:

Completed   adversarial_review on issue-2270 succeeded in 302ms

So the local adversarialReview-main resource was written and the phase advanced, but swamp-club never received the lifecycle entry. The command exited 0 and the summary table rendered normally — nothing distinguishes this run from one that posted cleanly.

Two separate defects

  1. The failure is swallowed. A lifecycle post failure is the whole point of the model: the skill states "swamp-club is the source of truth. Every state transition posts a lifecycle entry." When the post fails, local state and swamp-club silently diverge and no later step notices. The agent driving the flow has no reason to re-read the output past the success line. This is the same shape as a check that no-ops being recorded as a pass.

  2. The 400 itself. The server rejects the payload with payload keys must not start with $. The findings array contained no keys starting with $ — the $ characters were inside description values ($BASE_REF, ${{ github.repository }}), because the review was about GitHub Actions expression syntax. Either the server is scanning values as keys, or something in the serialization path promotes text to keys. Any lifecycle payload discussing shell variables, GitHub Actions expressions, or CEL will hit this.

Note that #2270 is itself about CI workflow expressions, so this will recur for the whole class of CI-related issues.

Expected

  • A failed lifecycle post should fail the method, or at minimum surface as a non-zero exit / explicit warning the caller must acknowledge, so local state never silently diverges from swamp-club.
  • $ inside a string value should not trip a key-name validation.

Impact

Issue #2270 currently has its triage entry in swamp-club (status moved to triaged) but no adversarial_review entry, while the local model believes the review is recorded. Whether the plan entry landed is unknown — its post may have failed the same way, since its step descriptions also contain ${{ ... }}.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED

Open

9/18/2026, 4:35:43 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.