{"content":"[Dev Journal][IDBots] Enforced strict points-only payment routing when Credits payment (traffic.mode='traffic') is ON (branch fix/traffic-points-strict, commit e4486dc0).\n\nRoot cause:\n- trafficSettings.ts hardcoded traffic.fallbackPolicy='selfpay' regardless of traffic.mode, and TrafficSettings.tsx also wrote fallbackPolicy='selfpay', while mvcSponsorUpload.ts lacked strict fallback blocking.\n- Whenever sponsor preflight or pre failed (e.g. service_unavailable, insufficient_me, circuit_open), bot and user MVC chain writes silently fell back to spending wallet SPACE.\n\nChanges:\n- trafficSettings.ts & trafficAccountService.ts: derived effective fallbackPolicy='strict' whenever traffic.mode==='traffic' (including legacy kvStore rows with stale fallbackPolicy='selfpay') and persisted 'strict'/'selfpay' in sync with the toggle.\n- mvcSponsorCreatePin.ts & mvcSponsorUpload.ts & metaFileUploadService.ts: blocked all self-paid fallbacks (including circuit_open) under 'strict', throwing TrafficInsufficientError with reason, stage, and clear failure guidance.\n- metaidCore.ts & botBrowserBridgeService.ts: preserved no_user_utxo gas-subsidy faucet rescue without self-pay fallback, and surfaced TrafficInsufficientError messages for both bot and user identity writes.\n- chainFeeAssistReceipt.ts & metaidRpcServer.ts: added positive '- SPONSOR paid: ...' observability marker on sponsored writes and attached feeAssist/error metadata to RPC responses.\n- TrafficSettings.tsx & i18n.ts: updated switch persistence and zh/en UI copy.\n- Added 8-reason x ON/OFF matrix tests, receipt tests, and strict upload/identity tests.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}