Banker's Wrapped v1.8.1
The first live post-flip run exposed that WS-1's chat path could never reach NVIDIA NIM: the
Genblaze chat wrapper always posts to GMI's endpoint, so nvidia-nim/...-prefixed ids (and the
documented "NIM fallback") 404'd — only mocked tests exercised the route. Found before any
credits were burned (the 404 bills nothing).
Fixed
- Real NVIDIA NIM routing (
GenblazeClient.generate_script_text):nvidia-nim/-prefixed
model ids are stripped and redirected to NIM's OpenAI-compatible endpoint via the SDK chat
wrapper'sbase_urloverride (newnvidia_nim_api_key/nvidia_nim_base_urlclient params).
Provider provenance is derived from the route actually taken, not the model-id prefix. - Automatic NIM fallback now exists (
NarrativeAgent._try_genblaze): after the primary
model exhausts its attempts (provider failure or invalid JSON), one final SDK-routed attempt
runs against NVIDIA NIM — previously claimed in docs but not implemented. GMI_CHAT_MODELdefault was invalid: GMI's catalog serves nometa-llama/*models
(verified viaGET /v1/models). Production model is nowopenai/gpt-5.4-mini
($0.75/$4.50 per M tokens ≈ $0.005/run); both routes live-validated with 1-token probes.llm.cost_usdingeneration.jsonis now computed from GMI's published per-token pricing
when the SDK reports none (the SDK intentionally returnscost_usd=None); NIM runs record $0.
Changed
- 5 new tests (NIM-fallback success/exhaustion in NarrativeAgent; chat routing +
cost computation in GenblazeClient); coverage 97.8%. - Docs sweep: README (pipeline diagram, timing table, tech stack,
models_usedexample,
release badge →releases/latest), DEVPOST providers table, COSTS per-run table,
CLAUDE.md,.env.example— all reflect GMIopenai/gpt-5.4-miniprimary + NIM fallback.