Skip to content

Conversation

tarkadia
Copy link
Contributor

@tarkadia tarkadia commented Jul 2, 2025

Changes

  • Requirement CC3.2.6 has been split into 2 because it contained the next requirement (the true CC3.2.7) inside it. Ref IDs have been fixed for the CC3.2 requirement group, but URN IDs haven't changed. Users should be informed of this change so they can perform their assessment correctly. The assessment already performed for this requirement won't be deleted.
  • Fixed Ref IDs for requirement groups PI1.1, PI1.2, PI1.3, PI1.4 and PI1.5. URN IDs havent changed.
  • Added 36 missing requirements for requirement groups PI1.1, PI1.2, PI1.3, PI1.4, PI1.5, P1.1, P2.1 and P3.1.
  • Spanish translation for missing requirements were made with Excel's TRANSLATE function.

⚠️ WARNING ⚠️

Requirement groups PI1.1, PI1.2, PI1.3, PI1.4, PI1.5, P1.1, P2.1 and P3.1 were assessable when they shouldn't be. The ASSESSABILITY for these groups have been REMOVED! Users should NOTE THE ASSESSMENTS MADE for these groups BEFORE UPDATING the framework in their loaded libraries and report their assessments to the appropriate requirements.

For practical reasons, requirement groups PI1.1, PI1.2, PI1.3, PI1.4, PI1.5, P1.1, P2.1 and P3.1 can again be assessed.

Summary by CodeRabbit

  • New Features

    • Expanded and reorganized processing integrity and privacy criteria with detailed, granular requirements.
    • Added new requirement nodes including comprehensive descriptions and Spanish translations.
  • Improvements

    • Updated descriptions for several criteria to improve clarity and consistency.
    • Enhanced versioning metadata for better compatibility tracking.
    • Adjusted assessability of certain criteria to reflect revised structure.
  • Other Changes

    • Updated identifiers for processing integrity and privacy criteria to align with the new structure.
    • Prefixed control activity descriptions with consistent formatting tags.

tarkadia added 3 commits June 30, 2025 17:23
Missing assessments have been marked in the Excel file with different colours
- Requirement "CC3.2.6" has been split into 2 because it contained the next requirement (the true CC3.2.7) inside it. Ref IDs have been fixed for the "CC3.2" requirement group, but URN IDs haven't changed. Users must be informed of this change so they can perform their assessment correctly.
- Fixed Ref IDs for requirement groups "PI1.1", "PI1.2", "PI1.3", "PI1.4", "PI1.5", "P1.1", "P2.1" and "P3.1". URN IDs havent changed.
- [WARNING] Requirement groups "PI1.1", "PI1.2", "PI1.3", "PI1.4", "PI1.5", "P1.1", "P2.1" and "P3.1" were assessable when they shouldn't be. The assessability for these groups have been REMOVED! Users should note the assessments made for these groups BEFORE UPDATING the framework and report their assessments to the appropriate requirements.
- Added 36 missing requirements for requirement groups "PI1.1", "PI1.2", "PI1.3", "PI1.4", "PI1.5", "P1.1", "P2.1" and "P3.1".
- Spanish translation for missing requirements were made with Excel's "TRANSLATE" function.
Removed the "publication_date" field in the Excel file so that the date is updated automatically by "convert_library_v2.py".
@tarkadia tarkadia self-assigned this Jul 2, 2025
Copy link
Contributor

coderabbitai bot commented Jul 2, 2025

Walkthrough

The SOC2-2017 Trust Services Criteria YAML library was updated to version 3, adding versioning metadata, restructuring the processing integrity and privacy sections for more detailed assessable child nodes, adjusting requirement node descriptions and ref_ids, and refining assessability flags.

Changes

