Skip to main content
Version: 3.0.0

Classification Rules Design

Document Type: Rule Design (Tier 2) Domain: RULES-CLASSIFICATION Domain Character: Algorithmic Status: Draft Last Updated: 2026-01-25


1. Overview

1.0 Rule Summary

PropertyValue
IntentEnsure classification integrity by detecting discrepancies between pcr.ai and machine classifications (CLS/CT), validating CT thresholds, handling ambiguous results, and enforcing consistency between target pairs.
InputsObservation data (final_cls, final_ct, machine_cls, machine_ct, readings), Target configuration (thresholds, cutoffs), Well type (Patient/Control)
OutputsError codes (CLSDISC_WELL, CTDISC_WELL, CONTROL_CLSDISC_*, BAD_CT_DELTA, etc.), Problem flags (CLASSIFICATION, CT_DISC), Classification updates
PrecedenceAfter CT/CLS calculation, before Combined Outcomes; WDCLS before WDCT; WFINALCLS early in pipeline

1.1 Purpose

The Classification Rules family ensures the integrity and consistency of PCR analysis results by:

  1. Discrepancy Detection - Identifying mismatches between pcr.ai and machine classifications/CT values
  2. Threshold Validation - Enforcing CT cutoffs and quantity boundaries
  3. Ambiguity Resolution - Handling indeterminate or ambiguous classification results
  4. Cross-Target Consistency - Validating CT relationships between configured target pairs

These rules are critical for laboratory quality control, flagging results that require manual review while maintaining audit trail integrity.

1.2 Requirements Covered

REQ IDTitlePriorityRule
REQ-RULES-WDCLS-001Detect Classification DiscrepanciesMustWDCLS
REQ-RULES-WDCLS-002CT Threshold SuppressionMustWDCLS
REQ-RULES-WDCLS-003Fluorescence Threshold SkipMustWDCLS
REQ-RULES-WDCLSC-001Control Well CLS DiscrepancyMustWDCLSC
REQ-RULES-WDCLSC-002Control CT Threshold ExemptionMustWDCLSC
REQ-RULES-WDCLSC-003Control Fluorescence SkipMustWDCLSC
REQ-RULES-WDCT-001Detect CT DiscrepanciesMustWDCT
REQ-RULES-WDCT-002CT Threshold SuppressionMustWDCT
REQ-RULES-WDCT-003Fluorescence Threshold SkipMustWDCT
REQ-RULES-WDCTC-001Control CT DiscrepancyMustWDCTC
REQ-RULES-WDCTC-002Control CT Threshold SuppressionMustWDCTC
REQ-RULES-WDCTC-003Control Fluorescence SkipMustWDCTC
REQ-RULES-CTCUTOFF-001CT Cutoff Sets NegativeMustWFINALCLS
REQ-RULES-CTCUTOFF-002Specimen-Based ReportingMustWFINALCLS
REQ-RULES-CTCUTOFF-003NULL CT HandlingMustWFINALCLS
REQ-RULES-CTCUTOFF-004NULL Quantity PreservationMustWFINALCLS
REQ-RULES-CTCUTOFF-005Missing Config ErrorMustWFINALCLS
REQ-RULES-INDETCTS-001Indeterminate High CT DetectionMustINDETERMINATE_CTS
REQ-RULES-THRESH-001Threshold ValidationMustTHRESHOLD
REQ-RULES-THRESH-002Error PersistenceMustTHRESHOLD
REQ-RULES-THRESH-003Missing Config DetectionMustTHRESHOLD
REQ-RULES-DELTACT-001Delta CT ValidationMustDELTA_CT
REQ-RULES-AMB-001AMB Problem AssignmentMustAMB
REQ-RULES-AMB-002AMB Visual FlaggingShouldAMB
REQ-RULES-AMB-003AMB Resolution ProcessingMustAMB
REQ-RULES-AMB-004AMB Manual PreventionMustAMB

1.3 Constraints

Tier 2 Constraint: This document describes ownership, patterns, and design rationale. It links to reference docs for full schemas.

1.4 Rule Family Structure

1.5 Dependencies

DirectionComponentPurpose
ConsumesObservation dataCLS, CT, readings, target
Target configurationThresholds, cutoffs
Reporting configurationUpper boundaries, specimen-based settings
ProducesError codesWell-level and target-level errors
Problem flagsObservation-level issues
Classification updatesFinal CLS modifications
PrecedesCombined OutcomesDiscrepancy flags used for matching
RQUALFallback outcome assignment

