From f24ab76b8c10cb817d6e9416eecd4e6e97bdfb3d Mon Sep 17 00:00:00 2001 From: Cemil ILIK Date: Sun, 18 Oct 2026 02:27:26 +0300 Subject: [PATCH 1/5] chore: remove the stale requirements*.txt files Three requirements files sat at the repository root and nothing used them: the Dockerfile, the workflows, the tests and the documentation all install through the pyproject.toml extras. Their floors were far below pyproject's (torch>=2.0.0 against >=2.4.0, transformers>=4.38.0 against >=5.3.0), and Dependabot, which scans requirements*.txt, would have opened weekly pull requests against them from its first run. Also removes the note in .github/dependabot.yml that said they should be deleted when this cleanup landed, and the requirements*.txt line in .dockerignore, which no longer matches anything. The requirements.lock comment in pyproject.toml and its decision row in docs/roadmap/risks-and-decisions.md are about a future lock file, not these three, and stay as they are. Fixes #968 Co-Authored-By: Claude Sonnet 5.5 --- .dockerignore | 1 - .github/dependabot.yml | 6 ------ CHANGELOG.md | 6 ++++++ requirements-eval.txt | 1 - requirements-linux.txt | 2 -- requirements.txt | 11 ----------- 6 files changed, 6 insertions(+), 21 deletions(-) delete mode 100644 requirements-eval.txt delete mode 100644 requirements-linux.txt delete mode 100644 requirements.txt diff --git a/.dockerignore b/.dockerignore index 41d77ac2..ea08c564 100644 --- a/.dockerignore +++ b/.dockerignore @@ -64,5 +64,4 @@ CODE_OF_CONDUCT.md # Build tooling not needed by the installed package tools/ MANIFEST.in -requirements*.txt docker-compose.yaml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7d861eb3..cacb425c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,12 +16,6 @@ # `ci.yml`'s lint job installs. Dependabot edits only `pyproject.toml`, so a bump # would fail that test the moment it arrived. Those three are raised deliberately, # in one commit, with the CI pin moved in step. -# -# Note: `requirements.txt`, `requirements-eval.txt` and `requirements-linux.txt` -# are stale and referenced by nothing — the Dockerfile, CI and the tests all use -# `pyproject.toml` extras. Dependabot will still raise their floors; those pull -# requests should be closed, and the files removed, when the tracked cleanup -# lands. version: 2 updates: diff --git a/CHANGELOG.md b/CHANGELOG.md index 904500f6..c83151ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,12 @@ All notable changes to ForgeLM are documented here. `CONTRIBUTING.md`, `CLAUDE.md` and `AGENTS.md` that the front door is chosen with labels and views, never by closing issues. +### Removed + +- Delete the stale `requirements.txt`, `requirements-eval.txt` and `requirements-linux.txt`. Nothing + referenced them, their floors were far below `pyproject.toml`'s, and Dependabot would have opened weekly + pull requests against them; installation goes through the `pyproject.toml` extras (#968). + ### Fixed - Fix the KTO bullet on the Alignment overview user-manual page (English and Turkish): it named the diff --git a/requirements-eval.txt b/requirements-eval.txt deleted file mode 100644 index 94fe784e..00000000 --- a/requirements-eval.txt +++ /dev/null @@ -1 +0,0 @@ -lm-eval>=0.4.4 diff --git a/requirements-linux.txt b/requirements-linux.txt deleted file mode 100644 index b76fe013..00000000 --- a/requirements-linux.txt +++ /dev/null @@ -1,2 +0,0 @@ -bitsandbytes>=0.42.0 -unsloth>=2024.3.0 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 58f7f5f8..00000000 --- a/requirements.txt +++ /dev/null @@ -1,11 +0,0 @@ -torch>=2.0.0 -transformers>=4.38.0 -peft>=0.9.0 -datasets>=2.17.0 -accelerate>=0.27.0 -pyyaml>=6.0.1 -pydantic>=2.0.0 -tensorboard>=2.15.0 -trl>=0.8.0 -huggingface_hub>=0.20.0 -requests>=2.31.0 From bad88667162faedb045145d748278f8438ef4470 Mon Sep 17 00:00:00 2001 From: Cemil ILIK Date: Sun, 18 Oct 2026 09:57:29 +0300 Subject: [PATCH 2/5] docs(roadmap): correct the chat-safety claim, the past AI Act deadline rows and a non-existent config field - completed-phases.md: `forgelm chat` performs no safety screening and reads no YAML config, so the sentence that said operators get "the same screening" through `safety: enabled: true` was false; it now says so and points at `forgelm safety-eval --model --default-probes`. A note at the top of the archive says its "August 2026 full enforcement" wording is the planning assumption of the time, not the current position (#91, #75). - risks-and-decisions.md: the three live rows that named an "August 2026" deadline now give the two application dates the strategy document already uses. - product_strategy.md and its Turkish mirror: the config field is `evaluation.auto_revert`, not `auto_revert_on_safety_failure`, and what it does is stated (it deletes the trained artefacts and the run exits 3). The decision record (the GTM row) is left as written: it is history. Refs #91, #75 Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 4 ++++ docs/product_strategy-tr.md | 2 +- docs/product_strategy.md | 2 +- docs/roadmap/completed-phases.md | 16 +++++++++------- docs/roadmap/risks-and-decisions.md | 6 +++--- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d44dd02..75bf104e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,10 @@ All notable changes to ForgeLM are documented here. ### Fixed +- Correct claims in the roadmap and strategy documents: `forgelm chat` does not screen for safety and reads no YAML + config (#91), the live risk rows no longer name a past "August 2026" deadline (#75), and + `docs/product_strategy.md` (English and Turkish) names the real `evaluation.auto_revert` field instead of a + non-existent `auto_revert_on_safety_failure`. - Fix the KTO bullet on the Alignment overview user-manual page (English and Turkish): it named the fields `(prompt, response, good?)`, but the KTO loader reads `prompt`, `completion` and a boolean `label` (#965). diff --git a/docs/product_strategy-tr.md b/docs/product_strategy-tr.md index 97d465cd..d9010672 100644 --- a/docs/product_strategy-tr.md +++ b/docs/product_strategy-tr.md @@ -21,7 +21,7 @@ ForgeLM, LLM ince ayarını (fine-tuning) **güvenli, denetlenebilir ve tekrarla - **3 katmanlı güvenlik kapısı**: ikili geçer/kalır + güven ağırlıklı skor + 14 zarar kategorisinde (S1-S14) önem analizi - **Otomatik geri alma (auto-revert)**: güvenlik regresyonu tespit edilirse, çıktılar yazılmadan önce eğitim sonucu otomatik olarak reddedilir - **Çalıştırmalar arası trend izleme**: güvenlik skorları her çalıştırmada loglanır; zamanla oluşan kayan bozulma yakalanır -- **`auto_revert_on_safety_failure`** config alanı doğrudan YAML'a yazılır — CI'da güvenlik kapısı uygulamak için özel script gerekmez +- **`evaluation.auto_revert`** config alanı doğrudan YAML'a yazılır — bir güvenlik, benchmark ya da judge kapısı başarısız olduğunda çalışma eğitilmiş çıktıları silip 3 koduyla çıkabilir; CI'da kapıları uygulamak için özel script gerekmez ### 2. Uyumluluk Yerleşik (Compliance-Native) diff --git a/docs/product_strategy.md b/docs/product_strategy.md index 06ef3f89..12105967 100644 --- a/docs/product_strategy.md +++ b/docs/product_strategy.md @@ -21,7 +21,7 @@ Fine-tuning can degrade a model's safety properties — silently. ForgeLM treats - **3-layer safety gate**: binary pass/fail + confidence-weighted score + per-category severity analysis covering 14 harm categories (S1-S14) - **Auto-revert**: if safety regression is detected against baseline, training output is automatically rejected before artifacts are written - **Cross-run trend tracking**: safety scores are logged per-run and trended over time to catch gradual drift -- **`auto_revert_on_safety_failure`** is a first-class config field — teams can enforce safety gates in CI without any custom scripting +- **`evaluation.auto_revert`** is a first-class config field — when a safety, benchmark or judge gate fails, the run can delete the trained artefacts and exit with code 3, so teams can enforce the gates in CI without any custom scripting ### 2. Compliance-Native diff --git a/docs/roadmap/completed-phases.md b/docs/roadmap/completed-phases.md index f266a662..99679f0c 100644 --- a/docs/roadmap/completed-phases.md +++ b/docs/roadmap/completed-phases.md @@ -1,6 +1,8 @@ # Completed Phases — Archive > **Note:** Historical archive of ForgeLM's Phase 1-10 completed work. Kept for reference and onboarding. For active planning, see [../roadmap.md](../roadmap.md). +> +> **Dates.** Where this archive says the EU AI Act is "fully enforced" in "August 2026", that was the planning assumption when the phase was written and is kept as the record. The application dates have since changed and differ by obligation; the current statement is in [../product_strategy.md](../product_strategy.md), and there is no single full-enforcement date. ## Summary table @@ -661,18 +663,18 @@ graph TD ``` 2. [x] **`forgelm chat` — interactive terminal loop** - Terminal REPL in `forgelm/chat.py`: streaming output (default), `/reset`, `/save [file]`, `/temperature 0.x`, `/system `, `/help` commands. `rich` optional rendering. History management with 50-pair cap. The `--safety` per-turn screen flag is planned for v0.6.0+ Pro CLI (today's safety pipeline runs through the YAML `safety:` block during training/eval). + Terminal REPL in `forgelm/chat.py`: streaming output (default), `/reset`, `/save [file]`, `/temperature 0.x`, `/system `, `/help` commands. `rich` optional rendering. History management with 50-pair cap. `forgelm chat` performs no safety screening and reads no YAML config; the `--safety` per-turn screen flag is not implemented. Screen a model with `forgelm safety-eval --model --default-probes`, or with the `evaluation.safety` block during training, before exposing it. ```bash forgelm chat ./outputs/my_run ``` `forgelm chat`'s shipping form takes a positional checkpoint path - plus optional `--adapter`. The per-turn Llama Guard screen via - `--safety` is planned for v0.6.0+ Pro CLI (see Phase 13 roadmap); - today operators get the same screening by enabling - `safety: enabled: true` in the YAML config the chat REPL reads. - The flag-form preview (`forgelm chat ... --safety`) is NOT - runnable today. + plus optional `--adapter`. It performs no safety screening and does + not read a YAML config: a per-turn Llama Guard screen via `--safety` + is not implemented, and the flag-form preview + (`forgelm chat ... --safety`) is NOT runnable. Screen a model with + `forgelm safety-eval --model --default-probes` (or the + `evaluation.safety` block during training) before exposing it. 3. [x] **`forgelm export` — HF → GGUF conversion** Wraps `llama-cpp-python`'s `convert_hf_to_gguf.py`; no reimplementation. Handles adapter merge (LoRA + base → merged fp16) before conversion. Supports quants: `q2_k`, `q3_k_m`, `q4_k_m`, `q5_k_m`, `q8_0`, `f16`. SHA-256 of output artifact appended to `model_integrity.json`. Optional dependency: `pip install forgelm[export]`. diff --git a/docs/roadmap/risks-and-decisions.md b/docs/roadmap/risks-and-decisions.md index 39b42bd0..eb79692f 100644 --- a/docs/roadmap/risks-and-decisions.md +++ b/docs/roadmap/risks-and-decisions.md @@ -8,10 +8,10 @@ | Risk | Impact | Likelihood | Mitigation | |------|--------|------------|------------| | **Dependency Breaking Changes** (TRL, PEFT, Unsloth) | Training pipeline breaks without warning | High | Version pinning with upper bounds, CI nightly builds against latest deps, compatibility matrix | -| **EU AI Act Non-Compliance** (August 2026 deadline) | Enterprise customers cannot adopt ForgeLM for high-risk AI | High | Phase 8 deep compliance: Annex IV docs, audit log, risk assessment, human gate, data governance | +| **EU AI Act Non-Compliance** (high-risk obligations apply from 2 December 2027 for Annex III and 2 August 2028 for Annex I; see [product_strategy.md](../product_strategy.md)) | Enterprise customers cannot adopt ForgeLM for high-risk AI | High | Phase 8 deep compliance: Annex IV docs, audit log, risk assessment, human gate, data governance | | **Safety Degradation from Fine-Tuning** | Fine-tuned models lose alignment, enterprise liability | High | Phase 6 safety evaluation pipeline, auto-revert on safety regression | | **Alignment Method Lock-In** | ForgeLM supports only ORPO while market demands DPO/GRPO | High | Phase 5 is top priority — critical market expectation | -| **Compliance window closing** (Aug 2, 2026) | Enterprise leads not converted before competitors add compliance features | High | Enterprise outreach Day 1; Turkey market as first pilot; deep compliance features (Audit API, managed cloud) as moat | +| **Compliance window** (Annex III from 2 December 2027, Annex I from 2 August 2028) | Enterprise leads not converted before competitors add compliance features | High | Enterprise outreach Day 1; Turkey market as first pilot; deep compliance features (Audit API, managed cloud) as moat | | **Community flywheel not started** | 0 stars → 0 enterprise credibility → missed EU AI Act window | High | Phase 10.5 Quickstart prioritized; YouTube Academy; Show HN + Reddit launch | ### Medium Severity @@ -39,7 +39,7 @@ 2. **Safety-as-a-Feature (Phase 6)** — No competitor integrates safety evaluation into the training pipeline. ForgeLM can own "the safest way to fine-tune an LLM." ### Medium-Term Opportunities -3. **EU AI Act Compliance** — August 2026 deadline creates urgent demand. ForgeLM as the only tool generating compliance artifacts is a powerful enterprise sales argument. +3. **EU AI Act Compliance** — the staggered high-risk application dates (2 December 2027 for Annex III, 2 August 2028 for Annex I) create demand. ForgeLM as the only tool generating compliance artifacts is a powerful enterprise sales argument. 4. **MoE Fine-Tuning** — Qwen3, DeepSeek-V3 dominance means MoE support is becoming table stakes. 5. **Cost Transparency** — GPU cost tracking per run enables enterprise budget planning and optimization. Simple to implement, high perceived value. From c088055827ef8d40d3b60103b19b21d5f80c522f Mon Sep 17 00:00:00 2001 From: Cemil ILIK Date: Sun, 18 Oct 2026 09:58:02 +0300 Subject: [PATCH 3/5] docs(usermanuals): say what the medical-qa-tr template really enables The templates reference (English and Turkish) said medical-qa-tr "ships with risk_assessment + safety eval pre-wired". The template's config has no `evaluation` and no `risk_assessment` block; only the sample answers carry a safety disclaimer. A user starting from a template in a regulated domain would have believed a gate was on. The row now says what is and is not enabled and what to add before any use beyond a demo. Refs #97 Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 2 ++ docs/usermanuals/en/reference/yaml-templates.md | 2 +- docs/usermanuals/tr/reference/yaml-templates.md | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d44dd02..ce87c3f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,8 @@ All notable changes to ForgeLM are documented here. ### Fixed +- Correct the `medical-qa-tr` row of the YAML templates reference (English and Turkish): the template enables no safety + evaluation and no `risk_assessment`, so it no longer says it ships with both pre-wired (#97). - Fix the KTO bullet on the Alignment overview user-manual page (English and Turkish): it named the fields `(prompt, response, good?)`, but the KTO loader reads `prompt`, `completion` and a boolean `label` (#965). diff --git a/docs/usermanuals/en/reference/yaml-templates.md b/docs/usermanuals/en/reference/yaml-templates.md index 5fb6481a..f6fd2fd5 100644 --- a/docs/usermanuals/en/reference/yaml-templates.md +++ b/docs/usermanuals/en/reference/yaml-templates.md @@ -23,7 +23,7 @@ The five templates and the user journey each one optimises for: | `customer-support` | SFT | Multi-turn helpful + safe assistant — the most common production pattern. | | `code-assistant` | SFT | Code-completion / pair-programming model. | | `domain-expert` | SFT | BYOD (Bring Your Own Dataset) on a domain-specific corpus. | -| `medical-qa-tr` | SFT | Turkish-language medical QA (regulated domain — ships with `risk_assessment` + safety eval pre-wired). | +| `medical-qa-tr` | SFT | Turkish-language medical QA (regulated domain — the sample answers carry a safety disclaimer, but the template enables no safety evaluation and no `risk_assessment`; add an `evaluation.safety` block and a `risk_assessment:` block before any use beyond a demo). | | `grpo-math` | GRPO | Reward-model fine-tuning on math benchmarks (built-in format/length reward shaping). | The canonical template content is **the source of truth** — it is what diff --git a/docs/usermanuals/tr/reference/yaml-templates.md b/docs/usermanuals/tr/reference/yaml-templates.md index 9288a614..09719813 100644 --- a/docs/usermanuals/tr/reference/yaml-templates.md +++ b/docs/usermanuals/tr/reference/yaml-templates.md @@ -23,7 +23,7 @@ Beş şablon ve her birinin optimize ettiği kullanıcı yolu: | `customer-support` | SFT | Multi-turn yardımcı + güvenli asistan — en yaygın production pattern. | | `code-assistant` | SFT | Kod-tamamlama / pair-programming modeli. | | `domain-expert` | SFT | Domain-spesifik corpus üzerinde BYOD (Bring Your Own Dataset). | -| `medical-qa-tr` | SFT | Türkçe tıbbi soru-cevap (regüle alan — `risk_assessment` + safety eval ön-bağlı ship olur). | +| `medical-qa-tr` | SFT | Türkçe tıbbi soru-cevap (regüle alan — örnek cevaplar bir güvenlik uyarısı taşır, ama şablon güvenlik değerlendirmesini ve `risk_assessment`'ı etkinleştirmez; demo dışındaki bir kullanımdan önce bir `evaluation.safety` bloğu ve bir `risk_assessment:` bloğu ekle). | | `grpo-math` | GRPO | Matematik benchmark'ları üzerinde reward-model fine-tuning (yerleşik format/length reward shaping). | Kanonik şablon içeriği **doğruluk kaynağıdır** — `forgelm quickstart`'ın From c57f62cc6d5e73aada10a161776126216f4bd0c1 Mon Sep 17 00:00:00 2001 From: Cemil ILIK Date: Sun, 18 Oct 2026 11:00:06 +0300 Subject: [PATCH 4/5] docs(roadmap): limit the AI Act dates to Chapter III Sections 1-3 Review finding: Regulation (EU) 2026/1744 delays Chapter III, Sections 1-3 (except Article 6(5)), to 2 December 2027 for Annex III systems and 2 August 2028 for Annex I systems. The risk row said 'high-risk obligations', which is wider. Co-Authored-By: Claude Sonnet 5.5 --- docs/roadmap/risks-and-decisions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/roadmap/risks-and-decisions.md b/docs/roadmap/risks-and-decisions.md index eb79692f..e67a0ed4 100644 --- a/docs/roadmap/risks-and-decisions.md +++ b/docs/roadmap/risks-and-decisions.md @@ -8,7 +8,7 @@ | Risk | Impact | Likelihood | Mitigation | |------|--------|------------|------------| | **Dependency Breaking Changes** (TRL, PEFT, Unsloth) | Training pipeline breaks without warning | High | Version pinning with upper bounds, CI nightly builds against latest deps, compatibility matrix | -| **EU AI Act Non-Compliance** (high-risk obligations apply from 2 December 2027 for Annex III and 2 August 2028 for Annex I; see [product_strategy.md](../product_strategy.md)) | Enterprise customers cannot adopt ForgeLM for high-risk AI | High | Phase 8 deep compliance: Annex IV docs, audit log, risk assessment, human gate, data governance | +| **EU AI Act Non-Compliance** (Chapter III, Sections 1–3, except Article 6(5), apply from 2 December 2027 to high-risk AI systems under Article 6(2) and Annex III, and from 2 August 2028 to systems under Article 6(1) and Annex I; see [product_strategy.md](../product_strategy.md)) | Enterprise customers cannot adopt ForgeLM for high-risk AI | High | Phase 8 deep compliance: Annex IV docs, audit log, risk assessment, human gate, data governance | | **Safety Degradation from Fine-Tuning** | Fine-tuned models lose alignment, enterprise liability | High | Phase 6 safety evaluation pipeline, auto-revert on safety regression | | **Alignment Method Lock-In** | ForgeLM supports only ORPO while market demands DPO/GRPO | High | Phase 5 is top priority — critical market expectation | | **Compliance window** (Annex III from 2 December 2027, Annex I from 2 August 2028) | Enterprise leads not converted before competitors add compliance features | High | Enterprise outreach Day 1; Turkey market as first pilot; deep compliance features (Audit API, managed cloud) as moat | From bee88feb83f089a1e86c23b5780d0ecfe8a35895 Mon Sep 17 00:00:00 2001 From: Cemil ILIK Date: Sun, 18 Oct 2026 11:00:07 +0300 Subject: [PATCH 5/5] docs(usermanuals): do not imply the medical template becomes fit for clinical use Review findings on the medical-qa-tr row: adding the two blocks does not make the template suitable for clinical decision support, and an evaluation.safety block without enabled: true leaves the check off. The row now says the template is not for clinical decision support, to set evaluation.safety.enabled: true, and to fill in the risk_assessment block accurately. English and Turkish. Co-Authored-By: Claude Sonnet 5.5 --- docs/usermanuals/en/reference/yaml-templates.md | 2 +- docs/usermanuals/tr/reference/yaml-templates.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usermanuals/en/reference/yaml-templates.md b/docs/usermanuals/en/reference/yaml-templates.md index f6fd2fd5..75341a39 100644 --- a/docs/usermanuals/en/reference/yaml-templates.md +++ b/docs/usermanuals/en/reference/yaml-templates.md @@ -23,7 +23,7 @@ The five templates and the user journey each one optimises for: | `customer-support` | SFT | Multi-turn helpful + safe assistant — the most common production pattern. | | `code-assistant` | SFT | Code-completion / pair-programming model. | | `domain-expert` | SFT | BYOD (Bring Your Own Dataset) on a domain-specific corpus. | -| `medical-qa-tr` | SFT | Turkish-language medical QA (regulated domain — the sample answers carry a safety disclaimer, but the template enables no safety evaluation and no `risk_assessment`; add an `evaluation.safety` block and a `risk_assessment:` block before any use beyond a demo). | +| `medical-qa-tr` | SFT | Turkish-language medical QA (regulated domain — the sample answers carry a safety disclaimer, but the template enables no safety evaluation and has no `risk_assessment` metadata. It is not for clinical decision support, and adding these does not change that; before any use beyond a demo, set `evaluation.safety.enabled: true` and fill in the top-level `risk_assessment:` block accurately). | | `grpo-math` | GRPO | Reward-model fine-tuning on math benchmarks (built-in format/length reward shaping). | The canonical template content is **the source of truth** — it is what diff --git a/docs/usermanuals/tr/reference/yaml-templates.md b/docs/usermanuals/tr/reference/yaml-templates.md index 09719813..5baf2e0d 100644 --- a/docs/usermanuals/tr/reference/yaml-templates.md +++ b/docs/usermanuals/tr/reference/yaml-templates.md @@ -23,7 +23,7 @@ Beş şablon ve her birinin optimize ettiği kullanıcı yolu: | `customer-support` | SFT | Multi-turn yardımcı + güvenli asistan — en yaygın production pattern. | | `code-assistant` | SFT | Kod-tamamlama / pair-programming modeli. | | `domain-expert` | SFT | Domain-spesifik corpus üzerinde BYOD (Bring Your Own Dataset). | -| `medical-qa-tr` | SFT | Türkçe tıbbi soru-cevap (regüle alan — örnek cevaplar bir güvenlik uyarısı taşır, ama şablon güvenlik değerlendirmesini ve `risk_assessment`'ı etkinleştirmez; demo dışındaki bir kullanımdan önce bir `evaluation.safety` bloğu ve bir `risk_assessment:` bloğu ekle). | +| `medical-qa-tr` | SFT | Türkçe tıbbi soru-cevap (regüle alan — örnek cevaplar bir güvenlik uyarısı taşır, ama şablon güvenlik değerlendirmesini etkinleştirmez ve `risk_assessment` metadata'sı içermez. Klinik karar desteği için değildir ve bunları eklemek bunu değiştirmez; demo dışındaki bir kullanımdan önce `evaluation.safety.enabled: true` yap ve en üstteki `risk_assessment:` bloğunu doğru biçimde doldur). | | `grpo-math` | GRPO | Matematik benchmark'ları üzerinde reward-model fine-tuning (yerleşik format/length reward shaping). | Kanonik şablon içeriği **doğruluk kaynağıdır** — `forgelm quickstart`'ın