✔ staff seed extends one canonical world and preserves the customer identities and balances (221.9304ms) ✔ fatal demo identities gate all requests and recovery remains reachable (648.786ms) ✔ unchanged staff reads do not rewrite world or return live references (199.5454ms) ✔ user search is empty-aware, case-insensitive, ignores at-prefix and is capped at50 (167.2392ms) ✔ wallet increase changes exact wallet, total paid, customer ledger and today revenue with authenticated audit (261.0059ms) ✔ wallet decrease refuses overdraft and malformed input without ledger changes (245.1134ms) ✔ canonical block/partner flags affect the original customer API immediately (261.0978ms) ✔ admin purchase debits once and links subscription, panel, ledger, history, messages and counts (314.5614ms) ✔ both panel-create and record failures refund debit and remove any orphan panel atomically (384.2132ms) ✔ purchase checks eligibility, balance, commitment and consumed trial plans (198.4977ms) ✔ commitment credit is spent before cash and rollback restores both (380.8188ms) ✔ subscription adjustments use live bounds and reject every consequential guard (217.1376ms) ✔ manual adjustment uses max(now, expiry), records actor/reason and never reenables inactive state (119.6028ms) ✔ explicit disable is sticky through adjustments and only enable clears it (232.5966ms) ✔ named busy subscription refuses repeated operations until20seconds elapse (145.7773ms) ✔ deletion handles missing panels, retries one-shot panel errors, removes counts and never refunds (280.843ms) ✔ failed live adjustment preserves subscription, usage and history (186.2955ms) ✔ plan parser, immutable technical name, collision and discount validation match the wire (199.5413ms) ✔ plan disable and category/global switches change offers without breaking existing resolution (349.9599ms) ✔ commitment config requires duration, validates wallet and warns instead of refusing mismatch (195.4633ms) ✔ panel verification consumes failures without persisting credentials and duplicate requires confirmation (214.8561ms) ✔ template rename clears every shared binding, sync is partial, panel deletion disconnects categories (215.0227ms) ✔ category configuration connects plans/panel/template and validates missing plan IDs (317.7818ms) ✔ revenue totals are deposit-only, zero-filled, filtered and share percentages reconcile (215.5025ms) ✔ Tehran Saturday week and custom granularity coercion obey400-point cap (130.2743ms) ✔ comparison aligns calendar buckets by relative index and truncates only paired points (94.4053ms) ✔ revenue errors are precise and empty all-time under filters has zero points (356.9227ms) ✔ on-demand health reports each panel asynchronously and never exposes credentials (158.6435ms) ✔ category expiry cleanup deletes expired accounts from bot and panel without changing money (301.3691ms) ✔ customer-side renewal appears in the same staff history with user actor (104.1109ms) ✔ admin commitment duration and templates are honored by the original customer API (179.6187ms) ✔ background work cannot consume a selected manual subscription failure (715.8421ms) ✔ customer cancellation records terminal staff history without refund (215.3081ms) ✔ the public staff boundary exposes no transaction or domain registration helpers (40.2374ms) ✔ one world: four scheduled bankcard approvals update counters and canonical balance (245.3501ms) ✔ cards validate length, default wallet, nullable cap, soft delete and Tehran period reset (281.2566ms) ✔ overdue approval processing credits once without carrying old payments into a new card period (189.7536ms) ✔ Safe Mode mandatory reason, integer/grid validation and cap conflict are rollback safe (326.0054ms) ✔ Safe Mode config restarts atomically, disabling restores card-constrained manual minimums (258.89ms) ✔ ascending and alternating sequences rotate exactly once after a missed schedule (719.6008ms) ✔ random never repeats and older audit pagination survives new events (417.8257ms) ✔ method and enabled wallet caps protect Safe Mode; null clears overrides without enabling new link (295.5055ms) ✔ cashback limits, link isolation and soft deletion (372.8768ms) ✔ secrets never echo, empty secrets retain values, all29 explicitly named fields exist (180.7372ms) ✔ nested payment rules evaluate all leaves against canonical successful payments only (82.2543ms) ✔ unlock group validation, single-child collapse, gating meta and hard delete (239.8916ms) ✔ setup-fresh seeds no enabled payment path or secrets and uses shared settings helpers (184.297ms) ✔ all five broadcast audiences select canonical users and broadcasts create timed notification jobs (547.9166ms) ✔ broadcast test rejects malformed Telegram HTML and one-shot empty audience produces a failed notification (345.8139ms) ✔ notification rule validates effective edited type and every threshold guard (548.7368ms) ✔ channel IDs, duplicate guard, hard tutorial deletion, referral bounds, ad attribution from ledger (652.6195ms) ✔ seed queued240 advances at4/s into canonical expiry/history, skips no-expiry and finishes with exactly3 failures (259.139ms) ✔ preview frozen selection, unknown placeholders block run, and targeting guards do not mutate subscriptions (447.8173ms) ✔ run/pause/resume/cancel/delete state machine, runner lock and no queue result (777.3634ms) ✔ notification dispatcher lock, report no-data/future, backup delay path (467.8835ms) ✔ setup-fresh seven states, report code regeneration, registration and payment prerequisite use shared finance (480.1969ms) ✔ queued settings reject unknown variables without changing template, canceled jobs notify only applied items (497.8561ms) ✔ channel and tutorial order zero is preserved and fractional orders rejected (177.4143ms) ✔ invalid draft notification template can be explicitly cleared to the default (113.3246ms) ✔ unchanged reads do not rewrite storage or create cross-tab refresh loops (69.0807ms) ✔ seed counts, wallet balances, and ledger-derived balances match both account scopes (85.8222ms) ✔ seed cashback and correction relations identify real deposits in the same wallet (19.4436ms) ✔ purchase synchronizes names, subscriptions, usage, wallet, and one ledger row per unit (81.5506ms) ✔ insufficient total purchase funds fail before creating a unit or changing history (48.9776ms) ✔ partial panel failure charges only successful units and returns their exact names (67.6853ms) ✔ injected partial-balance stop preserves the seven successful debits and units (64.0447ms) ✔ renewal changes exactly the purchased strategy fields and creates one renewal debit (52.1536ms) ✔ concurrent renewals and a renewed expired deletion cannot charge twice (48.8477ms) ✔ volume-only renewal does not claim an expired timestamp is active (45.4258ms) ✔ all eight renewal strategies preserve/reset the correct volume, usage, and expiry (399.1637ms) ✔ unexpected renewal exceptions roll back money and subscription mutations atomically (55.2082ms) ✔ delete failure is retryable, success has no refund, and subsequent deletion is explicit (76.4113ms) ✔ credit-only purchase consumes commitment and adds a c-row without changing wallet balance (47.0243ms) ✔ partial commitment purchase splits credit and wallet exactly once (32.6926ms) ✔ grace commitment renews atomically; repeated payment when active is idempotent (115.9308ms) ✔ newcomer commitment failure reports required funds and changes no financial state (58.822ms) ✔ reading auto-renew offers and cancelling before mutation leave plan and funds unchanged (100.6044ms) ✔ confirmed auto-renew on expired subscription renews once; failure preserves previous state (68.4876ms) ✔ trial plans are once per account for purchases and renewals (49.7239ms) ✔ ownership, wallet audience, missing IDs, and staff deletion use the required boundaries (86.2685ms) ✔ request headers preserve raw Telegram data and validate acting-as targets (40.8457ms) ✔ name validation and normalization preserve technical usernames (76.0792ms) ✔ revoke replaces links everywhere, including a deliberate no-new-link response (39.1544ms) ✔ usage has separate loading, Error, N/A, unlimited, and real time-driven expiry states (66.5761ms) ✔ commitment expiry burns unused credit without reducing the wallet a second time (51.6642ms) ✔ history/batch failures are one-shot retryable; session and general gates preserve funds (91.5327ms) ✔ read results are detached, account state is shared, and reset notifies the correct identity (50.639ms) ✔ mock transport retains slow-request and batch-latency semantics (9.9481ms) ℹ tests 88 ℹ suites 0 ℹ pass 88 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 8671.3042