Skip to content

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

Open

Description

@cemililik

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.

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_post webhook 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_post webhook 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 when webhook.require_https: true (default False).
    Code references. forgelm/config.py:1492-1500, forgelm/webhook.py:172
    Proposed correction. "(TLS enforced when webhook.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_approval Article 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_approval Article 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-pii locates 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_revert swap-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 is final_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 purge Article 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 purge Article 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 purge row/artefact erasure | Media sanitisation |'.

  • DOC-BLEGAL-171 (docs, Low) — docs/design/iso27001_soc2_alignment.md: wrong detail — | A1.2 Recovery from incidents | auto_revert swap-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_revert swap-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.jsonl and model_integrity.json in final_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 holds compliance/ (manifest + report), audit_log.jsonl and final_model/model_integrity.json side 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

No one assigned

    Labels

    dependenciesDependency or ecosystem currencydocumentationImprovements or additions to documentationseverity: highWrong behaviour or a false claim users rely onsource: review-2026-10Found by the October 2026 code and documentation reviewurgency: next-releaseTechnology currency: fix in the next releasewave: 1Roadmap wave 1: high severity, small effort

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions