Contract, service and tests (fake engine, no GPU). Scores through the checkpoint's own inference.py (DecisionEngine.predict, sha256-pinned); maps semif decisions onto Jev choice questions, packs /decide/shared into calls of at most 16, runs orderings in waves, and keeps semif's error mapping, admission, body limit and hard VRAM cap. Deltas from semif-serve are listed in the contract.
24 lines
965 B
Python
24 lines
965 B
Python
"""Entry point: INV-5, offline before torch/transformers load. Contract: intern-decision-serve.contract.md."""
|
|
import os
|
|
|
|
from fake_engine import FakeEngine
|
|
|
|
|
|
def test_app_from_env_goes_offline_before_the_engine_loads(monkeypatch):
|
|
from intern_decision_serve import engine as engine_module
|
|
from intern_decision_serve import main
|
|
seen = {}
|
|
|
|
def fake_load(settings, **_kw):
|
|
seen["offline"] = (os.environ.get("HF_HUB_OFFLINE"), os.environ.get("TRANSFORMERS_OFFLINE"))
|
|
seen["token"] = settings.api_token
|
|
return FakeEngine()
|
|
|
|
monkeypatch.delenv("HF_HUB_OFFLINE", raising=False)
|
|
monkeypatch.delenv("TRANSFORMERS_OFFLINE", raising=False)
|
|
monkeypatch.setenv("INTERN_DECISION_API_TOKEN", "k" * 40)
|
|
monkeypatch.setattr(engine_module.TorchEngine, "load", staticmethod(fake_load))
|
|
app = main.app_from_env()
|
|
assert seen == {"offline": ("1", "1"), "token": "k" * 40}
|
|
assert app.title == "intern-decision-serve"
|