Skip to main content
Version: 3.0.1

STD: Negative Sigmoid Control Rule (NEGSIGMOIDCTRL)

Version: v1.0.0 Status: Draft SRS Source: docusaurus/docs/srs/rules/rule-negative-sigmoid-control.md Rule Name: NEGATIVE_SIGMOID_CONTROL Domain: RULES-NEGSIGMOIDCTRL


Overview

This document specifies tests for the Negative Sigmoid Control rule using decision tables and test vectors. The rule detects and flags control wells that exhibit an upward sigmoid amplification pattern but have a negative final classification, indicating a potential quality issue.

Rule Characteristics:

  • Pure business logic (no UI except reporting)
  • Sequential condition evaluation (well type, manual classification, resolution code, classification, sigmoid pattern)
  • Binary error assignment (both well and target errors assigned together)
  • Dual-level error codes (well-level and target-level)

Test Method: TM-API (per Test Plan Section 3.3 - Rules use automated API tests)

Verification Approach: Rule verification is performed using data-driven test vectors. Each row in a decision table represents a complete verification scenario with defined inputs and expected outputs. This format enables exhaustive condition coverage while remaining concise and auditable.


Coverage Summary

REQ IDTitleConditionsTest VectorsCoverageGaps
REQ-RULES-NEGSIGMOIDCTRL-001Core Detection Logic88100%None
REQ-RULES-NEGSIGMOIDCTRL-002Patient Well Exclusion22100%None
REQ-RULES-NEGSIGMOIDCTRL-003Resolution Code Bypass22100%None
REQ-RULES-NEGSIGMOIDCTRL-004Manual Classification Bypass33100%None
REQ-RULES-NEGSIGMOIDCTRL-005Assay Summary Display22100%None

Totals: 5 REQs, 17 Conditions, 17 Test Vectors, 100% Coverage


Input Variables

VariableTypeValid ValuesDescription
well.typeenumControl, PatientWell type classification
well.sigmoid_patternenumUpward, Downward, nullAmplification curve shape
well.final_classificationenumPositive, Negative, nullSystem-determined classification
well.manual_classificationenum/nullPositive, Negative, nullUser-assigned classification override
well.resolution_codesarray[], [NEGATIVE_SIGMOID_CONTROL], ...Applied resolution codes
well.mixstringMix A, Mix B, ...Mix identifier
observation.targetstringTarget A, Target B, ...Target identifier

Output Variables

VariableTypeDescription
well.error_codestring/nullWell-level error (INCORRECT_NEGATIVE_SIGMOID or null)
target.error_codestring/nullTarget-level error (INCORRECT_NEGATIVE_SIGMOID_TARGET or null)
rule_triggeredboolWhether the rule assigned error codes

REQ-RULES-NEGSIGMOIDCTRL-001: Core Detection Logic

Decision Table: Sigmoid Pattern and Classification Combinations

This table covers all combinations of sigmoid pattern (Upward/Downward) and classification (Positive/Negative) for control wells with no bypass conditions active.

Preconditions: well.type = Control, manual_classification = null, resolution_codes = []

TVsigmoid_patternfinal_classificationwell_errortarget_errorCovers
TV-001-001UpwardNegativeINCORRECT_NEGATIVE_SIGMOIDINCORRECT_NEGATIVE_SIGMOID_TARGETAC: Upward + Negative triggers both errors
TV-001-002UpwardPositivenullnullAC: Upward + Positive = no error
TV-001-003DownwardNegativenullnullAC: Downward + Negative = no error
TV-001-004DownwardPositivenullnullAC: Downward + Positive = no error

Decision Table: Error Code Assignment Verification

Verifies that both error codes are assigned simultaneously when rule triggers.

Preconditions: well.type = Control, manual_classification = null, resolution_codes = [], sigmoid_pattern = Upward, final_classification = Negative

TVDescriptionwell_error_assignedtarget_error_assignedCovers
TV-001-005Both errors assigned togethertruetrueAC: Simultaneous assignment
TV-001-006Well error present implies target errortruetrueAC: Dual-level errors

Decision Table: Precondition Handling

Verifies rule behavior when preconditions are not met.

TVsigmoid_patternfinal_classificationrule_executedCovers
TV-001-007nullNegativefalseAC: No sigmoid = skip rule
TV-001-008UpwardnullfalseAC: No classification = skip rule

REQ-RULES-NEGSIGMOIDCTRL-002: Patient Well Exclusion

Decision Table: Well Type Filter

Verifies that patient wells are excluded from rule execution regardless of other conditions.

Preconditions: sigmoid_pattern = Upward, final_classification = Negative, manual_classification = null, resolution_codes = []

TVwell.typerule_triggeredwell_errortarget_errorCovers
TV-002-001ControltrueINCORRECT_NEGATIVE_SIGMOIDINCORRECT_NEGATIVE_SIGMOID_TARGETAC: Control wells evaluated
TV-002-002PatientfalsenullnullAC: Patient wells excluded

REQ-RULES-NEGSIGMOIDCTRL-003: Resolution Code Bypass

Decision Table: Resolution Code Handling

Verifies that the NEGATIVE_SIGMOID_CONTROL resolution code bypasses rule execution.

