a11oy / tests /test_hickok_ingest.py
betterwithage's picture
sync(space): full source mirror — resolve all GitHub<->Space drift (CTO)
a6a5d8e verified
Raw
History Blame
7.13 kB
# SPDX-License-Identifier: Apache-2.0
# © 2026 Lutar, Stephen P. — SZL Holdings · ORCID 0009-0001-0110-4173 · Doctrine v11 LOCKED 749/14/163
# Authored by Yachay (CTO) — Co-Authored-By: Perplexity Computer Agent.
"""
tests/test_hickok_ingest.py — pytest suite for the Hickok cognitive-neuroscience
ingest (Lutar Anchors A36/A37/A38).
Required tests (Task G):
(1) dorsal routes an imperative intent
(2) ventral routes an interrogative intent
(3) Spt delta ≤ ε for matched inputs
(4) WHEN returns the phase mechanism string ("low_freq_phase_Heschl")
(5) WHAT returns the gamma mechanism string ("gamma_planum_temporale")
Plus additive coverage: ambiguous → dual gate-fail (A36), neuro_citations present
on every receipt (Task E), and the dual-stream router middleware classification.
"""
from __future__ import annotations
import pytest
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from fastapi.testclient import TestClient
import a11oy_v4_hickok as H
EPSILON = 1e-3
@pytest.fixture(scope="module")
def client() -> TestClient:
app = FastAPI()
# Routes the dual-stream router middleware watches (stubbed so we can assert
# the middleware classification headers without standing up the real agent).
@app.post("/api/a11oy/v4/agent/ask")
async def _ask(request: Request): # noqa: ANN202
body = await request.json()
return JSONResponse({"echo": body})
@app.post("/api/a11oy/v4/predict")
async def _predict(request: Request): # noqa: ANN202
body = await request.json()
return JSONResponse({"echo": body})
status = H.register(app, "a11oy")
assert status["registered"] is True
return TestClient(app)
# ---------------------------------------------------------------------------
# (1) dorsal routes an imperative intent
# ---------------------------------------------------------------------------
def test_dorsal_routes_imperative(client: TestClient) -> None:
r = client.post("/api/a11oy/v4/dorsal", json={"intent": "sign the receipt"})
assert r.status_code == 200
data = r.json()
assert data["lutar_anchor"] == "A36"
assert "motor_pathway" in data
assert data["classification"]["stream"] == "dorsal"
assert data["classification"]["gate_pass"] is True
# neuro_citations present with the dual-stream DOI (Task E)
assert {"doi": "10.1038/nrn2113"} in data["neuro_citations"]
assert data["signed_receipt_id"]
# ---------------------------------------------------------------------------
# (2) ventral routes an interrogative intent
# ---------------------------------------------------------------------------
def test_ventral_routes_interrogative(client: TestClient) -> None:
r = client.post("/api/a11oy/v4/ventral", json={"intent": "what does this mean?"})
assert r.status_code == 200
data = r.json()
assert data["lutar_anchor"] == "A36"
assert "meaning" in data
assert data["classification"]["stream"] == "ventral"
assert data["classification"]["gate_pass"] is True
assert {"doi": "10.1038/nrn2113"} in data["neuro_citations"]
# ---------------------------------------------------------------------------
# (3) Spt delta ≤ ε for matched inputs
# ---------------------------------------------------------------------------
def test_spt_delta_within_epsilon_for_matched(client: TestClient) -> None:
r = client.post("/api/a11oy/v4/spt",
json={"sensory_target": 1.0, "motor_plan": 1.0})
assert r.status_code == 200
data = r.json()
assert data["delta"] <= EPSILON
assert {"doi": "10.1152/jn.91344.2008"} in data["neuro_citations"]
# A mismatched pair must produce a strictly larger delta.
r2 = client.post("/api/a11oy/v4/spt",
json={"sensory_target": 1.0, "motor_plan": 9.0})
assert r2.json()["delta"] > EPSILON
# ---------------------------------------------------------------------------
# (4) WHEN returns the phase mechanism string
# ---------------------------------------------------------------------------
def test_when_returns_phase_mechanism(client: TestClient) -> None:
r = client.post("/api/a11oy/v4/when", json={"stream": "left-Heschl"})
assert r.status_code == 200
data = r.json()
assert data["mechanism"] == "low_freq_phase_Heschl"
assert "phase_prediction" in data
assert {"doi": "10.1101/474718"} in data["neuro_citations"]
# ---------------------------------------------------------------------------
# (5) WHAT returns the gamma mechanism string
# ---------------------------------------------------------------------------
def test_what_returns_gamma_mechanism(client: TestClient) -> None:
r = client.post("/api/a11oy/v4/what", json={"stream": "planum-temporale"})
assert r.status_code == 200
data = r.json()
assert data["mechanism"] == "gamma_planum_temporale"
assert "semantic_prediction" in data
assert {"doi": "10.1101/474718"} in data["neuro_citations"]
# ---------------------------------------------------------------------------
# Additive coverage
# ---------------------------------------------------------------------------
def test_ambiguous_intent_is_dual_gate_fail() -> None:
"""A36 says EXACTLY one stream — an ambiguous intent is `dual` and fails."""
cls = H.classify_stream("banana table widget")
assert cls["stream"] == "dual"
assert cls["gate_pass"] is False
assert cls["lutar_anchor"] == "A36"
def test_dual_stream_router_middleware_headers(client: TestClient) -> None:
"""The middleware classifies /agent/ask + /predict and writes A36 headers,
while preserving the request body for the downstream handler."""
r = client.post("/api/a11oy/v4/agent/ask", json={"intent": "deploy the build"})
assert r.json()["echo"] == {"intent": "deploy the build"} # body preserved
assert r.headers.get("X-A11oy-Stream") == "dorsal"
assert r.headers.get("X-A11oy-Stream-Gate") == "pass"
assert r.headers.get("X-A11oy-Stream-Anchor") == "A36"
r2 = client.post("/api/a11oy/v4/predict", json={"intent": "why does this fail?"})
assert r2.headers.get("X-A11oy-Stream") == "ventral"
r3 = client.post("/api/a11oy/v4/agent/ask", json={"intent": "xyzzy plugh"})
assert r3.headers.get("X-A11oy-Stream") == "dual"
assert r3.headers.get("X-A11oy-Stream-Gate") == "fail"
def test_every_receipt_carries_neuro_citations() -> None:
"""Task E: sign_khipu_receipt injects neuro_citations (default []) on the receipt."""
signed = H._sign("probe", {"x": 1}, [H.CITE_DUAL_STREAM], stream="dorsal")
assert "neuro_citations" in signed["receipt"]
cites = signed["receipt"]["neuro_citations"]
assert isinstance(cites, list) and len(cites) >= 1
assert all("doi" in c and "label" in c for c in cites)
def test_dsse_default_empty_neuro_citations() -> None:
"""Task E: a receipt signed with no citations gets an empty list, not an error."""
import szl_dsse as dsse
out = dsse.sign_khipu_receipt({"organ": "test", "action": "noop"})
assert out["receipt"]["neuro_citations"] == []