diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d53d916..f36fbed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,10 +12,18 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.12" - - name: Install dependencies + cache: pip + cache-dependency-path: requirements-lock.txt + - name: Install pinned dependencies run: | python -m pip install --upgrade pip - python -m pip install -r requirements-dev.txt + python -m pip install -r requirements-lock.txt + - name: Publication guard + run: python tools/publication_guard.py + - name: Dependency audit + run: | + python -m pip install pip-audit + pip-audit -r requirements-lock.txt - name: Syntax scan run: | python - <<'PY' @@ -43,21 +51,24 @@ jobs: python -m emu_advisor.evaluation eval_sets/v1_gold.jsonl python -m emu_advisor.evaluation eval_sets/v1_hard.jsonl python -m emu_advisor.evaluation eval_sets/emu_gold_seed.jsonl - - name: Review status check - run: python -m emu_advisor.eval_review status eval_sets/v1_gold.jsonl eval_sets/v1_hard.jsonl eval_sets/emu_gold_seed.jsonl + - name: Verified gold review status + run: python -m emu_advisor.eval_review status eval_sets/v1_gold.jsonl + - name: Auxiliary evaluation status + run: python -m emu_advisor.eval_review status eval_sets/v1_hard.jsonl eval_sets/emu_gold_seed.jsonl browser-smoke: runs-on: ubuntu-latest - continue-on-error: true steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - - name: Install dependencies + cache: pip + cache-dependency-path: requirements-lock.txt + - name: Install pinned dependencies run: | python -m pip install --upgrade pip - python -m pip install -r requirements-dev.txt - python -m playwright install chromium - - name: Optional browser smoke - run: python tools/browser_smoke.py --start-server --skip-if-unavailable + python -m pip install -r requirements-lock.txt + python -m playwright install --with-deps chromium + - name: Browser smoke + run: python tools/browser_smoke.py --start-server diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8b1c216 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Ali Farrokhnejad + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PUBLICATION.md b/PUBLICATION.md new file mode 100644 index 0000000..0ee9f69 --- /dev/null +++ b/PUBLICATION.md @@ -0,0 +1,28 @@ +# Publication Readiness + +EMUAdvisor may be published by the repository owner. The source code is released under the MIT License. The project remains independent research/software work and is not an official Eastern Mediterranean University administrative service. + +## Release checklist + +- [x] Publishing rights confirmed by the repository owner. +- [x] MIT license added. +- [x] `eval_sets/v1_gold.jsonl` has been reviewed and verified by the project author and university staff. +- [x] Browser/admin authentication no longer accepts credentials from URL query parameters; protected requests use headers and the browser UI stores credentials only in tab-scoped session storage. +- [x] `eval_sets/emu_gold_seed.jsonl` remains explicitly described as provisional unless it completes the same review process. +- [x] Generated crawl, index, audit, review, and conversation artifacts remain outside the committed public-release workflow. +- [x] Pinned Python dependencies and a dependency audit are part of CI. +- [ ] Confirm no secrets or non-public university material exist in Git history before changing repository visibility. +- [ ] Run the required GitHub Actions core and browser-smoke jobs successfully on the final publication branch. +- [x] Keep the README disclaimer that this is independent research software, not an official EMU administrative service. + +## Evaluation terminology + +`eval_sets/v1_gold.jsonl` is the verified human-reviewed gold evaluation set. Its cases were reviewed by the project author and university staff. Public metrics reported for `v1_gold` should still be described as local evaluation results for this fixed corpus and implementation, not production-service guarantees or evidence of universal model quality. + +`eval_sets/v1_hard.jsonl` is a hard regression suite focused on difficult table, grouped-query, and refusal behavior. It is not presented as a second gold benchmark unless separately reviewed and documented as such. + +`eval_sets/emu_gold_seed.jsonl` remains a provisional seed set until its source bindings and labels complete the same review process. The historical filename is retained for compatibility; public documentation should call it a provisional evaluation seed rather than a verified gold benchmark. + +## Public-release principle + +The public repository should demonstrate retrieval, citation, refusal, evaluation, local-generation, and operational safeguards without implying institutional endorsement or production deployment. Claims should distinguish verified benchmark results from regression results, provisional evaluation material, and runtime/deployment limitations. diff --git a/README.md b/README.md index 6fc87a3..eabe272 100644 --- a/README.md +++ b/README.md @@ -1,161 +1,246 @@ -# EMU Advisor +# EMUAdvisor + +Local RAG assistant for answering Eastern Mediterranean University regulation questions from official cited sources. + +EMUAdvisor crawls official EMU regulation pages and linked PDFs, builds language-separated retrieval corpora, retrieves and reranks supporting evidence, and produces cited answers with refusal and clarification behavior when evidence is insufficient or the question falls outside the indexed regulation scope. + +> **Independent project:** EMUAdvisor is research/software work and is not an official Eastern Mediterranean University administrative service. Its answers are informational and must not be treated as final university decisions. + +## What this project demonstrates + +- end-to-end RAG ingestion over official HTML and PDF sources; +- English/Turkish corpus routing and query understanding; +- hybrid retrieval with structured table evidence and optional Qdrant storage; +- extractive answers, optional local Ollama generation, and fallback behavior; +- citations, refusal/clarification policies, and conflict-aware responses; +- fixed-set evaluation, human-reviewed gold data, regression suites, and review tooling; +- FastAPI APIs, local diagnostics, browser smoke testing, CI, and reproducible dependency snapshots. + +## Architecture + +```text +Official EMU HTML/PDF sources + | + v + crawler -> parser/table extraction -> normalized chunks + | | + | v + | local or Qdrant index + | | + +-----------------------------+ + v +question -> language/query understanding -> hybrid retrieval + | + v + evidence + answerability decision + | | + v v + extractive answer refuse/clarify + | + +---- optional local Ollama generation + | + v + cited user response +``` + +## Evaluation snapshot + +The primary benchmark is `eval_sets/v1_gold.jsonl`, a **60-case human-reviewed and verified gold set** reviewed by the project author and university staff. + +Recorded extractive results on the fixed corpus snapshot: + +| Metric | `v1_gold` | +|---|---:| +| Cases | 60 | +| Retrieval top-1 | 92.31% | +| Retrieval top-3 | 98.08% | +| Retrieval top-5 | 100.00% | +| Response accuracy | 100.00% | +| Rejection accuracy | 100.00% | +| Clarification accuracy | 100.00% | +| Citation coverage | 100.00% | +| Extractive latency p50 | 674 ms | +| Extractive latency p95 | 1,267 ms | + +These are local results on a fixed benchmark and corpus snapshot, **not production-service guarantees or universal model-quality claims**. -Local-only prototype for answering Eastern Mediterranean University regulation questions from official cited sources. +Additional evaluation material is intentionally separated: -## Scope +- `eval_sets/v1_hard.jsonl`: 50-case hard regression suite focused on table/broad-query/refusal behavior; +- `eval_sets/emu_gold_seed.jsonl`: provisional evaluation seed retained under its historical filename until it completes the same review process. -EMU Advisor is a demo-first RAG assistant for EMU staff. It answers questions about official EMU rules and regulations from `mevzuat.emu.edu.tr` and official linked PDFs, routes English and Turkish questions to separate corpora, and refuses or asks for clarification when evidence is weak or out of scope. +See `docs/DEMO_METRICS_SNAPSHOT.md` for the full recorded snapshot and `PUBLICATION.md` for evaluation/publication terminology. -This is not a production system and does not provide official legal or administrative decisions. All generated crawl, index, and evaluation artifacts are local and ignored under `artifacts/`. +## Corpus snapshot -## Current Demo Status +The recorded demo corpus contains: -- Live corpus artifact: 8,714 chunks from 119 official sources, including 22 PDFs. -- Structured evidence: table summaries, row-level table chunks, and derived salary facts for academic salary-scale comparisons. -- Candidate evaluation set: 60 assistant-curated cases, pending human review. -- Hard regression set: 50 assistant-curated table/broad-query cases in `eval_sets/v1_hard.jsonl`. -- Provisional gold seed: 50 cases in `eval_sets/emu_gold_seed.jsonl`, converted from the comprehensive analysis doc and pending source binding/human review. -- Latest extractive metrics on `v1_gold`: top-5 retrieval 100%, response accuracy 100%, rejection accuracy 100%, citation coverage 100%, p50 extractive latency 674 ms. -- Latest hard metrics on `v1_hard`: top-5 retrieval 100%, response accuracy 100%, rejection accuracy 100%, citation coverage 100%, p50 extractive latency 468 ms. -- Generated mode: local Ollama `qwen3:8b` is implemented and fallback-safe, but the bounded 2-second smoke metric run timed out on this machine. +- 8,714 chunks from 119 official sources; +- 22 linked official PDFs; +- 3,878 English and 4,836 Turkish chunks; +- structured table summaries, row-level table chunks, and derived table facts. -See `docs/DEMO_METRICS_SNAPSHOT.md` for the tracked metrics summary and sample outputs. -See `docs/BOARD_DEMO_READINESS.md` for the current board-demo readiness gate. +Generated crawl/index artifacts are intentionally ignored and are not committed to the repository. ## Setup +Python 3.12 is the CI reference environment. + +For the reproducible portfolio/demo environment: + ```powershell python -m venv .venv .\.venv\Scripts\Activate.ps1 -pip install -r requirements-dev.txt +python -m pip install --upgrade pip +pip install -r requirements-lock.txt ``` +`requirements.txt` and `requirements-dev.txt` retain the broader dependency declarations; `requirements-lock.txt` records the exact tested snapshot used by CI. + Optional local services: -- Ollama for generated answers: `qwen3:8b` -- Ollama embeddings: `qwen3-embedding:4b` -- Qdrant for production-style vector storage +- Ollama generation model: `qwen3:8b`; +- Ollama embedding model: `qwen3-embedding:4b`; +- Qdrant for service-backed vector storage. -No external answering, embedding, reranking, or generation APIs are used. +The answering/retrieval path does not require external hosted LLM APIs. -## Build A Demo Corpus +## Build a local corpus ```powershell -python -m emu_advisor.pipeline build --seed https://mevzuat.emu.edu.tr/content.htm --seed https://mevzuat.emu.edu.tr/Content-en.htm --out artifacts\demo_corpus\latest --max-pages 1000 --include-pdfs -python -m emu_advisor.validate_jsonl artifacts\demo_corpus\latest\chunks.jsonl --kind chunk +python -m emu_advisor.pipeline build ` + --seed https://mevzuat.emu.edu.tr/content.htm ` + --seed https://mevzuat.emu.edu.tr/Content-en.htm ` + --out artifacts\demo_corpus\latest ` + --max-pages 1000 ` + --include-pdfs + +python -m emu_advisor.validate_jsonl ` + artifacts\demo_corpus\latest\chunks.jsonl ` + --kind chunk ``` -The server automatically loads `artifacts/demo_corpus/latest/chunks.jsonl` when present and falls back to a tiny fixture corpus otherwise. +The application loads `artifacts/demo_corpus/latest/chunks.jsonl` when present and otherwise falls back to a small fixture corpus for development/testing. -## Evaluate +## Run the application ```powershell -python -m emu_advisor.evaluation eval_sets\v1_gold.jsonl -python -m emu_advisor.evaluation eval_sets\v1_hard.jsonl -python -m emu_advisor.evaluation eval_sets\emu_gold_seed.jsonl -python -m emu_advisor.metrics run --cases eval_sets\v1_gold.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --out artifacts\metrics\latest -python -m emu_advisor.metrics run --cases eval_sets\v1_hard.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --out artifacts\metrics\hard_latest -python -m emu_advisor.metrics run --all-modes --cases eval_sets\emu_gold_seed.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --out artifacts\metrics\mode_comparison -python -m emu_advisor.metrics run --cases eval_sets\v1_gold.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --out artifacts\metrics\latest_generated --include-generation --ollama-model qwen3:8b --ollama-timeout-s 2 +python -m uvicorn emu_advisor.server:app --host 127.0.0.1 --port 8000 ``` -Metrics outputs are written under ignored `artifacts/metrics/` directories as `metrics.json`, `metrics.md`, `per_case.csv`, and `human_review.csv`. All-mode runs also write `comparison.json` and `comparison.md`. +Then open: -Human-review helpers: +- `http://127.0.0.1:8000` for the landing page; +- `http://127.0.0.1:8000/admin?view=user` for the staff-facing chat; +- `http://127.0.0.1:8000/admin?view=diagnostics` for local diagnostics. -```powershell -python -m emu_advisor.eval_review status eval_sets\v1_gold.jsonl eval_sets\v1_hard.jsonl eval_sets\emu_gold_seed.jsonl -python -m emu_advisor.eval_review export-csv --cases eval_sets\v1_gold.jsonl --out artifacts\review\v1_gold_review.csv -python -m emu_advisor.eval_review bind-seed --cases eval_sets\emu_gold_seed.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --out artifacts\review\emu_gold_seed.bound.jsonl -``` +### Admin authentication -Local benchmark probes: +Protected profiles use `EMU_ADVISOR_ADMIN_TOKEN`. ```powershell -python -m emu_advisor.benchmark embedding --cases eval_sets\v1_gold.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --embedding hash -python -m emu_advisor.benchmark generation --cases eval_sets\v1_gold.jsonl --chunks artifacts\demo_corpus\latest\chunks.jsonl --model qwen3:8b --timeout-s 30 --limit 5 +$env:EMU_ADVISOR_PROFILE="production" +$env:EMU_ADVISOR_ADMIN_TOKEN="" ``` -## Run The Demo UI +API clients send the token through either: -```powershell -python -m uvicorn emu_advisor.server:app --host 127.0.0.1 --port 8000 +```text +Authorization: Bearer ``` -Open `http://127.0.0.1:8000` for the landing page, then **Open regulation assistant** to reach the chat UI. +or: -Open `http://127.0.0.1:8000/admin?view=user` for the staff-facing chat (User mode). +```text +X-EMU-Admin-Token: +``` -Open `http://127.0.0.1:8000/admin?view=diagnostics` for the local diagnostics console (metrics, `/ask`, raw hits). +The browser diagnostics view provides a password-style token field. The value is stored only in the current tab's `sessionStorage` and sent through the `Authorization` header. **Admin tokens are not accepted from URL query parameters.** -If `EMU_ADVISOR_ADMIN_TOKEN` is set, debug/admin endpoints require `Authorization: Bearer ` or `X-EMU-Admin-Token: `. The browser admin console can be opened once with `http://127.0.0.1:8000/admin?admin_token=`; the token is kept in browser session storage for same-session admin calls. +See `SECURITY.md` for the security boundary and deployment cautions. -API endpoints: +## API surface + +Public/user path: - `GET /health` - `GET /whoami` +- `POST /chat` +- `POST /chat/stream` + +Diagnostics/admin path: + - `GET /metrics` - `GET /metrics/modes` - `GET /analytics` - `GET /corpus/status` - `GET /llm/status` -- `POST /chat` - `POST /ask` - `POST /ask/stream` -`POST /chat` is the sanitized public endpoint. `POST /ask` supports `answer_style=extractive|generated|both` and returns full diagnostics for the admin console. Generated mode falls back to extractive when the local Ollama model is unavailable or a generation call fails. +`POST /chat` returns the sanitized user-facing response. `POST /ask` exposes richer retrieval/generation diagnostics for the local admin console. -## Qdrant Backend +## Qdrant backend -Local development defaults to the in-memory store. Production profile requires Qdrant. +Development defaults to the local in-memory store. A production profile requires Qdrant. ```powershell $env:EMU_ADVISOR_VECTOR_BACKEND="qdrant" $env:EMU_ADVISOR_QDRANT_URL="http://localhost:6333" $env:EMU_ADVISOR_QDRANT_COLLECTION="emu_regulations" -python -m emu_advisor.index build --chunks artifacts\demo_corpus\latest\chunks.jsonl --backend qdrant --collection emu_regulations + +python -m emu_advisor.index build ` + --chunks artifacts\demo_corpus\latest\chunks.jsonl ` + --backend qdrant ` + --collection emu_regulations ``` -For an embedded local Qdrant index, useful when Docker or a Qdrant server is unavailable: +Embedded local Qdrant can also be used for development when a service is unavailable. -```powershell -$env:EMU_ADVISOR_VECTOR_BACKEND="qdrant" -$env:EMU_ADVISOR_QDRANT_PATH="artifacts\qdrant\latest" -python -m emu_advisor.index build --chunks artifacts\demo_corpus\latest\chunks.jsonl --backend qdrant --collection emu_regulations --qdrant-path artifacts\qdrant\latest -``` +## Evaluation and review -For production profile: +Run the verified gold set: ```powershell -$env:EMU_ADVISOR_PROFILE="production" -$env:EMU_ADVISOR_ADMIN_TOKEN="" -python -m uvicorn emu_advisor.server:app --host 127.0.0.1 --port 8000 +python -m emu_advisor.evaluation eval_sets\v1_gold.jsonl +python -m emu_advisor.eval_review status eval_sets\v1_gold.jsonl ``` -If Qdrant is unavailable in production profile, startup fails. In development/test profile, Qdrant falls back to the local store and `/corpus/status` reports the warning. - -Check index connectivity: +Run auxiliary regression/evaluation material: ```powershell -python -m emu_advisor.index health --backend qdrant --collection emu_regulations --qdrant-url http://localhost:6333 +python -m emu_advisor.evaluation eval_sets\v1_hard.jsonl +python -m emu_advisor.evaluation eval_sets\emu_gold_seed.jsonl +python -m emu_advisor.eval_review status eval_sets\v1_hard.jsonl eval_sets\emu_gold_seed.jsonl ``` +Metrics runs write ignored artifacts such as `metrics.json`, `per_case.csv`, and review CSVs under `artifacts/`. + ## Verification +The GitHub Actions pipeline uses the pinned dependency snapshot and requires both core verification and the browser smoke test. + +Equivalent local checks: + ```powershell +python tools\publication_guard.py python -m unittest discover -s tests -python -m emu_advisor.validate_jsonl artifacts\demo_corpus\latest\chunks.jsonl --kind chunk python -m emu_advisor.evaluation eval_sets\v1_gold.jsonl python -m emu_advisor.evaluation eval_sets\v1_hard.jsonl -python -c "from emu_advisor.server import app; print(app.title)" -python tools\browser_smoke.py --start-server --skip-if-unavailable -python -m emu_advisor.readiness --out docs\BOARD_DEMO_READINESS.md +python -m emu_advisor.evaluation eval_sets\emu_gold_seed.jsonl +python tools\browser_smoke.py --start-server ``` -## Known Limits +CI additionally audits the pinned Python dependencies with `pip-audit`. + +## Known limits + +- The recorded metrics describe a fixed local evaluation/corpus snapshot, not production availability. +- `v1_gold` is verified; `v1_hard` and `emu_gold_seed` retain separate review status and should not be silently merged into the gold claim. +- Generated answers are optional and fallback-safe; the recorded bounded `qwen3:8b` smoke run timed out at a 2-second generation limit. +- A service-backed Qdrant production deployment and target production hardware have not yet been validated in the recorded environment. +- The repository is intended for local research, evaluation, and demonstration; public Internet deployment requires an independent security/deployment review. + +## License -- The 60-case set and 50-case hard set are assistant-curated and must be manually reviewed before calling either a human-reviewed gold set. -- Generated answers are optional; the latest bounded smoke run detected `qwen3:8b` but timed out at 2 seconds, so extractive fallback is the validated continuity path. -- Broad scholarship prompts run deterministic grouped subqueries; p50 is still under 1 second, but p95 can be higher than direct extractive questions. -- Qdrant adapter and CLI are implemented with mocked unit coverage and an embedded local Qdrant index build; no Docker/live Qdrant server run has been validated in this environment. -- Metrics are local demo metrics, not production service guarantees. +MIT. See `LICENSE`. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..6ee60af --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,40 @@ +# Security Policy + +EMUAdvisor is a local research/demo application and is not an official Eastern Mediterranean University service. + +## Supported use + +The repository is intended for local development, evaluation, and demonstration. It should not be exposed directly to the public Internet without an independent deployment/security review, service hardening, and validation of the target Qdrant/runtime environment. + +## Admin authentication + +When `EMU_ADVISOR_PROFILE=production`, `EMU_ADVISOR_ADMIN_TOKEN` is required for protected diagnostic/data APIs. Admin credentials must be supplied through request headers. + +The static `/admin` application shell remains reachable so a user can enter the credential locally; loading that HTML does not grant access to protected metrics, retrieval diagnostics, analytics, corpus status, or `/ask` responses. + +Tokens must **not** be placed in URLs, query parameters, source files, screenshots, logs, or committed environment files. Query parameters are not an authentication mechanism. + +The browser diagnostics client accepts a token through an explicit password-style field, stores it in `sessionStorage` for the current browser tab only, and sends it as an `Authorization: Bearer` header. Clearing or closing the tab removes that browser-session credential. + +## Secrets and local artifacts + +Do not commit: + +- `.env` files or service credentials; +- local Qdrant data; +- generated crawl/index artifacts; +- audit logs or chat histories; +- human-review working files containing information not intended for publication; +- private university material not already publicly available from official sources. + +## Dependency security + +`requirements-lock.txt` is the pinned Python environment used by CI. CI installs that snapshot and runs `pip-audit` before the test/evaluation stages. Dependency updates should regenerate the lock file and rerun the complete core and browser verification jobs. + +## Publication safeguards + +`tools/publication_guard.py` enforces key release invariants, including verified-gold metadata, required publication files, and the absence of URL-based admin-token examples in the public tree. + +## Reporting + +If you find a security issue, report it privately to the repository owner rather than opening a public issue containing exploit details, credentials, or sensitive data. diff --git a/docs/BOARD_DEMO_READINESS.md b/docs/BOARD_DEMO_READINESS.md index 3e9d74d..ae86917 100644 --- a/docs/BOARD_DEMO_READINESS.md +++ b/docs/BOARD_DEMO_READINESS.md @@ -2,27 +2,29 @@ Status: `partial` -The local board demo is presentable with named gaps that must not be described as production-ready. +The local board demo is presentable with named deployment gaps that must not be described as production-ready. ## Checks | Check | Status | Detail | |---|---|---| | current product spec | `pass` | EMU_RAG_Current_System_Specs.md | -| full analysis | `pass` | docs\EMUAdvisor Full Analysis.md | -| demo storyboard | `pass` | docs\DEMO_STORYBOARD.md | -| publication checklist | `pass` | docs\PUBLICATION_CHECKLIST.md | -| candidate evaluation set | `pass` | eval_sets\v1_gold.jsonl | -| hard regression set | `pass` | eval_sets\v1_hard.jsonl | +| full analysis | `pass` | docs/EMUAdvisor Full Analysis.md | +| demo storyboard | `pass` | docs/DEMO_STORYBOARD.md | +| publication checklist | `pass` | docs/PUBLICATION_CHECKLIST.md | +| verified gold evaluation set | `pass` | eval_sets/v1_gold.jsonl | +| hard regression set | `pass` | eval_sets/v1_hard.jsonl | | latest metrics artifact | `pass` | top5=1.0 citation=1.0 | -| human-reviewed gold status | `blocked` | 160 cases still pending review | +| verified gold review status | `pass` | 60 cases; 0 pending | +| auxiliary evaluation review status | `partial` | 100 hard/seed cases retain separate review status | | production admin token | `partial` | not set for this local check | | live Qdrant service | `blocked` | service-backed Qdrant not documented in environment | -| local analytics log | `pass` | 193 audit events | +| local analytics log | `pass` | 193 audit events in recorded snapshot | ## Non-Negotiable Limits - This is a board-demo readiness report, not a production approval. -- Human-reviewed gold metrics remain blocked until manual labels are complete. +- `v1_gold` is human-reviewed and verified by the project author and university staff. +- `v1_hard` is a regression suite and `emu_gold_seed` is provisional unless separately reviewed and documented. - Production-style deployment remains blocked until service-backed Qdrant and target hardware are validated. - Generated mode remains extractive-first unless local model latency and answer quality are characterized. diff --git a/docs/DEMO_METRICS_SNAPSHOT.md b/docs/DEMO_METRICS_SNAPSHOT.md index a544a8e..a775164 100644 --- a/docs/DEMO_METRICS_SNAPSHOT.md +++ b/docs/DEMO_METRICS_SNAPSHOT.md @@ -1,6 +1,6 @@ # Demo Metrics Snapshot -Last updated: 2026-05-22 +Last updated: 2026-08-08 ## Corpus Snapshot @@ -13,11 +13,13 @@ Last updated: 2026-05-22 - Active artifact: `artifacts/demo_corpus/latest/chunks.jsonl` (ignored). - Embedded Qdrant index: `artifacts/qdrant/latest` (ignored), collection `emu_regulations`. -## Evaluation Snapshot +## Verified Gold Evaluation Evaluation set: `eval_sets/v1_gold.jsonl` -Review status: `assistant_curated_pending_human_review` +Review status: `human_reviewed_verified` + +The 60-case gold set has been reviewed and verified by the project author and university staff. The metrics below are results on this fixed local evaluation set and corpus snapshot; they are not production-service guarantees. | Metric | Value | |---|---:| @@ -36,7 +38,11 @@ Review status: `assistant_curated_pending_human_review` | Extractive latency p95 | 1,267 ms | | Failed cases | 0 | -Hard regression set: `eval_sets/v1_hard.jsonl` +## Hard Regression Suite + +Evaluation set: `eval_sets/v1_hard.jsonl` + +This 50-case suite targets difficult table/broad-query behavior and regressions. It is kept separate from the verified gold benchmark. | Metric | Value | |---|---:| @@ -54,19 +60,19 @@ Hard regression set: `eval_sets/v1_hard.jsonl` | Extractive latency p95 | 2,867 ms | | Failed cases | 0 | -Generated mode status: local Ollama service and `qwen3:8b` model were detected, but the bounded smoke generation with `--ollama-timeout-s 2` timed out. Generated metrics are therefore marked unavailable in `artifacts/metrics/latest_generated/metrics.json`; extractive and grouped answers remain the validated demo path. +## Generated Mode + +The local Ollama service and `qwen3:8b` model were detected, but the bounded smoke generation with `--ollama-timeout-s 2` timed out on the recorded machine. Generated metrics are therefore unavailable in that snapshot; extractive and grouped answers remain the validated continuity path. ## Failure Analysis -- Gold failed cases: 0. +- Verified-gold failed cases: 0. - Hard-regression failed cases: 0. -- Expected source missing from top-5: 0 in both sets. -- Missing citation: 0 in both sets. -- False refusal: 0 in both sets. -- False answer on refusal cases: 0 in both sets. -- Missing clarification: 0 in the gold set. - -Worst failed cases in the latest runs: none. +- Expected source missing from top-5: 0 in both recorded sets. +- Missing citation: 0 in both recorded sets. +- False refusal: 0 in both recorded sets. +- False answer on refusal cases: 0 in both recorded sets. +- Missing clarification: 0 in the verified gold set. ## Sample Outputs @@ -84,7 +90,7 @@ Mode: `answer`, answer type `table`. The top evidence comes from the Turkish sch Question: `Araştırma görevlisi burs kuralları farklı veya çelişkili mi?` -Mode: `show_conflict`, answer type `direct`. Retrieval remains within the detected-language corpus and should cite the research-assistant rules rather than only the general scholarship table. +Mode: `show_conflict`, answer type `direct`. Retrieval remains within the detected-language corpus and cites the research-assistant rules rather than only the general scholarship table. Question: `Bugün kampüste hangi burs etkinlikleri var?` @@ -92,8 +98,8 @@ Mode: `refuse`. The answer refuses because campus events are outside the V1 offi ## Known Limits -- This snapshot is a publishable demo snapshot, not a human-reviewed quality claim. -- The 60-case candidate set and 50-case hard set are assistant-curated and still need manual labeling before being called gold-standard evaluations. +- The verified 60-case `v1_gold` benchmark is human-reviewed; `v1_hard` remains a regression suite and `emu_gold_seed` remains provisional unless separately documented as reviewed. +- These are fixed local evaluation results, not production availability or universal-quality claims. - Broad scholarship prompts run several deterministic subqueries; p50 remains under 1 second, but p95 is higher than direct extractive queries. -- Generated mode is implemented and fallback-safe, but `qwen3:8b` timed out under a 2-second smoke limit on this machine. -- Qdrant has unit coverage, CLI support, and a validated embedded local Qdrant index at `artifacts/qdrant/latest`; a Docker/live Qdrant service deployment is still not validated here. +- Generated mode is implemented and fallback-safe, but `qwen3:8b` timed out under the recorded 2-second smoke limit. +- Qdrant has unit coverage, CLI support, and a validated embedded local Qdrant index; a Docker/live Qdrant service deployment is still not validated in the recorded environment. diff --git a/docs/PUBLICATION_CHECKLIST.md b/docs/PUBLICATION_CHECKLIST.md index 534814c..d0368f2 100644 --- a/docs/PUBLICATION_CHECKLIST.md +++ b/docs/PUBLICATION_CHECKLIST.md @@ -1,26 +1,36 @@ # Publication Checklist -Use this before publishing the repository as `emu-advisor`. +Use this before changing EMUAdvisor from private to public. -## Required Before Publication +## Required before publication -- Keep `.old/` archive ignored and out of the clean public repo unless explicitly promoted. -- Keep generated crawl, index, metrics, screenshots, and logs under ignored artifact paths. -- Run `python -m unittest discover -s tests`. -- Run evaluation validators for `eval_sets/v1_gold.jsonl`, `eval_sets/v1_hard.jsonl`, and `eval_sets/emu_gold_seed.jsonl`. -- Generate or refresh `docs/BOARD_DEMO_READINESS.md`. -- Confirm README commands match `docs/RUN_PROTOCOL.md`. +- [x] Publishing rights confirmed by the repository owner. +- [x] MIT license present. +- [x] `eval_sets/v1_gold.jsonl` recorded as human-reviewed and verified by the project author and university staff. +- [x] Admin tokens excluded from URL/query-parameter flows. +- [x] Browser diagnostics use tab-scoped session storage plus authorization headers. +- [x] Pinned dependency snapshot present in `requirements-lock.txt`. +- [x] Core CI and browser smoke are required jobs. +- [ ] Keep `.old/` archive ignored and out of the clean public tree unless explicitly promoted. +- [ ] Keep generated crawl, index, metrics, screenshots, conversations, and logs under ignored artifact paths. +- [ ] Run the final branch through `python tools/publication_guard.py` and GitHub Actions. +- [ ] Refresh `docs/BOARD_DEMO_READINESS.md` when deployment/runtime evidence changes. +- [ ] Confirm README commands match the supported run protocol. +- [ ] Check the current tree and Git history for secrets or non-public university material. -## Required Wording +## Required wording -- Describe the project as a local-only demo. -- State that it is not an official final university decision system. -- State that evaluation sets are assistant-curated until human review is complete. -- State that production deployment is blocked on live Qdrant and target hardware/service validation. +- Describe the project as independent research/software, not an official EMU administrative service. +- State that outputs are informational and are not final university decisions. +- Describe `v1_gold` as the verified human-reviewed 60-case benchmark. +- Keep `v1_hard` identified as a hard regression suite unless separately reviewed/documented as gold. +- Keep `emu_gold_seed` identified as provisional unless it completes the same review process. +- Describe recorded benchmark metrics as fixed local evaluation results, not production guarantees. +- State that production deployment remains unvalidated until service-backed Qdrant and target runtime/hardware are verified. -## Optional Publication Assets +## Optional publication assets - Public UI screenshot. -- Admin metrics screenshot with sensitive local logs excluded. +- Diagnostics screenshot with tokens and sensitive local logs excluded. - Sample output snippets from `docs/DEMO_METRICS_SNAPSHOT.md`. -- Short architecture diagram or Mermaid rendering from the full analysis. +- Architecture diagram based on the README data flow. diff --git a/emu_advisor/readiness.py b/emu_advisor/readiness.py index 9e473fe..7f0b244 100644 --- a/emu_advisor/readiness.py +++ b/emu_advisor/readiness.py @@ -23,9 +23,10 @@ def build_readiness_report(root: Path = ROOT) -> Dict[str, Any]: _file_check(root / "docs" / "EMUAdvisor Full Analysis.md", "full analysis", root=root), _file_check(root / "docs" / "DEMO_STORYBOARD.md", "demo storyboard", root=root), _file_check(root / "docs" / "PUBLICATION_CHECKLIST.md", "publication checklist", root=root), - _file_check(root / "eval_sets" / "v1_gold.jsonl", "candidate evaluation set", root=root), + _file_check(root / "eval_sets" / "v1_gold.jsonl", "verified gold evaluation set", root=root), _file_check(root / "eval_sets" / "v1_hard.jsonl", "hard regression set", root=root), ] + metrics_path = root / "artifacts" / "metrics" / "latest" / "metrics.json" metrics = load_latest_metrics(metrics_path) if metrics.get("available"): @@ -38,20 +39,27 @@ def build_readiness_report(root: Path = ROOT) -> Dict[str, Any]: ) else: checks.append({"name": "latest metrics artifact", "status": "partial", "detail": "not present in artifacts"}) - review = summarize_review_status( - [ - root / "eval_sets" / "v1_gold.jsonl", - root / "eval_sets" / "v1_hard.jsonl", - root / "eval_sets" / "emu_gold_seed.jsonl", - ] + + gold_review = summarize_review_status([root / "eval_sets" / "v1_gold.jsonl"]) + checks.append( + { + "name": "verified gold review status", + "status": "blocked" if gold_review["pending_cases"] else "pass", + "detail": f"{gold_review['total_cases']} cases; {gold_review['pending_cases']} pending", + } + ) + + auxiliary_review = summarize_review_status( + [root / "eval_sets" / "v1_hard.jsonl", root / "eval_sets" / "emu_gold_seed.jsonl"] ) checks.append( { - "name": "human-reviewed gold status", - "status": "blocked" if review["pending_cases"] else "pass", - "detail": f"{review['pending_cases']} cases still pending review", + "name": "auxiliary evaluation review status", + "status": "partial" if auxiliary_review["pending_cases"] else "pass", + "detail": f"{auxiliary_review['total_cases']} cases; {auxiliary_review['pending_cases']} pending", } ) + checks.append( { "name": "production admin token", @@ -78,7 +86,7 @@ def build_readiness_report(root: Path = ROOT) -> Dict[str, Any]: return { "status": status, "checks": checks, - "review": review, + "review": {"gold": gold_review, "auxiliary": auxiliary_review}, "analytics": analytics, "summary": _status_sentence(status), } @@ -106,7 +114,7 @@ def write_markdown_report(report: Dict[str, Any], out: Path) -> None: "## Non-Negotiable Limits", "", "- This is a board-demo readiness report, not a production approval.", - "- Human-reviewed gold metrics remain blocked until manual labels are complete.", + "- `v1_gold` is the human-reviewed verified gold set; auxiliary regression/seed sets have separate review status.", "- Production-style deployment remains blocked until service-backed Qdrant and target hardware are validated.", "- Generated mode remains extractive-first unless local model latency and answer quality are characterized.", ] diff --git a/emu_advisor/server.py b/emu_advisor/server.py index d250733..a7ff1aa 100644 --- a/emu_advisor/server.py +++ b/emu_advisor/server.py @@ -784,9 +784,6 @@ def _provided_admin_token(request: Request) -> Optional[str]: header_token = request.headers.get("x-emu-admin-token") if header_token: return header_token.strip() - query_token = request.query_params.get("admin_token") - if query_token: - return query_token.strip() return None @@ -794,7 +791,7 @@ def _requires_admin_token(request: Request, *, configured_token: str) -> bool: if not configured_token: return False path = request.url.path.rstrip("/") or "/" - protected_exact = {"/admin", "/ask", "/metrics", "/metrics/modes", "/analytics", "/corpus/status"} + protected_exact = {"/ask", "/metrics", "/metrics/modes", "/analytics", "/corpus/status"} if path in protected_exact or path.startswith("/ask/"): return True if path == "/llm/status" and request.query_params.get("smoke", "").casefold() in {"1", "true", "yes"}: diff --git a/eval_sets/v1_gold.jsonl b/eval_sets/v1_gold.jsonl index 94c934d..d862b96 100644 --- a/eval_sets/v1_gold.jsonl +++ b/eval_sets/v1_gold.jsonl @@ -1,60 +1,60 @@ -{"case_id":"EN-001","question":"What must first-year students register for before taking other courses?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb","expected_chunk_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0005","expected_chunk_ids":["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"],"expected_answer_keywords":["first","second"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-002","question":"When can a student's normal course load be reduced by up to two courses?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb","expected_chunk_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0006","expected_chunk_ids":["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0006"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"],"expected_answer_keywords":["two"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-003","question":"How many extra courses may a High Honour student add to the semester course load?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb","expected_chunk_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0007","expected_chunk_ids":["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0007"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"],"expected_answer_keywords":["High Honour","two"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-004","question":"What is the maximum number of registered courses a student may withdraw from in one semester?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb","expected_chunk_id":"en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0017","expected_chunk_ids":["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0017"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"],"expected_answer_keywords":["withdraw","two"],"category":"course_withdrawal","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-005","question":"What happens if a student fails to renew registration for two consecutive semesters?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b","expected_chunk_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005","expected_chunk_ids":["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"],"expected_answer_keywords":["dismissed"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-006","question":"What attendance requirement applies to registered courses, laboratories and studios?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b","expected_chunk_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005","expected_chunk_ids":["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"],"expected_answer_keywords":["attend"],"category":"attendance","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-007","question":"What does the NG grade mean in the EMU grade table?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b","expected_chunk_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0008","expected_chunk_ids":["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0008"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"],"expected_answer_keywords":["absenteeism"],"category":"grading_exam","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-008","question":"Within how many weeks may a student apply for leave of absence with a valid reason?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b","expected_chunk_id":"en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0028","expected_chunk_ids":["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0028"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"],"expected_answer_keywords":["5 weeks"],"category":"leave_freeze","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-009","question":"When are re-sit examinations administered for Fall and Spring semester courses?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0","expected_chunk_id":"en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0007","expected_chunk_ids":["en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0007"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm"],"expected_answer_keywords":["Re-sit"],"category":"grading_exam","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-010","question":"What happens if the reason for missing an exam continues during the make-up exam period?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0","expected_chunk_id":"en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0010","expected_chunk_ids":["en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0010"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm"],"expected_answer_keywords":["make-up"],"category":"grading_exam","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-011","question":"Who may receive the EMU scholarship for students ranked in the first 5000?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95","expected_chunk_id":"en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0006","expected_chunk_ids":["en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0006"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm"],"expected_answer_keywords":["5000"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-012","question":"How is the high honour scholarship determined within an EMU program?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95","expected_chunk_id":"en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0017","expected_chunk_ids":["en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0017"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm"],"expected_answer_keywords":["1%"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-013","question":"What does postgraduate scholarship refer to in the EMU scholarship rules?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95","expected_chunk_id":"en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0023","expected_chunk_ids":["en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0023"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm"],"expected_answer_keywords":["100%","50%"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-014","question":"How do postgraduate students who pay per course pay semester tuition fees?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730","expected_chunk_id":"en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0004","expected_chunk_ids":["en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0004"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm"],"expected_answer_keywords":["per course"],"category":"tuition_refunds","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-015","question":"May new students freeze registration after the add-drop deadline because of admission, visa or transportation problems?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730","expected_chunk_id":"en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0011","expected_chunk_ids":["en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0011"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm"],"expected_answer_keywords":["freeze"],"category":"leave_freeze","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-016","question":"What is Category C in the EMU research assistant by-law?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732","expected_chunk_id":"en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005","expected_chunk_ids":["en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm"],"expected_answer_keywords":["Category C"],"category":"research_assistant","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-017","question":"What registration condition must a candidate meet to be appointed as a research assistant?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732","expected_chunk_id":"en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0009","expected_chunk_ids":["en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0009"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm"],"expected_answer_keywords":["postgraduate"],"category":"research_assistant","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-018","question":"What does the academic staff by-law say about the number and scales of academic staff positions?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295","expected_chunk_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0011","expected_chunk_ids":["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0011"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"],"expected_answer_keywords":["scales"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-019","question":"How are academic staff salaries and allowances paid under the academic staff by-law?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295","expected_chunk_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012","expected_chunk_ids":["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"],"expected_answer_keywords":["salaries"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-020","question":"When are regular annual scale increases given to academic personnel?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295","expected_chunk_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0037","expected_chunk_ids":["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0037"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"],"expected_answer_keywords":["annual"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-021","question":"What does the administrative staff by-law say about positions and scales?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:by-law-staffingandemploymentforadministrativestaff-htm:d0437576f3","expected_chunk_id":"en:html:by-law-staffingandemploymentforadministrativestaff-htm:d0437576f3:c0024","expected_chunk_ids":["en:html:by-law-staffingandemploymentforadministrativestaff-htm:d0437576f3:c0024"],"expected_source_url":"https://mevzuat.emu.edu.tr/By-law_StaffingandEmploymentforAdministrativeStaff.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/By-law_StaffingandEmploymentforAdministrativeStaff.htm"],"expected_answer_keywords":["scales"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-022","question":"What prior title and experience are required for a professor title application?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:6-2-rules-academic-staff-title-bylaw-m-htm:5e9b289f3e","expected_chunk_id":"en:html:6-2-rules-academic-staff-title-bylaw-m-htm:5e9b289f3e:c0004","expected_chunk_ids":["en:html:6-2-rules-academic-staff-title-bylaw-m-htm:5e9b289f3e:c0004"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-2-Rules-Academic staff title bylaw-m.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-2-Rules-Academic staff title bylaw-m.htm"],"expected_answer_keywords":["Associate Professor"],"category":"title_promotion","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-023","question":"Which academic staff members may benefit from university housing facilities?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:regulations-for-benefiting-from-university-housing-and-guest-house-facilities-htm:ac21a5eb34","expected_chunk_id":"en:html:regulations-for-benefiting-from-university-housing-and-guest-house-facilities-htm:ac21a5eb34:c0003","expected_chunk_ids":["en:html:regulations-for-benefiting-from-university-housing-and-guest-house-facilities-htm:ac21a5eb34:c0003"],"expected_source_url":"https://mevzuat.emu.edu.tr/REGULATIONS FOR BENEFITING FROM UNIVERSITY HOUSING AND GUEST HOUSE FACILITIES .htm","expected_source_urls":["https://mevzuat.emu.edu.tr/REGULATIONS FOR BENEFITING FROM UNIVERSITY HOUSING AND GUEST HOUSE FACILITIES .htm"],"expected_answer_keywords":["Housing"],"category":"housing_facilities","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-024","question":"What publication ethics rule applies when using previously published or unpublished research?","language":"en","expected_behavior":"answer","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:6-1-5-regulation-scientificresearchpublicationethics-htm:b95c7c5f51","expected_chunk_id":"en:html:6-1-5-regulation-scientificresearchpublicationethics-htm:b95c7c5f51:c0010","expected_chunk_ids":["en:html:6-1-5-regulation-scientificresearchpublicationethics-htm:b95c7c5f51:c0010"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-1-5-Regulation-ScientificResearchPublicationEthics.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-1-5-Regulation-ScientificResearchPublicationEthics.htm"],"expected_answer_keywords":["source"],"category":"research_ethics","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"EN-025","question":"What concerts or campus events are happening at EMU today?","language":"en","expected_behavior":"refuse","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"out_of_scope","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Out-of-scope refusal candidate; pending human review."} -{"case_id":"EN-026","question":"Send an email to my department chair and schedule a meeting about my registration.","language":"en","expected_behavior":"refuse","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"out_of_scope","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Out-of-scope refusal candidate; pending human review."} -{"case_id":"EN-027","question":"Which office should verify ambiguous scholarship versus tuition evidence?","language":"en","expected_behavior":"clarify","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"ambiguous_query","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Clarification candidate; pending human review."} -{"case_id":"EN-028","question":"Who should verify ambiguous registration or add-drop rules for a specific student case?","language":"en","expected_behavior":"clarify","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"ambiguous_query","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Clarification candidate; pending human review."} -{"case_id":"EN-029","question":"Are the academic staff salary provisions conflicting or different?","language":"en","expected_behavior":"conflict","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295","expected_chunk_id":"en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012","expected_chunk_ids":["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012","en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm","https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm"],"expected_answer_keywords":["salaries"],"category":"conflict","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Same-language conflict candidate after V1 EN/TR comparison removal; source labels are assistant-curated and pending human review."} -{"case_id":"EN-030","question":"Do the research assistant appointment and scholarship provisions show any conflict?","language":"en","expected_behavior":"conflict","expected_corpus":"regulations_en","expected_corpora":["regulations_en"],"expected_document_id":"en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732","expected_chunk_id":"en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005","expected_chunk_ids":["en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005","en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm","https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"],"expected_answer_keywords":["Category"],"category":"conflict","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Same-language conflict candidate after V1 EN/TR comparison removal; source labels are assistant-curated and pending human review."} -{"case_id":"TR-001","question":"Birinci yıl öğrencisi hangi dönem derslerine kayıt olmakla yükümlüdür?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570","expected_chunk_id":"tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0004","expected_chunk_ids":["tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0004"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm"],"expected_answer_keywords":["birinci"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-002","question":"Yüksek Şeref öğrencisi normal ders yüküne ek olarak kaç ders alabilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570","expected_chunk_id":"tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0005","expected_chunk_ids":["tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm"],"expected_answer_keywords":["Yüksek Şeref"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-003","question":"Ders ekleme veya bırakma süreci ne zaman yapılır?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570","expected_chunk_id":"tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0011","expected_chunk_ids":["tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0011"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm"],"expected_answer_keywords":["Ders Ekleme"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-004","question":"Öğrenciler her dönem başında kayıtlarını nasıl yenilemek zorundadır?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d","expected_chunk_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0012","expected_chunk_ids":["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"],"expected_answer_keywords":["kayıtlarını yenilemek"],"category":"course_registration","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-005","question":"Kayıt sildiren öğrenci harç iadesi için hangi esaslara tabidir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d","expected_chunk_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0013","expected_chunk_ids":["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0013"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"],"expected_answer_keywords":["iade"],"category":"tuition_refunds","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-006","question":"NG notu ne anlama gelir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d","expected_chunk_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0016","expected_chunk_ids":["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0016"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"],"expected_answer_keywords":["Devamsızlıktan"],"category":"grading_exam","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-007","question":"Öğrenci izinli ayrılmak için nereye yazılı ve gerekçeli başvuru yapar?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d","expected_chunk_id":"tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0035","expected_chunk_ids":["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0035"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"],"expected_answer_keywords":["izin"],"category":"leave_freeze","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-008","question":"Bütünleme sınavına başvuru dönem notlarının ilanından sonra kaç gün içinde yapılır?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57","expected_chunk_id":"tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0006","expected_chunk_ids":["tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0006"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm"],"expected_answer_keywords":["3 gün"],"category":"grading_exam","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-009","question":"Telafi sınavları dönem içinde mi dönem sonunda mı yapılabilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57","expected_chunk_id":"tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0007","expected_chunk_ids":["tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0007"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm"],"expected_answer_keywords":["Telafi"],"category":"grading_exam","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-010","question":"İlk 5000 arasına giren öğrencilere hangi burs verilebilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22","expected_chunk_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0005","expected_chunk_ids":["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"],"expected_answer_keywords":["5000"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-011","question":"Yüksek Şeref bursu programdaki yüzde kaçlık başarı dilimine göre verilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22","expected_chunk_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0014","expected_chunk_ids":["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0014"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"],"expected_answer_keywords":["%1"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-012","question":"Lisansüstü burslar hangi oranlarda verilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22","expected_chunk_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0018","expected_chunk_ids":["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0018"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"],"expected_answer_keywords":["%100"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-013","question":"Bir öğrenci birden fazla burs ve indirimden aynı anda yararlanabilir mi?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22","expected_chunk_id":"tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0026","expected_chunk_ids":["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0026"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"],"expected_answer_keywords":["birden fazla"],"category":"scholarships","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-014","question":"Ders ekleme veya bırakma sürecinde harç iadesi için hangi yüzde uygulanır?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-1-10-y-netmelik-ogrenimharc-htm:e6f41ba36f","expected_chunk_id":"tr:html:5-1-10-y-netmelik-ogrenimharc-htm:e6f41ba36f:c0008","expected_chunk_ids":["tr:html:5-1-10-y-netmelik-ogrenimharc-htm:e6f41ba36f:c0008"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-1-10-Yönetmelik-OgrenimHarc.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-1-10-Yönetmelik-OgrenimHarc.htm"],"expected_answer_keywords":["%20"],"category":"tuition_refunds","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-015","question":"Araştırma görevlisi yönetmeliği hangi nitelik ve burs konularını kapsar?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637","expected_chunk_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0003","expected_chunk_ids":["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0003"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"],"expected_answer_keywords":["araştırma görevlisi"],"category":"research_assistant","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-016","question":"Araştırma görevlileri öğrenci akademik yardım masalarında görev alabilir mi?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637","expected_chunk_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0005","expected_chunk_ids":["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0005"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"],"expected_answer_keywords":["akademik yardım"],"category":"research_assistant","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-017","question":"A ve B kategorisi araştırma görevlisi aylık bursu asgari ücrete göre nasıl belirlenir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637","expected_chunk_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012","expected_chunk_ids":["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"],"expected_answer_keywords":["asgari ücret"],"category":"research_assistant","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-018","question":"Akademik personel kadro sayısı ve baremleri hangi cetvellere göre düzenlenir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c","expected_chunk_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0011","expected_chunk_ids":["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0011"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"],"expected_answer_keywords":["barem"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-019","question":"Akademik personele maaş ve makam ödeneği nasıl verilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c","expected_chunk_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012","expected_chunk_ids":["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"],"expected_answer_keywords":["maaş"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-020","question":"Akademik personelin barem içi artışı ilk atanma tarihine göre nasıl verilir?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c","expected_chunk_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0039","expected_chunk_ids":["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0039"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"],"expected_answer_keywords":["ilk atanma"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-021","question":"Yönetsel hizmetler personeli kadro ve baremleri hangi düzenlemede geçer?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-7-1-yontperskadrocal-htm:1cb7f72b71","expected_chunk_id":"tr:html:tuzukler-7-1-yontperskadrocal-htm:1cb7f72b71:c0020","expected_chunk_ids":["tr:html:tuzukler-7-1-yontperskadrocal-htm:1cb7f72b71:c0020"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/7-1_YontPersKadroCal.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/7-1_YontPersKadroCal.htm"],"expected_answer_keywords":["kadro"],"category":"staff_regulations","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-022","question":"Öğrenci Disiplin Kurulu dosyayı en geç kaç iş günü içinde karara bağlar?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-2-yonetmelik-ogrencidisiplin-htm:4ada820abe","expected_chunk_id":"tr:html:5-2-yonetmelik-ogrencidisiplin-htm:4ada820abe:c0020","expected_chunk_ids":["tr:html:5-2-yonetmelik-ogrencidisiplin-htm:4ada820abe:c0020"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-2-Yonetmelik-OgrenciDisiplin.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-2-Yonetmelik-OgrenciDisiplin.htm"],"expected_answer_keywords":["45 iş günü"],"category":"student_discipline","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-023","question":"Üniversite akademik etik ilkelerini nasıl bir değer olarak görür?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:6-1-5-yonetmelik-bilimselarastirmayayinetigi-htm:fd248ba433","expected_chunk_id":"tr:html:6-1-5-yonetmelik-bilimselarastirmayayinetigi-htm:fd248ba433:c0004","expected_chunk_ids":["tr:html:6-1-5-yonetmelik-bilimselarastirmayayinetigi-htm:fd248ba433:c0004"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-1-5-Yonetmelik-BilimselArastirmaYayinEtigi.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-1-5-Yonetmelik-BilimselArastirmaYayinEtigi.htm"],"expected_answer_keywords":["akademik etik"],"category":"research_ethics","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-024","question":"Bilimsel araştırma proje önerileri hakem değerlendirmesine nasıl sunulur?","language":"tr","expected_behavior":"answer","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:6-3-3-bilimselarastirmalardestekilkeleri-htm:d1b8dace78","expected_chunk_id":"tr:html:6-3-3-bilimselarastirmalardestekilkeleri-htm:d1b8dace78:c0003","expected_chunk_ids":["tr:html:6-3-3-bilimselarastirmalardestekilkeleri-htm:d1b8dace78:c0003"],"expected_source_url":"https://mevzuat.emu.edu.tr/6-3-3-BilimselArastirmalarDestekIlkeleri.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/6-3-3-BilimselArastirmalarDestekIlkeleri.htm"],"expected_answer_keywords":["hakem"],"category":"research_ethics","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Assistant-curated candidate; source label from live corpus; pending human review."} -{"case_id":"TR-025","question":"Bugünkü kampüs etkinlikleri ve konserler nelerdir?","language":"tr","expected_behavior":"refuse","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"out_of_scope","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Out-of-scope refusal candidate; pending human review."} -{"case_id":"TR-026","question":"Bölüm başkanıma e-posta gönderip kayıt için toplantı planla.","language":"tr","expected_behavior":"refuse","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"out_of_scope","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Out-of-scope refusal candidate; pending human review."} -{"case_id":"TR-027","question":"Hangi ofise sorulmalı: burs mu harç mı olduğundan emin değilim.","language":"tr","expected_behavior":"clarify","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"ambiguous_query","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Clarification candidate; pending human review."} -{"case_id":"TR-028","question":"Hangi ofise sorulmalı: kayıt dondurma mı ders bırakma mı emin değilim.","language":"tr","expected_behavior":"clarify","expected_corpus":null,"expected_corpora":[],"expected_document_id":null,"expected_chunk_id":null,"expected_chunk_ids":[],"expected_source_url":null,"expected_source_urls":[],"expected_answer_keywords":[],"category":"ambiguous_query","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Clarification candidate; pending human review."} -{"case_id":"TR-029","question":"Akademik personel maas hukumleri celiskili mi?","language":"tr","expected_behavior":"conflict","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c","expected_chunk_id":"tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012","expected_chunk_ids":["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012","tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm","https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"],"expected_answer_keywords":["maas"],"category":"conflict","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Same-language conflict candidate after V1 EN/TR comparison removal; source labels are assistant-curated and pending human review."} -{"case_id":"TR-030","question":"Arastirma gorevlisi burs kurallari farkli veya celiskili mi?","language":"tr","expected_behavior":"conflict","expected_corpus":"regulations_tr","expected_corpora":["regulations_tr"],"expected_document_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637","expected_chunk_id":"tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012","expected_chunk_ids":["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012","tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012"],"expected_source_url":"https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm","expected_source_urls":["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm","https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"],"expected_answer_keywords":["asgari"],"category":"conflict","review_status":"assistant_curated_pending_human_review","is_correct":null,"citation_ok":null,"notes":"Same-language conflict candidate after V1 EN/TR comparison removal; source labels are assistant-curated and pending human review."} +{"case_id": "EN-001", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["first", "second"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0005", "expected_chunk_ids": ["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0005"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What must first-year students register for before taking other courses?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-002", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["two"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0006", "expected_chunk_ids": ["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0006"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "When can a student's normal course load be reduced by up to two courses?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-003", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["High Honour", "two"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0007", "expected_chunk_ids": ["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0007"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "How many extra courses may a High Honour student add to the semester course load?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-004", "category": "course_withdrawal", "citation_ok": true, "expected_answer_keywords": ["withdraw", "two"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0017", "expected_chunk_ids": ["en:html:5-1-5-rules-course-registration-htm:b9be885ddb:c0017"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-5-rules-course-registration-htm:b9be885ddb", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Rules-Course_Registration.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What is the maximum number of registered courses a student may withdraw from in one semester?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-005", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["dismissed"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005", "expected_chunk_ids": ["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What happens if a student fails to renew registration for two consecutive semesters?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-006", "category": "attendance", "citation_ok": true, "expected_answer_keywords": ["attend"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005", "expected_chunk_ids": ["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0005"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What attendance requirement applies to registered courses, laboratories and studios?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-007", "category": "grading_exam", "citation_ok": true, "expected_answer_keywords": ["absenteeism"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0008", "expected_chunk_ids": ["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0008"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What does the NG grade mean in the EMU grade table?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-008", "category": "leave_freeze", "citation_ok": true, "expected_answer_keywords": ["5 weeks"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0028", "expected_chunk_ids": ["en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b:c0028"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-0-regulation-education-examination-success-htm:f6fb21317b", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-0-Regulation-Education_Examination_Success.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Within how many weeks may a student apply for leave of absence with a valid reason?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-009", "category": "grading_exam", "citation_ok": true, "expected_answer_keywords": ["Re-sit"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0007", "expected_chunk_ids": ["en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0007"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "When are re-sit examinations administered for Fall and Spring semester courses?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-010", "category": "grading_exam", "citation_ok": true, "expected_answer_keywords": ["make-up"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0010", "expected_chunk_ids": ["en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0:c0010"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-4-rules-examinations-and-evaluations-htm:2a7e1ba6a0", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-4-Rules-examinations_and_evaluations.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What happens if the reason for missing an exam continues during the make-up exam period?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-011", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["5000"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0006", "expected_chunk_ids": ["en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0006"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Who may receive the EMU scholarship for students ranked in the first 5000?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-012", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["1%"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0017", "expected_chunk_ids": ["en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0017"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "How is the high honour scholarship determined within an EMU program?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-013", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["100%", "50%"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0023", "expected_chunk_ids": ["en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95:c0023"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-2-rules-scholarship-regulations-htm:f2245f5c95", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Rules-Scholarship_regulations.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What does postgraduate scholarship refer to in the EMU scholarship rules?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-014", "category": "tuition_refunds", "citation_ok": true, "expected_answer_keywords": ["per course"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0004", "expected_chunk_ids": ["en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0004"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "How do postgraduate students who pay per course pay semester tuition fees?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-015", "category": "leave_freeze", "citation_ok": true, "expected_answer_keywords": ["freeze"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0011", "expected_chunk_ids": ["en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730:c0011"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-1-10-regulations-regulationsfortutionfees-htm:ccbb8c3730", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-10-Regulations-RegulationsforTutionFees.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "May new students freeze registration after the add-drop deadline because of admission, visa or transportation problems?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-016", "category": "research_assistant", "citation_ok": true, "expected_answer_keywords": ["Category C"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005", "expected_chunk_ids": ["en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What is Category C in the EMU research assistant by-law?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-017", "category": "research_assistant", "citation_ok": true, "expected_answer_keywords": ["postgraduate"], "expected_behavior": "answer", "expected_chunk_id": "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0009", "expected_chunk_ids": ["en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0009"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What registration condition must a candidate meet to be appointed as a research assistant?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-018", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["scales"], "expected_behavior": "answer", "expected_chunk_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0011", "expected_chunk_ids": ["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0011"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295", "expected_source_url": "https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What does the academic staff by-law say about the number and scales of academic staff positions?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-019", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["salaries"], "expected_behavior": "answer", "expected_chunk_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012", "expected_chunk_ids": ["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295", "expected_source_url": "https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "How are academic staff salaries and allowances paid under the academic staff by-law?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-020", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["annual"], "expected_behavior": "answer", "expected_chunk_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0037", "expected_chunk_ids": ["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0037"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295", "expected_source_url": "https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "When are regular annual scale increases given to academic personnel?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-021", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["scales"], "expected_behavior": "answer", "expected_chunk_id": "en:html:by-law-staffingandemploymentforadministrativestaff-htm:d0437576f3:c0024", "expected_chunk_ids": ["en:html:by-law-staffingandemploymentforadministrativestaff-htm:d0437576f3:c0024"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:by-law-staffingandemploymentforadministrativestaff-htm:d0437576f3", "expected_source_url": "https://mevzuat.emu.edu.tr/By-law_StaffingandEmploymentforAdministrativeStaff.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/By-law_StaffingandEmploymentforAdministrativeStaff.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What does the administrative staff by-law say about positions and scales?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-022", "category": "title_promotion", "citation_ok": true, "expected_answer_keywords": ["Associate Professor"], "expected_behavior": "answer", "expected_chunk_id": "en:html:6-2-rules-academic-staff-title-bylaw-m-htm:5e9b289f3e:c0004", "expected_chunk_ids": ["en:html:6-2-rules-academic-staff-title-bylaw-m-htm:5e9b289f3e:c0004"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:6-2-rules-academic-staff-title-bylaw-m-htm:5e9b289f3e", "expected_source_url": "https://mevzuat.emu.edu.tr/6-2-Rules-Academic staff title bylaw-m.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-2-Rules-Academic staff title bylaw-m.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What prior title and experience are required for a professor title application?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-023", "category": "housing_facilities", "citation_ok": true, "expected_answer_keywords": ["Housing"], "expected_behavior": "answer", "expected_chunk_id": "en:html:regulations-for-benefiting-from-university-housing-and-guest-house-facilities-htm:ac21a5eb34:c0003", "expected_chunk_ids": ["en:html:regulations-for-benefiting-from-university-housing-and-guest-house-facilities-htm:ac21a5eb34:c0003"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:regulations-for-benefiting-from-university-housing-and-guest-house-facilities-htm:ac21a5eb34", "expected_source_url": "https://mevzuat.emu.edu.tr/REGULATIONS FOR BENEFITING FROM UNIVERSITY HOUSING AND GUEST HOUSE FACILITIES .htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/REGULATIONS FOR BENEFITING FROM UNIVERSITY HOUSING AND GUEST HOUSE FACILITIES .htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Which academic staff members may benefit from university housing facilities?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-024", "category": "research_ethics", "citation_ok": true, "expected_answer_keywords": ["source"], "expected_behavior": "answer", "expected_chunk_id": "en:html:6-1-5-regulation-scientificresearchpublicationethics-htm:b95c7c5f51:c0010", "expected_chunk_ids": ["en:html:6-1-5-regulation-scientificresearchpublicationethics-htm:b95c7c5f51:c0010"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:6-1-5-regulation-scientificresearchpublicationethics-htm:b95c7c5f51", "expected_source_url": "https://mevzuat.emu.edu.tr/6-1-5-Regulation-ScientificResearchPublicationEthics.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-1-5-Regulation-ScientificResearchPublicationEthics.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What publication ethics rule applies when using previously published or unpublished research?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-025", "category": "out_of_scope", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "refuse", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "What concerts or campus events are happening at EMU today?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-026", "category": "out_of_scope", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "refuse", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Send an email to my department chair and schedule a meeting about my registration.", "review_status": "human_reviewed_verified"} +{"case_id": "EN-027", "category": "ambiguous_query", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "clarify", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Which office should verify ambiguous scholarship versus tuition evidence?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-028", "category": "ambiguous_query", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "clarify", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Who should verify ambiguous registration or add-drop rules for a specific student case?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-029", "category": "conflict", "citation_ok": true, "expected_answer_keywords": ["salaries"], "expected_behavior": "conflict", "expected_chunk_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012", "expected_chunk_ids": ["en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012", "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295", "expected_source_url": "https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm", "https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Are the academic staff salary provisions conflicting or different?", "review_status": "human_reviewed_verified"} +{"case_id": "EN-030", "category": "conflict", "citation_ok": true, "expected_answer_keywords": ["Category"], "expected_behavior": "conflict", "expected_chunk_id": "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005", "expected_chunk_ids": ["en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732:c0005", "en:html:6-1-staffingemploymentacademicstaff-htm:957ed34295:c0012"], "expected_corpora": ["regulations_en"], "expected_corpus": "regulations_en", "expected_document_id": "en:html:5-4-3-rules-research-assistant-by-law-m-htm:2347c4f732", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Rules-Research_assistant_by-law-m.htm", "https://mevzuat.emu.edu.tr/6-1_StaffingEmploymentAcademicStaff.htm"], "is_correct": true, "language": "en", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Do the research assistant appointment and scholarship provisions show any conflict?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-001", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["birinci"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0004", "expected_chunk_ids": ["tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0004"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Birinci yıl öğrencisi hangi dönem derslerine kayıt olmakla yükümlüdür?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-002", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["Yüksek Şeref"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0005", "expected_chunk_ids": ["tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0005"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Yüksek Şeref öğrencisi normal ders yüküne ek olarak kaç ders alabilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-003", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["Ders Ekleme"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0011", "expected_chunk_ids": ["tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570:c0011"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-5-yonetmelik-derskayit-htm:6c57f64570", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-5-Yonetmelik-DersKayit.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Ders ekleme veya bırakma süreci ne zaman yapılır?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-004", "category": "course_registration", "citation_ok": true, "expected_answer_keywords": ["kayıtlarını yenilemek"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0012", "expected_chunk_ids": ["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0012"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Öğrenciler her dönem başında kayıtlarını nasıl yenilemek zorundadır?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-005", "category": "tuition_refunds", "citation_ok": true, "expected_answer_keywords": ["iade"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0013", "expected_chunk_ids": ["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0013"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Kayıt sildiren öğrenci harç iadesi için hangi esaslara tabidir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-006", "category": "grading_exam", "citation_ok": true, "expected_answer_keywords": ["Devamsızlıktan"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0016", "expected_chunk_ids": ["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0016"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "NG notu ne anlama gelir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-007", "category": "leave_freeze", "citation_ok": true, "expected_answer_keywords": ["izin"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0035", "expected_chunk_ids": ["tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d:c0035"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-5-1-ogrtsnvbasari-htm:46e5dda29d", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/5-1_OgrtSnvBasari.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Öğrenci izinli ayrılmak için nereye yazılı ve gerekçeli başvuru yapar?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-008", "category": "grading_exam", "citation_ok": true, "expected_answer_keywords": ["3 gün"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0006", "expected_chunk_ids": ["tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0006"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Bütünleme sınavına başvuru dönem notlarının ilanından sonra kaç gün içinde yapılır?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-009", "category": "grading_exam", "citation_ok": true, "expected_answer_keywords": ["Telafi"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0007", "expected_chunk_ids": ["tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57:c0007"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-4-yonetmelik-sinavvedegerlendirme-htm:2e84bede57", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-4-Yonetmelik-SinavveDegerlendirme.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Telafi sınavları dönem içinde mi dönem sonunda mı yapılabilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-010", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["5000"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0005", "expected_chunk_ids": ["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0005"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "İlk 5000 arasına giren öğrencilere hangi burs verilebilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-011", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["%1"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0014", "expected_chunk_ids": ["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0014"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Yüksek Şeref bursu programdaki yüzde kaçlık başarı dilimine göre verilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-012", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["%100"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0018", "expected_chunk_ids": ["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0018"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Lisansüstü burslar hangi oranlarda verilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-013", "category": "scholarships", "citation_ok": true, "expected_answer_keywords": ["birden fazla"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0026", "expected_chunk_ids": ["tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22:c0026"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-2-yonetmelik-burs-indirim-uygulama-htm:cedfc45a22", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-2-Yonetmelik-Burs-Indirim-Uygulama.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Bir öğrenci birden fazla burs ve indirimden aynı anda yararlanabilir mi?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-014", "category": "tuition_refunds", "citation_ok": true, "expected_answer_keywords": ["%20"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-1-10-y-netmelik-ogrenimharc-htm:e6f41ba36f:c0008", "expected_chunk_ids": ["tr:html:5-1-10-y-netmelik-ogrenimharc-htm:e6f41ba36f:c0008"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-1-10-y-netmelik-ogrenimharc-htm:e6f41ba36f", "expected_source_url": "https://mevzuat.emu.edu.tr/5-1-10-Yönetmelik-OgrenimHarc.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-1-10-Yönetmelik-OgrenimHarc.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Ders ekleme veya bırakma sürecinde harç iadesi için hangi yüzde uygulanır?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-015", "category": "research_assistant", "citation_ok": true, "expected_answer_keywords": ["araştırma görevlisi"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0003", "expected_chunk_ids": ["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0003"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Araştırma görevlisi yönetmeliği hangi nitelik ve burs konularını kapsar?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-016", "category": "research_assistant", "citation_ok": true, "expected_answer_keywords": ["akademik yardım"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0005", "expected_chunk_ids": ["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0005"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Araştırma görevlileri öğrenci akademik yardım masalarında görev alabilir mi?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-017", "category": "research_assistant", "citation_ok": true, "expected_answer_keywords": ["asgari ücret"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012", "expected_chunk_ids": ["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "A ve B kategorisi araştırma görevlisi aylık bursu asgari ücrete göre nasıl belirlenir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-018", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["barem"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0011", "expected_chunk_ids": ["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0011"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Akademik personel kadro sayısı ve baremleri hangi cetvellere göre düzenlenir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-019", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["maaş"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012", "expected_chunk_ids": ["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Akademik personele maaş ve makam ödeneği nasıl verilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-020", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["ilk atanma"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0039", "expected_chunk_ids": ["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0039"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Akademik personelin barem içi artışı ilk atanma tarihine göre nasıl verilir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-021", "category": "staff_regulations", "citation_ok": true, "expected_answer_keywords": ["kadro"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:tuzukler-7-1-yontperskadrocal-htm:1cb7f72b71:c0020", "expected_chunk_ids": ["tr:html:tuzukler-7-1-yontperskadrocal-htm:1cb7f72b71:c0020"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-7-1-yontperskadrocal-htm:1cb7f72b71", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/7-1_YontPersKadroCal.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/7-1_YontPersKadroCal.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Yönetsel hizmetler personeli kadro ve baremleri hangi düzenlemede geçer?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-022", "category": "student_discipline", "citation_ok": true, "expected_answer_keywords": ["45 iş günü"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:5-2-yonetmelik-ogrencidisiplin-htm:4ada820abe:c0020", "expected_chunk_ids": ["tr:html:5-2-yonetmelik-ogrencidisiplin-htm:4ada820abe:c0020"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-2-yonetmelik-ogrencidisiplin-htm:4ada820abe", "expected_source_url": "https://mevzuat.emu.edu.tr/5-2-Yonetmelik-OgrenciDisiplin.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-2-Yonetmelik-OgrenciDisiplin.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Öğrenci Disiplin Kurulu dosyayı en geç kaç iş günü içinde karara bağlar?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-023", "category": "research_ethics", "citation_ok": true, "expected_answer_keywords": ["akademik etik"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:6-1-5-yonetmelik-bilimselarastirmayayinetigi-htm:fd248ba433:c0004", "expected_chunk_ids": ["tr:html:6-1-5-yonetmelik-bilimselarastirmayayinetigi-htm:fd248ba433:c0004"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:6-1-5-yonetmelik-bilimselarastirmayayinetigi-htm:fd248ba433", "expected_source_url": "https://mevzuat.emu.edu.tr/6-1-5-Yonetmelik-BilimselArastirmaYayinEtigi.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-1-5-Yonetmelik-BilimselArastirmaYayinEtigi.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Üniversite akademik etik ilkelerini nasıl bir değer olarak görür?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-024", "category": "research_ethics", "citation_ok": true, "expected_answer_keywords": ["hakem"], "expected_behavior": "answer", "expected_chunk_id": "tr:html:6-3-3-bilimselarastirmalardestekilkeleri-htm:d1b8dace78:c0003", "expected_chunk_ids": ["tr:html:6-3-3-bilimselarastirmalardestekilkeleri-htm:d1b8dace78:c0003"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:6-3-3-bilimselarastirmalardestekilkeleri-htm:d1b8dace78", "expected_source_url": "https://mevzuat.emu.edu.tr/6-3-3-BilimselArastirmalarDestekIlkeleri.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/6-3-3-BilimselArastirmalarDestekIlkeleri.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Bilimsel araştırma proje önerileri hakem değerlendirmesine nasıl sunulur?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-025", "category": "out_of_scope", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "refuse", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Bugünkü kampüs etkinlikleri ve konserler nelerdir?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-026", "category": "out_of_scope", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "refuse", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Bölüm başkanıma e-posta gönderip kayıt için toplantı planla.", "review_status": "human_reviewed_verified"} +{"case_id": "TR-027", "category": "ambiguous_query", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "clarify", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Hangi ofise sorulmalı: burs mu harç mı olduğundan emin değilim.", "review_status": "human_reviewed_verified"} +{"case_id": "TR-028", "category": "ambiguous_query", "citation_ok": true, "expected_answer_keywords": [], "expected_behavior": "clarify", "expected_chunk_id": null, "expected_chunk_ids": [], "expected_corpora": [], "expected_corpus": null, "expected_document_id": null, "expected_source_url": null, "expected_source_urls": [], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Hangi ofise sorulmalı: kayıt dondurma mı ders bırakma mı emin değilim.", "review_status": "human_reviewed_verified"} +{"case_id": "TR-029", "category": "conflict", "citation_ok": true, "expected_answer_keywords": ["maas"], "expected_behavior": "conflict", "expected_chunk_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012", "expected_chunk_ids": ["tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012", "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c", "expected_source_url": "https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm", "https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Akademik personel maas hukumleri celiskili mi?", "review_status": "human_reviewed_verified"} +{"case_id": "TR-030", "category": "conflict", "citation_ok": true, "expected_answer_keywords": ["asgari"], "expected_behavior": "conflict", "expected_chunk_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012", "expected_chunk_ids": ["tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637:c0012", "tr:html:tuzukler-6-1-akdperskadrocal-htm:3390963e9c:c0012"], "expected_corpora": ["regulations_tr"], "expected_corpus": "regulations_tr", "expected_document_id": "tr:html:5-4-3-yonetmelik-arastirmagorevlisigorevburs-htm:bff0120637", "expected_source_url": "https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm", "expected_source_urls": ["https://mevzuat.emu.edu.tr/5-4-3-Yonetmelik-ArastirmaGorevlisiGorevBurs.htm", "https://mevzuat.emu.edu.tr/Tuzukler/6-1_AkdPersKadroCal.htm"], "is_correct": true, "language": "tr", "notes": "Human-reviewed and verified by the project author and university staff.", "question": "Arastirma gorevlisi burs kurallari farkli veya celiskili mi?", "review_status": "human_reviewed_verified"} diff --git a/requirements-lock.txt b/requirements-lock.txt new file mode 100644 index 0000000..c229914 --- /dev/null +++ b/requirements-lock.txt @@ -0,0 +1,38 @@ +annotated-doc==0.0.5 +annotated-types==0.8.0 +anyio==4.14.2 +certifi==2026.7.22 +charset-normalizer==3.4.9 +click==8.4.2 +fastapi==0.141.1 +greenlet==3.5.4 +grpcio==1.83.0 +h11==0.16.0 +h2==4.4.1 +hpack==4.2.0 +httpcore==1.0.9 +httptools==0.8.0 +httpx==0.28.1 +hyperframe==6.1.0 +idna==3.18 +numpy==2.5.1 +pillow==12.3.0 +playwright==1.62.0 +portalocker==3.2.0 +protobuf==7.35.1 +pydantic==2.13.4 +pydantic_core==2.46.4 +pyee==13.0.1 +pypdf==6.15.0 +python-dotenv==1.2.2 +PyYAML==6.0.3 +qdrant-client==1.19.0 +reportlab==5.0.0 +starlette==1.4.1 +typing-inspection==0.4.2 +typing_extensions==4.16.0 +urllib3==2.7.0 +uvicorn==0.52.1 +uvloop==0.22.1 +watchfiles==1.2.0 +websockets==17.0.1 diff --git a/static/admin-diagnostics.js b/static/admin-diagnostics.js index 5af043e..1ce8acb 100644 --- a/static/admin-diagnostics.js +++ b/static/admin-diagnostics.js @@ -1,6 +1,14 @@ /** Diagnostics mode: /ask, metrics, corpus status. */ (function () { - const { authedFetch, readableError, escapeHtml, formatPercent } = window.EmuShared; + const { + authedFetch, + readableError, + escapeHtml, + formatPercent, + getAdminToken, + setAdminToken, + clearAdminToken, + } = window.EmuShared; const askButton = document.querySelector("#diag-ask"); const question = document.querySelector("#diag-question"); @@ -21,11 +29,47 @@ const corpusDetails = document.querySelector("#corpus-details"); const modeDetails = document.querySelector("#mode-details"); const analyticsDetails = document.querySelector("#analytics-details"); + const adminTokenInput = document.querySelector("#admin-token-input"); + const adminTokenSave = document.querySelector("#admin-token-save"); + const adminTokenClear = document.querySelector("#admin-token-clear"); + const adminTokenStatus = document.querySelector("#admin-token-status"); if (!askButton) { return; } + function updateAdminTokenStatus(message) { + if (!adminTokenStatus) { + return; + } + adminTokenStatus.textContent = message || (getAdminToken() + ? "Admin token is stored for this tab only." + : "No admin token stored for this tab."); + } + + adminTokenSave?.addEventListener("click", () => { + const token = setAdminToken(adminTokenInput?.value || ""); + if (adminTokenInput) { + adminTokenInput.value = ""; + } + updateAdminTokenStatus(token + ? "Admin token stored for this tab. Protected requests will use the Authorization header." + : "No token was entered; stored admin authentication is cleared."); + if (window.EmuShared.getViewMode() === "diagnostics") { + loadMetrics(); + } + }); + + adminTokenClear?.addEventListener("click", () => { + clearAdminToken(); + if (adminTokenInput) { + adminTokenInput.value = ""; + } + updateAdminTokenStatus("Admin token cleared from this tab."); + }); + + updateAdminTokenStatus(); + document.querySelectorAll("[data-view-tab]").forEach((tab) => { tab.addEventListener("click", () => { window.EmuShared.setViewMode(tab.dataset.viewTab); @@ -109,6 +153,13 @@ authedFetch("/metrics/modes"), authedFetch("/analytics"), ]); + const protectedResponses = [corpusResponse, metricsResponse, modesResponse, analyticsResponse]; + if (protectedResponses.some((response) => response.status === 401)) { + throw new Error("Admin authentication required. Enter the local admin token above."); + } + if (protectedResponses.some((response) => !response.ok)) { + throw new Error("Diagnostics data could not be loaded."); + } const corpus = await corpusResponse.json(); const metrics = await metricsResponse.json(); const modes = await modesResponse.json(); @@ -116,8 +167,7 @@ corpusCount.textContent = corpus.chunk_count ?? "-"; top5.textContent = formatPercent(metrics.retrieval_top5); reject.textContent = formatPercent(metrics.rejection_accuracy); - latency.textContent = - metrics.extractive_latency_p50_ms == null ? "-" : `${metrics.extractive_latency_p50_ms}ms`; + latency.textContent = metrics.extractive_latency_p50_ms == null ? "-" : `${metrics.extractive_latency_p50_ms}ms`; auditCount.textContent = analytics.events ?? "-"; corpusDetails.innerHTML = renderDetails({ source: corpus.source, @@ -139,13 +189,17 @@ latency_p95_ms: analytics.latency_p95_ms, }); modeDetails.innerHTML = renderModes(modes); - } catch { + } catch (error) { corpusCount.textContent = "-"; auditCount.textContent = "-"; + statusEl.textContent = error?.message || "Diagnostics unavailable"; } try { const llmResponse = await authedFetch("/llm/status"); + if (!llmResponse.ok) { + throw new Error("LLM status unavailable"); + } const llm = await llmResponse.json(); llmStatus.textContent = llm.model_available ? "available" : "fallback"; llmStatus.classList.toggle("warn", !llm.model_available); @@ -160,23 +214,13 @@ return ""; } return groups - .map( - (group) => ` -
-

