Repository navigation
Regulation and standards: GDPR, ISO/IEC 27001, SOC 2, ISO/IEC 42001, EDPB, EU Cyber Resilience Act: AICPA SOC 2 Trust Services Criteria: edition cited ('2017, revised 2022') and the criterion-level m… (TECH-T11-006) #460
Description
Wave 1 · theme D1-9: Compliance mappings and marketing language · highest severity High · 14 finding(s) · effort not estimated
Summary
The edition cited is current. However, the deployer evidence map assigns ForgeLM evidence to criteria with wrong titles: breach evidence sits under P7.1 (quality), and there is a fabricated P7.2. An auditor cross-checking against TSP 100 will reject these rows, which undercuts the evidence map. CC6.2 (registering and authorising users) and CC6.6 (logical access against external threats) are mapped to evidence that does not fit their wording.
Primary finding
TECH-T11-006 — Regulation and standards: GDPR, ISO/IEC 27001, SOC 2, ISO/IEC 42001, EDPB, EU Cyber Resilience Act: AICPA SOC 2 Trust Services Criteria: edition cited ('2017, revised 2022') and the criterion-level m…
severity Next release
Item. AICPA SOC 2 Trust Services Criteria: edition cited ('2017, revised 2022') and the criterion-level mapping (CC1.5/CC8.1/CC9.2, A1, PI1, P series) · verdict: incorrect-claim · urgency: Next release
State in ForgeLM. docs/reference/soc2_trust_criteria_mapping.md:3-4 and docs/design/iso27001_soc2_alignment.md:869 cite the '2017 framework, revised 2022'. CC8.1 and CC9.2 are used reasonably. CC1.5 ('Enforces accountability') is used for operator attribution, and approve_subcommand.md:61 also uses it for segregation of duties. Criterion IDs and titles that do not match the TSC: A1.3 'Environmental protections' (mapping :71, TR :70, design :334); PI1.2-PI1.5 'System processing / Outputs are accurate / Inputs traceable / Outputs traceable' (mapping :80-83, TR :79-82, design :341-344); P3.2 'Quality of personal data' (:99, TR :98, design :360); P4.1 'Use, retention, and disposal' (:100, TR :99, design :361); P5.2 'Inquiries and complaints' (:102, TR :101, design :363); P6.2 'Third-party agreements' (:104, TR :103, design :365); P7.1 'Breach notification' (:105, TR :104, design :366); and a non-existent P7.2 'Breach disclosure' (:106, TR :105, design :367).
State of the ecosystem on 2026-10-01. The AICPA & CIMA resource page (retrieved 2026-10-01) still offers '2017 Trust Services Criteria (With Revised Points of Focus – 2022)', behind a free account. A 2026-09-18 practitioner article says there is no '2026 Trust Services Criteria': the standard 'is the same one that has applied since 2017, with the points of focus the AICPA refreshed in 2022 ... No new control objectives'. The official AICPA TSP Section 100 PDF (2017 TSC, March 2020 update), archived from us.aicpa.org, gives the criteria: A1.2 covers environmental protections and recovery infrastructure; A1.3 'tests recovery plan procedures'; PI1.2 inputs, PI1.3 processing, PI1.4 output, PI1.5 storage of inputs and outputs; P3.2 explicit consent; P4.1 use, P4.2 retention, P4.3 disposal; P5.2 correction/amendment; P6.2 record of authorized disclosures; P6.6 notification of breaches; P7.1 quality; P8.1 inquiries, complaints and disputes; there is no P7.2. Segregation of duties is a CC5.1 point of focus ('Addresses Segregation of Duties'), and CC1.5 is 'holds individuals accountable'.
Impact. The edition cited is current. However, the deployer evidence map assigns ForgeLM evidence to criteria with wrong titles: breach evidence sits under P7.1 (quality), and there is a fabricated P7.2. An auditor cross-checking against TSP 100 will reject these rows, which undercuts the evidence map. CC6.2 (registering and authorising users) and CC6.6 (logical access against external threats) are mapped to evidence that does not fit their wording.
Recommendation. Re-derive every A1/PI1/C1/P row from the TSP 100 text. Move environmental protections to A1.2 and recovery testing to A1.3. Correct PI1.2-PI1.5. Move breach evidence to P6.6, delete P7.2, put quality under P7.1, and split P4.1-P4.3. Set P5.2 to correction and P6.2 to the disclosure record (vendor commitments go to P6.4/P6.5). Re-map segregation of duties to CC5.1 (keep CC1.5 for accountability), and review CC6.2 and CC6.6. Apply the same changes to the design doc §4 and the TR mirror. Cite the edition as '2017 TSC (With Revised Points of Focus – 2022)'.
Sources.
- AICPA & CIMA: 2017 Trust Services Criteria (With Revised Points of Focus – 2022), resource page (2023-09-30)
- AICPA TSP Section 100, 2017 Trust Services Criteria (includes March 2020 updates), official us.aicpa.org PDF as archive… (2020-03)
- Aprio: SOC 2 and AI in 2026: The Criteria Didn't Change, but the Examination Did (2026-09-18)
- AICPA TSP Section 100, 2017 TSC (third-party hosted copy) (2020-03-12)
Other findings with the same root cause
These close with the same fix; update them in the same pull request.
-
DOC-D1B06-012 (docs, High) — docs/reference/soc2_trust_criteria_mapping.md: false claim — P6.1:
safe_postwebhook discipline (TLS-only, SSRF guard, redirect refusal)
severity High
Where.docs/reference/soc2_trust_criteria_mapping.md:103(Turkish mirror:docs/reference/soc2_trust_criteria_mapping-tr.md:102) · type: false claim
The document says. P6.1:safe_postwebhook discipline (TLS-only, SSRF guard, redirect refusal)
What the code does. By default, webhook delivery to http:// is allowed with a warning. TLS-only applies only whenwebhook.require_https: true(default False).
Code references.forgelm/config.py:1492-1500,forgelm/webhook.py:172
Proposed correction. "(TLS enforced whenwebhook.require_https: true; default warns on http://), SSRF guard, redirect refusal"
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-BLEGAL-067 (docs, Medium) — docs/design/iso27001_soc2_alignment.md: wrong detail — P2.1 Choice and consent |
evaluation.require_human_approvalArticle 14 gate ... P3.2 Quality of personal data ... P5.2 Inquiries and complaint…
severity Medium
Where.docs/design/iso27001_soc2_alignment.md:357-368· type: wrong detail
The document says. P2.1 Choice and consent |evaluation.require_human_approvalArticle 14 gate ... P3.2 Quality of personal data ... P5.2 Inquiries and complaints ... P6.2 Third-party agreements ... P7.2 Breach disclosure
What the code does. In the 2017 TSC, P2.1 communicates choices and obtains explicit consent from data subjects, so a model-approval gate is not consent evidence. P3.2 is explicit-consent communication before collection, not quality. P5.2 is correction or amendment of personal information. P6.2 is records of authorised disclosures. P7.2 does not exist: the criteria are P7.1 and P8.1 only.
Proposed correction. Re-map against TSP Section 100: P2.1 → '(Deployer consent capture; ForgeLM records data.governance flags only)'; P3.2 → 'Explicit consent before collection (deployer)'; P5.2 → 'Correction of personal information:forgelm reverse-piilocates rows'; P6.2 → 'Records of authorised disclosures (audit log of webhook/export events)'; delete the P7.2 ro… -
DOC-BLEGAL-104 (docs, Medium) — docs/reference/soc2_trust_criteria_mapping.md: wrong detail — [IS-T11-22] '| A1.2 Recovery from incidents | ...' / '| A1.3 Environmental protections | OOS — substrate-side |' (also docs/design/iso270…
severity Medium
Where.docs/reference/soc2_trust_criteria_mapping.md:70-71(Turkish mirror:docs/reference/soc2_trust_criteria_mapping-tr.md:69-70) · type: wrong detail
The document says. [IS-T11-22] '| A1.2 Recovery from incidents | ...' / '| A1.3 Environmental protections | OOS — substrate-side |' (also docs/design/iso27001_soc2_alignment.md:333-334)
What the code does. In AICPA TSP Section 100 (2017 TSC, revised points of focus 2022; no newer edition), A1.2 covers 'environmental protections, software, data backup processes, and recovery infrastructure'. A1.3 is 'The entity tests recovery plan procedures supporting system recovery'. The criteria carry no short titles.
Proposed correction. | A1.2 Environmental protections, backup and recovery infrastructure |auto_revertswap-back; audit chain continuity on resume (environmental: OOS — substrate-side) | and | A1.3 Recovery plan testing | Deployer runbook / drills |
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-BLEGAL-120 (docs, Medium) — docs/usermanuals/en/compliance/human-approval-gate.md: wrong detail — ## Segregation of duties (Article 14 + ISO A.5.3 + SOC 2 CC1.5)
severity Medium
Where.docs/usermanuals/en/compliance/human-approval-gate.md:69(Turkish mirror:docs/usermanuals/tr/compliance/human-approval-gate.md:69) · type: wrong detail
The document says. ## Segregation of duties (Article 14 + ISO A.5.3 + SOC 2 CC1.5)
What the code does. ISO/IEC 27001:2022 A.5.3 'Segregation of duties' is correct. SOC 2 CC1.5 is COSO Principle 5 (accountability). Segregation of duties is a CC5.1 point of focus. The word 'segregation' does not occur in Reg. 2024/1689. Art. 14 imposes no trainer/approver separation, and its only two-person rule (14(5)) is for Annex III 1(a) remote biometric identification.
Proposed correction. ## Segregation of duties (ISO 27001:2022 A.5.3 + SOC 2 CC5.1 point of focus; organisational control, not an AI Act requirement)
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D1B06-034 (docs, Medium) — docs/reference/soc2_trust_criteria_mapping.md: wrong detail — PI1.3:
model_card.md
severity Medium
Where.docs/reference/soc2_trust_criteria_mapping.md:81(Turkish mirror:docs/reference/soc2_trust_criteria_mapping-tr.md:80) · type: wrong detail
The document says. PI1.3:model_card.md
What the code does. The model card isfinal_model/README.md.
Code references.forgelm/model_card.py:342
Proposed correction. "model card (final_model/README.md)"
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-BLEGAL-170 (docs, Low) — docs/design/iso27001_soc2_alignment.md: wrong detail — | CC6.5 | Protects against unauthorised disposal |
forgelm purgeArticle 17; salted hashing |
severity Low
Where.docs/design/iso27001_soc2_alignment.md:313· type: wrong detail
The document says. | CC6.5 | Protects against unauthorised disposal |forgelm purgeArticle 17; salted hashing |
What the code does. CC6.5: 'The entity discontinues logical and physical protections over physical assets only after the ability to read or recover data and software from those assets has been diminished'. Its points of focus are about identifying and removing data for disposal, so the criterion concerns secure disposal and sanitisation, not protection against unauthorised disposal.
Proposed correction. '| CC6.5 | Secure disposal of data before protections are removed |forgelm purgerow/artefact erasure | Media sanitisation |'. -
DOC-BLEGAL-171 (docs, Low) — docs/design/iso27001_soc2_alignment.md: wrong detail — | A1.2 Recovery from incidents |
auto_revertswap-back ... | A1.3 Environmental protections | OOS |
severity Low
Where.docs/design/iso27001_soc2_alignment.md:333-334· type: wrong detail
The document says. | A1.2 Recovery from incidents |auto_revertswap-back ... | A1.3 Environmental protections | OOS |
What the code does. In the 2017 TSC, whose 2022 revision changed only points of focus, A1.2 covers environmental protections, software, data backup processes and recovery infrastructure, and A1.3 is 'The entity tests recovery plan procedures supporting system recovery'. The criteria carry no short titles.
Proposed correction. 'A1.2 Environmental protections, backup and recovery infrastructure | OOS (datacenter) + audit chain continuity' and 'A1.3 Tests recovery plan procedures | auto_revert swap-back exercised as recovery evidence | Runbook + drills'. -
DOC-BLEGAL-172 (docs, Low) — docs/design/iso27001_soc2_alignment.md: wrong detail — PI1.1 Quality of inputs / PI1.2 System processing / PI1.3 Outputs are accurate / PI1.4 Inputs traceable / PI1.5 Outputs traceable
severity Low
Where.docs/design/iso27001_soc2_alignment.md:340-344· type: wrong detail
The document says. PI1.1 Quality of inputs / PI1.2 System processing / PI1.3 Outputs are accurate / PI1.4 Inputs traceable / PI1.5 Outputs traceable
What the code does. The TSC criteria are PI1.1 quality information about processing objectives (data definitions, specifications), PI1.2 controls over system inputs, PI1.3 over processing, PI1.4 over output, and PI1.5 storage of inputs, items in processing and outputs. Every ForgeLM title is wrong.
Proposed correction. Retitle the rows to 'PI1.1 Processing objectives and data definitions', 'PI1.2 System inputs', 'PI1.3 System processing', 'PI1.4 System output', 'PI1.5 Storage of inputs, items in processing and outputs', and re-map the evidence to match. -
DOC-BLEGAL-186 (docs, Low) — docs/guides/human_approval_gate.md: wrong detail — (ISO 27001:2022 A.5.3, SOC 2 CC1.5) ... ## 6. Segregation of duties (Article 14 + ISO A.5.3 + SOC 2 CC1.5)
severity Low
Where.docs/guides/human_approval_gate.md:25,148 (Turkish mirror:docs/guides/human_approval_gate-tr.md:25,148) · type: wrong detail
The document says. (ISO 27001:2022 A.5.3, SOC 2 CC1.5) ... ## 6. Segregation of duties (Article 14 + ISO A.5.3 + SOC 2 CC1.5)
What the code does. SOC 2 CC1.5 is COSO Principle 5: 'The entity holds individuals accountable for their internal control responsibilities'. None of its points of focus concerns segregation. Segregation of duties appears in CC1.3 (point of focus 'Limits Authorities and Responsibilities'), CC5.1 ('Addresses Segregation of Duties') and CC6.3. EU AI Act Art. 14 imposes no rule that the approver differ from the trainer;…
Proposed correction. Change to '(ISO 27001:2022 A.5.3, SOC 2 CC5.1 / CC1.3)' and retitle §6 to 'Segregation of duties (ISO A.5.3 + SOC 2 CC5.1)'. Drop 'Article 14' from the heading, or note that SoD is good practice that Art. 14 does not require. Mirror in the TR file.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-BLEGAL-189 (docs, Low) — docs/guides/iso_soc2_deployer_guide.md: wrong detail — Two distinct operator IDs prove segregation of duties (ISO A.5.3, SOC 2 CC1.5).
severity Low
Where.docs/guides/iso_soc2_deployer_guide.md:158-159(Turkish mirror:docs/guides/iso_soc2_deployer_guide-tr.md:158-159) · type: wrong detail
The document says. Two distinct operator IDs prove segregation of duties (ISO A.5.3, SOC 2 CC1.5).
What the code does. CC1.5 (COSO Principle 5) is 'The entity holds individuals accountable for their internal control responsibilities', and its points of focus concern accountability, not segregation. Segregation of duties is in CC5.1 (point of focus 'Addresses Segregation of Duties'), CC1.3 ('Limits Authorities and Responsibilities') and CC6.3.
Proposed correction. '(ISO A.5.3, SOC 2 CC5.1 / CC1.3)'. Mirror in the TR file.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-BLEGAL-213 (docs, Low) — docs/reference/soc2_trust_criteria_mapping.md: wrong detail — A1.2 Recovery from incidents; A1.3 Environmental protections; PI1.2 System processing; PI1.3 Outputs are accurate; PI1.4 Inputs traceable…
severity Low
Where.docs/reference/soc2_trust_criteria_mapping.md:70-71, :80-83, :106 (Turkish mirror:docs/reference/soc2_trust_criteria_mapping-tr.md:69-70, :79-82, :105) · type: wrong detail
The document says. A1.2 Recovery from incidents; A1.3 Environmental protections; PI1.2 System processing; PI1.3 Outputs are accurate; PI1.4 Inputs traceable; PI1.5 Outputs traceable; P7.2 Breach disclosure
What the code does. AICPA TSP Section 100 (2017 TSC, revised points of focus 2022): A1.2 covers environmental protections, software, data backup processes and recovery infrastructure; A1.3 covers testing recovery plan procedures; PI1.2 inputs, PI1.3 processing, PI1.4 output, PI1.5 storage of inputs and outputs. The privacy criteria are P1.1, P2.1, P3.1-3.2, P4.1-4.3, P5.1-5.2, P6.1-6.7, P7.1 and P8.1; P7.2 does not…
Proposed correction. Re-title and re-map: A1.2 Environmental protections, backup and recovery infrastructure; A1.3 Recovery plan testing; PI1.2 System inputs; PI1.3 System processing; PI1.4 System outputs; PI1.5 Storage of inputs and outputs; remove P7.2 (map breach-disclosure playbook evidence to an existing criterion).
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-BLEGAL-233 (docs, Low) — docs/usermanuals/en/operations/iso-soc2-deployer.md: wrong detail — two distinct operator IDs prove segregation of duties (ISO A.5.3, SOC 2 CC1.5).
severity Low
Where.docs/usermanuals/en/operations/iso-soc2-deployer.md:24(Turkish mirror:docs/usermanuals/tr/operations/iso-soc2-deployer.md:24) · type: wrong detail
The document says. two distinct operator IDs prove segregation of duties (ISO A.5.3, SOC 2 CC1.5).
What the code does. A.5.3 is the right ISO/IEC 27001:2022 control. SOC 2 CC1.5 is COSO Principle 5 (accountability). Segregation of duties is a CC5.1 point of focus.
Proposed correction. two distinct operator IDs are evidence toward segregation of duties (ISO A.5.3; SOC 2 CC5.1 point of focus).
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D1B06-052 (docs, Low) — docs/reference/soc2_trust_criteria_mapping.md: misleading — PI1.5: Annex IV bundle co-locates manifest + report + audit + integrity
severity Low
Where.docs/reference/soc2_trust_criteria_mapping.md:83(Turkish mirror:docs/reference/soc2_trust_criteria_mapping-tr.md:82) · type: misleading
The document says. PI1.5: Annex IV bundle co-locates manifest + report + audit + integrity
What the code does.<output_dir>/compliance/holds compliance_report.json, training_manifest.yaml, data_provenance.json, risk_assessment.json, annex_iv_metadata.json and data_governance_report.json. The audit log sits at<output_dir>/audit_log.jsonland model_integrity.json infinal_model/. The CLI produces no bundle that co-locates them.
Code references.forgelm/trainer.py:2087-2096,forgelm/trainer.py:354,forgelm/trainer.py:2163,forgelm/compliance.py:2170-2230
Proposed correction. "Output dir holdscompliance/(manifest + report),audit_log.jsonlandfinal_model/model_integrity.jsonside by side"
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.
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.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTodo
Activity