2. Component Architecture

2.1 Component Diagram

2.2 Component Responsibilities

ComponentFileResponsibilityREQ Trace
WdclsRuleAnalyzer/Rules/WdclsRule.phpPatient CLS discrepancy detectionWDCLS-001,002,003
WdclscRuleAnalyzer/Rules/WdclscRule.phpControl CLS discrepancy detectionWDCLSC-001,002,003
WdctRuleAnalyzer/Rules/WdctRule.phpPatient CT discrepancy detectionWDCT-001,002,003
WdctcRuleAnalyzer/Rules/WdctcRule.phpControl CT discrepancy detectionWDCTC-001,002,003
WfinalclsRuleAnalyzer/Rules/WfinalclsRule.phpCT cutoff classificationCTCUTOFF-001..005
ThresholdRuleAnalyzer/Rules/ThresholdRule.phpRunfile threshold validationTHRESH-001,002,003
DeltaCtRuleAnalyzer/Rules/DeltaCtRule.phpTarget pair CT consistencyDELTACT-001
IndeterminateCtRuleAnalyzer/Rules/IndeterminateCtRule.phpHigh CT indeterminate detectionINDETCTS-001
AmbRuleAnalyzer/Rules/AmbRule.phpAmbiguous classification handlingAMB-001..004
ObservationClsDiscrepancyCheckerConcerns/.../Discrepancy/...Reusable CLS discrepancy checkWDCLS, COMBOUT
ObservationCtDiscrepancyCheckerConcerns/.../Discrepancy/...Reusable CT discrepancy checkWDCT, COMBOUT
SetErrorToWellConcerns/SetErrorToWell.phpApply error codes to wellsAll

3. Data Design

3.1 Entities

This rule family reads configuration and observation data, writes errors and problems:

EntityOwnerRead/WriteFields Used
observationsRUNRPTRead/Writefinal_cls, final_ct, machine_cls, machine_ct, readings, problems
wellsRUNRPTRead/Writeerror_codes, resolution_codes, type
targetsKITCFGReadthresholds, min_fluorescence_to_positive, max_ct_for_*
reportingKITCFGReadct_upper_boundary, specimen_type
delta_ct_combinationsKITCFGReadfirst_target_id, second_target_id, delta_ct

3.2 Threshold Configuration

interface TargetThresholds {
max_ct_for_cls_discrepancy: number | null; // REQ-WDCLS-002
max_ct_for_ct_discrepancy: number | null; // REQ-WDCT-002
minimum_fluorescence_to_positive: number; // REQ-WDCLS-003, WDCT-003
ct_cutoff_threshold: number; // REQ-CTCUTOFF-001, default 40
indeterminate_ct_threshold: number; // REQ-INDETCTS-001, default 35
expected_threshold: number | null; // REQ-THRESH-001
}

3.3 Error Codes

Error CodeRuleWell TypeMeaning
CLSDISC_WELLWDCLSPatientCLS discrepancy detected
CTDISC_WELLWDCTPatientCT discrepancy detected (>2 cycles)
CONTROL_CLSDISC_WELLWDCLSCControlControl CLS discrepancy
CONTROL_CLSDISC_TARGETWDCLSCControlTarget-level CLS discrepancy
CONTROL_CTDISC_WELLWDCTCControlControl CT discrepancy
CONTROL_CTDISC_TARGETWDCTCControlTarget-level CT discrepancy
CUTOFF_LIMITS_MISSEDWFINALCLSAnyMissing cutoff configuration
THRESHOLD_WRONGTHRESHOLDAnyThreshold mismatch
THRESHOLD_MISSEDTHRESHOLDAnyMissing threshold configuration
BAD_CT_DELTADELTA_CTAnyTarget pair CT/CLS mismatch
INDETERMINATE_CTSINDETERMINATE_CTSAnyAll positive with high CT

4. Interface Design

4.1 Rule Interface

All classification rules implement the standard AnalyzerRuleContract:

interface AnalyzerRuleContract {
public function handle(
ConfigurationRepository $config,
AnalyzableObservation $observation,
RunMix $runMix,
RunTarget $runTarget,
AnalyzableWell $well,
WellCollection $wells,
PatientWellCollection $previousPatientWells,
PecWellCollection $previousPecWells,
RunTargetsCollection $runTargets
): void;
}