File(s) Change Summary
backend/library/libraries/soc2_2017_with_rev_2022.yaml Updated to version 3; added convert_library_version metadata; reorganized processing integrity and privacy sections with new detailed assessable child nodes; updated requirement node descriptions, ref_ids, and assessability flags; prefixed some control descriptions with "[COSO]".

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant SOC2_Library
    participant RequirementNode

    User->>SOC2_Library: Request criteria (e.g., Processing Integrity)
    SOC2_Library->>RequirementNode: Retrieve non-assessable parent node (e.g., PI1.1)
    RequirementNode->>SOC2_Library: Return assessable child nodes (e.g., PI1.1.1, PI1.1.2, ...)
    SOC2_Library->>User: Provide detailed, assessable requirements
Loading

Suggested reviewers

  • juliangit971

Poem

In the warren where controls are spun,
New nodes and versions hop one by one.
Privacy and integrity, now more refined,
With assessable carrots carefully aligned.
🥕🐇
A leap in structure, a hop in scope—
This library grows with every hope!


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (1)

1-5200: Duplicate ref_id collisions detected

The automated check has uncovered the following ref_id values duplicated across the repository, which will cause ambiguous look-ups at runtime:

• ESRS
• ISO/IEC
• LPM-OIV-2019
• NSIZM-v3
• SecNumCloud
• TISAX
• ref_id:

Each of these identifiers must be unique. Please locate and rename or remove the conflicting entries so that every ref_id in your YAML libraries is distinct.

🧹 Nitpick comments (3)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (3)

1-2: Prefer folded scalar for long, multi-line value

Storing the convert_library_version string as a single-quoted scalar split across two physical lines is syntactically valid YAML, but it is brittle (indentation sensitive, hard to diff, noisy in git blames).
A folded > block is clearer and removes the need for doubled quotes.