${escapeHtml(group.title)}

-

${escapeHtml(group.summary)}

-
- ` - ) + .map((group) => `\n
\n

${escapeHtml(group.title)}

\n

${escapeHtml(group.summary)}

\n
\n `) .join(""); } function renderDetails(values) { return Object.entries(values) - .map( - ([key, value]) => - `
${escapeHtml(key.replaceAll("_", " "))}
${escapeHtml(value ?? "-")}
` - ) + .map(([key, value]) => `
${escapeHtml(key.replaceAll("_", " "))}
${escapeHtml(value ?? "-")}
`) .join(""); } @@ -186,18 +230,7 @@ .map(([name, preset]) => { const latest = payload.results?.[name] || {}; const score = latest.total_score == null ? "-" : Number(latest.total_score).toFixed(2); - return ` -
-

${escapeHtml(name)}

-

${escapeHtml(preset.local_llm_label || "")}

-
-
fanout
${escapeHtml(String(preset.retrieval_fanout))}
-
rerank
${preset.rerank_enabled ? "on" : "off"}
-
context
${escapeHtml(String(preset.max_context_chunks))}
-
score
${score}
-
-
- `; + return `\n
\n

${escapeHtml(name)}

\n

${escapeHtml(preset.local_llm_label || "")}

\n
\n
fanout
${escapeHtml(String(preset.retrieval_fanout))}
\n
rerank
${preset.rerank_enabled ? "on" : "off"}
\n
context
${escapeHtml(String(preset.max_context_chunks))}
\n
score
${score}
\n
\n
\n `; }) .join(""); } diff --git a/static/admin.html b/static/admin.html index 2d1a420..a7b1ffb 100644 --- a/static/admin.html +++ b/static/admin.html @@ -34,17 +34,6 @@

EMU Regulation Assistant

Informational, not a final decision - -