NaN cells kept via str(nan) sorted arbitrarily under reverse=True,
scrambling finding order run to run. _score_case and the Vast
handler keep finite scores only (pd.notna); parseDataframe,
parseLabel and normalize skip null/empty before Number() so no
zero-scored phantom findings appear.
Verified: pyflakes clean; PARSER_NULL_OK; tsc clean; build green.
chore: add Vast.ai Serverless groundwork, traffic stays on ZeroGPU
isaac
816a70e
handler.py (FastAPI POST /score) reuses intake staging plus the
vendored chain; incoming/ isolated, volume copy mirrors app.py;
errors as HTTP 400 detail; MODEL_ROOT/CONFIGS_ROOT=/srv/ckpt.
vast-config.json holds the RTX 4090 single-replica spec.
Verified: pyflakes clean; vast-config asserted; Dockerfile COPY
sources resolve. Live /score deferred to activation.