STD: WDCLS Invert Sigmoid Rule (WDCLSINVSIG)
Version: v1.0.0
Status: Draft
SRS Source: docusaurus/docs/srs/rules/rule-wdcls-invert-sigmoid.md
Rule Name: WDCLS_INVERT_SIGMOID_POS
Domain: RULES-WDCLSINVSIG
Overview
This document specifies tests for the WDCLS Invert Sigmoid rule using decision tables and test vectors. The rule validates CLS (classification) discrepancies between DXAI and machine classifications while considering sigmoid curve patterns, applying intelligent skip conditions.
Rule Characteristics:
- Pure business logic (no UI)
- Three skip conditions evaluated in order: minimum fluorescence, max CT, sigmoid pattern
- Sigmoid direction determination from readings array
- Shared configuration with WDCLS/C Rules
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 ID | Title | Conditions | Test Vectors | Coverage | Gaps |
|---|
| REQ-RULES-WDCLSINVSIG-001 | Sigmoid Pattern Skip | 6 | 8 | 100% | None |
| REQ-RULES-WDCLSINVSIG-002 | CT Threshold Skip | 4 | 5 | 100% | None |
| REQ-RULES-WDCLSINVSIG-003 | Min Fluorescence Skip | 3 | 4 | 100% | None |
Totals: 3 REQs, 13 Conditions, 17 Test Vectors, 100% Coverage
| Variable | Type | Valid Values | Description |
|---|
dxai_cls | string | Pos, Neg | DXAI classification |
machine_cls | string | Pos, Neg | Machine classification |
final_cls | string | Positive, Negative | Final resolved classification |
sigmoid_direction | string | Upward, Downward, None | Sigmoid curve pattern |
readings_count | int | 0..n | Number of readings in observation |
final_ct | float | numeric | Observation CT value |
max_ct_for_cls_discrepancy | float? | null, numeric | Config: Maximum CT threshold |
max_reading | float | numeric | Maximum value in readings array |
minimum_fluorescence_to_positive | float | numeric | Config: Min fluorescence threshold |
Output Variables
| Variable | Type | Description |
|---|
rule_skipped | bool | Whether the rule was skipped entirely |
error_applied | bool | Whether CLS discrepancy error was applied |
skip_reason | string? | Reason for skip (Low Fluorescence, High CT, Valid Invert Pattern) |
REQ-RULES-WDCLSINVSIG-001: Sigmoid Pattern Skip Condition
Precondition
All test vectors in this section assume:
dxai_cls != machine_cls (discrepancy exists)
max_reading >= minimum_fluorescence_to_positive (fluorescence check passed)
final_ct < max_ct_for_cls_discrepancy OR max_ct_for_cls_discrepancy = null (CT check passed)
Decision Table: Sigmoid and Classification Combinations
| TV | sigmoid_direction | final_cls | error_applied | skip_reason | Covers |
|---|
| TV-001-001 | Downward | Negative | false | Valid Invert Pattern | AC: Downward + Negative = skip |
| TV-001-002 | Downward | Positive | true | null | AC: Downward + Positive = error |
| TV-001-003 | Upward | Negative | true | null | AC: Upward + Negative = error |
| TV-001-004 | Upward | Positive | true | null | AC: Upward + Positive = error |
Decision Table: Sigmoid Direction Determination
| TV | readings_count | middle_value | penultimate_value | sigmoid_direction | Covers |
|---|
| TV-001-005 | 4 | 100 | 80 | Downward | AC: middle > penultimate |
| TV-001-006 | 4 | 80 | 100 | Upward | AC: middle < penultimate |
| TV-001-007 | 4 | 100 | 100 | None | AC: middle == penultimate |
| TV-001-008 | 3 | - | - | None | AC: readings < 4 = indeterminate |
Automation Status
| Test Vector Range | Status | Notes |
|---|
| TV-001-001 to TV-001-008 | Automated | Data-driven parameterized tests |
REQ-RULES-WDCLSINVSIG-002: CT Threshold Skip Condition
Precondition
All test vectors in this section assume:
dxai_cls != machine_cls (discrepancy exists)
max_reading >= minimum_fluorescence_to_positive (fluorescence check passed)
Decision Table: CT Threshold Comparison
| TV | max_ct_for_cls_discrepancy | final_ct | rule_skipped | skip_reason | Covers |
|---|
| TV-002-001 | null | 36 | false | null | AC: Null config = proceed |
| TV-002-002 | 35 | 36 | true | High CT | AC: final_ct > threshold = skip |
| TV-002-003 | 36 | 36 | true | High CT | AC: final_ct == threshold = skip |
| TV-002-004 | 37 | 36 | false | null | AC: final_ct < threshold = proceed |
| TV-002-005 | 35 | 34.99 | false | null | AC: Boundary - just below threshold |
Automation Status
| Test Vector Range | Status | Notes |
|---|
| TV-002-001 to TV-002-005 | Automated | Data-driven parameterized tests |
REQ-RULES-WDCLSINVSIG-003: Minimum Fluorescence Skip Condition
Precondition
All test vectors in this section assume:
dxai_cls != machine_cls (discrepancy exists)
Decision Table: Fluorescence Threshold Comparison
| TV | minimum_fluorescence_to_positive | max_reading | rule_skipped | skip_reason | Covers |
|---|
| TV-003-001 | 100 | 99 | true | Low Fluorescence | AC: max < threshold = skip |
| TV-003-002 | 100 | 100 | false | null | AC: max == threshold = proceed |
| TV-003-003 | 100 | 101 | false | null | AC: max > threshold = proceed |
| TV-003-004 | 100 | 99.99 | true | Low Fluorescence | AC: Boundary - just below threshold |
Automation Status
| Test Vector Range | Status | Notes |
|---|
| TV-003-001 to TV-003-004 | Automated | Data-driven parameterized tests |
Decision Table: Full Rule Evaluation Order
This table verifies the correct evaluation order of skip conditions (fluorescence first, then CT, then sigmoid).
| TV | max_reading | min_fl_threshold | final_ct | max_ct_threshold | sigmoid | final_cls | rule_skipped | error_applied | skip_reason |
|---|
| TV-FULL-001 | 50 | 100 | 30 | 35 | Upward | Positive | true | false | Low Fluorescence |
| TV-FULL-002 | 150 | 100 | 40 | 35 | Upward | Positive | true | false | High CT |
| TV-FULL-003 | 150 | 100 | 30 | 35 | Downward | Negative | true | false | Valid Invert Pattern |
| TV-FULL-004 | 150 | 100 | 30 | 35 | Upward | Positive | false | true | null |
| TV-FULL-005 | 150 | 100 | 30 | null | Downward | Positive | false | true | null |
Traceability to Existing Tests
| Requirement | Jira Tests | Status |
|---|
| REQ-RULES-WDCLSINVSIG-001 | BT-5221 | Existing |
| REQ-RULES-WDCLSINVSIG-002 | BT-5228, BT-5237 | Existing |
| REQ-RULES-WDCLSINVSIG-003 | BT-5369, BT-5700 | Existing |
Gap Analysis
Identified Gaps
| Gap | Requirement | Description | Priority | Owner |
|---|
| None | - | All requirements have existing Jira test tickets | - | - |
Notes
- All three requirements have linked Jira test tickets
- Test vectors provide additional granularity for boundary conditions
- Full evaluation order test vectors (TV-FULL-*) verify correct skip condition sequencing