mindXtrain / tests /test_coach_dcoach_api.py
Gregory-L's picture
fork mindXtrain from GitHub (Professor-Codephreak/mindXtrain@661bd41) as the mindX-specific line
dfb775d verified
Raw History Blame Contribute Delete
3.61 kB
"""dcoach page routes + decentralized panel + prompt-eval + streamed proof loop."""
from __future__ import annotations
import json
from fastapi.testclient import TestClient
from mindxtrain.operator.app import app
client = TestClient(app)
def test_dcoach_and_prompts_pages_serve():
for path in ("/coach/dcoach", "/coach/prompts"):
r = client.get(path)
assert r.status_code == 200, r.text
assert "text/html" in r.headers["content-type"]
def test_decentralized_panel_data():
r = client.get("/coach/api/decentralized")
assert r.status_code == 200, r.text
data = r.json()
assert data["thesis"]
names = {n["name"] for n in data["networks"]}
# every 2026 network the deep-dive covers is represented
assert {"Templar · Bittensor SN3", "Gensyn", "Pluralis · Node0"} <= names
for n in data["networks"]:
assert {"name", "what", "hardware", "token", "fit"} <= set(n)
assert any("Verde" in f["maps_to"] for f in data["fit"])
def test_eval_prompt_similarity_only():
# no judge → only the free semantic-similarity evaluator runs
r = client.post("/coach/api/eval/prompt", json={
"query": "who are you?",
"response": "i am codephreak, augmentic intelligence.",
"reference": "i am codephreak, augmentic intelligence.",
"use_judge": False,
})
assert r.status_code == 200, r.text
body = r.json()
assert "semantic_similarity" in body["scores"]
assert "correctness" not in body["scores"]
assert body["scores"]["semantic_similarity"]["score"] > 0.9
assert body["overall"] > 0.9 and body["advantageous"] is True
def test_dcoach_run_streams_phases(monkeypatch):
"""Patch the heavy loop with a fast fake; assert the SSE bridge streams phases
+ the terminal result + [DONE]."""
from mindxtrain.governance import classroom as _cr
from mindxtrain.governance import proof_loop as _pl
report = _cr.ClassroomReport(
inquiries=["who?"], before=["an AI"], after=["codephreak"],
before_recall=0.1, recall=0.6, imprint_delta=0.5,
pairwise_after_better=1.0, persona_maintained=True, passed=True,
)
def _fake(*, run_id, on_event=None, **kw):
if on_event:
on_event("dataset", "authored 5 rows")
on_event("train", "imprinting…")
return _pl.ProofResult(
run_id=run_id, dataset_path="/tmp/s.jsonl", rows=5,
train_params={"epochs": 12, "grad_accum": 1, "per_device": 1},
classroom=report, boardroom_outcome="approved",
boardroom_rationale="approved 3-0", passed=True,
next_params={"epochs": 12, "grad_accum": 1, "per_device": 1},
)
monkeypatch.setattr(_pl, "run_proof_loop", _fake)
with client.stream("POST", "/coach/api/dcoach/run",
json={"persona": "codephreak", "run_id": "t1"}) as resp:
assert resp.status_code == 200
events = []
for line in resp.iter_lines():
if line.startswith("data:"):
payload = line[len("data:"):].strip()
if payload == "[DONE]":
events.append({"phase": "done"})
else:
events.append(json.loads(payload))
phases = [e["phase"] for e in events]
assert phases[0] == "start"
assert "dataset" in phases and "train" in phases
assert "result" in phases and phases[-1] == "done"
result = next(e["result"] for e in events if e["phase"] == "result")
assert result["passed"] is True
assert result["boardroom_outcome"] == "approved"