4.2 Observation Interface

Key methods used by classification rules:

MethodReturnsPurpose
shouldCheckForClsDiscrepancy()boolPre-conditions for CLS check
shouldCheckForCtDiscrepancy()boolPre-conditions for CT check
hasDiscrepancyBetweenPreferredAndNonPreferredCls()boolCLS comparison
hasLargeDiscrepancyBetweenPreferredAndNonPreferredCt()boolCT diff > 2
ctIsHigherThanMaxCTForClsDiscrepancy()boolCT threshold suppression
ctIsHigherThanMaxCTForCtDiscrepancy()boolCT threshold suppression
maxReadingIsLessThanTargetMinFl()boolFluorescence threshold skip
finalClsIsNegative()boolClassification check
getFinalCt()floatnull
getFinalCls()stringClassification result
addProblem(string $problem)voidFlag observation
setFinalCls(string $cls)voidUpdate classification

5. Behavioral Design

5.1 WDCLS Algorithm (REQ-WDCLS-001, 002, 003)

Algorithm: Well Discrepant Classification (Patient)

Inputs:
- observation: Observation - PCR results with classifications
- well: Well - The patient well being evaluated
- config: Configuration - Threshold settings

Outputs:
- void (modifies well.error_codes, observation.problems)

Assumptions:
- Well is Patient type (not Control)
- Both pcr.ai and machine classifications are available
- WFINALCLS has already executed

Steps:
1. Resolution check: IF well.resolution_codes contains 'WDCLS': apply LIMS status, RETURN

2. Discrepancy check skip: IF NOT observation.shouldCheckForClsDiscrepancy(): RETURN

3. Reporting boundary check:
IF observation.isFinalCtOrClsOverPassedReportingUpperBoundary() OR
observation.isBothMachineCtAndDxaiCtOverpassedReportingUpperBoundary():
RETURN

4. CT threshold suppression (REQ-WDCLS-002):
IF observation.ctIsHigherThanMaxCTForClsDiscrepancy():
RETURN (suppressed)

5. Fluorescence threshold skip (REQ-WDCLS-003):
IF observation.finalClsIsNegative() AND observation.maxReadingIsLessThanTargetMinFl():
RETURN (skipped)

6. Discrepancy detection (REQ-WDCLS-001):
IF observation.hasDiscrepancyBetweenPreferredAndNonPreferredCls():
SET well.error_code = 'CLSDISC_WELL'
ADD observation.problems = 'CLASSIFICATION'

Notes:
- Identical logic for WDCLSC but with CONTROL_CLSDISC_* error codes
- WDCLSC also sets target-level error

5.1.1 WDCLS Decision Logic

Conditionmax_ct_for_cls_discrepancyfinal_ctResult
Threshold nullnullanyCheck discrepancy
CT >= threshold3536Suppress (no error)
CT >= threshold3636Suppress (no error)
CT < threshold3736Check discrepancy

Precedence: CT threshold evaluated before discrepancy check. Default: If threshold is null, no CT-based suppression applies.

5.1.2 Fluorescence Threshold Logic

min_fluorescencemax(readings)final_clsResult
10099NegativeSkip rule
10099PositiveCheck discrepancy
100100anyCheck discrepancy

Precedence: Fluorescence evaluated after CT threshold. Note: Skip applies only when classification is Negative AND max reading is below threshold.

5.2 WDCT Algorithm (REQ-WDCT-001, 002, 003)

Algorithm: Well Discrepant CT (Patient)

Inputs:
- observation: Observation - PCR results with CT values
- well: Well - The patient well being evaluated
- config: Configuration - Threshold settings

Outputs:
- void (modifies well.error_codes, observation.problems)

Steps:
1. Resolution check: IF well.resolution_codes contains 'WDCT': apply LIMS status, RETURN

2. WDCLS resolution check: IF well.resolution_codes contains 'WDCLS': RETURN

3. Discrepancy check skip: IF NOT observation.shouldCheckForCtDiscrepancy(): RETURN

4. CT threshold suppression (REQ-WDCT-002):
IF observation.ctIsHigherThanMaxCTForCtDiscrepancy():
RETURN (suppressed)

5. CLS discrepancy priority:
IF well.hasError('CLSDISC_WELL'):
RETURN (CLS discrepancy takes precedence)

6. Fluorescence threshold skip (REQ-WDCT-003):
IF observation.finalClsIsNegative() AND observation.maxReadingIsLessThanTargetMinFl():
RETURN (skipped)

7. CT discrepancy detection (REQ-WDCT-001):
IF observation.hasLargeDiscrepancyBetweenPreferredAndNonPreferredCt():
SET well.error_code = 'CTDISC_WELL'
ADD observation.problems = 'CT_DISC'

Notes:
- CT discrepancy threshold is fixed at >2 cycles
- Classification must be non-negative for check to apply
- WDCLS error takes precedence (no CT error if CLS error exists)

5.2.1 CT Discrepancy Detection

pcr.ai_ctmachine_ctabs(diff)Result
25.026.51.5No error
25.027.02.0No error (not >2)
25.027.12.1CTDISC_WELL error
25.028.53.5CTDISC_WELL error

Threshold: Fixed at >2 cycles (not configurable).

5.3 WFINALCLS Algorithm (REQ-CTCUTOFF-001..005)

Algorithm: CT Cutoff Classification

Inputs:
- observation: Observation - PCR results
- well: Well - The well being evaluated
- config: Configuration - Cutoff and reporting settings

Outputs:
- void (modifies observation.final_cls, well.error_codes)

Steps:
1. Resolution check: IF well.resolution_codes contains 'WFINALCLS': apply LIMS status, RETURN

2. Reporting lookup (REQ-CTCUTOFF-002, 005):
reporting = config.getFirstGroupReportingForObservation(observation)
IF reporting is null:
SET well.error_code = 'CUTOFF_LIMITS_MISSED'
RETURN

3. Upper boundary flagging:
IF observation.dxai_ct or cls > reporting.upper_boundary:
SET observation.dxai_ct_overpassed = true
IF observation.machine_ct or cls > reporting.upper_boundary:
SET observation.machine_ct_overpassed = true

4. Skip negative: IF observation.hasNegativeFinalCls(): RETURN

5. CT cutoff check (REQ-CTCUTOFF-001):
IF observation.final_ct > reporting.ct_upper_boundary OR
observation.final_ct IS NULL (REQ-CTCUTOFF-003):
SET observation.final_cls = 'Neg'
FLAG observation.ct_cls_overpassed = true

Notes:
- NULL CT treated as boundary exceeded (REQ-CTCUTOFF-003)
- NULL Quantity preserves classification (REQ-CTCUTOFF-004)
- Specimen-type matching when use_sample_type enabled (REQ-CTCUTOFF-002)

5.3.1 NULL Value Handling Truth Table

FieldValueActionRationale
final_ctNULLSet NegativeMissing CT = measurement failure
final_ct45Set NegativeExceeds default cutoff (40)
final_ct35PreserveWithin boundary
quantityNULLPreserveNo classification change
quantity0Evaluate boundaryUse configured limits

5.4 DELTA_CT Algorithm (REQ-DELTACT-001)

Algorithm: Delta CT Validation

Inputs:
- observation: Observation - Current observation
- well: Well - Contains all observations
- config: Configuration - Delta CT combinations

Outputs:
- void (modifies well.error_codes)

Steps:
1. Configuration lookup:
combinations = config.getDeltaCtTargetCombinationsForTarget(observation.target)
IF combinations.isEmpty(): RETURN

2. For each combination in combinations:
a. Find pair observation in same well matching combination targets
b. IF no pair observation: CONTINUE (skip)

c. Threshold check:
delta = abs(observation.final_ct - pair.final_ct)
IF delta >= combination.delta_ct:
hasBadDelta = true
BREAK

d. Classification check:
IF observation.final_cls != pair.final_cls:
hasBadDelta = true
BREAK

3. Apply error:
IF hasBadDelta:
SET well.error_code = 'BAD_CT_DELTA'

Notes:
- Pair matching is bidirectional (A,B or B,A)
- Either CT delta OR classification mismatch triggers error
- IC targets excluded from validation

5.4.1 Delta CT Decision Logic

Target A CLSTarget A CTTarget B CLSTarget B CTThresholdResult
Positive30Positive323No error (delta=2)
Positive30Positive333BAD_CT_DELTA (delta=3)
Positive30Positive343BAD_CT_DELTA (delta=4)
Positive30Negative303BAD_CT_DELTA (CLS mismatch)

Precedence: Classification mismatch checked independently of CT delta. Operator: Uses >= for threshold comparison (boundary triggers error).

5.5 INDETERMINATE_CTS Algorithm (REQ-INDETCTS-001)

