Koovira Dev Docs
50-errors/README.md

Error Center & Troubleshooting

Status: 🟡 seeded (grows with each module) · Last validated: 2026-09-06

The consolidated error registry + symptom-first troubleshooting. This is what powers the portal's "describe the problem → get the trace" experience (see ../PORTAL_BUILD_PLAN.md).

  • Error IDs: <PREFIX>-E<NNN>, defined in each module/system page (section L). Prefixes are in

../STATUS.md.

  • Every error carries: message · technical cause · trigger · impact · detection (where to look) ·

resolution · tables to inspect · severity · related.


Consolidated error index (seeded)

IDAreaSymptomInspectDoc
AUTH-E001..006Authlogin/OTP/lock/device/policykv_auth_login_attempts, notification_otp_codes, kv_auth_sessionsauth
WAL-E001..005Walletinsufficient/signature/wrong-wallet/orphan/booked-as-revenuewallet_accounts, wallet_transactions, accounting_journalwallet
FIN-E001..004Commissionfee 0 / wrong module / stuck pending / settlement % 0kv_commission_rules, commission_transactions, commerce_settlement_settingscommission
MEM-E001..003Membershipprice 0 / priced-but-0-sold / no renewalkv_membership_plan_prices, kv_membershipsmembership
KYC-E001..003KYCOTP / cannot publish / no verification productclaim_kyc_requests, verification_planskyc-trust
COM-E001..003CommerceXprice 0 / unavailable / quick unresolvableproducts_master, product_variants, commerce_order_routingecommerce flow
FOOD/STAY/EVT-EFood/Hotel/Eventsheader/child count mismatchfood_orders/hotel_bookings/events_master vs child tablesmodule pages
RIDE-E002RideMateride commission not in ledgercommission_transactions (0 for rides)ridemate
RLTY-E001..003RealEstaterole gate / empty perf screen / stuck commissioncompany_business_profiles (0 realestate)realestate
DIR-E001..002Directoryclaim not converting / page unreachableentity_listing_claims (0)directory
NOTF-E001..003Notificationsemail/push/WhatsApp not deliveredemail_queue, push_subscriptions, wa_optinsnotifications
UE-E001..002Universal Entryno match / stale supplykv_ue_capability_registry, kv_ue_supplysearch-radar
ENG-E001..002Enginescompare empty / negotiation unusedkv_compare_offers, negotiationsplatform-engines
ADM-E001..002Adminaccounting hidden / DDL no-opnav_registry, migration systemadmin

Symptom-first troubleshooting

"Why is a payment / order showing pending?"

  1. Which module? Order ids collide — identify module_key + order table first.
  2. Check the module order row payment_status (e.g. orders_master.payment_status).
  3. Check the wallet debit: wallet_transactions for the buyer around that time — did debit()

succeed? (WAL-E001 insufficient balance leaves the order unpaid.)

  1. Check the central ledger: kv_order_finance_master by (module_key, order_table, order_id) —

status and paid_amount vs gross_amount.

  1. For gateway topups: confirmCreditsPurchase signature failure (WAL-E002) means no credit was

written → wallet still short → order pending.

  1. Real-estate specific: commission may be pending forever (FIN-E003) even when the order is paid.

→ See wallet, central ledger.

"Why can't a merchant publish a product / listing?"

Walk the gate chain (any break stops publishing):

  1. Module on? kv_module_control.<module>.master_status = 1.
  2. Enrolled? a kv_module_registry type + a company_master row + a company_business_profiles

row for that module_key (RealEstate's blocker: 0 realestate rows → RLTY-E001).

  1. Membership? active kv_memberships tier if the feature is gated.
  2. KYC approved? an approved claim_kyc_requests row (KYC-E002).
  3. Validation — required fields/media pass; media moderation (post_media_moderation) not blocking.

→ See kyc-trust, membership, module-registry.

"Why is a fee / commission 0?"

kv_commission_rules is empty → rule-matrix fees (pay-per-lead, per-application) default to 0 (FIN-E001). Base per-order commission still fires via platform_commission_settings (11 rows, all 5.00% as of 2026-09-06). Settlement-layer commission is a separate question: commerce_settlement_settings has 0 rows, so CommerceSettlementModule always resolves that figure to 0% (FIN-E004) — a 5% order commission and a 0% settlement commission on the same order are both correct/expected given current config, not a bug by themselves. → commission.

"Why is a wallet-funded escrow/refund/transfer showing up as platform revenue?"

WalletModule::journalAccountsFor() defaults un-tagged movements to REVENUE_GENERAL when the caller didn't pass meta['acct_purpose'] — confirmed on 41% of accounting_journal rows (2026-09-06) (WAL-E005). Cross-check wallet_transactions.type/meta_source for the real nature of the movement before trusting accounting_journal.credit_account. → wallet, central ledger.

"Why does a table look empty but the feature worked?"

Two causes: (a) large text offloaded to kv_payload_store (hydrate on read); (b) a header table purged while child/finance rows remain (Food/Hotel/Events show this). → database.


How to extend

When documenting a module, add its <PREFIX>-E<NNN> errors to the module page (section L) and a row here. Phase 2 of the portal ingests these into kvdoc_error for structured search.