Skip to content

Remove payments, verify five real break-fix scenarios, state repair scope honestly - #23

Merged
felirami merged 4 commits into
mainfrom
review/pass-3
Jul 25, 2026
Merged

Remove payments, verify five real break-fix scenarios, state repair scope honestly#23
felirami merged 4 commits into
mainfrom
review/pass-3

Conversation

@felirami

Copy link
Copy Markdown
Owner

Payments removed, and ClawFix run against a real OpenClaw 2026.6.11 install broken five
different ways on a Blaxel sandbox.

Payments removed

/api/checkout created real Lemon Squeezy sessions while the order_created handler was
// TODO: Mark fix as paid in database — a configured store could charge $2 and record nothing.
Removed the checkout endpoint, the payment page, the payment webhook and the now-unused Lemon
Squeezy verifier. Svix verification stays; the Resend inbound-email webhook uses it.
security-regressions asserts those routes stay 404, and the site no longer implies a paid tier.

Five real break-fix scenarios

Each resets the box to a valid config, breaks one real thing, and scans.

# Broken ClawFix reported Detected
1 Gateway process killed [critical] Gateway is not running yes
2 Port 18789 held by another process Port conflict detected + Gateway port 18789 is occupied by python3 (PID 726), but OpenClaw cannot reach it yes
3 openclaw.json corrupted [high] JSON5 parse failed: SyntaxError… yes
4 Gateway auth set to none on loopback [critical] Gateway auth missing on loopback + Gateway HTTP APIs are reachable without auth yes
5 update.auto.enabled = true [medium] Auto-update enabled (risk of restart loops) yes

Detection: 5/5. Scenario 2 names the squatting process and its PID.

What it actually repairs — and why the site now says so

The guarded-repair pipeline ran end to end against the real install: plan built locally,
invalid_token rejected, single-use token enforced, apply executed the real
openclaw gateway restart, verify re-checked the port, outcome reported as verify_failed, and
a rescan agreed the gateway was still down. That is correct behaviour and it is the B-24 fix
working — before the earlier pass, that same run would have claimed applied.

But it is not a fix, and the reason is worth being plain about: ClawFix ships exactly one
executable repair and it cannot work in a container.
gateway-not-running invokes
openclaw gateway restart, which needs systemd or launchd; this Alpine host answered "systemd
user services are unavailable"
. The four other problems above have no repair at all.

So the site now says one reviewed repair runs automatically today — restarting a stopped gateway
on a service-managed host — and everything else is diagnosis and guidance. Asserted in tests so
it cannot drift back.

Two issues visible only in real output

  • A finding surfaced as [critical] timeout with no context — a native collector timing out is
    shown to the user as a critical OpenClaw problem.
  • Raw parser text used as a user-facing title: JSON5 parse failed: SyntaxError: JSON5: invalid character 'i' at 1:8.

Both are noted in REVIEW.md rather than fixed here, to keep this change reviewable.

Gates

387 node tests, 87 TUI tests, tsc clean.

Cad from Arca added 3 commits July 25, 2026 06:38
Payments were half-built: /api/checkout created real Lemon Squeezy sessions, but
the order_created webhook handler was `// TODO: Mark fix as paid in database`, so
a configured store could charge $2 and nothing recorded it or unlocked anything.
Rather than leave a path that can take money and forget, the surface is removed —
the checkout endpoint, the payment page, the payment webhook, and the now-unused
Lemon Squeezy signature verifier.

Svix verification stays: the Resend inbound-email webhook still uses it.

Site and results copy no longer imply a paid tier is coming — ClawFix is MIT and
free, with no payment path in the product. Security regressions now assert the
payment routes stay gone instead of asserting they validate their input.
…ly covers

Detection is 5/5 against a real OpenClaw 2026.6.11 install: gateway down, port
conflict (named with the squatting process and PID), corrupt config, missing
loopback auth, and auto-update restart-loop risk.

Repair is a narrower story and the notes say so: ClawFix ships one executable
repair, gateway-not-running, and it invokes , which
needs systemd or launchd — so on a container host it cannot succeed, and the four
other problems it detects have no repair at all. The pipeline itself behaved
correctly end to end, reporting verify_failed with a rescan that agreed.

Also notes two issues visible only in real output: a bare '[critical] timeout'
finding from a collector timing out, and raw JSON5 parser text used as a
user-facing title.
The site said 'guarded repairs' without saying how much is actually automated.
Today that is one reviewed repair — restarting a stopped gateway, and only on a
host with systemd or launchd. The four other problems verified against a real
install (port conflict, corrupt config, missing loopback auth, auto-update
restart-loop risk) are detected but not repaired.

Backed by copy assertions, alongside one that keeps the removed payment surface
from being advertised again.
@felirami
felirami requested a review from arcabotai as a code owner July 25, 2026 10:49
prove:remediation read src/routes/payment.js directly, so deleting the payment
surface broke a CI step that npm test does not cover — my local gates passed and
CI failed. The contract now checks the results route and asserts the payment
surface stays gone: no src/routes/payment.js, no paymentRouter in server.js.

Verified by running every CI step locally this time: npm test, prove:remediation,
validate:repairs, npm audit, the node --check sweep, and the CLI package
allowlist check.
@felirami
felirami merged commit 9d8be42 into main Jul 25, 2026
3 checks passed
@felirami
felirami deleted the review/pass-3 branch July 25, 2026 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant