Skip to content

Commit 98eae49

Browse files
committed
docs: updates finding determination spec information
The finding specificiation details how to use the EvaluationPlan and deconfliction strategies to determine findings for Layer5 action. Signed-off-by: Jennifer Power <[email protected]>
1 parent 0218e58 commit 98eae49

File tree

2 files changed

+202
-0
lines changed

2 files changed

+202
-0
lines changed

spec/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Specifications
2+
3+
This directory contains specifications for Gemara.
4+
5+
## Specifications
6+
7+
- **[Finding Determination Specification](finding-determination.md)** - Defines how assessment results are aggregated and how conflicts between multiple executors are resolved. Covers result types, conflict resolution strategies, and use cases for GRC Engineering workflows.
8+
9+
## Overview
10+
11+
The specifications in this directory describe the machine-readable formats and behavioral rules for the Gemara model layers.

spec/finding-determination.md

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
# Finding Determination Specification
2+
3+
<!-- TOC -->
4+
* [Finding Determination Specification](#finding-determination-specification)
5+
* [Abstract](#abstract)
6+
* [Overview](#overview)
7+
* [Notations and Terminology](#notations-and-terminology)
8+
* [Notational Conventions](#notational-conventions)
9+
* [Terminology](#terminology)
10+
* [Finding](#finding)
11+
* [Executor](#executor)
12+
* [Conflict Resolution Strategy](#conflict-resolution-strategy)
13+
* [Executor Role](#executor-role)
14+
* [Result Types](#result-types)
15+
* [Conflict Resolution Strategies](#conflict-resolution-strategies)
16+
* [Strict Strategy](#strict-strategy)
17+
* [ManualOverride Strategy](#manualoverride-strategy)
18+
* [AdvisoryRequiresConfirmation Strategy](#advisoryrequiresconfirmation-strategy)
19+
* [Use Cases](#use-cases)
20+
* [Evaluation Plans Guide Enforcement Decisions](#evaluation-plans-guide-enforcement-decisions)
21+
* [Primary vs Advisory: Enforcement-Ready vs Data Collection](#primary-vs-advisory-enforcement-ready-vs-data-collection)
22+
* [Workflow: Promoting Procedures from Advisory to Primary](#workflow-promoting-procedures-from-advisory-to-primary)
23+
* [Default Behavior](#default-behavior)
24+
<!-- TOC -->
25+
26+
## Abstract
27+
28+
This specification defines how findings are determined when multiple assessment executors and procedures provide results for the same assessment requirement in Layer 4 Evaluation Plans.
29+
It specifies conflict resolution strategies and result type semantics to ensure consistent finding determination across implementations.
30+
31+
## Overview
32+
33+
Layer 4 Evaluation Plans support multiple assessment executors running assessment procedures to evaluate control requirements.
34+
When multiple executors run the same procedure, or multiple procedures evaluate the same requirement, conflict resolution strategies determine how their results are combined to determine if there is a finding.
35+
This specification provides a formal definition of these strategies to ensure consistent and predictable behavior across implementations.
36+
37+
## Notations and Terminology
38+
39+
### Notational Conventions
40+
41+
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119).
42+
43+
### Terminology
44+
45+
This specification defines the following terms:
46+
47+
#### Finding
48+
49+
A finding is a documented observation that a Layer 2 control requirement, as referenced by a Layer 3 policy, is not being met or is not implemented correctly.
50+
51+
A finding is determined when one or more executor results indicate non-compliance with the assessed control requirement. Only results of `Failed`, `Unknown`, or `NeedsReview` constitute findings;
52+
`Passed` and `NotApplicable` results indicate compliance or inapplicability and do not produce findings.
53+
Findings MUST be supported by evidence from assessment logs that document the evaluation results, and serve as the basis for Layer 5 enforcement actions and remediation activities.
54+
55+
#### Executor
56+
57+
An executor is a tool, process, or person that executes an assessment procedure and produces a result.
58+
59+
#### Conflict Resolution Strategy
60+
61+
A conflict resolution strategy is an algorithm that determines how multiple executor results are combined to produce a single finding determination.
62+
63+
#### Executor Role
64+
65+
An executor role determines how an executor participates in conflict resolution when using the `AdvisoryRequiresConfirmation` strategy. Executors can be assigned the role of `Primary` (can trigger findings independently) or `Advisory` (requires confirmation from Primary executors to trigger findings). If no role is explicitly assigned, executors default to `Primary` role.
66+
67+
## Result Types
68+
69+
The following result types are used in Layer 4:
70+
71+
- **NotRun**: The assessment was not executed
72+
- **Passed**: The assessment passed successfully
73+
- **Failed**: The assessment failed
74+
- **NeedsReview**: The assessment requires manual review
75+
- **NotApplicable**: The assessment is not applicable to the current context
76+
- **Unknown**: The assessment result is unknown or indeterminate
77+
78+
## Conflict Resolution Strategies
79+
80+
Three conflict resolution strategies are defined in this specification. Implementations MUST support all strategies.
81+
82+
### Strict Strategy
83+
84+
The Strict strategy determines that a finding exists if ANY executor reports a failure, regardless of other executor results. This strategy provides zero tolerance for failures and is the simplest conflict resolution approach.
85+
86+
**Security-First Design**: `Strict` applies uniform zero-tolerance logic to all non-passing results (`Failed`, `Unknown`, `NeedsReview`). This makes `Strict` ideal for organizations that want predictable, consistent behavior and absolute zero-tolerance for security violations, ensuring that any executor reporting a problem triggers a finding.
87+
88+
**Process**: When using the Strict strategy, a finding MUST be determined according to the following priority order:
89+
90+
1. If ANY executor reports `Failed`, then **Finding exists** (Failed)
91+
2. Else if ANY executor reports `Unknown`, then **Finding exists** (Unknown)
92+
3. Else if ANY executor reports `NeedsReview`, then **Finding exists** (NeedsReview)
93+
4. Else if ALL executor results are `Passed`, then **No finding** (Passed)
94+
5. Else if ALL executor results are `NotApplicable`, then **No finding** (NotApplicable)
95+
96+
Executors with `NotRun` results MUST be excluded from the determination process. All executors are treated equally when using the Strict strategy.
97+
98+
### ManualOverride Strategy
99+
100+
The ManualOverride strategy gives precedence to manual review executors over automated executors when determining findings from conflicting results.
101+
102+
**Process**: When using the ManualOverride strategy:
103+
104+
1. Separate results into manual and automated executor results based on executor type.
105+
2. If manual executors exist:
106+
- If any manual executor reports `Failed`: **Finding exists** (Failed)
107+
- Else if any manual executor reports `Unknown`: **Finding exists** (Unknown)
108+
- Else if any manual executor reports `NeedsReview`: **Finding exists** (NeedsReview)
109+
- Else if all manual executors report `Passed`: **No finding** (Passed)
110+
- Else: **No finding** (NotApplicable)
111+
3. If no manual executors exist, determine finding from automated results using severity hierarchy: `Failed > Unknown > NeedsReview > Passed`
112+
113+
Executors with `NotRun` results MUST be excluded from the determination process.
114+
115+
### AdvisoryRequiresConfirmation Strategy
116+
117+
The AdvisoryRequiresConfirmation strategy treats Advisory executors as requiring confirmation from Primary executors before triggering findings.
118+
119+
**Process**: When using the AdvisoryRequiresConfirmation strategy:
120+
121+
1. Separate executors into Primary and Advisory groups based on their `role` field. Executors without an explicit role default to Primary.
122+
2. Primary executors trigger findings using Strict logic:
123+
- If any Primary executor reports `Failed`: **Finding exists** (Failed)
124+
- Else if any Primary executor reports `Unknown`: **Finding exists** (Unknown)
125+
- Else if any Primary executor reports `NeedsReview`: **Finding exists** (NeedsReview)
126+
- Else if all Primary executors report `Passed`: Continue to step 3
127+
3. Advisory executors require confirmation:
128+
- If only Advisory executors report `Failed`: **No finding** (advisory cannot trigger alone)
129+
- If Advisory executor reports `Failed` AND Primary executor reports `Passed`: **No finding** (contradicted)
130+
- If Advisory executor reports `Failed` AND Primary executor reports `Failed`: **Finding exists** (confirmed)
131+
- If Advisory executor reports `Failed` AND Primary executor reports `Unknown` or `NeedsReview`: **Finding exists** (escalated for investigation)
132+
- If all executors (Primary and Advisory) report `Passed`: **No finding** (Passed)
133+
- If all executors report `NotApplicable`: **No finding** (NotApplicable)
134+
135+
Executors with `NotRun` results MUST be excluded from the determination process.
136+
137+
**Key Behaviors**:
138+
139+
- **Primary executors** can trigger findings independently using zero-tolerance logic. If any Primary executor reports a non-passing result, a finding is immediately determined, regardless of Advisory executor results.
140+
- **Advisory executors** can only trigger findings when:
141+
- They confirm a Primary executor's failure (both report `Failed`)
142+
- They escalate an unclear Primary result (Primary reports `Unknown`/`NeedsReview` and Advisory reports `Failed`)
143+
- **Advisory executors cannot**:
144+
- Trigger findings independently (if only Advisory executors report failures, no finding is determined)
145+
- Override Primary executors (if Primary executors report `Passed`, Advisory failures are ignored)
146+
147+
## Use Cases
148+
149+
### Evaluation Plans Guide Enforcement Decisions
150+
151+
Layer 4 Evaluation Plans serve as the foundation for Layer 5 enforcement decisions. The evaluation results inform what enforcement actions should be taken, such as blocking deployments, triggering remediation, or generating alerts. However, not all procedures in an Evaluation Plan need to trigger enforcement actions.
152+
153+
### Primary vs Advisory: Enforcement-Ready vs Data Collection
154+
155+
The distinction between Primary and Advisory executors maps directly to enforcement readiness:
156+
157+
- **Primary executors** represent procedures that are ready for enforcement. When Primary executors report failures, findings are determined and can trigger enforcement actions (blocking, remediation, alerts).
158+
159+
- **Advisory executors** represent procedures that collect risk data but are not ready to trigger enforcement. Advisory executors provide risk visibility and inform decision-making, but their failures do not independently trigger enforcement actions.
160+
161+
### Workflow: Promoting Procedures from Advisory to Primary
162+
163+
A typical workflow for introducing new enforcement:
164+
165+
1. **Add to Evaluation Plan (Advisory)**
166+
- Add new procedure with executors in `Advisory` role
167+
- Run evaluations to collect baseline data
168+
- Understand violation patterns and impact
169+
170+
2. **Assess and Remediate**
171+
- Analyze Advisory executor results
172+
- Fix critical violations
173+
- Validate procedure accuracy
174+
175+
3. **Promote to Primary**
176+
- Change executor roles from `Advisory` to `Primary`
177+
- Now triggers findings and enforcement actions
178+
- Monitor enforcement impact
179+
180+
4. **Maintain Some Procedures as Advisory**
181+
- Keep informational/audit-only procedures in Advisory
182+
- Maintain experimental procedures in Advisory until validated
183+
- Use Advisory for risk visibility without enforcement
184+
185+
## Default Behavior
186+
187+
When aggregating results from multiple executors or procedures (log aggregation), if no conflict resolution strategy is explicitly specified, implementations MUST use the `Strict` strategy.
188+
189+
For aggregating results within a single log (e.g., multiple steps within an assessment), implementations MUST use severity-based determination, where the most severe result takes precedence according to the hierarchy: `Failed > Unknown > NeedsReview > Passed > NotApplicable`.
190+
191+
If all results are `NotRun`, no finding MUST be determined.

0 commit comments

Comments
 (0)