Preconditions: well.type = Control, sigmoid_pattern = Upward, final_classification = Negative, manual_classification = null

TVresolution_codesrule_triggeredwell_errortarget_errorCovers
TV-003-001[]trueINCORRECT_NEGATIVE_SIGMOIDINCORRECT_NEGATIVE_SIGMOID_TARGETAC: No resolution code = rule executes
TV-003-002[NEGATIVE_SIGMOID_CONTROL]falsenullnullAC: Resolution code bypasses rule

REQ-RULES-NEGSIGMOIDCTRL-004: Manual Classification Bypass

Decision Table: Manual Classification Handling

Verifies that any manual classification bypasses rule execution.

Preconditions: well.type = Control, sigmoid_pattern = Upward, final_classification = Negative, resolution_codes = []

TVmanual_classificationrule_triggeredwell_errortarget_errorCovers
TV-004-001nulltrueINCORRECT_NEGATIVE_SIGMOIDINCORRECT_NEGATIVE_SIGMOID_TARGETAC: No manual cls = rule executes
TV-004-002PositivefalsenullnullAC: Manual positive bypasses
TV-004-003NegativefalsenullnullAC: Manual negative bypasses

REQ-RULES-NEGSIGMOIDCTRL-005: Assay Summary Display

Decision Table: Error Display in Assay Summary

Verifies that errors are displayed in the Assay Summary grouped by mix and target.

Preconditions: Rule has triggered and assigned errors

TVwell.mixobservation.targetexpected_display_locationerror_shownCovers
TV-005-001Mix ATarget AMix A / Target AINCORRECT_NEGATIVE_SIGMOID_TARGETAC: Display by mix/target
TV-005-002Mix BTarget CMix B / Target CINCORRECT_NEGATIVE_SIGMOID_TARGETAC: Display by mix/target

Combined Decision Table: Full Rule Evaluation

This table shows the complete rule evaluation flow with all bypass conditions.

TVwell.typemanual_clsresolution_codesigmoidclassificationtriggeredCovers
TV-FULL-001Patient--UpwardNegativefalseREQ-002: Patient excluded
TV-FULL-002ControlPositive-UpwardNegativefalseREQ-004: Manual cls bypass
TV-FULL-003ControlnullNEGATIVE_SIGMOID_CONTROLUpwardNegativefalseREQ-003: Resolution bypass
TV-FULL-004Controlnull[]UpwardPositivefalseREQ-001: No error (positive)
TV-FULL-005Controlnull[]DownwardNegativefalseREQ-001: No error (downward)
TV-FULL-006Controlnull[]UpwardNegativetrueREQ-001: Error triggered

Note: "-" indicates value is irrelevant due to earlier bypass condition.


Automation Status

RequirementTest MethodAutomation StatusNotes
REQ-RULES-NEGSIGMOIDCTRL-001TM-APIAutomatedCore rule logic
REQ-RULES-NEGSIGMOIDCTRL-002TM-APIAutomatedWell type filter
REQ-RULES-NEGSIGMOIDCTRL-003TM-APIAutomatedResolution code handling
REQ-RULES-NEGSIGMOIDCTRL-004TM-APIAutomatedManual classification handling
REQ-RULES-NEGSIGMOIDCTRL-005TM-APIAutomatedReport verification

Traceability to Existing Tests

RequirementJira TestsStatus
REQ-RULES-NEGSIGMOIDCTRL-001BT-5045Existing
REQ-RULES-NEGSIGMOIDCTRL-002PendingGap
REQ-RULES-NEGSIGMOIDCTRL-003PendingGap
REQ-RULES-NEGSIGMOIDCTRL-004PendingGap
REQ-RULES-NEGSIGMOIDCTRL-005PendingGap

Supplementary Gap-Fill Tests

TCDescriptionCovers
TC-NEGSIGMOIDCTRL-COMP-005Combined: resolution + re-analysis clears error on control (duplicate coverage)Combined resolution code + manual cls bypass

Gap Analysis

Identified Gaps

GapRequirementDescriptionPriorityOwner
GAP-001REQ-RULES-NEGSIGMOIDCTRL-002No Jira test ticket for patient well exclusionHighTBD
GAP-002REQ-RULES-NEGSIGMOIDCTRL-003No Jira test ticket for resolution code bypassHighTBD
GAP-003REQ-RULES-NEGSIGMOIDCTRL-004No Jira test ticket for manual classification bypassHighTBD
GAP-004REQ-RULES-NEGSIGMOIDCTRL-005No Jira test ticket for Assay Summary displayMediumTBD

Remediation Plan

  1. GAP-001: Create test ticket covering TV-002-001 through TV-002-002 (patient well exclusion scenarios)
  2. GAP-002: Create test ticket covering TV-003-001 through TV-003-002 (resolution code bypass scenarios)
  3. GAP-003: Create test ticket covering TV-004-001 through TV-004-003 (manual classification bypass scenarios)
  4. GAP-004: Create test ticket covering TV-005-001 through TV-005-002 (Assay Summary display scenarios)

Known Issues

IssueDescriptionImpactStatus
OQ-001Source documentation Row 2 Case 2 contradiction regarding patient wellsTest design follows requirement statement (patient wells excluded)Flagged for validation