chore: migrate to HodeTech org + ignore new nightly CVE#61
Conversation
The project moved to the HodeTech GitHub organization (github.com/HodeTech/ForgeLM). Update every reference project-wide: - Repo URLs: github.com/cemililik/ForgeLM -> github.com/HodeTech/ForgeLM (README badges, pyproject [project.urls], docs, user manuals EN+TR, notebooks, site/, CHANGELOG, CONTRIBUTING, issue-template config, model_card.py, standards, roadmap). - GHCR image: ghcr.io/cemililik/forgelm -> ghcr.io/hodetech/forgelm (lowercase namespace, per GHCR owner naming). - Contact email (CODE_OF_CONDUCT.md): ai-team@cemililik.com -> forgelm@hodetech.io. - SonarCloud (sonar-project.properties): organization=hodetech, projectKey=HodeTech_ForgeLM. 271 references across 99 files, 1:1 replacements (no other edits). Local git remote origin re-pointed to the HodeTech URL. Doc/site guards re-run green: anchor resolution, bilingual parity, user-manual self-contained, CLI help consistency, site-version, site-claims. model_card tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…5-24) The nightly on main is green through the new --ignores mechanism (the run log shows CVE-2026-1839 correctly suppressed), but a new no-fix advisory dropped: transformers PYSEC-2025-217 (CVE-2025-14929), X-CLIP checkpoint-conversion deserialization RCE. CVSS is AV:L/UI:R (local + user must open a malicious checkpoint), affected through 5.0.0rc0 with no fix in the pinned 4.x line. Same threat-model carve-out as the existing transformers/torch deserialization ignores: operators are documented as required to load only trusted checkpoints, and ForgeLM does not invoke X-CLIP checkpoint conversion. With the Phase-refactored ignore file this is a one-line data change, no workflow edit — exactly the maintainability win the PR #59 review asked for. Refs: #58 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@coderabbitai review all |
|
✅ Actions performedFull review triggered. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThis PR replaces repository/registry/organization references from cemililik/ForgeLM to HodeTech/ForgeLM across docs, site, notebooks, CI, project metadata, and adds a pip-audit ignore entry plus deployment-note and exit-code clarifications. ChangesRepository & CI migration
Documentation & manuals
Code, notebooks, model card
Website & translations
Feature notes & contracts
Security vulnerability management
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ast-grep (0.42.3)site/js/translations.jsComment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
docs/usermanuals/en/deployment/chat.md (1)
110-110: ⚡ Quick winMisleading equivalence between chat-compare and benchmark-only.
The note states "Today the same comparison runs through
forgelm --benchmark-only", but the--benchmark-onlymode runs lm-evaluation-harness benchmark tasks (forgelm/cli/_no_train_modes.py:1-140), which is fundamentally different from the side-by-side chat prompt comparison shown in lines 113-119. Consider revising to acknowledge that no direct equivalent exists today, or clarify that operators must manually run benchmarks separately on each model and compare the judge results themselves (which is a different workflow from the planned dedicated UX).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/usermanuals/en/deployment/chat.md` at line 110, The note incorrectly implies feature parity between the planned chat-compare subcommand and the existing --benchmark-only mode; update the text to state that chat-compare provides an interactive side-by-side chat prompt comparison while --benchmark-only (see forgelm/cli/_no_train_modes.py) runs lm-evaluation-harness benchmarks and requires manually running benchmarks per checkpoint and aggregating judge results, so operators must currently run and compare results themselves rather than getting the planned dedicated UX.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/usermanuals/en/deployment/chat.md`:
- Around line 66-68: Resolve two issues: pick one consistent flag form (e.g.,
use "--safety" or "--safety on" everywhere) and update the paragraph to use that
chosen form; and clarify the current v0.5.5 behavior by either (A) describing
the exact binding workflow (pointing readers to the chat subcommand parser in
forgelm/cli/_parser.py and specifying which config file/key to set and how the
runner must load it) or (B) explicitly state that on v0.5.5 the CLI does not
support per-turn safety screening and that the YAML safety: enabled: true entry
is only read by certain runners (name them) — do not claim a binding mechanism
exists unless you spell out the exact steps referencing forgelm/cli/_parser.py.
In `@site/js/translations.js`:
- Line 4345: The privacy copy currently hardcodes "pip install forgelm==0.5.5"
in the "privacy.body" locale string (and the same hardcoded version appears in
the sibling privacy locale entries noted in the comment); change this to avoid a
stale pinned version by either removing the "==0.5.5" (use "pip install
forgelm") or replace it with a template/variable (e.g., "{FORGELM_PIP}" or
"{siteVersion}") that the site build injects so the install line is maintained
site-wide and updated from a single source; locate and update the string key
"privacy.body" (and the other privacy locale keys mentioned) to use the
non-hardcoded form.
In `@tools/pip_audit_ignores.yaml`:
- Around line 51-69: Update the PYSEC-2025-217 ignore entry (id: PYSEC-2025-217,
package: transformers) to match advisory wording: state CVE-2025-14929 with CVSS
vector including AV:L and UI:R, remove the unverified phrase "affected through
5.0.0rc0" and instead say "no fixed version announced for the 4.x line" (or
mirror the advisory language about lack of a fix), and adjust the
reevaluate_after criteria accordingly; additionally perform and document a
codebase check to confirm the threat-model claim by searching for usages of
X-CLIP checkpoint conversion paths (search for identifiers/strings such as
"X-CLIP", "checkpoint conversion", "pt2 loader", and any direct "torch.load"
checkpoint-loading sites) and record the result in the entry.
---
Nitpick comments:
In `@docs/usermanuals/en/deployment/chat.md`:
- Line 110: The note incorrectly implies feature parity between the planned
chat-compare subcommand and the existing --benchmark-only mode; update the text
to state that chat-compare provides an interactive side-by-side chat prompt
comparison while --benchmark-only (see forgelm/cli/_no_train_modes.py) runs
lm-evaluation-harness benchmarks and requires manually running benchmarks per
checkpoint and aggregating judge results, so operators must currently run and
compare results themselves rather than getting the planned dedicated UX.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 3115152d-2066-4049-a433-0504b4e6c23f
📒 Files selected for processing (100)
.agents/skills/cut-release/SKILL.md.agents/skills/sync-bilingual-docs/SKILL.md.claude/skills/cut-release/SKILL.md.claude/skills/sync-bilingual-docs/SKILL.md.github/ISSUE_TEMPLATE/config.yml.github/workflows/nightly.ymlCHANGELOG.mdCODE_OF_CONDUCT.mdCONTRIBUTING.mdREADME.mddocs/guides/quickstart-tr.mddocs/guides/quickstart.mddocs/guides/troubleshooting-tr.mddocs/guides/troubleshooting.mddocs/reference/usage-tr.mddocs/reference/usage.mddocs/roadmap/releases.mddocs/roadmap/risks-and-decisions.mddocs/standards/code-review.mddocs/standards/documentation.mddocs/usermanuals/en/compliance/annex-iv.mddocs/usermanuals/en/compliance/audit-log.mddocs/usermanuals/en/compliance/gdpr-erasure.mddocs/usermanuals/en/compliance/gdpr.mddocs/usermanuals/en/compliance/human-approval-gate.mddocs/usermanuals/en/compliance/overview.mddocs/usermanuals/en/compliance/verify-audit.mddocs/usermanuals/en/data/deduplication.mddocs/usermanuals/en/data/pii-masking.mddocs/usermanuals/en/deployment/chat.mddocs/usermanuals/en/deployment/model-merging.mddocs/usermanuals/en/deployment/verify-gguf.mddocs/usermanuals/en/evaluation/trend-tracking.mddocs/usermanuals/en/getting-started/installation.mddocs/usermanuals/en/operations/docker.mddocs/usermanuals/en/operations/experiment-tracking.mddocs/usermanuals/en/operations/gpu-cost.mddocs/usermanuals/en/operations/iso-soc2-deployer.mddocs/usermanuals/en/operations/supply-chain.mddocs/usermanuals/en/operations/troubleshooting.mddocs/usermanuals/en/operations/webhooks.mddocs/usermanuals/en/reference/configuration.mddocs/usermanuals/en/reference/exit-codes.mddocs/usermanuals/en/reference/json-output.mddocs/usermanuals/en/reference/library-api.mddocs/usermanuals/en/reference/performance.mddocs/usermanuals/en/reference/yaml-templates.mddocs/usermanuals/tr/compliance/annex-iv.mddocs/usermanuals/tr/compliance/audit-log.mddocs/usermanuals/tr/compliance/gdpr-erasure.mddocs/usermanuals/tr/compliance/gdpr.mddocs/usermanuals/tr/compliance/human-approval-gate.mddocs/usermanuals/tr/compliance/overview.mddocs/usermanuals/tr/compliance/verify-audit.mddocs/usermanuals/tr/data/deduplication.mddocs/usermanuals/tr/data/pii-masking.mddocs/usermanuals/tr/deployment/chat.mddocs/usermanuals/tr/deployment/model-merging.mddocs/usermanuals/tr/deployment/verify-gguf.mddocs/usermanuals/tr/evaluation/trend-tracking.mddocs/usermanuals/tr/getting-started/installation.mddocs/usermanuals/tr/operations/docker.mddocs/usermanuals/tr/operations/experiment-tracking.mddocs/usermanuals/tr/operations/gpu-cost.mddocs/usermanuals/tr/operations/iso-soc2-deployer.mddocs/usermanuals/tr/operations/supply-chain.mddocs/usermanuals/tr/operations/troubleshooting.mddocs/usermanuals/tr/operations/webhooks.mddocs/usermanuals/tr/reference/configuration.mddocs/usermanuals/tr/reference/exit-codes.mddocs/usermanuals/tr/reference/json-output.mddocs/usermanuals/tr/reference/library-api.mddocs/usermanuals/tr/reference/performance.mddocs/usermanuals/tr/reference/yaml-templates.mdforgelm/model_card.pynotebooks/data_curation.ipynbnotebooks/dpo_alignment.ipynbnotebooks/galore_memory_optimization.ipynbnotebooks/grpo_reasoning.ipynbnotebooks/ingestion_playground.ipynbnotebooks/kto_binary_feedback.ipynbnotebooks/multi_dataset.ipynbnotebooks/post_training_workflow.ipynbnotebooks/quickstart_sft.ipynbnotebooks/safety_evaluation.ipynbnotebooks/synthetic_data_training.ipynbpyproject.tomlsite/README.mdsite/compliance.htmlsite/contact.htmlsite/features.htmlsite/guide.htmlsite/index.htmlsite/js/guide.jssite/js/translations.jssite/privacy.htmlsite/quickstart.htmlsite/terms.htmlsonar-project.propertiestools/pip_audit_ignores.yaml
…acy pin, PYSEC-2025-217) All four findings verified against current code; all still valid. chat.md (EN+TR) — safety routing (L66-68): Verified forgelm/cli/_parser.py: `forgelm chat` has no --safety flag and loads no config; run_chat/ChatSession take no safety arg. The old copy claimed a YAML `safety:` binding into the chat session — false, and the key path was wrong. Rewritten to state the current release does NOT screen per-turn in the REPL, and that `evaluation.safety.enabled: true` is consumed only by the training auto-revert gate (forgelm/trainer.py) and `forgelm safety-eval`. Collapsed the inconsistent `--safety` / `--safety on` forms to a single `--safety`. chat.md (EN+TR) — chat-compare note (L110): Verified forgelm/cli/_no_train_modes.py: --benchmark-only runs lm-evaluation-harness on a SINGLE checkpoint, no side-by-side, no judge. Removed the implied parity; now says operators must run --benchmark-only per checkpoint, run the judge separately, and aggregate themselves until the planned chat-compare UX ships. site/js/translations.js — privacy.body (6 locales): Dropped the stale hard-coded `pip install forgelm==0.5.5` pin (real release is 0.7.0; this string is outside update_site_version.py's scope so it drifted). Now `pip install forgelm` — no version to drift, consistent with the site's no-build-step constraint. tools/pip_audit_ignores.yaml — PYSEC-2025-217: Reworded to advisory language: full CVSS vector (AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H), "no fixed version for the 4.x line" instead of "affected through 5.0.0rc0", reevaluate_after no longer assumes a fixed 5.x exists. Documented the codebase check (git grep over forgelm/): no X-CLIP usage, no checkpoint-conversion path besides HF->GGUF export, zero direct torch.load sites — all loading via from_pretrained, so the vulnerable path is unreachable. Validated: bilingual parity, anchor resolution, user-manual self-contained, site-version, site-claims, site chrome parity, CLI help consistency, ignore-file schema; 23 check_pip_audit tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Two related housekeeping changes that both target
mainviadevelopment:github.com/HodeTech/ForgeLM). Updates every reference project-wide (271 refs / 99 files, 1:1 string replacements).transformers PYSEC-2025-217to the project ignore list so the daily nightly goes green again.1. Org migration
github.com/cemililik/ForgeLM→github.com/HodeTech/ForgeLM(README badges,pyproject.toml[project.urls], docs, user manuals EN+TR, notebooks,site/, CHANGELOG, CONTRIBUTING, issue-template,forgelm/model_card.py, standards, roadmap)ghcr.io/cemililik/forgelm→ghcr.io/hodetech/forgelm(lowercase namespace)ai-team@cemililik.com→forgelm@hodetech.io(CODE_OF_CONDUCT.md)organization=hodetech,projectKey=HodeTech_ForgeLM(sonar-project.properties)git grep cemililik→ 0 remaining. Guards green: anchor resolution, bilingual parity, user-manual self-contained, CLI help consistency, site-version, site-claims.ruffclean;model_cardtests pass.2. Nightly CVE ignore (transformers PYSEC-2025-217)
The new
--ignores tools/pip_audit_ignores.yamlmechanism works onmain(the run log showsCVE-2026-1839correctly suppressed), but a fresh no-fix advisory dropped:AV:L/UI:R(local + user must open a malicious checkpoint), affected through5.0.0rc0, no fix in the pinned 4.x line.The ignore-file loader self-validates (
tools/check_pip_audit.py --ignores); 23 tests pass.Repo-side follow-ups (not in this diff)
hodetechorg with keyHodeTech_ForgeLM; re-addSONAR_TOKENsecret if not inherited (repo currently lists no Actions secrets).Closes #58
🤖 Generated with Claude Code
Summary by CodeRabbit
Chores
Documentation
Security