diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md
index e65883463..14c8ebf8c 100644
--- a/docs/product-technical-gap-baseline.md
+++ b/docs/product-technical-gap-baseline.md
@@ -19,7 +19,7 @@
## 3. General Architecture Gaps
- **DB Architecture**: Ensure PostgreSQL is strictly used (no file DBs), 3rd normal form is maintained, and Hot Partitions are handled. DB locks must be managed (or use read/write replicas).
- **Zotero Integration**: Papers and standards referenced by TEPP must be synced via Local Zotero API (http://localhost:23119/api/) and cited using APA 7th edition in docstrings.
-- **Testing**: We need actual testing of Psychometrics (Fast-MLSIRM parameter calibration, RMSE of estimates, Fixed-Item Parameter Calibration, CAT) against synthetic/demo data.
+- **Testing**: Partially resolved -- `tests/test_fast_mlsirm_gpcm_recovery.py` (new) simulates polytomous responses from known true item parameters and person thetas under the GPCM (Muraki, 1993) formula (`fast_mlsirm` ships no polytomous-specific simulator, so the response-generation formula is implemented directly in the test, matching `PolytomousFit`'s own documented parameterization), fits them with `fast_mlsirm.fit_polytomous` under the GPCM model -- the same function/model option and iteration bound `period_report.py`'s production code uses -- and asserts the recovered EAP thetas are close to true by RMSE and correlation (GPCM: RMSE ~0.30, correlation ~0.95). This is real theta-recovery accuracy testing against synthetic data with known ground truth, not item-parameter calibration or an infra-only smoke test. Still open: item-parameter calibration; an equivalent GRM (Samejima, 1969) recovery test (`tests/test_fast_mlsirm_grm_recovery.py`) is in progress on a separate branch and is not yet part of this repository; Fixed-Item Parameter Calibration (Kim, 2006 FIPC -- `period_report.py` uses this for later periods, untested) and CAT remain unverified -- though `fast_mlsirm.cat_simulate_polytomous` (a real adaptive-test simulator over a fitted GRM/GPCM bank, Dodd, De Ayala & Koch, 1995) was found to exist and is a concrete next step, not yet exercised anywhere in this repo's tests.
- **Security & Compliance**: PII masking cannot break the system. Need SOC 2 and CSAP compliance alternatives to blind PII masking.
- **LLM Orchestration**: Ensure ALL LLM calls route through `contextual-orchestrator` utilizing API keys (BYTEZ, NVIDIA, OPENROUTER, OPENAI) with auto model discovery and optimal reasoning effort allocation (Fugu/Conductor/TRINITY research).
diff --git a/frontend/src/App.test.tsx b/frontend/src/App.test.tsx
index 7462abd2c..70eb27590 100644
--- a/frontend/src/App.test.tsx
+++ b/frontend/src/App.test.tsx
@@ -41,6 +41,9 @@ describe("App, unauthenticated", () => {
state: expect.objectContaining({ returnUrl: expect.stringMatching(/^\//) }),
}),
);
+ // Persisted as a fallback in case the OIDC state round-trip is dropped
+ // (see oidcReturnUrl.ts's restoreOidcReturnUrl, consumed in main.tsx).
+ expect(window.sessionStorage.getItem("lineageweave.oidc.returnUrl")).toMatch(/^\//);
});
});
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 6fba0dd41..1b5b351ab 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -4610,7 +4610,8 @@ export default function App({ showLabPanels = false }: { showLabPanels?: boolean