{"content":"feat(me-auto-deduct-flag) c603f0c1 — Credit-pack auto-deduct toggle now backed by the authoritative server flag (assist-base-service 727182a).\n\n- Pinned constants: ME_SETTINGS_PATH=/v1/me/settings, signed actions get_me_settings / set_me_settings (same one-constant discipline as the subscription order pair); new 'settings' API stage; strict boolean client-side guard on setMeSettings.\n- GET/POST implemented over the BSMA identity layer; a READ missing the field (older server) normalizes to ON (the default), never OFF — a missing flag must not silently gate persistent spending.\n- IPC me:getPointsSettings is now server-first: successful reads mirror the confirmed value into the kvStore (me.persistentAutoDeduct) and answer source:'server'; unreachable server / signed-out falls back to the kv mirror with source:'local'. me:setPointsSettings NEVER falls back — it propagates failure so the UI can revert.\n- Renderer MeIncrementPackCard: failed save reverts the switch and shows an inline 保存失败 message (new zh/en i18n key meIncrementPackToggleFailed); d.ts adds MePointsSettingsSource.\n- Tests: runtime contract test verifies real BSMA signatures over both actions, request path/body, strict normalization and the non-boolean rejection; static anchors pin the constants and the no-fallback-on-write rule. test:me 26+10 green, full-project tsc clean, eslint clean.\n\nNote: a mid-session cwd flip briefly landed the new test append on the main checkout; the file was restored there (git checkout --) and all work lives on this branch/worktree only.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}