You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Exercise every Plan Manager CLI subcommand against a live Sentinel mainnet
backend. The CLI is a thin HTTP client over server.js; if a CLI command
works, the matching /api/* route works. This document is the canonical
test methodology — the matching results live in TEST-RESULTS.md.
Wallet roles
Three throwaway mnemonics cover the matrix:
Role
Address
Used for
Operator
sent1dvzqs98m50vwwr6n4uvywkn79gkflppva069j8
Plan owner, provider, grantor, sender
Subscriber A
sent1383w6ndmrvk0l0udjvz8u9dyapwtnzfyuuz32r
Send recipient, fee-grant recipient
Subscriber B
sent123vqpcqljarlzqaenyp5zjvty8h73x2ghyjrhj
Second grant target, batch-grant member
The operator wallet must hold at least 5 P2P before write-path tests run.
Plan creation alone burns ~0.5 P2P in gas; bank sends ~0.03 P2P each;
grants ~0.05 P2P each.
Environment
Server: http://localhost:3003 started via start.bat (admin) or
node server.js (dev).
Chain: Sentinel mainnet, RPC-first (per global CLAUDE.md rule).
The on-chain effect is visible (balance change, plan record, subscriber
count, grant existence) within one block (~6s).
No BigInt or serialization stack traces in server.log.
A test is partial-pass when the CLI exits non-zero but the chain accepted
the TX (the prior bug class — wallet send had this until the BigInt
patch in server.js:1030–1036 and lib/errors.js:txResponse).
Known sources of noise
LCD /sentinel/plan/v3/plans returns 501 — the server falls back to RPC
via discoverPlans(). Not a failure.
LCD /sentinel/subscription/v3/payouts returns 501. Not a failure.
A handful of community RPC endpoints are perpetually down — rpc-providers
is expected to have ≥ 5 up, not 32.
Plan pricing is immutable in Sentinel v3. Tests #12 always create a new
plan — they never mutate prices on an existing one.
Cleanup
After test completion: plans wallet logout, then power off any plans
created during the run by reverting their status to inactive (plan status <id> --status inactive). The test plan IDs accumulate in my-plans.json
under the operator address — leave them; the on-chain plan records cannot
be deleted, only marked inactive.