Repository navigation
Conversation
An underfunded payer was rejected with no server log, so a ticket face value above the claimable reserve looked like a client or signer fault. Log the payer, deposit, reserve and face value on rejection, and report on-chain mode on the start line. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The signer printed nothing when healthy. Log listen addresses at startup and use the same text handler as the orchestrator so both services share one log format. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The warning used the default slog handler, so it printed in a different format from the other orchestrator lines. Use the engine's store logger, as the payment observed line does. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The logged reserve is the amount claimable by this orchestrator, not the payer's total reserve. Say so, to avoid mistaking a funded wallet for a logging error. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
j0sh
approved these changes
Oct 30, 2026
There was a problem hiding this comment.
🟡 Changes recommended
Zero deposit or claimable reserve balances are rejected before the underfunding warning, leaving balance details unlogged; the warning must precede validation with nil guards while preserving rejection behavior.
1 open issue
What changed in this PR
This PR improves payment diagnostics and startup visibility for the orchestrator and signer.
Changes:
- Logs payer balances and ticket face value when rejecting insufficient funds.
- Adds on-chain status to the orchestrator startup log.
- Adds a signer startup log and aligns its text logging format with the orchestrator.
| File | Description |
|---|---|
signer/app.go |
Configures text logging and reports startup listen addresses. |
orchestrator/payment_engine.go |
Adds a warning with funding details for payment rejection. |
orchestrator/app.go |
Includes on-chain status in the startup log. |
Review effort: Balanced
Comment on lines
+256
to
+257
| if e.store != nil && e.store.logger != nil { | ||
| e.store.logger.WarnContext(ctx, "orchestrator payer deposit or claimable reserve below ticket face value", "event", "payment", "operation", "receive", "outcome", "rejected", "payer", payer, "deposit", funds.Deposit, "claimable_reserve", funds.Reserve, "face_value", params.FaceValue) |
This branch has not been deployed
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.

An underfunded payer was rejected by the orchestrator with no server log, only a bare
payer funds unavailable(400) on the client. A ticket face value above the claimable reserve (about 1/100 of the total reserve per recipient) then looked like a signer or wallet fault. The signer also printed nothing when healthy, so a successful start could not be told from a stuck one.Orchestrator:
orchestrator startednow carriesonchain=true|false.Signer:
signer startedline with the listen addresses.No new test for the warning yet.
TestStorageDefaultsAndChainCheckinsigneralso fails on a cleanmain.