From 4b88defdab64f8c810bd88003962f9c46e017320 Mon Sep 17 00:00:00 2001 From: boris Date: Sun, 6 Sep 2026 18:07:34 +0800 Subject: [PATCH] docs: record date numeric VM acceptance --- docs/evidence/date-numeric-vm-20260906.json | 90 +++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 docs/evidence/date-numeric-vm-20260906.json diff --git a/docs/evidence/date-numeric-vm-20260906.json b/docs/evidence/date-numeric-vm-20260906.json new file mode 100644 index 0000000..e753bc0 --- /dev/null +++ b/docs/evidence/date-numeric-vm-20260906.json @@ -0,0 +1,90 @@ +{ + "schemaVersion": "fidc.date-numeric-vm-performance/v1", + "generatedAt": "2026-09-06T18:08:00+08:00", + "host": "192.168.31.177", + "change": { + "engineCommit": "bc228980afc02cde483b1a6fe69da4048120cbc4", + "serviceCommit": "bac07c208c652a717d312e332d44f90218cc1247", + "runnerBinarySha256": "46684dea71273466f8ba0f6351eb6f6adf694393ff23ee278054e3b6b71acbe5", + "description": "Valid ISO date literals directly compared with trade_date, current_date, date, decision_date or execution_date compile to the numeric bytecode VM as YYYYMMDD keys. All other strings remain on the Rhai path. Numeric VM floating comparisons now match Rhai relative epsilon semantics." + }, + "correctnessBug": { + "previousBehavior": "Numeric VM used exact f64 comparisons while Rhai used relative f64::EPSILON comparisons, so an expression could change result depending on whether it compiled to VM or fell back to Rhai.", + "capturedExample": "11.699999999999998 == 11.7", + "previousVmResult": false, + "rhaiAndFixedVmResult": true, + "operatorsAligned": [ + "==", + "!=", + "<", + "<=", + ">", + ">=" + ] + }, + "request": { + "sourceRunId": "btr_1788681250851_3170500_1", + "startDate": "2023-01-03", + "endDate": "2025-12-31", + "frequency": "1d", + "matchingType": "next_bar_open", + "initialCash": 10000000.0, + "benchmark": "000852.SH", + "frozenBundleReused": true + }, + "baseline": { + "engineCommit": "840473362d7032b80d551ba5935723ee823dffa1", + "hotEngineMedianSeconds": 5.049, + "hotTotalMedianSeconds": 5.796 + }, + "candidate": { + "coldRun": { + "runId": "btr_1788688964051_3295756_0", + "totalSeconds": 21.341, + "dataSeconds": 7.904, + "engineSeconds": 12.519, + "classification": "post-deploy process cold and concurrent host-load observation; retained explicitly and excluded from the hot median" + }, + "hotRunIds": [ + "btr_1788688990229_3295756_1", + "btr_1788689001276_3295756_2", + "btr_1788689030863_3295756_3", + "btr_1788689059131_3295756_4" + ], + "hotEngineSeconds": [ + 4.963, + 4.934, + 4.854, + 4.859 + ], + "hotEngineMedianSeconds": 4.8965, + "hotTotalSeconds": [ + 5.901, + 5.619, + 5.738, + 5.539 + ], + "hotTotalMedianSeconds": 5.6785, + "incrementalHotEngineImprovementPercent": 3.0204, + "incrementalHotTotalImprovementPercent": 2.0273 + }, + "resultParity": { + "totalReturn": -0.615167693429, + "tradeCount": 4961, + "canonicalResultSha256": "f9c26271d4f2096e51429b6106740f600757823789bf6447cd0c524f702f0836", + "resultStoreSha256": "56042bd25bd4261e41e8237c9f5ead580b782d897baae58c8e4436f331a1d91f", + "allFiveRunsEqualBaseline": true, + "returnDelta": 0.0, + "tradeCountDelta": 0 + }, + "validation": { + "numericVmTests": "4 passed, 1 ignored", + "capturedRegressionTest": "platform_helpers_support_generic_rolling_stats_and_normalized_factors", + "workspaceTests": "423 passed, 6 ignored plus all integration tests passed", + "invalidDateLiteralFallsBack": true, + "nonDateStringFallsBack": true, + "helperDateArgumentPreserved": true, + "runtimeUser": "boris", + "serviceHealth": "ok" + } +}