mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-10-29 07:13:44 +08:00
Fold the inline CBM_MEM_BUDGET_MB override logic in cbm_mem_init into a pure, testable cbm_mem_resolve_budget() that returns a result struct (budget/source/clamped/invalid), so the parse + clamp lives in exactly one place and cbm_mem_init only surfaces the outcome as log lines. Parsing now matches the strict src/foundation/limits.c convention (errno/ERANGE, reject trailing garbage, positive-only): a fat-fingered value like "8GB" or a 20-digit typo becomes a warning + safe ram_fraction fallback instead of a silently wrong budget. A valid-but-huge value clamps to detected total RAM (logged mem.budget.clamped) rather than overflowing the MiB->bytes multiply and wrapping to a near-zero budget (which would pin cbm_mem_over_budget() true and stall indexing). mem.init now logs source= on both the override and fraction paths, and the README gains the CBM_MEM_BUDGET_MB row it lacked. Hardening of the existing #363 knob. Signed-off-by: Sam Li <yangsec888@gmail.com>