Algorithm: Indeterminate High CT Detection

Inputs:
- well: Well - The well being evaluated
- config: Configuration - Indeterminate threshold (default 35)

Outputs:
- void (modifies well.error_codes)

Steps:
1. Get non-IC observations: nonIcObs = well.getNonIcTargetObservations()

2. Check all positive with high CT:
IF nonIcObs.every(obs => obs.hasPositiveFinalCls() AND obs.final_ct > 35):
SET well.error_code = 'INDETERMINATE_CTS'

Notes:
- Rule fails only when ALL non-IC targets meet both conditions
- If any target is Negative or has CT <= 35, rule passes
- IC targets excluded from evaluation

5.5.1 Indeterminate Detection Truth Table

Target A CLSTarget A CTTarget B CLSTarget B CTResult
Positive36Positive37INDETERMINATE_CTS
Positive36Positive35Pass (B CT <= 35)
Positive36Negative38Pass (B is Negative)
Negative36Negative37Pass (neither Positive)

5.6 AMB Algorithm (REQ-AMB-001..004)

Algorithm: Ambiguous Classification Handling

Inputs:
- observation: Observation - PCR results
- well: Well - The well being evaluated

Outputs:
- void (modifies observation.problems)

Steps:
1. Resolution check: IF well.resolution_codes contains 'AMB': RETURN

2. Ambiguity detection (REQ-AMB-001):
IF observation.hasAmbiguousFinalCls():
ADD observation.problems = 'CLASSIFICATION'

Notes:
- Resolution codes processed separately (REQ-AMB-003)
- Manual resolution blocked by system design (REQ-AMB-004)
- Visual flagging handled by UI layer (REQ-AMB-002)

5.6.1 AMB Resolution Code Processing

Resolution CodeActionfinal_clserror_codeproblems
AMB,SETPOSChange to PositivePosclearedcleared
AMB,SETNEGChange to NegativeNegclearedcleared
AMBClear error onlyAmb (unchanged)clearedcleared

6. Error Handling

ConditionDetectionResponseFallback
Missing reporting confignull from lookupCUTOFF_LIMITS_MISSEDRule aborts
Missing threshold confignull from lookupTHRESHOLD_MISSEDRule aborts
Threshold mismatchValues differTHRESHOLD_WRONGPermanent error
CLS discrepancy on PatientClassifications differCLSDISC_WELLFlags for review
CLS discrepancy on ControlClassifications differCONTROL_CLSDISC_*Target-level error
CT discrepancy (>2 cycles)CT difference checkCTDISC_WELLFlags for review
All positive high CTAll non-IC > 35INDETERMINATE_CTSFlags for review
Target pair inconsistencyDelta CT >= thresholdBAD_CT_DELTAFlags for review

7. Configuration

SettingRulePathDefaultEffect
max_ct_for_cls_discrepancyWDCLS, WDCLSCtarget.*nullSuppress CLS discrepancy error
max_ct_for_ct_discrepancyWDCT, WDCTCtarget.*nullSuppress CT discrepancy error
minimum_fluorescence_to_positiveWD*target.*-Skip rule on low fluorescence
ct_cutoff_thresholdWFINALCLSreporting.*40CT upper boundary
indeterminate_ct_thresholdINDETERMINATE_CTSsystem35High CT threshold
expected_thresholdTHRESHOLDmix.*-Runfile threshold validation
delta_ctDELTA_CTcombination.*-Target pair delta threshold
use_sample_typeWFINALCLSsystemfalseEnable specimen-based reporting

See Configuration Reference for full documentation.


8. Implementation Mapping

8.1 Code Locations

ComponentPath
WDCLS Ruleapp/Analyzer/Rules/WdclsRule.php
WDCLSC Ruleapp/Analyzer/Rules/WdclscRule.php
WDCT Ruleapp/Analyzer/Rules/WdctRule.php
WDCTC Ruleapp/Analyzer/Rules/WdctcRule.php
WFINALCLS Ruleapp/Analyzer/Rules/WfinalclsRule.php
Threshold Ruleapp/Analyzer/Rules/ThresholdRule.php
Delta CT Ruleapp/Analyzer/Rules/DeltaCtRule.php
Indeterminate CT Ruleapp/Analyzer/Rules/IndeterminateCtRule.php
AMB Ruleapp/Analyzer/Rules/AmbRule.php
CLS Discrepancy Checkerapp/Analyzer/Rules/Concerns/CombinedOutcomes/Discrepancy/ObservationClsDiscrepancyChecker.php
CT Discrepancy Checkerapp/Analyzer/Rules/Concerns/CombinedOutcomes/Discrepancy/ObservationCtDiscrepancyChecker.php
SetErrorToWellapp/Analyzer/Rules/Concerns/SetErrorToWell.php

