You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The document says. A.5.3 Segregation of duties: human_approval.required/granted enforces trainer ≠ approver
What the code does. The approve path resolves the approver identity and logs it, but never compares it with the training operator. A run can be approved by the identity that trained it. The SoA (A.5.3) and RTP R-12 say so too: ForgeLM records identities, and checking that they differ is a deployer/IdP control (the threat model also scopes it out).
User impact. An auditor or deployer treats ForgeLM as the enforcing segregation-of-duties control and adds no IdP-side separation, so self-approval goes unnoticed.
Proposed correction. Replace with: "human_approval.required/granted records the approver identity (from FORGELM_OPERATOR) so trainer ≠ approver is auditable; ForgeLM does not reject self-approval — enforce disjoint runner/reviewer identities at the IdP."
Turkish mirror. the Turkish page has the same error; fix both in the same PR
Acceptance criteria
Each statement is re-checked against the code at fix time.
Documentation listed above is corrected in English and in its Turkish mirror in the same PR.
Every finding in this issue is resolved or explicitly closed with a reason.
The release note names the contract this fix restores.
Found by the October 2026 ForgeLM code and documentation review against commit cab2947. Code links point at that commit; line numbers may have moved since. Finding IDs (CR-…, DOC-…, TECH-…) are stable references for this backlog.
Activity
docs: compliance and privacy wording, SBOM and Article 12/14, and the…