dataforth(datasheet): Fix 2 — emulate QB single-precision rounding (26 -> 9 dirty)
formatMeasuredExact now applies Math.fround to the parsed value before toFixed. The DOS QuickBASIC computed/stored these as single-precision floats, so the last-digit rounding at the .5 boundary follows single, not double, precision. Without it, double-precision toFixed flipped boundaries (9.9995 -> "9.999" vs golden "10.000"; 46.85 -> "46.9" vs "46.8"; .45 -> "0.5" vs "0.4"; 3.3325 -> "3.333" vs "3.332"). Verified each against the staged golden. STAGE 3 re-validation: FINAL-TEST CLEAN models 68 -> 85 (+17), mismatches 26 -> 9, cert matches 2123 -> 2206. Zero regression — every remaining dirty model was already dirty pre-fix; no previously-clean model flipped. The 9 remaining are NOT rounding: - 4 models (DSCA38-05/-1793/-19C/-19E): Supply Current retest data-vintage — the staged .TXT is an older test run than the DB latest-wins record; not a render bug, can't reconcile against an older sheet. - 5 models (DSCA39-01/02/05/07/1950): STAGE 1 template artifact — the footer note "Standard output load for test is 250 ohms." was mis-captured as a truncated parameter row. A renderer-side fix was attempted but emitted the note for all current-output models (regressed 24 clean -C models), so it was reverted; needs a targeted STAGE 1 extractor fix instead. Renamed dsca-clean68-models.json -> dsca-clean-models.json (now 85 models). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,126 +7,38 @@ Corpus: 2806 staged DSCA originals across 126 models.
|
||||
|
||||
SUMMARY
|
||||
models with staged originals: 126
|
||||
models FINAL-TEST CLEAN (>=1 compared, 0 mismatch): 68
|
||||
models with FINAL-TEST mismatches: 26
|
||||
models FINAL-TEST CLEAN (>=1 compared, 0 mismatch): 85
|
||||
models with FINAL-TEST mismatches: 9
|
||||
certs compared: 2316
|
||||
Final-Test match: 2123
|
||||
Final-Test mismatch: 193
|
||||
Final-Test match: 2206
|
||||
Final-Test mismatch: 110
|
||||
(certs with accuracy-section diffs: 1337 — informational)
|
||||
staged serials not in DB: 40
|
||||
in DB but not rendered (skipped/null): 450
|
||||
|
||||
MODELS WITH FINAL-TEST CONTENT MISMATCHES (investigate before re-push):
|
||||
DSCA30-02 compared=54 ftMatch=53 ftMismatch=1
|
||||
[finaltest L7] SN 177588-4
|
||||
render: "Frequency Response 46.9 dB 44+/- 7 dB PASS"
|
||||
golden: "Frequency Response 46.8 dB 44+/- 7 dB PASS"
|
||||
DSCA31-12C compared=4 ftMatch=3 ftMismatch=1
|
||||
[finaltest L9] SN 179182-4
|
||||
render: "Output Noise 0.5 uArms <= 3 uArms PASS"
|
||||
golden: "Output Noise 0.4 uArms <= 3 uArms PASS"
|
||||
DSCA31-1918 compared=8 ftMatch=7 ftMismatch=1
|
||||
[finaltest L9] SN 180333-1
|
||||
render: "Output Noise 0.5 uArms <= 3 uArms PASS"
|
||||
golden: "Output Noise 0.4 uArms <= 3 uArms PASS"
|
||||
DSCA34-05C compared=55 ftMatch=54 ftMismatch=1
|
||||
[finaltest L10] SN 180006-6
|
||||
render: "Output Noise 0.5 uArms <= 3 uArms PASS"
|
||||
golden: "Output Noise 0.4 uArms <= 3 uArms PASS"
|
||||
DSCA38-02 compared=105 ftMatch=93 ftMismatch=12
|
||||
[finaltest L5] SN 180163-2
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 180163-5
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 178886-15
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-05 compared=129 ftMatch=83 ftMismatch=46
|
||||
[finaltest L5] SN 180224-13
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-05 compared=129 ftMatch=97 ftMismatch=32
|
||||
[finaltest L3] SN 180257-1
|
||||
render: "Supply Current 19.8 mA < 30 mA PASS"
|
||||
golden: "Supply Current 20.0 mA < 30 mA PASS"
|
||||
[finaltest L3] SN 180257-10
|
||||
render: "Supply Current 19.6 mA < 30 mA PASS"
|
||||
golden: "Supply Current 20.3 mA < 30 mA PASS"
|
||||
DSCA38-07 compared=3 ftMatch=2 ftMismatch=1
|
||||
[finaltest L5] SN 180238-1
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-08C compared=56 ftMatch=50 ftMismatch=6
|
||||
[finaltest L13] SN 177088-1
|
||||
render: "Output Noise 1.4 uArms <= 6 uArms PASS"
|
||||
golden: "Output Noise 1.5 uArms <= 6 uArms PASS"
|
||||
[finaltest L5] SN 177088-6
|
||||
render: "Excitation Voltage 3.333 V 3.33+/-.001 V PASS"
|
||||
golden: "Excitation Voltage 3.332 V 3.33+/-.001 V PASS"
|
||||
[finaltest L13] SN 177088-9
|
||||
render: "Output Noise 1.6 uArms <= 6 uArms PASS"
|
||||
golden: "Output Noise 1.5 uArms <= 6 uArms PASS"
|
||||
DSCA38-09 compared=4 ftMatch=3 ftMismatch=1
|
||||
[finaltest L5] SN 179236-4
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-12C compared=8 ftMatch=5 ftMismatch=3
|
||||
[finaltest L5] SN 178024-4
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 178024-6
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 178024-8
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-12E compared=8 ftMatch=7 ftMismatch=1
|
||||
[finaltest L5] SN 176970-1
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-1468 compared=11 ftMatch=10 ftMismatch=1
|
||||
[finaltest L5] SN 178595-2
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-16C compared=43 ftMatch=37 ftMismatch=6
|
||||
[finaltest L5] SN 178655-14
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 178655-5
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 179039-3
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L3] SN 180257-11
|
||||
render: "Supply Current 20.1 mA < 30 mA PASS"
|
||||
golden: "Supply Current 19.8 mA < 30 mA PASS"
|
||||
DSCA38-1793 compared=33 ftMatch=32 ftMismatch=1
|
||||
[finaltest L3] SN 176923-11
|
||||
render: "Supply Current 22.3 mA < 25 mA PASS"
|
||||
golden: "Supply Current 23.1 mA < 25 mA PASS"
|
||||
DSCA38-19 compared=8 ftMatch=7 ftMismatch=1
|
||||
[finaltest L5] SN 177084-3
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-19C compared=248 ftMatch=223 ftMismatch=25
|
||||
[finaltest L5] SN 1055-20
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 177302-15
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 178001-1
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-19E compared=28 ftMatch=23 ftMismatch=5
|
||||
[finaltest L5] SN 179698-15
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 179698-16
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 179698-18
|
||||
render: "Excitation Voltage 10.001 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA38-19C compared=248 ftMatch=247 ftMismatch=1
|
||||
[finaltest L4] SN 180036-8
|
||||
render: "Supply Curr. w/ EXC Load 54.5 mA < 100 mA PASS"
|
||||
golden: "Supply Curr. w/ EXC Load 55.0 mA < 100 mA PASS"
|
||||
DSCA38-19E compared=28 ftMatch=27 ftMismatch=1
|
||||
[finaltest L3] SN 179698-16
|
||||
render: "Supply Current 42.7 mA < 60 mA PASS"
|
||||
golden: "Supply Current 45.7 mA < 60 mA PASS"
|
||||
DSCA39-01 compared=4 ftMatch=0 ftMismatch=4
|
||||
[finaltest L12] SN 177576-1
|
||||
render: "Standard output load for te PASS"
|
||||
@@ -177,28 +89,9 @@ MODELS WITH FINAL-TEST CONTENT MISMATCHES (investigate before re-push):
|
||||
[finaltest L12] SN 178236-14
|
||||
render: "Standard output load for te PASS"
|
||||
golden: "Standard output load for test is 250 ohms."
|
||||
DSCA43-10 compared=16 ftMatch=15 ftMismatch=1
|
||||
[finaltest L5] SN 177827-12
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA43-20E compared=4 ftMatch=2 ftMismatch=2
|
||||
[finaltest L5] SN 177947-2
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
[finaltest L5] SN 177947-3
|
||||
render: "Excitation Voltage 9.999 V 10+/-.003 V PASS"
|
||||
golden: "Excitation Voltage 10.000 V 10+/-.003 V PASS"
|
||||
DSCA47N-15 compared=48 ftMatch=47 ftMismatch=1
|
||||
[finaltest L7] SN 177823-20
|
||||
render: "Open Thermocouple Resp. 12.88 V > 10.7 V PASS"
|
||||
golden: "Open Thermocouple Resp. 12.89 V > 10.7 V PASS"
|
||||
DSCA47T-06 compared=76 ftMatch=75 ftMismatch=1
|
||||
[finaltest L7] SN 177044-5
|
||||
render: "Open Thermocouple Resp. 12.96 V > 11 V PASS"
|
||||
golden: "Open Thermocouple Resp. 12.97 V > 11 V PASS"
|
||||
|
||||
FINAL-TEST CLEAN MODELS (68):
|
||||
DSCA30-01, DSCA30-03, DSCA30-06, DSCA30-07, DSCA30-08, DSCA30-08C, DSCA30-09, DSCA30-09C, DSCA30-1944, DSCA30-1945, DSCA30-1946, DSCA31-02, DSCA31-03, DSCA31-06, DSCA31-07, DSCA31-11, DSCA31-12, DSCA31-1273, DSCA31-13, DSCA31-13C, DSCA31-15, DSCA32-01, DSCA32-01C, DSCA32-01E, DSCA34-01, DSCA34-02C, DSCA34-04, DSCA34-04C, DSCA34-05, DSCA34-1858, DSCA36-01, DSCA36-02, DSCA36-03, DSCA36-04, DSCA36-04C, DSCA36-1949, DSCA38-03, DSCA38-09E, DSCA38-1544, DSCA38-15C, DSCA38-16, DSCA38-18C, DSCA40-03, DSCA40-05, DSCA40-05C, DSCA40-06, DSCA40-1951, DSCA40-1952, DSCA41-01, DSCA41-02, DSCA41-03, DSCA41-05C, DSCA41-06, DSCA41-09, DSCA41-13, DSCA41-14, DSCA41-15, DSCA41-15E, DSCA42-01, DSCA42-01C, DSCA42-02, DSCA47E-08C, DSCA47J-01C, DSCA47J-03, DSCA47K-05, DSCA47K-13, DSCA47K-14, DSCA47T-1928
|
||||
FINAL-TEST CLEAN MODELS (85):
|
||||
DSCA30-01, DSCA30-02, DSCA30-03, DSCA30-06, DSCA30-07, DSCA30-08, DSCA30-08C, DSCA30-09, DSCA30-09C, DSCA30-1944, DSCA30-1945, DSCA30-1946, DSCA31-02, DSCA31-03, DSCA31-06, DSCA31-07, DSCA31-11, DSCA31-12, DSCA31-1273, DSCA31-12C, DSCA31-13, DSCA31-13C, DSCA31-15, DSCA31-1918, DSCA32-01, DSCA32-01C, DSCA32-01E, DSCA34-01, DSCA34-02C, DSCA34-04, DSCA34-04C, DSCA34-05, DSCA34-05C, DSCA34-1858, DSCA36-01, DSCA36-02, DSCA36-03, DSCA36-04, DSCA36-04C, DSCA36-1949, DSCA38-02, DSCA38-03, DSCA38-07, DSCA38-08C, DSCA38-09, DSCA38-09E, DSCA38-12C, DSCA38-12E, DSCA38-1468, DSCA38-1544, DSCA38-15C, DSCA38-16, DSCA38-16C, DSCA38-18C, DSCA38-19, DSCA40-03, DSCA40-05, DSCA40-05C, DSCA40-06, DSCA40-1951, DSCA40-1952, DSCA41-01, DSCA41-02, DSCA41-03, DSCA41-05C, DSCA41-06, DSCA41-09, DSCA41-13, DSCA41-14, DSCA41-15, DSCA41-15E, DSCA42-01, DSCA42-01C, DSCA42-02, DSCA43-10, DSCA43-20E, DSCA47E-08C, DSCA47J-01C, DSCA47J-03, DSCA47K-05, DSCA47K-13, DSCA47K-14, DSCA47N-15, DSCA47T-06, DSCA47T-1928
|
||||
|
||||
MODELS WITH NO COMPARABLE CERT (no staged serial in DB, or all skipped/null):
|
||||
DSCA31-1947(null), DSCA33-01(null), DSCA33-01A(null), DSCA33-02(null), DSCA33-02C(null), DSCA33-03(null), DSCA33-03A(null), DSCA33-03C(null), DSCA33-04(null), DSCA33-04C(null), DSCA33-05(null), DSCA33-05C(null), DSCA33-07C(null), DSCA33-1917(null), DSCA33-1919(null), DSCA33-1948(null), DSCA45-01(null), DSCA45-01C(null), DSCA45-02(null), DSCA45-03(null), DSCA45-03C(null), DSCA45-04(null), DSCA45-04C(null), DSCA45-05C(null), DSCA45-06(null), DSCA45-07(null), DSCA45-08(null), DSCA47N-15C(null), DSCA49-04(null), DSCA49-05(null), DSCA49-1601(null), DSCA49-1895(null)
|
||||
@@ -327,8 +327,14 @@ function formatMeasuredExact(statusStr) {
|
||||
// char at index 4 is either a space (positive) or '-' (negative); start there
|
||||
// so negative signs survive (e.g. "PASS-4.2424060" -> "-4", not "4").
|
||||
const valueStr = statusStr.substring(4, statusStr.length - 1).trim();
|
||||
const value = parseFloat(valueStr);
|
||||
if (isNaN(value)) return { passFail, valStr: valueStr, value: NaN };
|
||||
const parsed = parseFloat(valueStr);
|
||||
if (isNaN(parsed)) return { passFail, valStr: valueStr, value: NaN };
|
||||
// The DOS QuickBASIC stored/computed these as single-precision floats, so the
|
||||
// value at the half-rounding boundary rounds the way single precision rounds,
|
||||
// not double. Recover the single (Math.fround) before formatting — without it,
|
||||
// double-precision toFixed flips last-digit boundaries (e.g. 9.9995 -> "9.999"
|
||||
// here but "10.000" in the original; 46.85 -> "46.9" vs "46.8").
|
||||
const value = Math.fround(parsed);
|
||||
const d = parseInt(decimalDigit, 10);
|
||||
const valStr = isNaN(d) ? value.toFixed(1) : value.toFixed(d);
|
||||
return { passFail, valStr, value };
|
||||
|
||||
1
projects/dataforth-dos/dsca-clean-models.json
Normal file
1
projects/dataforth-dos/dsca-clean-models.json
Normal file
@@ -0,0 +1 @@
|
||||
["DSCA30-01","DSCA30-02","DSCA30-03","DSCA30-06","DSCA30-07","DSCA30-08","DSCA30-08C","DSCA30-09","DSCA30-09C","DSCA30-1944","DSCA30-1945","DSCA30-1946","DSCA31-02","DSCA31-03","DSCA31-06","DSCA31-07","DSCA31-11","DSCA31-12","DSCA31-1273","DSCA31-12C","DSCA31-13","DSCA31-13C","DSCA31-15","DSCA31-1918","DSCA32-01","DSCA32-01C","DSCA32-01E","DSCA34-01","DSCA34-02C","DSCA34-04","DSCA34-04C","DSCA34-05","DSCA34-05C","DSCA34-1858","DSCA36-01","DSCA36-02","DSCA36-03","DSCA36-04","DSCA36-04C","DSCA36-1949","DSCA38-02","DSCA38-03","DSCA38-07","DSCA38-08C","DSCA38-09","DSCA38-09E","DSCA38-12C","DSCA38-12E","DSCA38-1468","DSCA38-1544","DSCA38-15C","DSCA38-16","DSCA38-16C","DSCA38-18C","DSCA38-19","DSCA40-03","DSCA40-05","DSCA40-05C","DSCA40-06","DSCA40-1951","DSCA40-1952","DSCA41-01","DSCA41-02","DSCA41-03","DSCA41-05C","DSCA41-06","DSCA41-09","DSCA41-13","DSCA41-14","DSCA41-15","DSCA41-15E","DSCA42-01","DSCA42-01C","DSCA42-02","DSCA43-10","DSCA43-20E","DSCA47E-08C","DSCA47J-01C","DSCA47J-03","DSCA47K-05","DSCA47K-13","DSCA47K-14","DSCA47N-15","DSCA47T-06","DSCA47T-1928"]
|
||||
@@ -1 +0,0 @@
|
||||
["DSCA30-01","DSCA30-03","DSCA30-06","DSCA30-07","DSCA30-08","DSCA30-08C","DSCA30-09","DSCA30-09C","DSCA30-1944","DSCA30-1945","DSCA30-1946","DSCA31-02","DSCA31-03","DSCA31-06","DSCA31-07","DSCA31-11","DSCA31-12","DSCA31-1273","DSCA31-13","DSCA31-13C","DSCA31-15","DSCA32-01","DSCA32-01C","DSCA32-01E","DSCA34-01","DSCA34-02C","DSCA34-04","DSCA34-04C","DSCA34-05","DSCA34-1858","DSCA36-01","DSCA36-02","DSCA36-03","DSCA36-04","DSCA36-04C","DSCA36-1949","DSCA38-03","DSCA38-09E","DSCA38-1544","DSCA38-15C","DSCA38-16","DSCA38-18C","DSCA40-03","DSCA40-05","DSCA40-05C","DSCA40-06","DSCA40-1951","DSCA40-1952","DSCA41-01","DSCA41-02","DSCA41-03","DSCA41-05C","DSCA41-06","DSCA41-09","DSCA41-13","DSCA41-14","DSCA41-15","DSCA41-15E","DSCA42-01","DSCA42-01C","DSCA42-02","DSCA47E-08C","DSCA47J-01C","DSCA47J-03","DSCA47K-05","DSCA47K-13","DSCA47K-14","DSCA47T-1928"]
|
||||
Reference in New Issue
Block a user