Commit Graph

3 Commits

Author SHA1 Message Date
woolcoxm 35ed9bc921 config: fix UTF-8 decode crash + null config-value TypeError on Windows (doctor/resource_plan) (#184)
Two related crash bugs in the Python planning layer:

P1: Path.read_text() without encoding= defaults to locale.getpreferredencoding()
    (cp1252 on most Windows installs). HuggingFace config.json is UTF-8 — if it
    contains any non-ASCII byte (Chinese fields, accented chars, emoji in
    metadata), read_text() raises UnicodeDecodeError. In doctor.py this is
    caught and mis-reported as 'config.json is missing or invalid' (false
    negative); in build_plan() called directly it is an uncaught crash.

    Fixed: read_text(encoding='utf-8') in both resource_plan.py and doctor.py.

P2: int(cfg.get('kv_lora_rank', 0)) crashes with TypeError if the key is
    present but null (JSON null). dict.get() returns the default only when
    the key is ABSENT; a null value returns None, and int(None) raises
    TypeError. The engine validates against malformed configs in C but the
    Python planner did not.

    Fixed: int(cfg.get(key) or 0) — coerces both missing and null to 0.
    Applied to all 8 int(cfg.get(...)) calls in build_plan().

Co-authored-by: woolcoxm <13604288+woolcoxm@users.noreply.github.com>
2026-07-14 14:17:42 +02:00
woolcoxm a0e9c8dbe8 doctor: platform-aware engine.binary check — Windows has no X_OK bit (#178, fixes #141)
On Windows, os.access(path, os.X_OK) always returns True for any existing
file (NTFS has no execute bit; executability is governed by file extension,
not mode bits). So the test_non_executable_engine test — which chmods the
engine to 0o644 and expects 'fail' — could never pass on Windows.

Fixed doctor.py to use a platform-aware check: on Windows, any existing
file is executable; on POSIX, honor the mode bits via os.access(X_OK).

Fixed the test to assert the correct per-platform expectation: 'pass' on
Windows (chmod is a no-op for executability), 'fail' on POSIX.

Co-authored-by: woolcoxm <13604288+woolcoxm@users.noreply.github.com>
2026-07-14 13:49:17 +02:00
ZacharyZcR 8f5f3e3a2b coli doctor: read-only setup/health diagnostics (path, config, shards, disk, RAM budget, placement) (#33)
* Add read-only coli doctor diagnostics

* Fix doctor JSON output assertion
2026-07-11 19:39:13 +02:00