8.2 Requirement Traceability

REQ IDDesign SectionPrimary Code
REQ-RULES-WDCLS-001§5.1WdclsRule.php:66-70
REQ-RULES-WDCLS-002§5.1, §5.1.1WdclsRule.php:58-60
REQ-RULES-WDCLS-003§5.1, §5.1.2WdclsRule.php:62-64
REQ-RULES-WDCLSC-001§5.1WdclscRule.php:63-68
REQ-RULES-WDCLSC-002§5.1.1WdclscRule.php:55-57
REQ-RULES-WDCLSC-003§5.1.2WdclscRule.php:59-61
REQ-RULES-WDCT-001§5.2WdctRule.php:64-68
REQ-RULES-WDCT-002§5.2WdctRule.php:52-54
REQ-RULES-WDCT-003§5.2WdctRule.php:60-62
REQ-RULES-WDCTC-001§5.2WdctcRule.php:64-68
REQ-RULES-WDCTC-002§5.2WdctcRule.php:56-58
REQ-RULES-WDCTC-003§5.2WdctcRule.php:60-62
REQ-RULES-CTCUTOFF-001§5.3WfinalclsRule.php:64-67
REQ-RULES-CTCUTOFF-002§5.3WfinalclsRule.php:46
REQ-RULES-CTCUTOFF-003§5.3, §5.3.1WfinalclsRule.php:64
REQ-RULES-CTCUTOFF-004§5.3.1(implicit in boundary check)
REQ-RULES-CTCUTOFF-005§5.3WfinalclsRule.php:46-49
REQ-RULES-INDETCTS-001§5.5IndeterminateCtRule.php:40-44
REQ-RULES-THRESH-001§6ThresholdRule.php:48-52
REQ-RULES-THRESH-002§6(error persistence logic)
REQ-RULES-THRESH-003§6ThresholdRule.php:42-46
REQ-RULES-DELTACT-001§5.4DeltaCtRule.php:47-65
REQ-RULES-AMB-001§5.6AmbRule.php:40-42
REQ-RULES-AMB-002§5.6(UI layer)
REQ-RULES-AMB-003§5.6.1(resolution processing)
REQ-RULES-AMB-004§5.6(system constraint)

9. Design Decisions

DecisionRationaleAlternatives Considered
Separate Patient/Control rulesDifferent error codes, testabilitySingle rule with mode (rejected: complexity)
CLS discrepancy before CT discrepancyAvoid duplicate flaggingParallel execution (rejected: redundant errors)
Fixed CT discrepancy threshold (>2)Industry standardConfigurable (rejected: consistency)
Shared discrepancy checkersCode reuse with Combined OutcomesInline logic (rejected: duplication)
Permanent threshold errorsAudit trail integrityResolvable (rejected: data integrity)
NULL CT = NegativeConservative interpretationSkip (rejected: false positives)
NULL Quantity = PreserveAsymmetric NULL handlingNULL = Negative (rejected: over-aggressive)

10. Performance Considerations

ScenarioConcernMitigation
Many observations per wellIteration for each ruleEarly exit on resolution codes
Delta CT combinationsPair lookup for each targetIndex on target_id, skip non-configured
Indeterminate CT checkAll non-IC observation scanShort-circuit on first negative
Discrepancy checkersCalled from multiple contextsStateless, no DB queries

DocumentRelevant Sections
SRS: rule-wdcls.mdWDCLS requirements
SRS: rule-wdclsc.mdWDCLSC requirements
SRS: rule-wdct.mdWDCT requirements
SRS: rule-wdctc.mdWDCTC requirements
SRS: rule-ct-cutoff-wfinalcls.mdWFINALCLS requirements
SRS: rule-indeterminate-cts.mdINDETERMINATE_CTS requirements
SRS: rule-threshold.mdTHRESHOLD requirements
SRS: rule-delta-ct.mdDELTA_CT requirements
SRS: rule-amb.mdAMB requirements
SDS: Rules EngineFramework overview
SDS: Combined OutcomesDiscrepancy flag consumption