-convert_library_version: 'v2 ; Compat Mode: [0] {[v2.1] (DEFAULT) Don''t use any Compatibility
-  Mode}'
+convert_library_version: >
+  v2 ; Compat Mode: [0] {[v2.1] (DEFAULT) Don't use any Compatibility Mode}

1454-1462: true_cc3.2.6 URN prefix is non-standard and may break downstream tooling

Introducing a new naming pattern (true_…) only for this node is inconsistent with existing URN conventions (ccX.Y.Z).
Consider either:

  1. Keeping the numeric pattern (e.g. cc3.2.6a) or
  2. Adding a meta-field such as replaces: urn:…:cc3.2.5 to indicate the split.

This avoids ad-hoc prefixes that parsers / UIs will not recognise.


5016-5052: Exact duplicate text between P2.1.1 and P3.1.2

The full “Collects Information by Fair and Lawful Means” paragraph appears verbatim in two different criteria.
If the duplication is intentional, consider using YAML anchors/aliases to keep a single source of truth and reduce translation effort.

Otherwise, re-word one of the descriptions to highlight the nuance between “Choice & Consent” and “Collection”.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 759c39f and c6d62e3.

⛔ Files ignored due to path filters (2)
  • tools/excel/aicpa/SOC2_2017_with_rev_2022.xlsx is excluded by !**/*.xlsx
  • tools/excel/aicpa/SOC2_2017_with_rev_2022_new.xlsx is excluded by !**/*.xlsx
📒 Files selected for processing (1)
  • backend/library/libraries/soc2_2017_with_rev_2022.yaml (21 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (10)
  • GitHub Check: functional-tests (3.12, chromium)
  • GitHub Check: build (3.12)
  • GitHub Check: enterprise-startup-functional-test (3.12)
  • GitHub Check: enterprise-startup-docker-compose-test
  • GitHub Check: startup-functional-test (3.12)
  • GitHub Check: startup-docker-compose-test
  • GitHub Check: enterprise-functional-tests (3.12, chromium)
  • GitHub Check: test (3.12)
  • GitHub Check: Analyze (python)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (2)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (2)

1468-1473: URN / ref_id divergence is easy to misinterpret

urn:…:cc3.2.6 now points to ref_id: CC3.2.7. Although the description in the PR says URNs stay frozen, consumers that join on the numeric part of the URN will silently map to the wrong reference ID.

Please double-check every consumer of the library and consider adding a small compatibility map (old-URN → new-ref_id) in code rather than relying on tribal knowledge.


4488-4494: Parent URN still uses pp1.1 after the group was renamed to PI1.1

All newly added pi1.1.* nodes reference
parent_urn: …:pp1.1.
If an integrator resolves hierarchy purely by URN, the parent will appear under the legacy “PP” branch even though the visible ref_id says “PI”. That mismatch may surface as broken breadcrumb paths in UIs.

Confirm that the rendering layer keys on ref_id rather than URN, or update the parent_urns to pi1.1.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (3)

1-2: Fold the long convert_library_version literal to improve YAML readability

A single-quoted scalar that spans multiple lines is perfectly valid YAML, but in practice it is hard to read, diff, and copy-paste.
Using the folded style keeps the semantics identical while making the file easier to maintain.

-convert_library_version: 'v2 ; Compat Mode: [0] {[v2.1] (DEFAULT) Don''t use any Compatibility
-  Mode}'
+convert_library_version: >
+  v2 ; Compat Mode: [0] {[v2.1] (DEFAULT) Don't use any Compatibility Mode}

4471-4566: parent_urn still uses pp1.1 after the node was re-tagged to PI1.1

The parent remains

urn:…:pp1.1   # assessable: false, ref_id: PI1.1

while children are now pi1.1.*.
Technically this works, but the mixed pp/pi prefix is confusing and will trip string-based look-ups.

-  parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.1
+  parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi1.1

Remember to update the ancestor node’s own urn: to pi1.1 and cascade the same change in every descendant parent_urn.


5135-5189: Content duplication between P2.1.1 and P3.1.2

Both nodes carry an almost identical “Collects Information by Fair and Lawful Means” narrative.
If that is intentional (choice/consent vs. collection sections) keep as-is; otherwise consider referencing a shared text fragment to avoid future drift.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 759c39f and c6d62e3.

⛔ Files ignored due to path filters (2)
  • tools/excel/aicpa/SOC2_2017_with_rev_2022.xlsx is excluded by !**/*.xlsx
  • tools/excel/aicpa/SOC2_2017_with_rev_2022_new.xlsx is excluded by !**/*.xlsx
📒 Files selected for processing (1)
  • backend/library/libraries/soc2_2017_with_rev_2022.yaml (21 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: functional-tests (3.12, chromium)
  • GitHub Check: build (3.12)
  • GitHub Check: enterprise-startup-functional-test (3.12)
  • GitHub Check: enterprise-startup-docker-compose-test
  • GitHub Check: startup-functional-test (3.12)
  • GitHub Check: startup-docker-compose-test
  • GitHub Check: enterprise-functional-tests (3.12, chromium)
  • GitHub Check: test (3.12)
🔇 Additional comments (2)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (2)

2028-2086: [COSO] description prefixing looks good – watch for translation drift

The English descriptions were prefixed with “[COSO]”; however, Spanish counterparts for CC5.2.2-CC5.2.4 already contained that prefix before the change.
Verify that automated extract/translate jobs will not duplicate “[COSO]” on the next regeneration.


18-19: No action needed: version and publication_date are consumed downstream

The YAML loader in core/models.py (lines 258–330) parses both fields and passes them into StoredLibrary.objects.create. Additionally, serializers and utils in backend/library/ reference version and publication_date.

No further changes required.

Comment on lines 1445 to 1473
ref_id: CC3.2.5
description: "[COSO] Determines How to Respond to Risks \u2014 Risk assessment\
\ includes considering how the risk should be managed and whether to accept,\
\ avoid, reduce, or share the risk. Identifies Threats to Objectives \u2014\
The entity identifies threats to the achievement of its objectives from intentional\
\ (including malicious) and unintentional acts and environmental events."
\ avoid, reduce, or share the risk."
translations:
es:
description: "[COSO] Determina c\xF3mo responder a los riesgos - La evaluaci\xF3\
n de riesgos incluye considerar c\xF3mo debe gestionarse el riesgo y si\
\ debe aceptarse, evitarse, reducirse o compartirse. Identifica las amenazas\
\ a los objetivos - La entidad identifica las amenazas a la consecuci\xF3\
n de sus objetivos derivadas de actos intencionados (incluidos los malintencionados)\
\ y no intencionados y de acontecimientos del entorno."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.6
\ debe aceptarse, evitarse, reducirse o compartirse."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:true_cc3.2.6
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2
ref_id: CC3.2.6
description: "[TSC] Identifies Threats to Objectives \u2014The entity identifies\
\ threats to the achievement of its objectives from intentional (including\
\ malicious) and unintentional acts and environmental events."
translations:
es:
description: "[TSC] Identifica las amenazas a los objetivos - La entidad\
\ identifica las amenazas a la consecuci\xF3n de sus objetivos derivadas\
\ de actos intencionados (incluidos los malintencionados) y no intencionados\
\ y de acontecimientos del entorno."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.6
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2
ref_id: CC3.2.7
description: "[TSC] Identifies Vulnerability of System Components \u2014 The\
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Potential URN / ref-ID collision after splitting CC3.2.6

The old node cc3.2.6 keeps its URN but is rebased to ref_id: CC3.2.7, while the new node true_cc3.2.6 also uses ref_id: CC3.2.6.

Even though ref_ids are now unique, many integrations key on the URN alone.
If any stored assessment still references urn:…:cc3.2.6, it will now point to a different textual requirement, which can corrupt history.

-    - urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.6
+    # ⚠️ Consider renaming the URN as well to keep URN-to-text identity stable
+    - urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.7

At minimum run a one-off migration that rewrites stored references or adds aliases.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
ref_id: CC3.2.5
description: "[COSO] Determines How to Respond to Risks \u2014 Risk assessment\
\ includes considering how the risk should be managed and whether to accept,\
\ avoid, reduce, or share the risk. Identifies Threats to Objectives \u2014\
The entity identifies threats to the achievement of its objectives from intentional\
\ (including malicious) and unintentional acts and environmental events."
\ avoid, reduce, or share the risk."
translations:
es:
description: "[COSO] Determina c\xF3mo responder a los riesgos - La evaluaci\xF3\
n de riesgos incluye considerar c\xF3mo debe gestionarse el riesgo y si\
\ debe aceptarse, evitarse, reducirse o compartirse. Identifica las amenazas\
\ a los objetivos - La entidad identifica las amenazas a la consecuci\xF3\
n de sus objetivos derivadas de actos intencionados (incluidos los malintencionados)\
\ y no intencionados y de acontecimientos del entorno."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.6
\ debe aceptarse, evitarse, reducirse o compartirse."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:true_cc3.2.6
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2
ref_id: CC3.2.6
description: "[TSC] Identifies Threats to Objectives \u2014The entity identifies\
\ threats to the achievement of its objectives from intentional (including\
\ malicious) and unintentional acts and environmental events."
translations:
es:
description: "[TSC] Identifica las amenazas a los objetivos - La entidad\
\ identifica las amenazas a la consecuci\xF3n de sus objetivos derivadas\
\ de actos intencionados (incluidos los malintencionados) y no intencionados\
\ y de acontecimientos del entorno."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.6
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2
ref_id: CC3.2.7
description: "[TSC] Identifies Vulnerability of System Components \u2014 The\
ref_id: CC3.2.5
description: "[COSO] Determines How to Respond to Risks \u2014 Risk assessment\
\ includes considering how the risk should be managed and whether to accept,\
\ avoid, reduce, or share the risk."
translations:
es:
description: "[COSO] Determina c\xF3mo responder a los riesgos - La evaluaci\xF3\
n de riesgos incluye considerar c\xF3mo debe gestionarse el riesgo y si\
\ debe aceptarse, evitarse, reducirse o compartirse."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:true_cc3.2.6
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2
ref_id: CC3.2.6
description: "[TSC] Identifies Threats to Objectives \u2014The entity identifies\
\ threats to the achievement of its objectives from intentional (including\
\ malicious) and unintentional acts and environmental events."
translations:
es:
description: "[TSC] Identifica las amenazas a los objetivos - La entidad\
\ identifica las amenazas a la consecuci\xF3n de sus objetivos derivadas\
\ de actos intencionados (incluidos los malintencionados) y no intencionados\
\ y de acontecimientos del entorno."
# ⚠️ Consider renaming the URN as well to keep URN-to-text identity stable
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2.7
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:cc3.2
ref_id: CC3.2.7
description: "[TSC] Identifies Vulnerability of System Components \u2014 The\
\ entity assesses weaknesses in design, implementation, or operation of system components and identifies potential vulnerabilities."
🤖 Prompt for AI Agents
In backend/library/libraries/soc2_2017_with_rev_2022.yaml between lines 1445 and
1473, there is a URN and ref_id collision caused by splitting the original
CC3.2.6 node into two nodes with overlapping URNs but different ref_ids. To fix
this, update the URNs to be unique by renaming one of the conflicting URNs
(e.g., append a suffix or use a new unique identifier) and ensure all references
in stored assessments are migrated accordingly. Implement a one-off migration
script to rewrite stored references or add alias mappings so that existing data
pointing to the old URN correctly resolves to the intended requirement without
corrupting history.

For practical reasons, requirement groups "PI1.1", "PI1.2", "PI1.3", "PI1.4", "PI1.5", "P1.1", "P2.1" and "P3.1" can again be assessed.
@tarkadia
Copy link
Contributor Author

tarkadia commented Jul 3, 2025

For practical reasons, requirement groups PI1.1, PI1.2, PI1.3, PI1.4, PI1.5, P1.1, P2.1 and P3.1 can again be assessed.

@tarkadia tarkadia requested review from eric-intuitem and removed request for eric-intuitem July 3, 2025 16:27
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (2)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (2)

4590-4610: Same parent_urn issue repeats for pi1.2.* children

See previous comment – fix all occurrences (pp1.2, pp1.3, …).


1454-1472: URN / ref_id mismatch still present – risk of data corruption

true_cc3.2.6 keeps ref_id: CC3.2.6, while the old node keeps the same URN (…:cc3.2.6) but is now ref_id: CC3.2.7.
Integrations that dereference the URN will silently read the wrong text.

If renaming the URN is impossible, add an alias list (previous_urns:) or ship a one-off migration.

🧹 Nitpick comments (1)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (1)

1-2: Single-quoted scalar breaks mid-word – readability & maintainability hit

The convert_library_version value is split by a hard newline inside the single-quoted scalar.
While technically valid YAML, this makes the string harder to grep for and to diff later.

-convert_library_version: 'v2 ; Compat Mode: [0] {[v2.1] (DEFAULT) Don''t use any Compatibility
-  Mode}'
+convert_library_version: >
+  v2 ; Compat Mode: [0] {[v2.1] (DEFAULT) Don't use any Compatibility Mode}

Using the folded style (> or |) keeps the line break semantics explicit and avoids accidental mid-token splits.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c6d62e3 and 73cd395.

⛔ Files ignored due to path filters (1)
  • tools/excel/aicpa/SOC2_2017_with_rev_2022.xlsx is excluded by !**/*.xlsx
📒 Files selected for processing (1)
  • backend/library/libraries/soc2_2017_with_rev_2022.yaml (18 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (9)
  • GitHub Check: test (3.12)
  • GitHub Check: startup-docker-compose-test
  • GitHub Check: enterprise-startup-docker-compose-test
  • GitHub Check: enterprise-startup-functional-test (3.12)
  • GitHub Check: startup-functional-test (3.12)
  • GitHub Check: build (3.12)
  • GitHub Check: functional-tests (3.12, chromium)
  • GitHub Check: enterprise-functional-tests (3.12, chromium)
  • GitHub Check: Analyze (python)
🔇 Additional comments (1)
backend/library/libraries/soc2_2017_with_rev_2022.yaml (1)

18-19: 👍 Version bump & publication date update look good
No issues spotted with the metadata change.

Comment on lines +4776 to +4827
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi1.5.1
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.5
ref_id: PI1.5.1
description: "Protects Stored Items \u2014 Stored items are protected to prevent\
\ theft, corruption, destruction, or deterioration that would prevent output\
\ from meeting specifications."
translations:
es:
description: "Protege los elementos almacenados - Los art\xEDculos almacenados\
\ est\xE1n protegidos para evitar robos, corrupci\xF3n, destrucci\xF3\
n o deterioro que impedir\xEDan que la producci\xF3n cumpla con las especificaciones."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi1.5.2
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.5
ref_id: PI1.5.2
description: "Archives and Protects System Records \u2014 System records are\
\ archived, and archives are protected against theft, corruption, destruction,\
\ or deterioration that would prevent them from being used."
translations:
es:
description: "Archiva y protege los registros del sistema - Los registros\
\ del sistema se archivan y los archivos se protegen contra el robo, la\
\ corrupci\xF3n, la destrucci\xF3n o el deterioro que impedir\xEDan su\
\ uso."
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi1.5.3
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.5
ref_id: PI1.5.3
description: "Stores Data Completely and Accurately \u2014 Procedures are in\
\ place to provide for the complete, accurate, and timely storage of data."
translations:
es:
description: Almacena datos de forma completa y precisa - Existen procedimientos
para proporcionar el almacenamiento completo, preciso y oportuno de los
datos.
- urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi1.5.4
assessable: true
depth: 3
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.5
ref_id: PI1.5.4
description: "Creates and Maintains Records of System Storage Activities \u2014\
\ Records of system storage activities are created and maintained completely\
\ and accurately in a timely manner."
translations:
es:
description: Crea y mantiene registros de las actividades de almacenamiento
del sistema - Los registros de las actividades de almacenamiento del sistema
se crean y mantienen de manera completa y precisa de manera oportuna.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Potential duplicate ref_id: SOC2-2017-Rev-2022 still unaddressed

Past verification flagged duplicates of this top-level ref_id. Please rerun the duplicate-check script after the latest edits.


🏁 Script executed:

#!/usr/bin/env bash
pip install --quiet pyyaml
python - <<'PY'
import yaml, collections, pathlib, sys
data=yaml.safe_load(open("backend/library/libraries/soc2_2017_with_rev_2022.yaml"))
seen, dups=set(),set()
def walk(n):
    if isinstance(n,dict):
        if 'ref_id' in n:
            (dups if n['ref_id'] in seen else seen).add(n['ref_id'])
        for v in n.values(): walk(v)
    elif isinstance(n,list):
        for v in n: walk(v)
walk(data)
print("DUP ref_id:", dups)
sys.exit(bool(dups))
PY

Length of output: 74


Duplicate ref_id: SOC2-2017-Rev-2022 still present
The duplicate‐check script continues to report SOC2-2017-Rev-2022 as a repeated ref_id. Please remove or rename the redundant entry so that each ref_id is unique.

• File: backend/library/libraries/soc2_2017_with_rev_2022.yaml
• Run grep -n "ref_id: SOC2-2017-Rev-2022" backend/library/libraries/soc2_2017_with_rev_2022.yaml to locate both occurrences.

🤖 Prompt for AI Agents
In backend/library/libraries/soc2_2017_with_rev_2022.yaml between lines 4776 and
4827, there are duplicate ref_id values labeled SOC2-2017-Rev-2022. Locate all
occurrences of this ref_id using the suggested grep command and ensure each
ref_id is unique by either removing or renaming the redundant entries to
eliminate duplication.

Comment on lines 4471 to 4477
assessable: true
depth: 2
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi
ref_id: PP1.1
ref_id: PI1.1
description: The entity obtains or generates, uses, and communicates relevant,
quality information regarding the objectives related to processing, including
definitions of data processed and product and service specifications, to support
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

PI1.* groups should now be non-assessable – but assessable: true remains

The PR description says assessability has been removed from groups PI1.1 … PI1.5; however the YAML still flags them as assessable: true.
Change to false to align code with spec.

-  assessable: true
+  assessable: false
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
assessable: true
depth: 2
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi
ref_id: PP1.1
ref_id: PI1.1
description: The entity obtains or generates, uses, and communicates relevant,
quality information regarding the objectives related to processing, including
definitions of data processed and product and service specifications, to support
assessable: false
depth: 2
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi
ref_id: PI1.1
description: The entity obtains or generates, uses, and communicates relevant,
quality information regarding the objectives related to processing, including
definitions of data processed and product and service specifications, to support
🤖 Prompt for AI Agents
In backend/library/libraries/soc2_2017_with_rev_2022.yaml around lines 4471 to
4477, the assessable flag for the PI1.* groups is incorrectly set to true.
Update the assessable field from true to false for these groups to reflect the
removal of assessability as specified in the PR description.

Comment on lines +4488 to +4500
parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.1
ref_id: PI1.1.1
description: "Identifies Functional and Nonfunctional Requirements and Information\
\ Specifications \u2014 The entity identifies and communicates functional\
\ and nonfunctional re- quirements related to system processing and information\
\ specifications required to support the use of products and services."
translations:
es:
description: "Identifica los requisitos funcionales y no funcionales y las\
\ especificaciones de informaci\xF3n - La entidad identifica y comunica\
\ los requisitos funcionales y no funcionales relacionados con el procesamiento\
\ del sistema y las especificaciones de informaci\xF3n necesarias para\
\ respaldar el uso de productos y servicios."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Child nodes still reference legacy parent URNs (pp1.1)

All new pi1.1.x children list
parent_urn: …:pp1.1
but the parent node’s URN is now pi1.1 (or should be). This breaks the tree traversal logic.

Search-and-replace the parent_urn on all newly added PI/PP children.

Generate check:


🏁 Script executed:

#!/usr/bin/env bash
# List any parent_urn that starts with ":pp" under PI1.*
rg -n "parent_urn: .*:pp1\." backend/library/libraries/soc2_2017_with_rev_2022.yaml

Length of output: 1510


Update legacy parent URNs in SOC2 YAML children nodes

The PI1.* child entries still point to :pp1.x, but the parent nodes have been renamed to :pi1.x. Update all parent_urn references accordingly to restore correct tree traversal.

• File: backend/library/libraries/soc2_2017_with_rev_2022.yaml
– Lines 4488, 4504, 4558: change pp1.1pi1.1
– Lines 4590, 4602, 4614: change pp1.2pi1.2
– Lines 4640, 4652, 4664, 4677, 4689: change pp1.3pi1.3
– Lines 4715, 4728, 4739, 4752: change pp1.4pi1.4
– Lines 4779, 4792, 4806, 4818: change pp1.5pi1.5

Example diff snippet:

- parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pp1.1
+ parent_urn: urn:intuitem:risk:req_node:soc2-2017-rev-2022:pi1.1

You can also run a global replace:

sed -i 's/:pp1\./:pi1./g' backend/library/libraries/soc2_2017_with_rev_2022.yaml

This will ensure all PI1.x children reference the correct parent URNs.

🤖 Prompt for AI Agents
In backend/library/libraries/soc2_2017_with_rev_2022.yaml around lines 4488 to
4500 and other specified lines, the parent_urn values for PI1.* child entries
incorrectly reference ':pp1.x' instead of the updated ':pi1.x'. Update all these
parent_urn references by replacing ':pp1.' with ':pi1.' to ensure correct
parent-child linkage. You can do this manually at the specified lines or perform
a global search and replace for ':pp1.' to ':pi1.' throughout the file.

Copy link
Collaborator

@eric-intuitem eric-intuitem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's do a custom migration to fix that.

@tarkadia tarkadia marked this pull request as draft July 9, 2025 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants